Merge remote-tracking branch 'upstream/master' into windows
Conflicts: .gitignore SparkleShare/SparkleIntro.cs SparkleShare/SparkleShare.cs SparkleShare/SparkleUI.cs
2
.gitignore
vendored
|
@ -44,5 +44,5 @@ SparkleShare/sparkleshare
|
|||
po/sparkleshare.pot
|
||||
SparkleShare/Nautilus/sparkleshare-nautilus-extension.py
|
||||
gnome-doc-utils.make
|
||||
sparkleshare-*
|
||||
/sparkleshare-*
|
||||
desktop.ini
|
||||
|
|
2
AUTHORS
|
@ -24,6 +24,7 @@ Contributors:
|
|||
Jakub Steiner <jimmac@redhat.com>
|
||||
Kristi Tsukida <kristi.tsukida@gmail.com>
|
||||
Lapo Calamandrei <calamandrei@gmail.com>
|
||||
Lars Falk-Petersen <dev@falk-petersen.no>
|
||||
Luis Cordova <cordoval@gmail.com>
|
||||
Łukasz Jernaś <deejay1@srem.org>
|
||||
Michael Monreal <michael.monreal@gmail.com>
|
||||
|
@ -35,6 +36,7 @@ Contributors:
|
|||
Sandy Armstrong <sanfordarmstrong@gmail.com>
|
||||
Simon Pither <simon@pither.com>
|
||||
Steven Harms <sharms@ubuntu.com>
|
||||
Sven Mueller <thelightmaker@gmail.com>
|
||||
Vincent Untz <vuntz@gnome.org>
|
||||
Will Thompson <will@willthompson.co.uk>
|
||||
|
||||
|
|
12
Makefile.am
|
@ -1,11 +1,7 @@
|
|||
SUBDIRS = \
|
||||
build \
|
||||
help \
|
||||
SmartIrc4net \
|
||||
SparkleLib \
|
||||
SparkleShare \
|
||||
data \
|
||||
po
|
||||
basedirs = build help SmartIrc4net SparkleLib data po
|
||||
|
||||
SUBDIRS = $(basedirs) $(GUISUBDIRS)
|
||||
DIST_SUBDIRS = $(basedirs) SparkleShare
|
||||
|
||||
EXTRA_DIST = \
|
||||
gnome-doc-utils.make \
|
||||
|
|
14
NEWS
|
@ -1,3 +1,17 @@
|
|||
0.2.4 for Linux and Mac (Wed Jun 29, 2011):
|
||||
|
||||
Hylke: Fix crash when setting up with an empty Git repository.
|
||||
|
||||
|
||||
0.2.3 for Linux and Mac (Tue Jun 28, 2011):
|
||||
|
||||
Hylke: Add the ability to add notes in the event logs. Fix some quirks
|
||||
in the webkit view on Linux. Redid gravatar fetching parts to be more
|
||||
efficient. Remove headless feature. Fix some small bugs and crashes.
|
||||
SparkleShare will now also try to use your existing SSH keypair. Required
|
||||
Git version is now 1.7.1 or later.
|
||||
|
||||
|
||||
0.2.2 for Linux and Mac (Tue Jun 14, 2011):
|
||||
|
||||
Hylke: Fix crash on first run when ~/.ssh doesn't exist. Sync algorithm
|
||||
|
|
2
README
|
@ -28,7 +28,7 @@ Run on Linux:
|
|||
|
||||
SparkleShare currently requires:
|
||||
|
||||
- git >= 1.7
|
||||
- git >= 1.7.1
|
||||
- gtk-sharp2 >= 2.12.7
|
||||
- mono-core >= 2.2
|
||||
- ndesk-dbus >= 0.6
|
||||
|
|
|
@ -30,6 +30,12 @@ namespace SparkleLib {
|
|||
{
|
||||
remote_folder = remote_folder.Trim ("/".ToCharArray ());
|
||||
|
||||
if (server.StartsWith("http")) {
|
||||
base.target_folder = target_folder;
|
||||
base.remote_url = server;
|
||||
return;
|
||||
}
|
||||
|
||||
// Gitorious formatting
|
||||
if (server.Contains ("gitorious.org")) {
|
||||
server = "ssh://git@gitorious.org";
|
||||
|
@ -102,6 +108,9 @@ namespace SparkleLib {
|
|||
|
||||
// Ignore permission changes
|
||||
config = config.Replace ("filemode = true", "filemode = false");
|
||||
config = config.Replace ("fetch = +refs/heads/*:refs/remotes/origin/*",
|
||||
"fetch = +refs/heads/*:refs/remotes/origin/*" + Environment.NewLine +
|
||||
"\tfetch = +refs/notes/*:refs/notes/*");
|
||||
|
||||
// Add user info
|
||||
string n = Environment.NewLine;
|
||||
|
|
|
@ -20,6 +20,7 @@ using System.Collections.Generic;
|
|||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Xml;
|
||||
|
||||
namespace SparkleLib {
|
||||
|
||||
|
@ -49,6 +50,34 @@ namespace SparkleLib {
|
|||
}
|
||||
|
||||
|
||||
public override string [] UnsyncedFilePaths {
|
||||
get {
|
||||
List<string> file_paths = new List<string> ();
|
||||
|
||||
SparkleGit git = new SparkleGit (LocalPath, "status --porcelain");
|
||||
git.Start ();
|
||||
|
||||
// Reading the standard output HAS to go before
|
||||
// WaitForExit, or it will hang forever on output > 4096 bytes
|
||||
string output = git.StandardOutput.ReadToEnd ().TrimEnd ();
|
||||
git.WaitForExit ();
|
||||
|
||||
string [] lines = output.Split ("\n".ToCharArray ());
|
||||
foreach (string line in lines) {
|
||||
if (line [1].ToString ().Equals ("M") ||
|
||||
line [1].ToString ().Equals ("?") ||
|
||||
line [1].ToString ().Equals ("A")) {
|
||||
|
||||
string path = line.Substring (3);
|
||||
path = path.Trim ("\"".ToCharArray ());
|
||||
file_paths.Add (path);
|
||||
}
|
||||
}
|
||||
|
||||
return file_paths.ToArray ();
|
||||
}
|
||||
}
|
||||
|
||||
public override string CurrentRevision {
|
||||
get {
|
||||
|
||||
|
@ -63,8 +92,9 @@ namespace SparkleLib {
|
|||
git.WaitForExit ();
|
||||
|
||||
if (git.ExitCode == 0) {
|
||||
string output = git.StandardOutput.ReadToEnd ();
|
||||
string output = git.StandardOutput.ReadToEnd ();
|
||||
return output.TrimEnd ();
|
||||
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
@ -88,6 +118,7 @@ namespace SparkleLib {
|
|||
if (!remote_revision.StartsWith (CurrentRevision)) {
|
||||
SparkleHelpers.DebugInfo ("Git", "[" + Name + "] Remote changes found. (" + remote_revision + ")");
|
||||
return true;
|
||||
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
@ -102,7 +133,6 @@ namespace SparkleLib {
|
|||
Commit (message);
|
||||
|
||||
SparkleGit git = new SparkleGit (LocalPath, "push origin master");
|
||||
|
||||
git.Start ();
|
||||
git.WaitForExit ();
|
||||
|
||||
|
@ -115,14 +145,14 @@ namespace SparkleLib {
|
|||
|
||||
public override bool SyncDown ()
|
||||
{
|
||||
SparkleGit git = new SparkleGit (LocalPath, "fetch -v origin master");
|
||||
|
||||
SparkleGit git = new SparkleGit (LocalPath, "fetch -v");
|
||||
git.Start ();
|
||||
git.WaitForExit ();
|
||||
|
||||
if (git.ExitCode == 0) {
|
||||
Rebase ();
|
||||
return true;
|
||||
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
@ -133,9 +163,12 @@ namespace SparkleLib {
|
|||
get {
|
||||
SparkleGit git = new SparkleGit (LocalPath, "status --porcelain");
|
||||
git.Start ();
|
||||
|
||||
// Reading the standard output HAS to go before
|
||||
// WaitForExit, or it will hang forever on output > 4096 bytes
|
||||
string output = git.StandardOutput.ReadToEnd ().TrimEnd ();
|
||||
git.WaitForExit ();
|
||||
|
||||
string output = git.StandardOutput.ReadToEnd ().TrimEnd ();
|
||||
string [] lines = output.Split ("\n".ToCharArray ());
|
||||
|
||||
foreach (string line in lines) {
|
||||
|
@ -265,9 +298,12 @@ namespace SparkleLib {
|
|||
|
||||
SparkleGit git_status = new SparkleGit (LocalPath, "status --porcelain");
|
||||
git_status.Start ();
|
||||
|
||||
// Reading the standard output HAS to go before
|
||||
// WaitForExit, or it will hang forever on output > 4096 bytes
|
||||
string output = git_status.StandardOutput.ReadToEnd ().TrimEnd ();
|
||||
git_status.WaitForExit ();
|
||||
|
||||
string output = git_status.StandardOutput.ReadToEnd ().TrimEnd ();
|
||||
string [] lines = output.Split ("\n".ToCharArray ());
|
||||
|
||||
foreach (string line in lines) {
|
||||
|
@ -339,7 +375,6 @@ namespace SparkleLib {
|
|||
|
||||
|
||||
// Returns a list of the latest change sets
|
||||
// TODO: Method needs to be made a lot faster
|
||||
public override List <SparkleChangeSet> GetChangeSets (int count)
|
||||
{
|
||||
if (count < 1)
|
||||
|
@ -393,7 +428,6 @@ namespace SparkleLib {
|
|||
"([0-9]{2}):([0-9]{2}):([0-9]{2}) (.[0-9]{4})\n" +
|
||||
"*", RegexOptions.Compiled);
|
||||
|
||||
// TODO: Need to optimise for speed
|
||||
foreach (string log_entry in entries) {
|
||||
Regex regex;
|
||||
bool is_merge_commit = false;
|
||||
|
@ -410,11 +444,11 @@ namespace SparkleLib {
|
|||
if (match.Success) {
|
||||
SparkleChangeSet change_set = new SparkleChangeSet ();
|
||||
|
||||
change_set.Folder = Name;
|
||||
change_set.Revision = match.Groups [1].Value;
|
||||
change_set.UserName = match.Groups [2].Value;
|
||||
change_set.UserEmail = match.Groups [3].Value;
|
||||
change_set.IsMerge = is_merge_commit;
|
||||
change_set.Folder = Name;
|
||||
change_set.Revision = match.Groups [1].Value;
|
||||
change_set.UserName = match.Groups [2].Value;
|
||||
change_set.UserEmail = match.Groups [3].Value;
|
||||
change_set.IsMerge = is_merge_commit;
|
||||
|
||||
change_set.Timestamp = new DateTime (int.Parse (match.Groups [4].Value),
|
||||
int.Parse (match.Groups [5].Value), int.Parse (match.Groups [6].Value),
|
||||
|
@ -437,7 +471,7 @@ namespace SparkleLib {
|
|||
string file_path = entry_line.Substring (39);
|
||||
string to_file_path;
|
||||
|
||||
if (change_type.Equals ("A")) {
|
||||
if (change_type.Equals ("A") && !file_path.Contains (".notes")) {
|
||||
change_set.Added.Add (file_path);
|
||||
|
||||
} else if (change_type.Equals ("M")) {
|
||||
|
@ -457,7 +491,13 @@ namespace SparkleLib {
|
|||
}
|
||||
}
|
||||
|
||||
change_sets.Add (change_set);
|
||||
if ((change_set.Added.Count +
|
||||
change_set.Edited.Count +
|
||||
change_set.Deleted.Count) > 0) {
|
||||
|
||||
change_set.Notes.AddRange (GetNotes (change_set.Revision));
|
||||
change_sets.Add (change_set);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -533,16 +573,6 @@ namespace SparkleLib {
|
|||
}
|
||||
|
||||
|
||||
public override void CreateInitialChangeSet ()
|
||||
{
|
||||
base.CreateInitialChangeSet ();
|
||||
Add ();
|
||||
|
||||
string message = FormatCommitMessage ();
|
||||
Commit (message);
|
||||
}
|
||||
|
||||
|
||||
public override bool UsesNotificationCenter
|
||||
{
|
||||
get {
|
||||
|
@ -550,5 +580,12 @@ namespace SparkleLib {
|
|||
return !File.Exists (file_path);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public override void CreateInitialChangeSet ()
|
||||
{
|
||||
base.CreateInitialChangeSet ();
|
||||
SyncUp ();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -185,7 +185,6 @@ namespace SparkleLib {
|
|||
|
||||
|
||||
// Returns a list of the latest change sets
|
||||
// TODO: Method needs to be made a lot faster
|
||||
public override List<SparkleChangeSet> GetChangeSets (int count)
|
||||
{
|
||||
if (count < 1)
|
||||
|
@ -224,7 +223,6 @@ namespace SparkleLib {
|
|||
Regex regex = new Regex (@"([0-9]{4})-([0-9]{2})-([0-9]{2}).*([0-9]{2}):([0-9]{2}).*.([0-9]{4})" +
|
||||
"(.+)<(.+)>.*.([a-z0-9]{12})", RegexOptions.Compiled);
|
||||
|
||||
// TODO: Need to optimise for speed
|
||||
foreach (string log_entry in entries) {
|
||||
|
||||
bool is_merge_commit = false;
|
||||
|
|
|
@ -22,7 +22,7 @@ SOURCES = \
|
|||
SparkleHelpers.cs \
|
||||
SparkleListenerBase.cs \
|
||||
SparkleListenerIrc.cs \
|
||||
SparkleListenerTcp.cs \
|
||||
SparkleListenerTcp.cs \
|
||||
SparkleOptions.cs \
|
||||
SparklePaths.cs \
|
||||
SparkleRepoBase.cs \
|
||||
|
|
|
@ -24,15 +24,61 @@ namespace SparkleLib {
|
|||
|
||||
public string UserName;
|
||||
public string UserEmail;
|
||||
|
||||
public string Folder;
|
||||
public string Revision;
|
||||
public DateTime Timestamp;
|
||||
public bool IsMerge = false;
|
||||
public bool IsMerge = false;
|
||||
|
||||
public List<string> Added = new List<string> ();
|
||||
public List<string> Deleted = new List<string> ();
|
||||
public List<string> Edited = new List<string> ();
|
||||
public List<string> MovedFrom = new List<string> ();
|
||||
public List<string> MovedTo = new List<string> ();
|
||||
|
||||
public List<SparkleNote> Notes = new List<SparkleNote> ();
|
||||
|
||||
public string RelativeTimestamp {
|
||||
get {
|
||||
TimeSpan time_span = DateTime.Now - Timestamp;
|
||||
|
||||
if (time_span <= TimeSpan.FromSeconds (60))
|
||||
return "just now";
|
||||
|
||||
if (time_span <= TimeSpan.FromMinutes (60))
|
||||
return time_span.Minutes > 1
|
||||
? time_span.Minutes + " minutes ago"
|
||||
: "a minute ago";
|
||||
|
||||
if (time_span <= TimeSpan.FromHours (24))
|
||||
return time_span.Hours > 1
|
||||
? time_span.Hours + " hours ago"
|
||||
: "an hour ago";
|
||||
|
||||
if (time_span <= TimeSpan.FromDays (30))
|
||||
return time_span.Days > 1
|
||||
? time_span.Days + " days ago"
|
||||
: "a day ago";
|
||||
|
||||
if (time_span <= TimeSpan.FromDays (365))
|
||||
return time_span.Days > 30
|
||||
? (time_span.Days / 30) + " months ago"
|
||||
: "a month ago";
|
||||
|
||||
return time_span.Days > 365
|
||||
? (time_span.Days / 365) + " years ago"
|
||||
: "a year ago";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class SparkleNote {
|
||||
|
||||
public string UserName;
|
||||
public string UserEmail;
|
||||
|
||||
public DateTime Timestamp;
|
||||
public string Body;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -154,6 +154,21 @@ namespace SparkleLib {
|
|||
Save ();
|
||||
}
|
||||
|
||||
public bool SetFolderOptionalAttribute (string name, string key, string value)
|
||||
{
|
||||
XmlNode folder = this.GetFolder(name);
|
||||
if (folder == null) return false;
|
||||
|
||||
if (folder[key] != null) {
|
||||
folder[key].InnerText = value;
|
||||
} else {
|
||||
XmlNode new_node = CreateElement(key);
|
||||
new_node.InnerText = value;
|
||||
folder.AppendChild(new_node);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
public void RemoveFolder (string name)
|
||||
{
|
||||
|
@ -168,51 +183,53 @@ namespace SparkleLib {
|
|||
|
||||
public bool FolderExists (string name)
|
||||
{
|
||||
foreach (XmlNode node_folder in SelectNodes ("/sparkleshare/folder")) {
|
||||
if (node_folder ["name"].InnerText.Equals (name))
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
XmlNode folder = this.GetFolder(name);
|
||||
return folder != null;
|
||||
}
|
||||
|
||||
|
||||
public string GetBackendForFolder (string name)
|
||||
{
|
||||
foreach (XmlNode node_folder in SelectNodes ("/sparkleshare/folder")) {
|
||||
if (node_folder ["name"].InnerText.Equals (name))
|
||||
return node_folder ["backend"].InnerText;
|
||||
}
|
||||
|
||||
return null;
|
||||
return this.GetFolderValue(name, "backend");
|
||||
}
|
||||
|
||||
|
||||
public string GetUrlForFolder (string name)
|
||||
{
|
||||
foreach (XmlNode node_folder in SelectNodes ("/sparkleshare/folder")) {
|
||||
if (node_folder ["name"].InnerText.Equals (name))
|
||||
return node_folder ["url"].InnerText;
|
||||
}
|
||||
return this.GetFolderValue(name, "url");
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
public List<string> Hosts {
|
||||
get {
|
||||
List<string> hosts = new List<string> ();
|
||||
|
||||
foreach (XmlNode node_folder in SelectNodes ("/sparkleshare/folder")) {
|
||||
Uri uri = new Uri (node_folder ["url"].InnerText);
|
||||
if (!hosts.Contains (uri.Host))
|
||||
hosts.Add (uri.Host);
|
||||
}
|
||||
|
||||
return hosts;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public string GetAnnouncementsForFolder (string name)
|
||||
{
|
||||
foreach (XmlNode node_folder in SelectNodes ("/sparkleshare/folder")) {
|
||||
if (node_folder ["name"].InnerText.Equals (name) &&
|
||||
node_folder ["announcements"] != null) {
|
||||
|
||||
return node_folder ["announcements"].InnerText;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
return this.GetFolderValue(name, "announcements");
|
||||
}
|
||||
|
||||
|
||||
public string GetAnnouncementUrlForFolder (string name)
|
||||
{
|
||||
// examples?
|
||||
// tcp://localhost:9999/
|
||||
// xmpp:someuser@somexmppserver?canhavefunnybits
|
||||
// irc://hbons/#somechatroom
|
||||
return this.GetFolderValue(name, "announcements_url");
|
||||
}
|
||||
|
||||
public string GetConfigOption (string name)
|
||||
{
|
||||
XmlNode node = SelectSingleNode ("/sparkleshare/" + name);
|
||||
|
@ -252,6 +269,23 @@ namespace SparkleLib {
|
|||
Save (Path);
|
||||
SparkleHelpers.DebugInfo ("Config", "Updated \"" + Path + "\"");
|
||||
}
|
||||
|
||||
|
||||
private XmlNode GetFolder (string name)
|
||||
{
|
||||
return SelectSingleNode(String.Format("/sparkleshare/folder[name='{0}']", name));
|
||||
}
|
||||
|
||||
|
||||
private string GetFolderValue (string name, string key)
|
||||
{
|
||||
XmlNode folder = this.GetFolder(name);
|
||||
|
||||
if ((folder != null) && (folder[key] != null)) {
|
||||
return folder[key].InnerText;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -37,34 +37,43 @@ namespace SparkleLib {
|
|||
|
||||
public static class SparkleListenerFactory {
|
||||
|
||||
private static List<SparkleListenerBase> listeners;
|
||||
private static List<SparkleListenerBase> listeners = new List<SparkleListenerBase> ();
|
||||
|
||||
public static SparkleListenerIrc CreateIrcListener (string server, string folder_identifier,
|
||||
string announcements)
|
||||
public static SparkleListenerBase CreateListener (string folder_name, string folder_identifier)
|
||||
{
|
||||
if (listeners == null)
|
||||
listeners = new List<SparkleListenerBase> ();
|
||||
string announce_uri = SparkleConfig.DefaultConfig.GetAnnouncementUrlForFolder (folder_name);
|
||||
|
||||
// This is SparkleShare's centralized notification service.
|
||||
// Don't worry, we only use this server as a backup if you
|
||||
// don't have your own. All data needed to connect is hashed and
|
||||
// we don't store any personal information ever
|
||||
if (announcements == null)
|
||||
server = "204.62.14.135";
|
||||
else
|
||||
server = announcements;
|
||||
if (announce_uri == null) {
|
||||
// This is SparkleShare's centralized notification service.
|
||||
// Don't worry, we only use this server as a backup if you
|
||||
// don't have your own. All data needed to connect is hashed and
|
||||
// we don't store any personal information ever
|
||||
|
||||
announce_uri = "irc://204.62.14.135/";
|
||||
}
|
||||
|
||||
foreach (SparkleListenerBase listener in listeners) {
|
||||
if (listener.Server.Equals (server)) {
|
||||
SparkleHelpers.DebugInfo ("ListenerFactory", "Refered to existing listener for " + server);
|
||||
if (listener.Server.Equals (announce_uri)) {
|
||||
SparkleHelpers.DebugInfo ("ListenerFactory", "Refered to existing listener for " + announce_uri);
|
||||
listener.AlsoListenTo (folder_identifier);
|
||||
return (SparkleListenerIrc) listener;
|
||||
return (SparkleListenerBase) listener;
|
||||
}
|
||||
}
|
||||
|
||||
SparkleHelpers.DebugInfo ("ListenerFactory", "Issued new listener for " + server);
|
||||
listeners.Add (new SparkleListenerIrc (server, folder_identifier, announcements));
|
||||
return (SparkleListenerIrc) listeners [listeners.Count - 1];
|
||||
Uri listen_on = new Uri (announce_uri);
|
||||
|
||||
switch (listen_on.Scheme) {
|
||||
case "tcp":
|
||||
listeners.Add (new SparkleListenerTcp (listen_on, folder_identifier));
|
||||
break;
|
||||
case "irc":
|
||||
default:
|
||||
listeners.Add (new SparkleListenerIrc (listen_on, folder_identifier));
|
||||
break;
|
||||
}
|
||||
|
||||
SparkleHelpers.DebugInfo ("ListenerFactory", "Issued new listener for " + announce_uri);
|
||||
return (SparkleListenerBase) listeners [listeners.Count - 1];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -97,16 +106,17 @@ namespace SparkleLib {
|
|||
protected List<SparkleAnnouncement> queue_up = new List<SparkleAnnouncement> ();
|
||||
protected List<SparkleAnnouncement> queue_down = new List<SparkleAnnouncement> ();
|
||||
protected bool is_connecting;
|
||||
protected string server;
|
||||
protected Uri server;
|
||||
protected Timer reconnect_timer = new Timer { Interval = 60 * 1000, Enabled = true };
|
||||
|
||||
public SparkleListenerBase (string server, string folder_identifier, string announcements) {
|
||||
this.reconnect_timer.Elapsed += delegate {
|
||||
public SparkleListenerBase (Uri server, string folder_identifier) {
|
||||
this.reconnect_timer.Elapsed += delegate {
|
||||
if (!IsConnected && !this.is_connecting)
|
||||
Reconnect ();
|
||||
};
|
||||
};
|
||||
|
||||
this.reconnect_timer.Start ();
|
||||
this.server = server;
|
||||
this.reconnect_timer.Start ();
|
||||
}
|
||||
|
||||
|
||||
|
@ -185,7 +195,7 @@ namespace SparkleLib {
|
|||
}
|
||||
|
||||
|
||||
public string Server {
|
||||
public Uri Server {
|
||||
get {
|
||||
return this.server;
|
||||
}
|
||||
|
|
|
@ -31,11 +31,9 @@ namespace SparkleLib {
|
|||
private string nick;
|
||||
|
||||
|
||||
public SparkleListenerIrc (string server, string folder_identifier, string announcements) :
|
||||
base (server, folder_identifier, announcements)
|
||||
public SparkleListenerIrc (Uri server, string folder_identifier) :
|
||||
base (server, folder_identifier)
|
||||
{
|
||||
base.server = server;
|
||||
|
||||
// Try to get a uniqueish nickname
|
||||
this.nick = SHA1 (DateTime.Now.ToString ("ffffff") + "sparkles");
|
||||
|
||||
|
@ -90,9 +88,10 @@ namespace SparkleLib {
|
|||
this.thread = new Thread (
|
||||
new ThreadStart (delegate {
|
||||
try {
|
||||
|
||||
// Connect, login, and join the channel
|
||||
this.client.Connect (new string [] {base.server}, 6667);
|
||||
int port = base.server.Port;
|
||||
if (port < 0) port = 6667;
|
||||
this.client.Connect (base.server.Host, port);
|
||||
this.client.Login (this.nick, this.nick);
|
||||
|
||||
foreach (string channel in base.channels) {
|
||||
|
|
|
@ -16,52 +16,42 @@
|
|||
|
||||
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Net.Sockets;
|
||||
using System.Security.Cryptography;
|
||||
using System.Collections.Generic;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace SparkleLib {
|
||||
|
||||
public class SparkleListenerTcp : SparkleListenerBase {
|
||||
|
||||
private Thread thread;
|
||||
private Socket socket;
|
||||
|
||||
public SparkleListenerTcp (string server, string folder_identifier, string announcements) :
|
||||
base (server, folder_identifier, announcements)
|
||||
// these are shared
|
||||
private readonly Object mutex = new Object();
|
||||
private Socket socket;
|
||||
private bool connected;
|
||||
|
||||
public SparkleListenerTcp (Uri server, string folder_identifier) :
|
||||
base (server, folder_identifier)
|
||||
{
|
||||
base.server = server;
|
||||
base.channels.Add (folder_identifier);
|
||||
this.socket = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
|
||||
/*
|
||||
this.client.OnConnected += delegate {
|
||||
base.is_connecting = false;
|
||||
OnConnected ();
|
||||
};
|
||||
|
||||
this.client.OnDisconnected += delegate {
|
||||
base.is_connecting = false;
|
||||
OnDisconnected ();
|
||||
};
|
||||
|
||||
this.client.OnError += delegate {
|
||||
base.is_connecting = false;
|
||||
OnDisconnected ();
|
||||
};
|
||||
|
||||
this..OnChannelMessage += delegate (object o, IrcEventArgs args) {
|
||||
string message = args.Data.Message.Trim ();
|
||||
string folder_id = args.Data.Channel.Substring (1); // remove the starting hash
|
||||
OnAnnouncement (new SparkleAnnouncement (folder_id, message));
|
||||
};*/
|
||||
this.connected = false;
|
||||
}
|
||||
|
||||
|
||||
public override bool IsConnected {
|
||||
get {
|
||||
//return this.client.IsConnected;
|
||||
return true;
|
||||
//return this.client.IsConnected;
|
||||
bool result = false;
|
||||
lock (this.mutex) {
|
||||
result = this.connected;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -69,43 +59,51 @@ namespace SparkleLib {
|
|||
// Starts a new thread and listens to the channel
|
||||
public override void Connect ()
|
||||
{
|
||||
SparkleHelpers.DebugInfo ("ListenerTcp", "Connecting to " + Server);
|
||||
SparkleHelpers.DebugInfo ("ListenerTcp", "Connecting to " + Server.Host);
|
||||
|
||||
base.is_connecting = true;
|
||||
|
||||
this.thread = new Thread (
|
||||
new ThreadStart (delegate {
|
||||
try {
|
||||
|
||||
// Connect and subscribe to the channel
|
||||
this.socket.Connect (Server, 9999);
|
||||
base.is_connecting = false;
|
||||
int port = Server.Port;
|
||||
if (port < 0) port = 9999;
|
||||
this.socket.Connect (Server.Host, port);
|
||||
lock (this.mutex) {
|
||||
base.is_connecting = false;
|
||||
this.connected = true;
|
||||
|
||||
foreach (string channel in base.channels) {
|
||||
SparkleHelpers.DebugInfo ("ListenerTcp", "Subscribing to channel " + channel);
|
||||
|
||||
byte [] message = Encoding.UTF8.GetBytes (
|
||||
"{\"folder\": \"" + channel + "\", \"command\": \"subscribe\"}");
|
||||
this.socket.Send (message);
|
||||
foreach (string channel in base.channels) {
|
||||
SparkleHelpers.DebugInfo ("ListenerTcp", "Subscribing to channel " + channel);
|
||||
this.socket.Send (Encoding.UTF8.GetBytes ("subscribe " + channel + "\n"));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
byte [] bytes = new byte [4096];
|
||||
|
||||
// List to the channels, this blocks the thread
|
||||
while (this.socket.Connected) {
|
||||
this.socket.Receive (bytes);
|
||||
if (bytes != null && bytes.Length > 0) {
|
||||
Console.WriteLine (Encoding.UTF8.GetString (bytes));
|
||||
int bytes_read = this.socket.Receive (bytes);
|
||||
if (bytes_read > 0) {
|
||||
string received = Encoding.UTF8.GetString (bytes);
|
||||
string folder_identifier = received.Substring (0, received.IndexOf ("!"));
|
||||
string message = received.Substring (received.IndexOf ("!") + 1);
|
||||
|
||||
string received_message = bytes.ToString ().Trim ();
|
||||
string folder_id = ""; // TODO: parse message, use XML
|
||||
OnAnnouncement (new SparkleAnnouncement (folder_id, received_message));
|
||||
OnAnnouncement (new SparkleAnnouncement (folder_identifier, message));
|
||||
} else {
|
||||
SparkleHelpers.DebugInfo ("ListenerTcp", "Error on socket");
|
||||
lock (this.mutex) {
|
||||
this.socket.Close();
|
||||
this.connected = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Disconnect when we time out
|
||||
this.socket.Close ();
|
||||
SparkleHelpers.DebugInfo ("ListenerTcp", "Disconnected from " + Server.Host);
|
||||
|
||||
// TODO: attempt to reconnect..?
|
||||
} catch (SocketException e) {
|
||||
SparkleHelpers.DebugInfo ("ListenerTcp", "Could not connect to " + Server + ": " + e.Message);
|
||||
}
|
||||
|
@ -125,9 +123,11 @@ namespace SparkleLib {
|
|||
if (IsConnected) {
|
||||
SparkleHelpers.DebugInfo ("ListenerTcp", "Subscribing to channel " + channel);
|
||||
|
||||
byte [] message = Encoding.UTF8.GetBytes (
|
||||
"{\"folder\": \"" + channel + "\", \"command\": \"subscribe\"}");
|
||||
this.socket.Send (message);
|
||||
string to_send = "subscribe " + folder_identifier + "\n";
|
||||
|
||||
lock (this.mutex) {
|
||||
this.socket.Send (Encoding.UTF8.GetBytes (to_send));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -135,13 +135,12 @@ namespace SparkleLib {
|
|||
|
||||
public override void Announce (SparkleAnnouncement announcement)
|
||||
{
|
||||
string channel = announcement.FolderIdentifier;
|
||||
byte [] message = Encoding.UTF8.GetBytes (
|
||||
"{\"folder\": \"" + channel + "\", \"command\": \"publish\"}");
|
||||
this.socket.Send (message);
|
||||
string to_send = "announce " + announcement.FolderIdentifier
|
||||
+ " " + announcement.Message + "\n";
|
||||
|
||||
// Also announce to ourselves for debugging purposes
|
||||
// base.OnAnnouncement (announcement);
|
||||
lock (this.mutex) {
|
||||
this.socket.Send (Encoding.UTF8.GetBytes (to_send));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Timers;
|
||||
using System.Xml;
|
||||
|
@ -38,7 +40,6 @@ namespace SparkleLib {
|
|||
private TimeSpan long_interval = new TimeSpan (0, 0, 10, 0);
|
||||
|
||||
private SparkleWatcher watcher;
|
||||
private SparkleListenerBase listener;
|
||||
private TimeSpan poll_interval;
|
||||
private Timer local_timer = new Timer () { Interval = 0.25 * 1000 };
|
||||
private Timer remote_timer = new Timer () { Interval = 10 * 1000 };
|
||||
|
@ -47,6 +48,7 @@ namespace SparkleLib {
|
|||
private bool has_changed = false;
|
||||
private Object change_lock = new Object ();
|
||||
|
||||
protected SparkleListenerBase listener;
|
||||
protected SyncStatus status;
|
||||
protected bool is_buffering = false;
|
||||
protected bool server_online = true;
|
||||
|
@ -86,10 +88,8 @@ namespace SparkleLib {
|
|||
this.status = status;
|
||||
};
|
||||
|
||||
if (CurrentRevision == null) {
|
||||
if (CurrentRevision == null)
|
||||
CreateInitialChangeSet ();
|
||||
HasUnsyncedChanges = true;
|
||||
}
|
||||
|
||||
CreateWatcher ();
|
||||
CreateListener ();
|
||||
|
@ -115,9 +115,6 @@ namespace SparkleLib {
|
|||
SyncUpBase ();
|
||||
};
|
||||
|
||||
this.remote_timer.Start ();
|
||||
this.local_timer.Start ();
|
||||
|
||||
// Sync up everything that changed
|
||||
// since we've been offline
|
||||
if (AnyDifferences) {
|
||||
|
@ -128,6 +125,9 @@ namespace SparkleLib {
|
|||
SyncUpBase ();
|
||||
EnableWatching ();
|
||||
}
|
||||
|
||||
this.remote_timer.Start ();
|
||||
this.local_timer.Start ();
|
||||
}
|
||||
|
||||
|
||||
|
@ -145,6 +145,13 @@ namespace SparkleLib {
|
|||
}
|
||||
|
||||
|
||||
public virtual string [] UnsyncedFilePaths {
|
||||
get {
|
||||
return new string [0];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public string Domain {
|
||||
get {
|
||||
Regex regex = new Regex (@"(@|://)([a-z0-9\.-]+)(/|:)");
|
||||
|
@ -218,10 +225,9 @@ namespace SparkleLib {
|
|||
}
|
||||
|
||||
|
||||
private void CreateListener ()
|
||||
public void CreateListener ()
|
||||
{
|
||||
this.listener = SparkleListenerFactory.CreateIrcListener (Domain, Identifier,
|
||||
SparkleConfig.DefaultConfig.GetAnnouncementsForFolder (Name));
|
||||
this.listener = SparkleListenerFactory.CreateListener (Name, Identifier);
|
||||
|
||||
// Stop polling when the connection to the irc channel is succesful
|
||||
this.listener.Connected += delegate {
|
||||
|
@ -302,7 +308,8 @@ namespace SparkleLib {
|
|||
if (!this.watcher.EnableRaisingEvents)
|
||||
return;
|
||||
|
||||
if (args.FullPath.Contains (Path.DirectorySeparatorChar + "."))
|
||||
if (args.FullPath.Contains (Path.DirectorySeparatorChar + ".") &&
|
||||
!args.FullPath.Contains (Path.DirectorySeparatorChar + ".notes"))
|
||||
return;
|
||||
|
||||
WatcherChangeTypes wct = args.ChangeType;
|
||||
|
@ -329,6 +336,42 @@ namespace SparkleLib {
|
|||
}
|
||||
|
||||
|
||||
public List<SparkleNote> GetNotes (string revision) {
|
||||
List<SparkleNote> notes = new List<SparkleNote> ();
|
||||
|
||||
string notes_path = Path.Combine (LocalPath, ".notes");
|
||||
|
||||
if (!Directory.Exists (notes_path))
|
||||
Directory.CreateDirectory (notes_path);
|
||||
|
||||
Regex regex_notes = new Regex (@"<name>(.+)</name>.*" +
|
||||
"<email>(.+)</email>.*" +
|
||||
"<timestamp>([0-9]+)</timestamp>.*" +
|
||||
"<body>(.+)</body>", RegexOptions.Compiled);
|
||||
|
||||
foreach (string file_path in Directory.GetFiles (notes_path)) {
|
||||
if (Path.GetFileName (file_path).StartsWith (revision)) {
|
||||
string note_xml = String.Join ("", File.ReadAllLines (file_path));
|
||||
|
||||
Match match_notes = regex_notes.Match (note_xml);
|
||||
|
||||
if (match_notes.Success) {
|
||||
SparkleNote note = new SparkleNote () {
|
||||
UserName = match_notes.Groups [1].Value,
|
||||
UserEmail = match_notes.Groups [2].Value,
|
||||
Timestamp = new DateTime (1970, 1, 1).AddSeconds (int.Parse (match_notes.Groups [3].Value)),
|
||||
Body = match_notes.Groups [4].Value
|
||||
};
|
||||
|
||||
notes.Add (note);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return notes;
|
||||
}
|
||||
|
||||
|
||||
private void SyncUpBase ()
|
||||
{
|
||||
try {
|
||||
|
@ -393,8 +436,9 @@ namespace SparkleLib {
|
|||
if (SyncStatusChanged != null)
|
||||
SyncStatusChanged (SyncStatus.Idle);
|
||||
|
||||
if (NewChangeSet != null)
|
||||
NewChangeSet (GetChangeSets (1) [0], LocalPath);
|
||||
SparkleChangeSet change_set = GetChangeSets (1) [0];
|
||||
if (NewChangeSet != null && change_set.Revision != CurrentRevision)
|
||||
NewChangeSet (change_set, LocalPath);
|
||||
|
||||
// There could be changes from a
|
||||
// resolved conflict. Tries only once,
|
||||
|
@ -443,6 +487,44 @@ namespace SparkleLib {
|
|||
}
|
||||
|
||||
|
||||
public void AddNote (string revision, string note)
|
||||
{
|
||||
string notes_path = Path.Combine (LocalPath, ".notes");
|
||||
|
||||
if (!Directory.Exists (notes_path))
|
||||
Directory.CreateDirectory (notes_path);
|
||||
|
||||
// Add a timestamp in seconds since unix epoch
|
||||
int timestamp = (int) (DateTime.UtcNow - new DateTime (1970, 1, 1)).TotalSeconds;
|
||||
|
||||
string n = Environment.NewLine;
|
||||
note = "<note>" + n +
|
||||
" <user>" + n +
|
||||
" <name>" + SparkleConfig.DefaultConfig.UserName + "</name>" + n +
|
||||
" <email>" + SparkleConfig.DefaultConfig.UserEmail + "</email>" + n +
|
||||
" </user>" + n +
|
||||
" <timestamp>" + timestamp + "</timestamp>" + n +
|
||||
" <body>" + note + "</body>" + n +
|
||||
"</note>" + n;
|
||||
|
||||
string note_name = revision + SHA1 (timestamp.ToString () + note);
|
||||
string note_path = Path.Combine (notes_path, note_name);
|
||||
|
||||
StreamWriter writer = new StreamWriter (note_path);
|
||||
writer.Write (note);
|
||||
writer.Close ();
|
||||
|
||||
|
||||
// The watcher doesn't like .*/ so we need to trigger
|
||||
// a change manually
|
||||
FileSystemEventArgs args = new FileSystemEventArgs (WatcherChangeTypes.Changed,
|
||||
notes_path, note_name);
|
||||
|
||||
OnFileActivity (args);
|
||||
SparkleHelpers.DebugInfo ("Note", "Added note to " + revision);
|
||||
}
|
||||
|
||||
|
||||
// Recursively gets a folder's size in bytes
|
||||
private double CalculateFolderSize (DirectoryInfo parent)
|
||||
{
|
||||
|
@ -456,7 +538,7 @@ namespace SparkleLib {
|
|||
if (parent.Name.Equals ("rebase-apply"))
|
||||
return 0;
|
||||
|
||||
foreach (FileInfo file in parent.GetFiles()) {
|
||||
foreach (FileInfo file in parent.GetFiles ()) {
|
||||
if (!file.Exists)
|
||||
return 0;
|
||||
|
||||
|
@ -468,5 +550,15 @@ namespace SparkleLib {
|
|||
|
||||
return size;
|
||||
}
|
||||
|
||||
|
||||
// Creates a SHA-1 hash of input
|
||||
private string SHA1 (string s)
|
||||
{
|
||||
SHA1 sha1 = new SHA1CryptoServiceProvider ();
|
||||
Byte[] bytes = ASCIIEncoding.Default.GetBytes (s);
|
||||
Byte[] encoded_bytes = sha1.ComputeHash (bytes);
|
||||
return BitConverter.ToString (encoded_bytes).ToLower ().Replace ("-", "");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -108,6 +108,7 @@
|
|||
<Compile Include="..\SparkleChangeSet.cs" />
|
||||
<Compile Include="..\SparkleListenerBase.cs" />
|
||||
<Compile Include="..\SparkleListenerIrc.cs" />
|
||||
<Compile Include="..\SparkleListenerTcp.cs" />
|
||||
<Compile Include="..\SparkleBackend.cs" />
|
||||
<Compile Include="GlobalAssemblyInfo.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
|
|
|
@ -2,19 +2,15 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>TicketVersion</key>
|
||||
<integer>1</integer>
|
||||
<key>AllNotifications</key>
|
||||
<array>
|
||||
<string>Start</string>
|
||||
<string>Stop</string>
|
||||
<string>Info</string>
|
||||
</array>
|
||||
<key>DefaultNotifications</key>
|
||||
<array>
|
||||
<string>Start</string>
|
||||
<string>Stop</string>
|
||||
<string>Info</string>
|
||||
</array>
|
||||
<key>TicketVersion</key>
|
||||
<integer>1</integer>
|
||||
<key>AllNotifications</key>
|
||||
<array>
|
||||
<string>Event</string>
|
||||
</array>
|
||||
<key>DefaultNotifications</key>
|
||||
<array>
|
||||
<string>Event</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
|
@ -24,14 +24,15 @@ using MonoMac.AppKit;
|
|||
using MonoMac.ObjCRuntime;
|
||||
using MonoMac.WebKit;
|
||||
|
||||
|
||||
namespace SparkleShare {
|
||||
|
||||
public class SparkleAbout : NSWindow {
|
||||
|
||||
private NSButton WebsiteButton;
|
||||
private NSButton CreditsButton;
|
||||
private NSBox Box;
|
||||
private NSTextField HeaderTextField;
|
||||
public SparkleAboutController Controller = new SparkleAboutController ();
|
||||
|
||||
private NSImage AboutImage;
|
||||
private NSImageView AboutImageView;
|
||||
private NSTextField VersionTextField;
|
||||
private NSTextField UpdatesTextField;
|
||||
private NSTextField CreditsTextField;
|
||||
|
@ -41,21 +42,22 @@ namespace SparkleShare {
|
|||
|
||||
public SparkleAbout () : base ()
|
||||
{
|
||||
SetFrame (new RectangleF (0, 0, 360, 288), true);
|
||||
SetFrame (new RectangleF (0, 0, 640, 281), true);
|
||||
Center ();
|
||||
|
||||
Delegate = new SparkleAboutDelegate ();
|
||||
StyleMask = (NSWindowStyle.Closable | NSWindowStyle.Titled);
|
||||
Title = "About SparkleShare";
|
||||
MaxSize = new SizeF (360, 288);
|
||||
MinSize = new SizeF (360, 288);
|
||||
MaxSize = new SizeF (640, 281);
|
||||
MinSize = new SizeF (640, 281);
|
||||
HasShadow = true;
|
||||
BackingType = NSBackingStore.Buffered;
|
||||
|
||||
CreateAbout ();
|
||||
OrderFrontRegardless ();
|
||||
MakeKeyAndOrderFront (this);
|
||||
|
||||
SparkleShare.Controller.NewVersionAvailable += delegate (string new_version) {
|
||||
Controller.NewVersionEvent += delegate (string new_version) {
|
||||
InvokeOnMainThread (delegate {
|
||||
UpdatesTextField.StringValue = "A newer version (" + new_version + ") is available!";
|
||||
UpdatesTextField.TextColor =
|
||||
|
@ -63,7 +65,7 @@ namespace SparkleShare {
|
|||
});
|
||||
};
|
||||
|
||||
SparkleShare.Controller.VersionUpToDate += delegate {
|
||||
Controller.VersionUpToDateEvent += delegate {
|
||||
InvokeOnMainThread (delegate {
|
||||
UpdatesTextField.StringValue = "You are running the latest version.";
|
||||
UpdatesTextField.TextColor =
|
||||
|
@ -71,103 +73,83 @@ namespace SparkleShare {
|
|||
});
|
||||
};
|
||||
|
||||
CheckForNewVersion ();
|
||||
}
|
||||
|
||||
|
||||
public void CheckForNewVersion ()
|
||||
{
|
||||
SparkleShare.Controller.CheckForNewVersion ();
|
||||
Controller.CheckingForNewVersionEvent += delegate {
|
||||
InvokeOnMainThread (delegate {
|
||||
UpdatesTextField.StringValue = "Checking for updates...";
|
||||
UpdatesTextField.TextColor = NSColor.DisabledControlText;
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
private void CreateAbout ()
|
||||
{
|
||||
Box = new NSBox () {
|
||||
FillColor = NSColor.White,
|
||||
Frame = new RectangleF (-1, Frame.Height - 105, Frame.Width + 2, 105),
|
||||
BoxType = NSBoxType.NSBoxCustom
|
||||
string about_image_path = Path.Combine (NSBundle.MainBundle.ResourcePath,
|
||||
"Pixmaps", "about.png");
|
||||
|
||||
AboutImage = new NSImage (about_image_path) {
|
||||
Size = new SizeF (640, 260)
|
||||
};
|
||||
|
||||
HeaderTextField = new NSTextField () {
|
||||
StringValue = "SparkleShare",
|
||||
Frame = new RectangleF (22, Frame.Height - 89, 318, 48),
|
||||
BackgroundColor = NSColor.White,
|
||||
Bordered = false,
|
||||
Editable = false,
|
||||
Font = NSFontManager.SharedFontManager.FontWithFamily
|
||||
("Lucida Grande", NSFontTraitMask.Condensed, 0, 24)
|
||||
AboutImageView = new NSImageView () {
|
||||
Image = AboutImage,
|
||||
Frame = new RectangleF (0, 0, 640, 260)
|
||||
};
|
||||
|
||||
|
||||
VersionTextField = new NSTextField () {
|
||||
StringValue = SparkleShare.Controller.Version,
|
||||
Frame = new RectangleF (22, Frame.Height - 94, 318, 22),
|
||||
StringValue = "version " + Controller.RunningVersion,
|
||||
Frame = new RectangleF (295, 140, 318, 22),
|
||||
BackgroundColor = NSColor.White,
|
||||
Bordered = false,
|
||||
Editable = false,
|
||||
DrawsBackground = false,
|
||||
TextColor = NSColor.White,
|
||||
Font = NSFontManager.SharedFontManager.FontWithFamily
|
||||
("Lucida Grande", NSFontTraitMask.Unbold, 0, 11),
|
||||
TextColor = NSColor.DisabledControlText
|
||||
("Lucida Grande", NSFontTraitMask.Unbold, 0, 11)
|
||||
};
|
||||
|
||||
UpdatesTextField = new NSTextField () {
|
||||
StringValue = "Checking for updates...",
|
||||
Frame = new RectangleF (22, Frame.Height - 222, 318, 98),
|
||||
BackgroundColor = NSColor.WindowBackground,
|
||||
Frame = new RectangleF (295, Frame.Height - 232, 318, 98),
|
||||
Bordered = false,
|
||||
Editable = false,
|
||||
DrawsBackground = false,
|
||||
Font = NSFontManager.SharedFontManager.FontWithFamily
|
||||
("Lucida Grande", NSFontTraitMask.Unbold, 0, 11),
|
||||
TextColor = NSColor.DisabledControlText
|
||||
};
|
||||
|
||||
CreditsTextField = new NSTextField () {
|
||||
StringValue = @"Copyright © 2010–" + DateTime.Now.Year + " Hylke Bons and others" +
|
||||
StringValue = @"Copyright © 2010–" + DateTime.Now.Year + " Hylke Bons and others." +
|
||||
"\n" +
|
||||
"\n" +
|
||||
"SparkleShare is Free and Open Source Software. You are free to use, modify, and redistribute it " +
|
||||
"under the GNU General Public License version 3 or later.",
|
||||
Frame = new RectangleF (22, Frame.Height - 250, 318, 98),
|
||||
BackgroundColor = NSColor.WindowBackground,
|
||||
Frame = new RectangleF (295, Frame.Height - 260, 318, 98),
|
||||
TextColor = NSColor.White,
|
||||
DrawsBackground = false,
|
||||
Bordered = false,
|
||||
Editable = false,
|
||||
Font = NSFontManager.SharedFontManager.FontWithFamily
|
||||
("Lucida Grande", NSFontTraitMask.Unbold, 0, 11),
|
||||
};
|
||||
|
||||
WebsiteButton = new NSButton () {
|
||||
Frame = new RectangleF (12, 12, 120, 32),
|
||||
Title = "Visit Website",
|
||||
BezelStyle = NSBezelStyle.Rounded,
|
||||
Font = SparkleUI.Font
|
||||
};
|
||||
// WebsiteButton.Activated += delegate {
|
||||
// NSUrl url = new NSUrl ("http://www.sparkleshare.org/");
|
||||
// NSWorkspace.SharedWorkspace.OpenUrl (url);
|
||||
// };
|
||||
|
||||
WebsiteButton.Activated += delegate {
|
||||
NSUrl url = new NSUrl ("http://www.sparkleshare.org/");
|
||||
NSWorkspace.SharedWorkspace.OpenUrl (url);
|
||||
};
|
||||
// CreditsButton.Activated += delegate {
|
||||
// NSUrl url = new NSUrl ("http://www.sparkleshare.org/credits/");
|
||||
// NSWorkspace.SharedWorkspace.OpenUrl (url);
|
||||
// };
|
||||
|
||||
CreditsButton = new NSButton () {
|
||||
Frame = new RectangleF (Frame.Width - 12 - 120, 12, 120, 32),
|
||||
Title = "Show Credits",
|
||||
BezelStyle = NSBezelStyle.Rounded,
|
||||
Font = SparkleUI.Font
|
||||
};
|
||||
ContentView.AddSubview (AboutImageView);
|
||||
|
||||
CreditsButton.Activated += delegate {
|
||||
|
||||
NSUrl url = new NSUrl ("http://www.sparkleshare.org/credits/");
|
||||
NSWorkspace.SharedWorkspace.OpenUrl (url);
|
||||
|
||||
};
|
||||
|
||||
ContentView.AddSubview (Box);
|
||||
ContentView.AddSubview (HeaderTextField);
|
||||
ContentView.AddSubview (VersionTextField);
|
||||
ContentView.AddSubview (UpdatesTextField);
|
||||
ContentView.AddSubview (CreditsTextField);
|
||||
ContentView.AddSubview (CreditsButton);
|
||||
ContentView.AddSubview (WebsiteButton);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
91
SparkleShare/Mac/SparkleBadger.cs
Normal file
|
@ -0,0 +1,91 @@
|
|||
// SparkleShare, a collaboration and sharing tool.
|
||||
// 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 System;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using MonoMac.AppKit;
|
||||
using MonoMac.Foundation;
|
||||
using MonoMac.Growl;
|
||||
|
||||
namespace SparkleShare {
|
||||
|
||||
public class SparkleBadger {
|
||||
|
||||
private Dictionary<string, NSImage> icons = new Dictionary<string, NSImage> ();
|
||||
private int [] sizes = new int [] {16, 32, 48, 128, 256, 512};
|
||||
private string [] paths;
|
||||
|
||||
|
||||
public SparkleBadger (string [] paths)
|
||||
{
|
||||
this.paths = paths;
|
||||
}
|
||||
|
||||
|
||||
public void Badge ()
|
||||
{
|
||||
using (NSAutoreleasePool a = new NSAutoreleasePool ()) {
|
||||
foreach (string path in this.paths) {
|
||||
string extension = Path.GetExtension (path.ToLower ());
|
||||
NSImage new_icon = new NSImage ();
|
||||
|
||||
if (!this.icons.ContainsKey (extension)) {
|
||||
foreach (int size in this.sizes) {
|
||||
NSImage file_icon = NSWorkspace.SharedWorkspace.IconForFileType (extension);
|
||||
file_icon.Size = new SizeF (size, size);
|
||||
|
||||
// TODO: replace this with the sync icon
|
||||
NSImage overlay_icon = NSWorkspace.SharedWorkspace.IconForFileType ("sln");
|
||||
overlay_icon.Size = new SizeF (size / 2, size / 2);
|
||||
|
||||
file_icon.LockFocus ();
|
||||
NSGraphicsContext.CurrentContext.ImageInterpolation = NSImageInterpolation.High;
|
||||
overlay_icon.Draw (
|
||||
new RectangleF (0, 0, file_icon.Size.Width / 3, file_icon.Size.Width / 3),
|
||||
new RectangleF (), NSCompositingOperation.SourceOver, 1.0f);
|
||||
file_icon.UnlockFocus ();
|
||||
|
||||
new_icon.AddRepresentation (file_icon.Representations () [0]);
|
||||
}
|
||||
|
||||
|
||||
this.icons.Add (extension, new_icon);
|
||||
|
||||
} else {
|
||||
new_icon = this.icons [extension];
|
||||
}
|
||||
|
||||
NSWorkspace.SharedWorkspace.SetIconforFile (new_icon, path, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void Clear ()
|
||||
{
|
||||
foreach (string path in this.paths) {
|
||||
string extension = Path.GetExtension (path.ToLower ());
|
||||
|
||||
NSImage original_icon = NSWorkspace.SharedWorkspace.IconForFileType (extension);
|
||||
NSWorkspace.SharedWorkspace.SetIconforFile (original_icon, path, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,58 +0,0 @@
|
|||
// SparkleShare, a collaboration and sharing tool.
|
||||
// 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 System;
|
||||
using System.IO;
|
||||
|
||||
using MonoMac.AppKit;
|
||||
using MonoMac.Foundation;
|
||||
using MonoMac.Growl;
|
||||
|
||||
namespace SparkleShare {
|
||||
|
||||
public class SparkleBubble : NSObject {
|
||||
|
||||
public string ImagePath;
|
||||
|
||||
private string title;
|
||||
private string subtext;
|
||||
|
||||
|
||||
public SparkleBubble (string title, string subtext)
|
||||
{
|
||||
this.title = title;
|
||||
this.subtext = subtext;
|
||||
}
|
||||
|
||||
|
||||
public void Show ()
|
||||
{
|
||||
InvokeOnMainThread (delegate {
|
||||
if (ImagePath != null && File.Exists (ImagePath)) {
|
||||
NSData image_data = NSData.FromFile (ImagePath);
|
||||
|
||||
GrowlApplicationBridge.Notify (this.title, this.subtext,
|
||||
"Start", image_data, 0, false, null);
|
||||
|
||||
} else {
|
||||
GrowlApplicationBridge.Notify (this.title, this.subtext,
|
||||
"Start", null, 0, false, null);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
64
SparkleShare/Mac/SparkleBubbles.cs
Normal file
|
@ -0,0 +1,64 @@
|
|||
// SparkleShare, a collaboration and sharing tool.
|
||||
// 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 System;
|
||||
using System.IO;
|
||||
|
||||
using MonoMac.AppKit;
|
||||
using MonoMac.Foundation;
|
||||
using MonoMac.Growl;
|
||||
|
||||
namespace SparkleShare {
|
||||
|
||||
public class SparkleBubbles : NSObject {
|
||||
|
||||
private SparkleBubblesController controller = new SparkleBubblesController ();
|
||||
|
||||
|
||||
public SparkleBubbles ()
|
||||
{
|
||||
this.controller.ShowBubbleEvent += delegate (string title, string subtext, string image_path) {
|
||||
InvokeOnMainThread (delegate {
|
||||
if (!GrowlApplicationBridge.IsGrowlRunning ()) {
|
||||
NSApplication.SharedApplication.RequestUserAttention (
|
||||
NSRequestUserAttentionType.InformationalRequest);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (NSApplication.SharedApplication.DockTile.BadgeLabel == null) {
|
||||
NSApplication.SharedApplication.DockTile.BadgeLabel = "1";
|
||||
|
||||
} else {
|
||||
int events = int.Parse (NSApplication.SharedApplication.DockTile.BadgeLabel);
|
||||
NSApplication.SharedApplication.DockTile.BadgeLabel = (events + 1).ToString ();
|
||||
}
|
||||
|
||||
if (image_path != null && File.Exists (image_path)) {
|
||||
NSData image_data = NSData.FromFile (image_path);
|
||||
GrowlApplicationBridge.Notify (title, subtext,
|
||||
"Event", image_data, 0, false, null);
|
||||
|
||||
} else {
|
||||
GrowlApplicationBridge.Notify (title, subtext,
|
||||
"Event", null, 0, false, null);
|
||||
}
|
||||
});
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
|
@ -16,33 +16,38 @@
|
|||
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading;
|
||||
|
||||
using MonoMac.Foundation;
|
||||
using MonoMac.AppKit;
|
||||
using MonoMac.ObjCRuntime;
|
||||
using MonoMac.WebKit;
|
||||
using SparkleLib; // Only used for SparkleChangeSet
|
||||
|
||||
namespace SparkleShare {
|
||||
|
||||
public class SparkleEventLog : NSWindow {
|
||||
|
||||
private WebView WebView;
|
||||
private NSBox Separator;
|
||||
private string HTML;
|
||||
private SparkleEventLogController controller = new SparkleEventLogController ();
|
||||
|
||||
private WebView web_view = new WebView (new RectangleF (0, 0, 480, 579), "", "") {
|
||||
PolicyDelegate = new SparkleWebPolicyDelegate ()
|
||||
};
|
||||
|
||||
private NSBox Separator = new NSBox (new RectangleF (0, 579, 480, 1)) {
|
||||
BorderColor = NSColor.LightGray,
|
||||
BoxType = NSBoxType.NSBoxCustom
|
||||
};
|
||||
|
||||
private NSPopUpButton popup_button;
|
||||
private NSProgressIndicator ProgressIndicator;
|
||||
private List<SparkleChangeSet> change_sets;
|
||||
private string selected_log = null;
|
||||
private NSProgressIndicator progress_indicator;
|
||||
|
||||
|
||||
public SparkleEventLog (IntPtr handle) : base (handle) { }
|
||||
|
||||
// TODO: Window needs to be made resizable
|
||||
public SparkleEventLog () : base ()
|
||||
{
|
||||
Title = "Recent Events";
|
||||
|
@ -60,39 +65,52 @@ namespace SparkleShare {
|
|||
HasShadow = true;
|
||||
BackingType = NSBackingStore.Buffered;
|
||||
|
||||
CreateEvents ();
|
||||
UpdateEvents (false);
|
||||
UpdateChooser ();
|
||||
|
||||
OrderFrontRegardless ();
|
||||
}
|
||||
|
||||
|
||||
private void CreateEvents ()
|
||||
{
|
||||
Separator = new NSBox (new RectangleF (0, 579, 480, 1)) {
|
||||
BorderColor = NSColor.LightGray,
|
||||
BoxType = NSBoxType.NSBoxCustom
|
||||
};
|
||||
|
||||
ContentView.AddSubview (Separator);
|
||||
|
||||
WebView = new WebView (new RectangleF (0, 0, 480, 579), "", "") {
|
||||
PolicyDelegate = new SparkleWebPolicyDelegate ()
|
||||
};
|
||||
|
||||
ProgressIndicator = new NSProgressIndicator () {
|
||||
this.progress_indicator = new NSProgressIndicator () {
|
||||
Style = NSProgressIndicatorStyle.Spinning,
|
||||
Frame = new RectangleF (WebView.Frame.Width / 2 - 10, WebView.Frame.Height / 2 + 10, 20, 20)
|
||||
Frame = new RectangleF (this.web_view.Frame.Width / 2 - 10, this.web_view.Frame.Height / 2 + 10, 20, 20)
|
||||
};
|
||||
|
||||
ProgressIndicator.StartAnimation (this);
|
||||
Update ();
|
||||
this.progress_indicator.StartAnimation (this);
|
||||
ContentView.AddSubview (this.progress_indicator);
|
||||
|
||||
|
||||
UpdateContent (null);
|
||||
UpdateChooser (null);
|
||||
OrderFrontRegardless ();
|
||||
|
||||
|
||||
// Hook up the controller events
|
||||
this.controller.UpdateChooserEvent += delegate (string [] folders) {
|
||||
InvokeOnMainThread (delegate {
|
||||
UpdateChooser (folders);
|
||||
});
|
||||
};
|
||||
|
||||
this.controller.UpdateContentEvent += delegate (string html) {
|
||||
InvokeOnMainThread (delegate {
|
||||
UpdateContent (html);
|
||||
});
|
||||
};
|
||||
|
||||
this.controller.ContentLoadingEvent += delegate {
|
||||
InvokeOnMainThread (delegate {
|
||||
if (this.web_view.Superview == ContentView)
|
||||
this.web_view.RemoveFromSuperview ();
|
||||
|
||||
ContentView.AddSubview (this.progress_indicator);
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
public void UpdateChooser ()
|
||||
public void UpdateChooser (string [] folders)
|
||||
{
|
||||
if (folders == null)
|
||||
folders = this.controller.Folders;
|
||||
|
||||
if (this.popup_button != null)
|
||||
this.popup_button.RemoveFromSuperview ();
|
||||
|
||||
|
@ -103,104 +121,61 @@ namespace SparkleShare {
|
|||
|
||||
this.popup_button.Cell.ControlSize = NSControlSize.Small;
|
||||
this.popup_button.Font = NSFontManager.SharedFontManager.FontWithFamily
|
||||
("Lucida Grande", NSFontTraitMask.Condensed, 0, NSFont.SmallSystemFontSize);
|
||||
("Lucida Grande", NSFontTraitMask.Condensed, 0, NSFont.SmallSystemFontSize);
|
||||
|
||||
this.popup_button.AddItem ("All Folders");
|
||||
this.popup_button.Menu.AddItem (NSMenuItem.SeparatorItem);
|
||||
this.popup_button.AddItems (SparkleShare.Controller.Folders.ToArray ());
|
||||
|
||||
if (this.selected_log != null &&
|
||||
!SparkleShare.Controller.Folders.Contains (this.selected_log)) {
|
||||
|
||||
this.selected_log = null;
|
||||
}
|
||||
this.popup_button.AddItems (folders);
|
||||
|
||||
this.popup_button.Activated += delegate {
|
||||
if (this.popup_button.IndexOfSelectedItem == 0)
|
||||
this.selected_log = null;
|
||||
this.controller.SelectedFolder = null;
|
||||
else
|
||||
this.selected_log = this.popup_button.SelectedItem.Title;
|
||||
|
||||
UpdateEvents (false);
|
||||
this.controller.SelectedFolder = this.popup_button.SelectedItem.Title;
|
||||
};
|
||||
|
||||
ContentView.AddSubview (this.popup_button);
|
||||
}
|
||||
|
||||
|
||||
public void UpdateEvents ()
|
||||
public void UpdateContent (string html)
|
||||
{
|
||||
UpdateEvents (true);
|
||||
}
|
||||
using (NSAutoreleasePool pool = new NSAutoreleasePool ()) {
|
||||
Thread thread = new Thread (new ThreadStart (delegate {
|
||||
if (html == null)
|
||||
html = this.controller.HTML;
|
||||
|
||||
html = html.Replace ("<!-- $body-font-family -->", "Lucida Grande");
|
||||
html = html.Replace ("<!-- $day-entry-header-font-size -->", "13.6px");
|
||||
html = html.Replace ("<!-- $body-font-size -->", "13.4px");
|
||||
html = html.Replace ("<!-- $secondary-font-color -->", "#bbb");
|
||||
html = html.Replace ("<!-- $small-color -->", "#ddd");
|
||||
html = html.Replace ("<!-- $day-entry-header-background-color -->", "#f5f5f5");
|
||||
html = html.Replace ("<!-- $a-color -->", "#0085cf");
|
||||
html = html.Replace ("<!-- $a-hover-color -->", "#009ff8");
|
||||
html = html.Replace ("<!-- $no-buddy-icon-background-image -->",
|
||||
"file://" + Path.Combine (NSBundle.MainBundle.ResourcePath, "Pixmaps", "avatar-default.png"));
|
||||
html = html.Replace ("<!-- $document-added-background-image -->",
|
||||
"file://" + Path.Combine (NSBundle.MainBundle.ResourcePath, "Pixmaps", "document-added-12.png"));
|
||||
html = html.Replace ("<!-- $document-deleted-background-image -->",
|
||||
"file://" + Path.Combine (NSBundle.MainBundle.ResourcePath, "Pixmaps", "document-deleted-12.png"));
|
||||
html = html.Replace ("<!-- $document-edited-background-image -->",
|
||||
"file://" + Path.Combine (NSBundle.MainBundle.ResourcePath, "Pixmaps", "document-edited-12.png"));
|
||||
html = html.Replace ("<!-- $document-moved-background-image -->",
|
||||
"file://" + Path.Combine (NSBundle.MainBundle.ResourcePath, "Pixmaps", "document-moved-12.png"));
|
||||
|
||||
public void UpdateEvents (bool silent)
|
||||
{
|
||||
if (!silent) {
|
||||
InvokeOnMainThread (delegate {
|
||||
if (WebView.Superview == ContentView)
|
||||
WebView.RemoveFromSuperview ();
|
||||
InvokeOnMainThread (delegate {
|
||||
if (this.progress_indicator.Superview == ContentView)
|
||||
this.progress_indicator.RemoveFromSuperview ();
|
||||
|
||||
ContentView.AddSubview (ProgressIndicator);
|
||||
});
|
||||
// TODO: still causes some flashes
|
||||
this.web_view.MainFrame.LoadHtmlString (html, new NSUrl (""));
|
||||
ContentView.AddSubview (this.web_view);
|
||||
});
|
||||
}));
|
||||
|
||||
thread.Start ();
|
||||
}
|
||||
|
||||
Thread thread = new Thread (new ThreadStart (delegate {
|
||||
using (NSAutoreleasePool pool = new NSAutoreleasePool ()) {
|
||||
Stopwatch watch = new Stopwatch ();
|
||||
watch.Start ();
|
||||
this.change_sets = SparkleShare.Controller.GetLog (this.selected_log);
|
||||
GenerateHTML ();
|
||||
watch.Stop ();
|
||||
|
||||
// A short delay is less annoying than
|
||||
// a flashing window
|
||||
if (watch.ElapsedMilliseconds < 500 && !silent)
|
||||
Thread.Sleep (500 - (int) watch.ElapsedMilliseconds);
|
||||
|
||||
AddHTML ();
|
||||
}
|
||||
}));
|
||||
|
||||
thread.Start ();
|
||||
}
|
||||
|
||||
|
||||
private void GenerateHTML ()
|
||||
{
|
||||
HTML = SparkleShare.Controller.GetHTMLLog (this.change_sets);
|
||||
|
||||
HTML = HTML.Replace ("<!-- $body-font-family -->", "Lucida Grande");
|
||||
HTML = HTML.Replace ("<!-- $day-entry-header-font-size -->", "13.6px");
|
||||
HTML = HTML.Replace ("<!-- $body-font-size -->", "13.4px");
|
||||
HTML = HTML.Replace ("<!-- $secondary-font-color -->", "#bbb");
|
||||
HTML = HTML.Replace ("<!-- $small-color -->", "#ddd");
|
||||
HTML = HTML.Replace ("<!-- $day-entry-header-background-color -->", "#f5f5f5");
|
||||
HTML = HTML.Replace ("<!-- $a-color -->", "#0085cf");
|
||||
HTML = HTML.Replace ("<!-- $a-hover-color -->", "#009ff8");
|
||||
HTML = HTML.Replace ("<!-- $no-buddy-icon-background-image -->",
|
||||
"file://" + Path.Combine (NSBundle.MainBundle.ResourcePath, "Pixmaps", "avatar-default.png"));
|
||||
HTML = HTML.Replace ("<!-- $document-added-background-image -->",
|
||||
"file://" + Path.Combine (NSBundle.MainBundle.ResourcePath, "Pixmaps", "document-added-12.png"));
|
||||
HTML = HTML.Replace ("<!-- $document-deleted-background-image -->",
|
||||
"file://" + Path.Combine (NSBundle.MainBundle.ResourcePath, "Pixmaps", "document-deleted-12.png"));
|
||||
HTML = HTML.Replace ("<!-- $document-edited-background-image -->",
|
||||
"file://" + Path.Combine (NSBundle.MainBundle.ResourcePath, "Pixmaps", "document-edited-12.png"));
|
||||
HTML = HTML.Replace ("<!-- $document-moved-background-image -->",
|
||||
"file://" + Path.Combine (NSBundle.MainBundle.ResourcePath, "Pixmaps", "document-moved-12.png"));
|
||||
}
|
||||
|
||||
|
||||
private void AddHTML ()
|
||||
{
|
||||
InvokeOnMainThread (delegate {
|
||||
if (ProgressIndicator.Superview == ContentView)
|
||||
ProgressIndicator.RemoveFromSuperview ();
|
||||
|
||||
WebView.MainFrame.LoadHtmlString (HTML, new NSUrl (""));
|
||||
ContentView.AddSubview (WebView);
|
||||
Update ();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -220,10 +195,30 @@ namespace SparkleShare {
|
|||
public override void DecidePolicyForNavigation (WebView web_view, NSDictionary action_info,
|
||||
NSUrlRequest request, WebFrame frame, NSObject decision_token)
|
||||
{
|
||||
string file_path = request.Url.ToString ();
|
||||
file_path = file_path.Replace ("%20", " ");
|
||||
string url = request.Url.ToString ();
|
||||
|
||||
NSWorkspace.SharedWorkspace.OpenFile (file_path);
|
||||
if (url.StartsWith (Path.VolumeSeparatorChar.ToString ())) {
|
||||
string file_path = request.Url.ToString ();
|
||||
file_path = file_path.Replace ("%20", " ");
|
||||
|
||||
NSWorkspace.SharedWorkspace.OpenFile (file_path);
|
||||
|
||||
} else {
|
||||
Regex regex = new Regex (@"(.+)~(.+)~(.+)");
|
||||
Match match = regex.Match (url);
|
||||
|
||||
if (match.Success) {
|
||||
string folder_name = match.Groups [1].Value;
|
||||
string revision = match.Groups [2].Value;
|
||||
string note = match.Groups [3].Value.Replace ("%20", " ");
|
||||
|
||||
Thread thread = new Thread (new ThreadStart (delegate {
|
||||
SparkleShare.Controller.AddNoteToFolder (folder_name, revision, note);
|
||||
}));
|
||||
|
||||
thread.Start ();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,445 +0,0 @@
|
|||
// SparkleShare, a collaboration and sharing tool.
|
||||
// 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 System;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Timers;
|
||||
|
||||
using Mono.Unix;
|
||||
using MonoMac.Foundation;
|
||||
using MonoMac.AppKit;
|
||||
using MonoMac.ObjCRuntime;
|
||||
using MonoMac.WebKit;
|
||||
|
||||
namespace SparkleShare {
|
||||
|
||||
public class SparkleIntro : SparkleWindow {
|
||||
|
||||
private NSButton ContinueButton;
|
||||
private NSButton SyncButton;
|
||||
private NSButton TryAgainButton;
|
||||
private NSButton CancelButton;
|
||||
private NSButton SkipButton;
|
||||
private NSButton OpenFolderButton;
|
||||
private NSButton FinishButton;
|
||||
private NSForm UserInfoForm;
|
||||
private NSProgressIndicator ProgressIndicator;
|
||||
private NSTextField AddressTextField;
|
||||
private NSTextField FolderNameTextField;
|
||||
private NSTextField ServerTypeLabel;
|
||||
private NSTextField AddressLabel;
|
||||
private NSTextField FolderNameLabel;
|
||||
private NSTextField FolderNameHelpLabel;
|
||||
private NSButtonCell ButtonCellProto;
|
||||
private NSMatrix Matrix;
|
||||
private int ServerType;
|
||||
private bool ServerFormOnly;
|
||||
|
||||
|
||||
public SparkleIntro () : base ()
|
||||
{
|
||||
ServerFormOnly = false;
|
||||
}
|
||||
|
||||
|
||||
public void ShowAccountForm ()
|
||||
{
|
||||
Reset ();
|
||||
|
||||
Header = "Welcome to SparkleShare!";
|
||||
Description = "Before we can create a SparkleShare folder on this " +
|
||||
"computer, we need some information from you.";
|
||||
|
||||
UserInfoForm = new NSForm (new RectangleF (250, 115, 350, 64));
|
||||
UserInfoForm.AddEntry ("Full Name:");
|
||||
UserInfoForm.AddEntry ("Email Address:");
|
||||
UserInfoForm.CellSize = new SizeF (280, 22);
|
||||
UserInfoForm.IntercellSpacing = new SizeF (4, 4);
|
||||
UserInfoForm.Cells [0].LineBreakMode = NSLineBreakMode.TruncatingTail;
|
||||
UserInfoForm.Cells [1].LineBreakMode = NSLineBreakMode.TruncatingTail;
|
||||
|
||||
UserInfoForm.Cells [0].StringValue = SparkleShare.Controller.UserName;
|
||||
UserInfoForm.Cells [1].StringValue = SparkleShare.Controller.UserEmail;
|
||||
|
||||
ContinueButton = new NSButton () {
|
||||
Title = "Continue",
|
||||
Enabled = false
|
||||
};
|
||||
|
||||
ContinueButton.Activated += delegate {
|
||||
SparkleShare.Controller.UserName = UserInfoForm.Cells [0].StringValue.Trim ();
|
||||
SparkleShare.Controller.UserEmail = UserInfoForm.Cells [1].StringValue.Trim ();
|
||||
SparkleShare.Controller.GenerateKeyPair ();
|
||||
SparkleUI.StatusIcon.CreateMenu ();
|
||||
|
||||
InvokeOnMainThread (delegate {
|
||||
ShowServerForm ();
|
||||
});
|
||||
};
|
||||
|
||||
// TODO: Ugly hack, do properly with events
|
||||
Timer timer = new Timer () {
|
||||
Interval = 50
|
||||
};
|
||||
|
||||
timer.Elapsed += delegate {
|
||||
InvokeOnMainThread (delegate {
|
||||
bool name_is_correct =
|
||||
!UserInfoForm.Cells [0].StringValue.Trim ().Equals ("");
|
||||
|
||||
bool email_is_correct = SparkleShare.Controller.IsValidEmail (
|
||||
UserInfoForm.Cells [1].StringValue.Trim ());
|
||||
|
||||
ContinueButton.Enabled = (name_is_correct && email_is_correct);
|
||||
});
|
||||
};
|
||||
|
||||
timer.Start ();
|
||||
|
||||
ContentView.AddSubview (UserInfoForm);
|
||||
Buttons.Add (ContinueButton);
|
||||
|
||||
ShowAll ();
|
||||
}
|
||||
|
||||
|
||||
public void ShowServerForm (bool server_form_only)
|
||||
{
|
||||
ServerFormOnly = server_form_only;
|
||||
ShowServerForm ();
|
||||
}
|
||||
|
||||
|
||||
public void ShowServerForm ()
|
||||
{
|
||||
Reset ();
|
||||
|
||||
Header = "Where is your remote folder?";
|
||||
Description = "";
|
||||
|
||||
ServerTypeLabel = new NSTextField () {
|
||||
Alignment = NSTextAlignment.Right,
|
||||
BackgroundColor = NSColor.WindowBackground,
|
||||
Bordered = false,
|
||||
Editable = false,
|
||||
Frame = new RectangleF (150, Frame.Height - 139 , 160, 17),
|
||||
StringValue = "Server Type:",
|
||||
Font = SparkleUI.Font
|
||||
};
|
||||
|
||||
AddressLabel = new NSTextField () {
|
||||
Alignment = NSTextAlignment.Right,
|
||||
BackgroundColor = NSColor.WindowBackground,
|
||||
Bordered = false,
|
||||
Editable = false,
|
||||
Frame = new RectangleF (150, Frame.Height - 237 , 160, 17),
|
||||
StringValue = "Address:",
|
||||
Font = SparkleUI.Font
|
||||
};
|
||||
|
||||
FolderNameLabel = new NSTextField () {
|
||||
Alignment = NSTextAlignment.Right,
|
||||
BackgroundColor = NSColor.WindowBackground,
|
||||
Bordered = false,
|
||||
Editable = false,
|
||||
Frame = new RectangleF (150, Frame.Height - 264 , 160, 17),
|
||||
StringValue = "Folder Name:",
|
||||
Font = SparkleUI.Font
|
||||
};
|
||||
|
||||
|
||||
AddressTextField = new NSTextField () {
|
||||
Frame = new RectangleF (320, Frame.Height - 240 , 256, 22),
|
||||
Font = SparkleUI.Font
|
||||
};
|
||||
|
||||
AddressTextField.Cell.LineBreakMode = NSLineBreakMode.TruncatingTail;
|
||||
|
||||
FolderNameTextField = new NSTextField () {
|
||||
Frame = new RectangleF (320, Frame.Height - (240 + 22 + 4) , 256, 22),
|
||||
StringValue = ""
|
||||
};
|
||||
|
||||
FolderNameTextField.Cell.LineBreakMode = NSLineBreakMode.TruncatingTail;
|
||||
|
||||
FolderNameHelpLabel = new NSTextField () {
|
||||
BackgroundColor = NSColor.WindowBackground,
|
||||
Bordered = false,
|
||||
TextColor = NSColor.DisabledControlText,
|
||||
Editable = false,
|
||||
Frame = new RectangleF (320, Frame.Height - 285 , 200, 17),
|
||||
StringValue = "e.g. ‘rupert/website-design’"
|
||||
};
|
||||
|
||||
|
||||
ServerType = 0;
|
||||
|
||||
ButtonCellProto = new NSButtonCell ();
|
||||
ButtonCellProto.SetButtonType (NSButtonType.Radio) ;
|
||||
|
||||
Matrix = new NSMatrix (new RectangleF (315, 180, 256, 78),
|
||||
NSMatrixMode.Radio, ButtonCellProto, 4, 1);
|
||||
|
||||
Matrix.CellSize = new SizeF (256, 18);
|
||||
|
||||
Matrix.Cells [0].Title = "My own server";
|
||||
Matrix.Cells [1].Title = "Github";
|
||||
Matrix.Cells [2].Title = "Gitorious";
|
||||
Matrix.Cells [3].Title = "The GNOME Project";
|
||||
|
||||
foreach (NSCell cell in Matrix.Cells)
|
||||
cell.Font = SparkleUI.Font;
|
||||
|
||||
// TODO: Ugly hack, do properly with events
|
||||
Timer timer = new Timer () {
|
||||
Interval = 50
|
||||
};
|
||||
|
||||
timer.Elapsed += delegate {
|
||||
|
||||
InvokeOnMainThread (delegate {
|
||||
|
||||
if (Matrix.SelectedRow != ServerType) {
|
||||
ServerType = Matrix.SelectedRow;
|
||||
|
||||
AddressTextField.Enabled = (ServerType == 0);
|
||||
|
||||
switch (ServerType) {
|
||||
case 0:
|
||||
AddressTextField.StringValue = "";
|
||||
FolderNameHelpLabel.StringValue = "e.g. ‘rupert/website-design’";
|
||||
break;
|
||||
case 1:
|
||||
AddressTextField.StringValue = "ssh://git@github.com/";
|
||||
FolderNameHelpLabel.StringValue = "e.g. ‘rupert/website-design’";
|
||||
break;
|
||||
case 2:
|
||||
AddressTextField.StringValue = "ssh://git@gitorious.org/";
|
||||
FolderNameHelpLabel.StringValue = "e.g. ‘project/website-design’";
|
||||
break;
|
||||
case 3:
|
||||
AddressTextField.StringValue = "ssh://git@gnome.org/git/";
|
||||
FolderNameHelpLabel.StringValue = "e.g. ‘gnome-icon-theme’";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (ServerType == 0 && !AddressTextField.StringValue.Trim ().Equals ("")
|
||||
&& !FolderNameTextField.StringValue.Trim ().Equals ("")) {
|
||||
|
||||
SyncButton.Enabled = true;
|
||||
|
||||
} else if (ServerType != 0 &&
|
||||
!FolderNameTextField.StringValue.Trim ().Equals ("")) {
|
||||
|
||||
SyncButton.Enabled = true;
|
||||
|
||||
} else {
|
||||
SyncButton.Enabled = false;
|
||||
}
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
timer.Start ();
|
||||
|
||||
ContentView.AddSubview (ServerTypeLabel);
|
||||
ContentView.AddSubview (Matrix);
|
||||
|
||||
ContentView.AddSubview (AddressLabel);
|
||||
ContentView.AddSubview (AddressTextField);
|
||||
|
||||
ContentView.AddSubview (FolderNameLabel);
|
||||
ContentView.AddSubview (FolderNameTextField);
|
||||
ContentView.AddSubview (FolderNameHelpLabel);
|
||||
|
||||
SyncButton = new NSButton () {
|
||||
Title = "Sync",
|
||||
Enabled = false
|
||||
};
|
||||
|
||||
SyncButton.Activated += delegate {
|
||||
string folder_name = FolderNameTextField.StringValue;
|
||||
string server = AddressTextField.StringValue;
|
||||
string canonical_name = Path.GetFileNameWithoutExtension (folder_name);
|
||||
|
||||
ShowSyncingPage (canonical_name);
|
||||
|
||||
SparkleShare.Controller.FolderFetched += delegate {
|
||||
InvokeOnMainThread (delegate {
|
||||
ShowSuccessPage (canonical_name);
|
||||
});
|
||||
};
|
||||
|
||||
SparkleShare.Controller.FolderFetchError += delegate {
|
||||
InvokeOnMainThread (delegate {
|
||||
ShowErrorPage ();
|
||||
});
|
||||
};
|
||||
|
||||
SparkleShare.Controller.FetchFolder (server, folder_name);
|
||||
};
|
||||
|
||||
Buttons.Add (SyncButton);
|
||||
|
||||
if (ServerFormOnly) {
|
||||
CancelButton = new NSButton () {
|
||||
Title = "Cancel"
|
||||
};
|
||||
|
||||
CancelButton.Activated += delegate {
|
||||
InvokeOnMainThread (delegate {
|
||||
PerformClose (this);
|
||||
});
|
||||
};
|
||||
|
||||
Buttons.Add (CancelButton);
|
||||
} else {
|
||||
SkipButton = new NSButton () {
|
||||
Title = "Skip"
|
||||
};
|
||||
|
||||
SkipButton.Activated += delegate {
|
||||
InvokeOnMainThread (delegate {
|
||||
ShowCompletedPage ();
|
||||
});
|
||||
};
|
||||
|
||||
Buttons.Add (SkipButton);
|
||||
}
|
||||
|
||||
ShowAll ();
|
||||
}
|
||||
|
||||
|
||||
public void ShowErrorPage ()
|
||||
{
|
||||
Reset ();
|
||||
|
||||
Header = "Something went wrong…";
|
||||
Description = "";
|
||||
|
||||
TryAgainButton = new NSButton () {
|
||||
Title = "Try again…"
|
||||
};
|
||||
|
||||
TryAgainButton.Activated += delegate {
|
||||
InvokeOnMainThread (delegate {
|
||||
ShowServerForm ();
|
||||
});
|
||||
};
|
||||
|
||||
Buttons.Add (TryAgainButton);
|
||||
|
||||
ShowAll ();
|
||||
}
|
||||
|
||||
|
||||
private void ShowSyncingPage (string name)
|
||||
{
|
||||
Reset ();
|
||||
|
||||
Header = "Syncing folder ‘" + name + "’…";
|
||||
Description = "This may take a while.\n" +
|
||||
"Are you sure it’s not coffee o'clock?";
|
||||
|
||||
ProgressIndicator = new NSProgressIndicator () {
|
||||
Frame = new RectangleF (190, Frame.Height - 200, 640 - 150 - 80, 20),
|
||||
Style = NSProgressIndicatorStyle.Bar
|
||||
};
|
||||
|
||||
ProgressIndicator.StartAnimation (this);
|
||||
|
||||
ContentView.AddSubview (ProgressIndicator);
|
||||
|
||||
FinishButton = new NSButton () {
|
||||
Title = "Finish",
|
||||
Enabled = false
|
||||
};
|
||||
|
||||
Buttons.Add (FinishButton);
|
||||
|
||||
ShowAll ();
|
||||
}
|
||||
|
||||
|
||||
public void ShowSuccessPage (string folder_name)
|
||||
{
|
||||
Reset ();
|
||||
|
||||
Header = "Folder synced succesfully!";
|
||||
Description = "Now you can access the synced files from ‘" + folder_name + "’ in " +
|
||||
"your SparkleShare folder.";
|
||||
|
||||
FinishButton = new NSButton () {
|
||||
Title = "Finish"
|
||||
};
|
||||
|
||||
FinishButton.Activated += delegate {
|
||||
InvokeOnMainThread (delegate {
|
||||
SparkleUI.StatusIcon.CreateMenu ();
|
||||
PerformClose (this);
|
||||
});
|
||||
};
|
||||
|
||||
OpenFolderButton = new NSButton () {
|
||||
Title = "Open Folder"
|
||||
};
|
||||
|
||||
OpenFolderButton.Activated += delegate {
|
||||
SparkleShare.Controller.OpenSparkleShareFolder (folder_name);
|
||||
};
|
||||
|
||||
Buttons.Add (FinishButton);
|
||||
Buttons.Add (OpenFolderButton);
|
||||
|
||||
ShowAll ();
|
||||
|
||||
NSApplication.SharedApplication.RequestUserAttention
|
||||
(NSRequestUserAttentionType.CriticalRequest);
|
||||
}
|
||||
|
||||
|
||||
private void ShowCompletedPage ()
|
||||
{
|
||||
Reset ();
|
||||
|
||||
Header = "SparkleShare is ready to go!";
|
||||
Description = "Now you can start accepting invitations from others. " +
|
||||
"Just click on invitations you get by email and " +
|
||||
"we will take care of the rest.";
|
||||
|
||||
FinishButton = new NSButton () {
|
||||
Title = "Finish"
|
||||
};
|
||||
|
||||
FinishButton.Activated += delegate {
|
||||
InvokeOnMainThread (delegate {
|
||||
SparkleUI.StatusIcon.CreateMenu ();
|
||||
PerformClose (this);
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
Buttons.Add (FinishButton);
|
||||
|
||||
ShowAll ();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -139,7 +139,10 @@ namespace SparkleShare {
|
|||
string html = reader.ReadToEnd ();
|
||||
reader.Close ();
|
||||
|
||||
return html;
|
||||
html = html.Replace ("<!-- $jquery-url -->", "file://" +
|
||||
Path.Combine (NSBundle.MainBundle.ResourcePath, "HTML", "jquery.js"));
|
||||
|
||||
return html;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -177,6 +180,7 @@ namespace SparkleShare {
|
|||
new public void Quit ()
|
||||
{
|
||||
this.watcher.Dispose ();
|
||||
NSApplication.SharedApplication.Terminate (new NSObject ());
|
||||
base.Quit ();
|
||||
}
|
||||
}
|
||||
|
|
368
SparkleShare/Mac/SparkleSetup.cs
Normal file
|
@ -0,0 +1,368 @@
|
|||
// SparkleShare, a collaboration and sharing tool.
|
||||
// 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 System;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Timers;
|
||||
|
||||
using Mono.Unix;
|
||||
using MonoMac.Foundation;
|
||||
using MonoMac.AppKit;
|
||||
using MonoMac.ObjCRuntime;
|
||||
using MonoMac.WebKit;
|
||||
|
||||
namespace SparkleShare {
|
||||
|
||||
public class SparkleSetup : SparkleSetupWindow {
|
||||
|
||||
public SparkleSetupController Controller = new SparkleSetupController ();
|
||||
|
||||
private NSButton ContinueButton;
|
||||
private NSButton SyncButton;
|
||||
private NSButton TryAgainButton;
|
||||
private NSButton CancelButton;
|
||||
private NSButton OpenFolderButton;
|
||||
private NSButton FinishButton;
|
||||
private NSForm UserInfoForm;
|
||||
private NSProgressIndicator ProgressIndicator;
|
||||
private NSTextField AddressTextField;
|
||||
private NSTextField FolderNameTextField;
|
||||
private NSTextField ServerTypeLabel;
|
||||
private NSTextField AddressLabel;
|
||||
private NSTextField FolderNameLabel;
|
||||
private NSTextField FolderNameHelpLabel;
|
||||
private NSButtonCell ButtonCellProto;
|
||||
private NSMatrix Matrix;
|
||||
private int ServerType;
|
||||
private Timer timer;
|
||||
|
||||
|
||||
public SparkleSetup () : base ()
|
||||
{
|
||||
Controller.ChangePageEvent += delegate (PageType type) {
|
||||
InvokeOnMainThread (delegate {
|
||||
Reset ();
|
||||
|
||||
switch (type) {
|
||||
case PageType.Setup:
|
||||
|
||||
Header = "Welcome to SparkleShare!";
|
||||
Description = "Before we can create a SparkleShare folder on this " +
|
||||
"computer, we need some information from you.";
|
||||
|
||||
UserInfoForm = new NSForm (new RectangleF (250, 115, 350, 64));
|
||||
|
||||
UserInfoForm.AddEntry ("Full Name:");
|
||||
UserInfoForm.AddEntry ("Email Address:");
|
||||
|
||||
UserInfoForm.CellSize = new SizeF (280, 22);
|
||||
UserInfoForm.IntercellSpacing = new SizeF (4, 4);
|
||||
UserInfoForm.Cells [0].LineBreakMode = NSLineBreakMode.TruncatingTail;
|
||||
UserInfoForm.Cells [1].LineBreakMode = NSLineBreakMode.TruncatingTail;
|
||||
|
||||
UserInfoForm.Cells [0].StringValue = SparkleShare.Controller.UserName;
|
||||
UserInfoForm.Cells [1].StringValue = SparkleShare.Controller.UserEmail;
|
||||
|
||||
// TODO: Ugly hack, do properly with events
|
||||
timer = new Timer () {
|
||||
Interval = 50
|
||||
};
|
||||
|
||||
ContinueButton = new NSButton () {
|
||||
Title = "Continue",
|
||||
Enabled = false
|
||||
};
|
||||
|
||||
ContinueButton.Activated += delegate {
|
||||
timer.Stop ();
|
||||
timer = null;
|
||||
|
||||
string full_name = UserInfoForm.Cells [0].StringValue.Trim ();
|
||||
string email = UserInfoForm.Cells [1].StringValue.Trim ();
|
||||
|
||||
Controller.SetupPageCompleted (full_name, email);
|
||||
};
|
||||
|
||||
timer.Elapsed += delegate {
|
||||
InvokeOnMainThread (delegate {
|
||||
bool name_is_valid = !UserInfoForm.Cells [0].StringValue.Trim ().Equals ("");
|
||||
|
||||
bool email_is_valid = SparkleShare.Controller.IsValidEmail (
|
||||
UserInfoForm.Cells [1].StringValue.Trim ());
|
||||
|
||||
ContinueButton.Enabled = (name_is_valid && email_is_valid);
|
||||
});
|
||||
};
|
||||
|
||||
timer.Start ();
|
||||
|
||||
ContentView.AddSubview (UserInfoForm);
|
||||
Buttons.Add (ContinueButton);
|
||||
|
||||
break;
|
||||
|
||||
case PageType.Add:
|
||||
|
||||
Header = "Where is your remote folder?";
|
||||
Description = "";
|
||||
|
||||
ServerTypeLabel = new NSTextField () {
|
||||
Alignment = NSTextAlignment.Right,
|
||||
BackgroundColor = NSColor.WindowBackground,
|
||||
Bordered = false,
|
||||
Editable = false,
|
||||
Frame = new RectangleF (150, Frame.Height - 139 , 160, 17),
|
||||
StringValue = "Server Type:",
|
||||
Font = SparkleUI.Font
|
||||
};
|
||||
|
||||
AddressLabel = new NSTextField () {
|
||||
Alignment = NSTextAlignment.Right,
|
||||
BackgroundColor = NSColor.WindowBackground,
|
||||
Bordered = false,
|
||||
Editable = false,
|
||||
Frame = new RectangleF (150, Frame.Height - 237 , 160, 17),
|
||||
StringValue = "Address:",
|
||||
Font = SparkleUI.Font
|
||||
};
|
||||
|
||||
FolderNameLabel = new NSTextField () {
|
||||
Alignment = NSTextAlignment.Right,
|
||||
BackgroundColor = NSColor.WindowBackground,
|
||||
Bordered = false,
|
||||
Editable = false,
|
||||
Frame = new RectangleF (150, Frame.Height - 264 , 160, 17),
|
||||
StringValue = "Folder Name:",
|
||||
Font = SparkleUI.Font
|
||||
};
|
||||
|
||||
|
||||
AddressTextField = new NSTextField () {
|
||||
Frame = new RectangleF (320, Frame.Height - 240 , 256, 22),
|
||||
Font = SparkleUI.Font,
|
||||
StringValue = Controller.PreviousServer
|
||||
};
|
||||
|
||||
AddressTextField.Cell.LineBreakMode = NSLineBreakMode.TruncatingTail;
|
||||
|
||||
FolderNameTextField = new NSTextField () {
|
||||
Frame = new RectangleF (320, Frame.Height - (240 + 22 + 4) , 256, 22),
|
||||
StringValue = Controller.PreviousFolder
|
||||
};
|
||||
|
||||
FolderNameTextField.Cell.LineBreakMode = NSLineBreakMode.TruncatingTail;
|
||||
|
||||
FolderNameHelpLabel = new NSTextField () {
|
||||
BackgroundColor = NSColor.WindowBackground,
|
||||
Bordered = false,
|
||||
TextColor = NSColor.DisabledControlText,
|
||||
Editable = false,
|
||||
Frame = new RectangleF (320, Frame.Height - 285 , 200, 17),
|
||||
StringValue = "e.g. ‘rupert/website-design’"
|
||||
};
|
||||
|
||||
ServerType = 0;
|
||||
|
||||
ButtonCellProto = new NSButtonCell ();
|
||||
ButtonCellProto.SetButtonType (NSButtonType.Radio) ;
|
||||
|
||||
Matrix = new NSMatrix (new RectangleF (315, 180, 256, 78),
|
||||
NSMatrixMode.Radio, ButtonCellProto, 4, 1);
|
||||
|
||||
Matrix.CellSize = new SizeF (256, 18);
|
||||
|
||||
Matrix.Cells [0].Title = "My own server";
|
||||
Matrix.Cells [1].Title = "Github";
|
||||
Matrix.Cells [2].Title = "Gitorious";
|
||||
Matrix.Cells [3].Title = "The GNOME Project";
|
||||
|
||||
foreach (NSCell cell in Matrix.Cells)
|
||||
cell.Font = SparkleUI.Font;
|
||||
|
||||
// TODO: Ugly hack, do properly with events
|
||||
timer = new Timer () {
|
||||
Interval = 50
|
||||
};
|
||||
|
||||
timer.Elapsed += delegate {
|
||||
InvokeOnMainThread (delegate {
|
||||
if (Matrix.SelectedRow != ServerType) {
|
||||
ServerType = Matrix.SelectedRow;
|
||||
|
||||
AddressTextField.Enabled = (ServerType == 0);
|
||||
|
||||
switch (ServerType) {
|
||||
case 0:
|
||||
AddressTextField.StringValue = "";
|
||||
FolderNameHelpLabel.StringValue = "e.g. ‘rupert/website-design’";
|
||||
break;
|
||||
case 1:
|
||||
AddressTextField.StringValue = "ssh://git@github.com/";
|
||||
FolderNameHelpLabel.StringValue = "e.g. ‘rupert/website-design’";
|
||||
break;
|
||||
case 2:
|
||||
AddressTextField.StringValue = "ssh://git@gitorious.org/";
|
||||
FolderNameHelpLabel.StringValue = "e.g. ‘project/website-design’";
|
||||
break;
|
||||
case 3:
|
||||
AddressTextField.StringValue = "ssh://git@gnome.org/git/";
|
||||
FolderNameHelpLabel.StringValue = "e.g. ‘gnome-icon-theme’";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (ServerType == 0 && !AddressTextField.StringValue.Trim ().Equals ("")
|
||||
&& !FolderNameTextField.StringValue.Trim ().Equals ("")) {
|
||||
|
||||
SyncButton.Enabled = true;
|
||||
|
||||
} else if (ServerType != 0 &&
|
||||
!FolderNameTextField.StringValue.Trim ().Equals ("")) {
|
||||
|
||||
SyncButton.Enabled = true;
|
||||
|
||||
} else {
|
||||
SyncButton.Enabled = false;
|
||||
}
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
timer.Start ();
|
||||
|
||||
ContentView.AddSubview (ServerTypeLabel);
|
||||
ContentView.AddSubview (Matrix);
|
||||
|
||||
ContentView.AddSubview (AddressLabel);
|
||||
ContentView.AddSubview (AddressTextField);
|
||||
|
||||
ContentView.AddSubview (FolderNameLabel);
|
||||
ContentView.AddSubview (FolderNameTextField);
|
||||
ContentView.AddSubview (FolderNameHelpLabel);
|
||||
|
||||
SyncButton = new NSButton () {
|
||||
Title = "Sync",
|
||||
Enabled = false
|
||||
};
|
||||
|
||||
SyncButton.Activated += delegate {
|
||||
timer.Stop ();
|
||||
timer = null;
|
||||
|
||||
string folder_name = FolderNameTextField.StringValue;
|
||||
string server = AddressTextField.StringValue;
|
||||
Controller.AddPageCompleted (server, folder_name);
|
||||
};
|
||||
|
||||
Buttons.Add (SyncButton);
|
||||
|
||||
CancelButton = new NSButton () {
|
||||
Title = "Cancel"
|
||||
};
|
||||
|
||||
CancelButton.Activated += delegate {
|
||||
InvokeOnMainThread (delegate {
|
||||
PerformClose (this);
|
||||
});
|
||||
};
|
||||
|
||||
Buttons.Add (CancelButton);
|
||||
|
||||
break;
|
||||
|
||||
case PageType.Syncing:
|
||||
|
||||
Header = "Syncing folder ‘" + Controller.SyncingFolder + "’…";
|
||||
Description = "This may take a while.\n" +
|
||||
"Are you sure it’s not coffee o'clock?";
|
||||
|
||||
ProgressIndicator = new NSProgressIndicator () {
|
||||
Frame = new RectangleF (190, Frame.Height - 200, 640 - 150 - 80, 20),
|
||||
Style = NSProgressIndicatorStyle.Bar
|
||||
};
|
||||
|
||||
ProgressIndicator.StartAnimation (this);
|
||||
ContentView.AddSubview (ProgressIndicator);
|
||||
|
||||
FinishButton = new NSButton () {
|
||||
Title = "Finish",
|
||||
Enabled = false
|
||||
};
|
||||
|
||||
Buttons.Add (FinishButton);
|
||||
|
||||
break;
|
||||
|
||||
case PageType.Error:
|
||||
|
||||
Header = "Something went wrong…";
|
||||
Description = "";
|
||||
|
||||
TryAgainButton = new NSButton () {
|
||||
Title = "Try again…"
|
||||
};
|
||||
|
||||
TryAgainButton.Activated += delegate {
|
||||
Controller.ErrorPageCompleted ();
|
||||
};
|
||||
|
||||
Buttons.Add (TryAgainButton);
|
||||
|
||||
break;
|
||||
|
||||
case PageType.Finished:
|
||||
|
||||
Header = "Folder synced succesfully!";
|
||||
Description = "Now you can access the synced files from " +
|
||||
"‘" + Controller.SyncingFolder + "’ in " +
|
||||
"your SparkleShare folder.";
|
||||
|
||||
FinishButton = new NSButton () {
|
||||
Title = "Finish"
|
||||
};
|
||||
|
||||
FinishButton.Activated += delegate {
|
||||
InvokeOnMainThread (delegate {
|
||||
PerformClose (this);
|
||||
});
|
||||
};
|
||||
|
||||
OpenFolderButton = new NSButton () {
|
||||
Title = "Open Folder"
|
||||
};
|
||||
|
||||
OpenFolderButton.Activated += delegate {
|
||||
SparkleShare.Controller.OpenSparkleShareFolder (Controller.SyncingFolder);
|
||||
};
|
||||
|
||||
Buttons.Add (FinishButton);
|
||||
Buttons.Add (OpenFolderButton);
|
||||
|
||||
NSApplication.SharedApplication.RequestUserAttention
|
||||
(NSRequestUserAttentionType.CriticalRequest);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
ShowAll ();
|
||||
});
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
|
@ -28,7 +28,7 @@ using Mono.Unix;
|
|||
|
||||
namespace SparkleShare {
|
||||
|
||||
public class SparkleWindow : NSWindow {
|
||||
public class SparkleSetupWindow : NSWindow {
|
||||
|
||||
public List <NSButton> Buttons;
|
||||
public string Header;
|
||||
|
@ -40,7 +40,7 @@ namespace SparkleShare {
|
|||
private NSTextField DescriptionTextField;
|
||||
|
||||
|
||||
public SparkleWindow () : base ()
|
||||
public SparkleSetupWindow () : base ()
|
||||
{
|
||||
SetFrame (new RectangleF (0, 0, 640, 380), true);
|
||||
|
|
@ -62,7 +62,7 @@
|
|||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\bin\Meebey.SmartIrc4net.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="SparkleLib, Version=0.2.1.0, Culture=neutral, PublicKeyToken=null">
|
||||
<Reference Include="SparkleLib, Version=0.2.4.0, Culture=neutral, PublicKeyToken=null">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\bin\SparkleLib.dll</HintPath>
|
||||
</Reference>
|
||||
|
@ -77,8 +77,6 @@
|
|||
<Compile Include="..\SparkleController.cs">
|
||||
<Link>SparkleController.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="SparkleWindow.cs" />
|
||||
<Compile Include="SparkleIntro.cs" />
|
||||
<Compile Include="SparkleMacController.cs" />
|
||||
<Compile Include="SparkleStatusIcon.cs" />
|
||||
<Compile Include="SparkleUI.cs" />
|
||||
|
@ -87,9 +85,27 @@
|
|||
</Compile>
|
||||
<Compile Include="SparkleAbout.cs" />
|
||||
<Compile Include="SparkleAlert.cs" />
|
||||
<Compile Include="SparkleBubble.cs" />
|
||||
<Compile Include="SparkleMacWatcher.cs" />
|
||||
<Compile Include="SparkleEventLog.cs" />
|
||||
<Compile Include="SparkleBadger.cs" />
|
||||
<Compile Include="SparkleBubbles.cs" />
|
||||
<Compile Include="SparkleSetup.cs" />
|
||||
<Compile Include="SparkleSetupWindow.cs" />
|
||||
<Compile Include="..\SparkleBubblesController.cs">
|
||||
<Link>SparkleBubblesController.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\SparkleEventLogController.cs">
|
||||
<Link>SparkleEventLogController.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\SparkleSetupController.cs">
|
||||
<Link>SparkleSetupController.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\SparkleStatusIconController.cs">
|
||||
<Link>SparkleStatusIconController.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\SparkleAboutController.cs">
|
||||
<Link>SparkleAboutController.cs</Link>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Page Include="MainMenu.xib" />
|
||||
|
@ -170,9 +186,91 @@
|
|||
<Content Include="..\..\data\icons\document-moved-12.png">
|
||||
<Link>Pixmaps\document-moved-12.png</Link>
|
||||
</Content>
|
||||
<Content Include="..\..\po\ar.po">
|
||||
<Link>Translations\ar.po</Link>
|
||||
</Content>
|
||||
<Content Include="..\..\po\bg.po">
|
||||
<Link>Translations\bg.po</Link>
|
||||
</Content>
|
||||
<Content Include="..\..\po\ca.po">
|
||||
<Link>Translations\ca.po</Link>
|
||||
</Content>
|
||||
<Content Include="..\..\po\cs_CZ.po">
|
||||
<Link>Translations\cs_CZ.po</Link>
|
||||
</Content>
|
||||
<Content Include="..\..\po\da.po">
|
||||
<Link>Translations\da.po</Link>
|
||||
</Content>
|
||||
<Content Include="..\..\po\de.po">
|
||||
<Link>Translations\de.po</Link>
|
||||
</Content>
|
||||
<Content Include="..\..\po\el.po">
|
||||
<Link>Translations\el.po</Link>
|
||||
</Content>
|
||||
<Content Include="..\..\po\eo.po">
|
||||
<Link>Translations\eo.po</Link>
|
||||
</Content>
|
||||
<Content Include="..\..\po\es.po">
|
||||
<Link>Translations\es.po</Link>
|
||||
</Content>
|
||||
<Content Include="..\..\po\fi.po">
|
||||
<Link>Translations\fi.po</Link>
|
||||
</Content>
|
||||
<Content Include="..\..\po\fr.po">
|
||||
<Link>Translations\fr.po</Link>
|
||||
</Content>
|
||||
<Content Include="..\..\po\he.po">
|
||||
<Link>Translations\he.po</Link>
|
||||
</Content>
|
||||
<Content Include="..\..\po\hu.po">
|
||||
<Link>Translations\hu.po</Link>
|
||||
</Content>
|
||||
<Content Include="..\..\po\it.po">
|
||||
<Link>Translations\it.po</Link>
|
||||
</Content>
|
||||
<Content Include="..\..\po\ja.po">
|
||||
<Link>Translations\ja.po</Link>
|
||||
</Content>
|
||||
<Content Include="..\..\po\nl.po">
|
||||
<Link>Translations\nl.po</Link>
|
||||
</Content>
|
||||
<Content Include="..\..\po\no_NO.po">
|
||||
<Link>Translations\no_NO.po</Link>
|
||||
</Content>
|
||||
<Content Include="..\..\po\pl.po">
|
||||
<Link>Translations\pl.po</Link>
|
||||
</Content>
|
||||
<Content Include="..\..\po\pt_BR.po">
|
||||
<Link>Translations\pt_BR.po</Link>
|
||||
</Content>
|
||||
<Content Include="..\..\po\ru.po">
|
||||
<Link>Translations\ru.po</Link>
|
||||
</Content>
|
||||
<Content Include="..\..\po\sv.po">
|
||||
<Link>Translations\sv.po</Link>
|
||||
</Content>
|
||||
<Content Include="..\..\po\te.po">
|
||||
<Link>Translations\te.po</Link>
|
||||
</Content>
|
||||
<Content Include="..\..\po\uk.po">
|
||||
<Link>Translations\uk.po</Link>
|
||||
</Content>
|
||||
<Content Include="..\..\po\zh_CN.po">
|
||||
<Link>Translations\zh_CN.po</Link>
|
||||
</Content>
|
||||
<Content Include="..\..\po\zh_TW.po">
|
||||
<Link>Translations\zh_TW.po</Link>
|
||||
</Content>
|
||||
<Content Include="..\..\data\about.png">
|
||||
<Link>Pixmaps\about.png</Link>
|
||||
</Content>
|
||||
<Content Include="..\..\data\html\jquery.js">
|
||||
<Link>HTML\jquery.js</Link>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Pixmaps\" />
|
||||
<Folder Include="HTML\" />
|
||||
<Folder Include="Translations\" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
|
@ -31,6 +31,8 @@ namespace SparkleShare {
|
|||
// user's notification area
|
||||
public class SparkleStatusIcon : NSObject {
|
||||
|
||||
public SparkleStatusIconController Controller = new SparkleStatusIconController ();
|
||||
|
||||
private Timer Animation;
|
||||
private int FrameNumber;
|
||||
private string StateText;
|
||||
|
@ -58,51 +60,232 @@ namespace SparkleShare {
|
|||
|
||||
public SparkleStatusIcon () : base ()
|
||||
{
|
||||
Animation = CreateAnimation ();
|
||||
using (var a = new NSAutoreleasePool ()) {
|
||||
Animation = CreateAnimation ();
|
||||
|
||||
StatusItem = NSStatusBar.SystemStatusBar.CreateStatusItem (28);
|
||||
StatusItem.HighlightMode = true;
|
||||
StatusItem = NSStatusBar.SystemStatusBar.CreateStatusItem (28);
|
||||
StatusItem.HighlightMode = true;
|
||||
|
||||
SetNormalState ();
|
||||
CreateMenu ();
|
||||
StateText = _("Up to date") + " (" + Controller.FolderSize + ")";
|
||||
CreateMenu ();
|
||||
|
||||
Menu.Delegate = new SparkleStatusIconMenuDelegate ();
|
||||
Menu.Delegate = new SparkleStatusIconMenuDelegate ();
|
||||
}
|
||||
|
||||
SparkleShare.Controller.FolderSizeChanged += delegate {
|
||||
Controller.UpdateMenuEvent += delegate (IconState state) {
|
||||
InvokeOnMainThread (delegate {
|
||||
if (!Animation.Enabled)
|
||||
SetNormalState ();
|
||||
using (var a = new NSAutoreleasePool ()) {
|
||||
switch (state) {
|
||||
case IconState.Idle:
|
||||
|
||||
UpdateMenu ();
|
||||
Animation.Stop ();
|
||||
|
||||
if (Controller.Folders.Length == 0)
|
||||
StateText = _("Welcome to SparkleShare!");
|
||||
else
|
||||
StateText = _("Up to date") + " (" + Controller.FolderSize + ")";
|
||||
|
||||
StateMenuItem.Title = StateText;
|
||||
CreateMenu ();
|
||||
|
||||
break;
|
||||
|
||||
case IconState.Syncing:
|
||||
|
||||
StateText = _("Syncing…");
|
||||
StateMenuItem.Title = StateText;
|
||||
|
||||
if (!Animation.Enabled)
|
||||
Animation.Start ();
|
||||
|
||||
break;
|
||||
|
||||
case IconState.Error:
|
||||
|
||||
StateText = _("Not everything is synced");
|
||||
StateMenuItem.Title = StateText;
|
||||
CreateMenu ();
|
||||
|
||||
InvokeOnMainThread (delegate {
|
||||
StatusItem.Image = new NSImage (NSBundle.MainBundle.ResourcePath + "/Pixmaps/error.png");
|
||||
StatusItem.AlternateImage = new NSImage (NSBundle.MainBundle.ResourcePath + "/Pixmaps/error-active.png");
|
||||
StatusItem.Image.Size = new SizeF (16, 16);
|
||||
StatusItem.AlternateImage.Size = new SizeF (16, 16);
|
||||
});
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
SparkleShare.Controller.FolderListChanged += delegate {
|
||||
InvokeOnMainThread (delegate {
|
||||
SetNormalState ();
|
||||
CreateMenu ();
|
||||
});
|
||||
};
|
||||
|
||||
SparkleShare.Controller.OnIdle += delegate {
|
||||
InvokeOnMainThread (delegate {
|
||||
SetNormalState ();
|
||||
CreateMenu ();
|
||||
});
|
||||
};
|
||||
|
||||
SparkleShare.Controller.OnSyncing += delegate {
|
||||
InvokeOnMainThread (delegate {
|
||||
SetAnimationState ();
|
||||
UpdateMenu ();
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
SparkleShare.Controller.OnError += delegate {
|
||||
InvokeOnMainThread (delegate {
|
||||
SetNormalState (true);
|
||||
CreateMenu ();
|
||||
});
|
||||
|
||||
public void CreateMenu ()
|
||||
{
|
||||
using (NSAutoreleasePool a = new NSAutoreleasePool ()) {
|
||||
StatusItem.Image = new NSImage (NSBundle.MainBundle.ResourcePath + "/Pixmaps/idle0.png");
|
||||
StatusItem.AlternateImage = new NSImage (NSBundle.MainBundle.ResourcePath + "/Pixmaps/idle0-active.png");
|
||||
StatusItem.Image.Size = new SizeF (16, 16);
|
||||
StatusItem.AlternateImage.Size = new SizeF (16, 16);
|
||||
|
||||
Menu = new NSMenu ();
|
||||
|
||||
StateMenuItem = new NSMenuItem () {
|
||||
Title = StateText
|
||||
};
|
||||
|
||||
Menu.AddItem (StateMenuItem);
|
||||
Menu.AddItem (NSMenuItem.SeparatorItem);
|
||||
|
||||
FolderMenuItem = new NSMenuItem () {
|
||||
Title = "SparkleShare"
|
||||
};
|
||||
|
||||
FolderMenuItem.Activated += delegate {
|
||||
SparkleShare.Controller.OpenSparkleShareFolder ();
|
||||
};
|
||||
|
||||
FolderMenuItem.Image = NSImage.ImageNamed ("sparkleshare-mac");
|
||||
FolderMenuItem.Image.Size = new SizeF (16, 16);
|
||||
|
||||
Menu.AddItem (FolderMenuItem);
|
||||
|
||||
FolderMenuItems = new NSMenuItem [SparkleShare.Controller.Folders.Count];
|
||||
|
||||
if (Controller.Folders.Length > 0) {
|
||||
Tasks = new EventHandler [SparkleShare.Controller.Folders.Count];
|
||||
|
||||
int i = 0;
|
||||
foreach (string folder_name in SparkleShare.Controller.Folders) {
|
||||
NSMenuItem item = new NSMenuItem ();
|
||||
|
||||
item.Title = folder_name;
|
||||
|
||||
if (SparkleShare.Controller.UnsyncedFolders.Contains (folder_name))
|
||||
item.Image = NSImage.ImageNamed ("NSCaution");
|
||||
else
|
||||
item.Image = NSImage.ImageNamed ("NSFolder");
|
||||
|
||||
item.Image.Size = new SizeF (16, 16);
|
||||
Tasks [i] = OpenFolderDelegate (folder_name);
|
||||
|
||||
FolderMenuItems [i] = item;
|
||||
FolderMenuItems [i].Activated += Tasks [i];
|
||||
|
||||
i++;
|
||||
};
|
||||
|
||||
} else {
|
||||
FolderMenuItems = new NSMenuItem [1];
|
||||
|
||||
FolderMenuItems [0] = new NSMenuItem () {
|
||||
Title = "No Remote Folders Yet"
|
||||
};
|
||||
}
|
||||
|
||||
foreach (NSMenuItem item in FolderMenuItems)
|
||||
Menu.AddItem (item);
|
||||
|
||||
Menu.AddItem (NSMenuItem.SeparatorItem);
|
||||
|
||||
SyncMenuItem = new NSMenuItem () {
|
||||
Title = "Add Remote Folder…"
|
||||
};
|
||||
|
||||
if (!SparkleShare.Controller.FirstRun) {
|
||||
SyncMenuItem.Activated += delegate {
|
||||
InvokeOnMainThread (delegate {
|
||||
NSApplication.SharedApplication.ActivateIgnoringOtherApps (true);
|
||||
|
||||
if (SparkleUI.Setup == null) {
|
||||
SparkleUI.Setup = new SparkleSetup ();
|
||||
SparkleUI.Setup.Controller.ShowAddPage ();
|
||||
}
|
||||
|
||||
if (!SparkleUI.Setup.IsVisible)
|
||||
SparkleUI.Setup.Controller.ShowAddPage ();
|
||||
|
||||
SparkleUI.Setup.OrderFrontRegardless ();
|
||||
SparkleUI.Setup.MakeKeyAndOrderFront (this);
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
Menu.AddItem (SyncMenuItem);
|
||||
Menu.AddItem (NSMenuItem.SeparatorItem);
|
||||
|
||||
RecentEventsMenuItem = new NSMenuItem () {
|
||||
Title = "Show Recent Events"
|
||||
};
|
||||
|
||||
if (Controller.Folders.Length > 0) {
|
||||
RecentEventsMenuItem.Activated += delegate {
|
||||
InvokeOnMainThread (delegate {
|
||||
NSApplication.SharedApplication.ActivateIgnoringOtherApps (true);
|
||||
|
||||
if (SparkleUI.EventLog == null)
|
||||
SparkleUI.EventLog = new SparkleEventLog ();
|
||||
|
||||
SparkleUI.EventLog.OrderFrontRegardless ();
|
||||
SparkleUI.EventLog.MakeKeyAndOrderFront (this);
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
Menu.AddItem (RecentEventsMenuItem);
|
||||
|
||||
NotificationsMenuItem = new NSMenuItem ();
|
||||
|
||||
if (SparkleShare.Controller.NotificationsEnabled)
|
||||
NotificationsMenuItem.Title = "Turn Notifications Off";
|
||||
else
|
||||
NotificationsMenuItem.Title = "Turn Notifications On";
|
||||
|
||||
NotificationsMenuItem.Activated += delegate {
|
||||
SparkleShare.Controller.ToggleNotifications ();
|
||||
|
||||
InvokeOnMainThread (delegate {
|
||||
if (SparkleShare.Controller.NotificationsEnabled)
|
||||
NotificationsMenuItem.Title = "Turn Notifications Off";
|
||||
else
|
||||
NotificationsMenuItem.Title = "Turn Notifications On";
|
||||
});
|
||||
};
|
||||
|
||||
Menu.AddItem (NotificationsMenuItem);
|
||||
Menu.AddItem (NSMenuItem.SeparatorItem);
|
||||
|
||||
AboutMenuItem = new NSMenuItem () {
|
||||
Title = "About SparkleShare"
|
||||
};
|
||||
|
||||
AboutMenuItem.Activated += delegate {
|
||||
InvokeOnMainThread (delegate {
|
||||
NSApplication.SharedApplication.ActivateIgnoringOtherApps (true);
|
||||
|
||||
if (SparkleUI.About == null)
|
||||
SparkleUI.About = new SparkleAbout ();
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
Menu.AddItem (AboutMenuItem);
|
||||
|
||||
StatusItem.Menu = Menu;
|
||||
StatusItem.Menu.Update ();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// A method reference that makes sure that opening the
|
||||
// event log for each repository works correctly
|
||||
private EventHandler OpenFolderDelegate (string name)
|
||||
{
|
||||
return delegate {
|
||||
SparkleShare.Controller.OpenSparkleShareFolder (name);
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -113,7 +296,7 @@ namespace SparkleShare {
|
|||
FrameNumber = 0;
|
||||
|
||||
Timer Animation = new Timer () {
|
||||
Interval = 35
|
||||
Interval = 40
|
||||
};
|
||||
|
||||
Animation.Elapsed += delegate {
|
||||
|
@ -139,243 +322,6 @@ namespace SparkleShare {
|
|||
return Animation;
|
||||
}
|
||||
|
||||
|
||||
// Creates the menu that is popped up when the
|
||||
// user clicks the status icon
|
||||
public void CreateMenu ()
|
||||
{
|
||||
Menu = new NSMenu ();
|
||||
|
||||
StateMenuItem = new NSMenuItem () {
|
||||
Title = StateText
|
||||
};
|
||||
|
||||
Menu.AddItem (StateMenuItem);
|
||||
Menu.AddItem (NSMenuItem.SeparatorItem);
|
||||
|
||||
FolderMenuItem = new NSMenuItem () {
|
||||
Title = "SparkleShare"
|
||||
};
|
||||
|
||||
FolderMenuItem.Activated += delegate {
|
||||
SparkleShare.Controller.OpenSparkleShareFolder ();
|
||||
};
|
||||
|
||||
string folder_icon_path = Path.Combine (NSBundle.MainBundle.ResourcePath,
|
||||
"sparkleshare-mac.icns");
|
||||
|
||||
FolderMenuItem.Image = new NSImage (folder_icon_path);
|
||||
FolderMenuItem.Image.Size = new SizeF (16, 16);
|
||||
|
||||
Menu.AddItem (FolderMenuItem);
|
||||
|
||||
if (SparkleShare.Controller.Folders.Count > 0) {
|
||||
FolderMenuItems = new NSMenuItem [SparkleShare.Controller.Folders.Count];
|
||||
Tasks = new EventHandler [SparkleShare.Controller.Folders.Count];
|
||||
|
||||
int i = 0;
|
||||
foreach (string folder_name in SparkleShare.Controller.Folders) {
|
||||
NSMenuItem item = new NSMenuItem ();
|
||||
|
||||
item.Title = folder_name;
|
||||
|
||||
if (SparkleShare.Controller.UnsyncedFolders.Contains (folder_name))
|
||||
item.Image = NSImage.ImageNamed ("NSCaution");
|
||||
else
|
||||
item.Image = NSImage.ImageNamed ("NSFolder");
|
||||
|
||||
item.Image.Size = new SizeF (16, 16);
|
||||
Tasks [i] = OpenFolderDelegate (folder_name);
|
||||
|
||||
FolderMenuItems [i] = item;
|
||||
FolderMenuItems [i].Activated += Tasks [i];
|
||||
Menu.AddItem (FolderMenuItems [i]);
|
||||
|
||||
i++;
|
||||
};
|
||||
|
||||
|
||||
|
||||
} else {
|
||||
FolderMenuItems = new NSMenuItem [1];
|
||||
|
||||
FolderMenuItems [0] = new NSMenuItem () {
|
||||
Title = "No Remote Folders Yet"
|
||||
};
|
||||
|
||||
Menu.AddItem (FolderMenuItems [0]);
|
||||
}
|
||||
|
||||
Menu.AddItem (NSMenuItem.SeparatorItem);
|
||||
|
||||
SyncMenuItem = new NSMenuItem () {
|
||||
Title = "Add Remote Folder…"
|
||||
};
|
||||
|
||||
if (!SparkleShare.Controller.FirstRun) {
|
||||
SyncMenuItem.Activated += delegate {
|
||||
InvokeOnMainThread (delegate {
|
||||
NSApplication.SharedApplication.ActivateIgnoringOtherApps (true);
|
||||
|
||||
if (SparkleUI.Intro == null) {
|
||||
SparkleUI.Intro = new SparkleIntro ();
|
||||
SparkleUI.Intro.ShowServerForm (true);
|
||||
}
|
||||
|
||||
if (!SparkleUI.Intro.IsVisible)
|
||||
SparkleUI.Intro.ShowServerForm (true);
|
||||
|
||||
SparkleUI.Intro.OrderFrontRegardless ();
|
||||
SparkleUI.Intro.MakeKeyAndOrderFront (this);
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
Menu.AddItem (SyncMenuItem);
|
||||
Menu.AddItem (NSMenuItem.SeparatorItem);
|
||||
|
||||
RecentEventsMenuItem = new NSMenuItem () {
|
||||
Title = "Show Recent Events"
|
||||
};
|
||||
|
||||
if (SparkleShare.Controller.Folders.Count > 0) {
|
||||
RecentEventsMenuItem.Activated += delegate {
|
||||
InvokeOnMainThread (delegate {
|
||||
NSApplication.SharedApplication.ActivateIgnoringOtherApps (true);
|
||||
|
||||
if (SparkleUI.EventLog == null)
|
||||
SparkleUI.EventLog = new SparkleEventLog ();
|
||||
|
||||
SparkleUI.EventLog.OrderFrontRegardless ();
|
||||
SparkleUI.EventLog.MakeKeyAndOrderFront (this);
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
Menu.AddItem (RecentEventsMenuItem);
|
||||
|
||||
NotificationsMenuItem = new NSMenuItem ();
|
||||
|
||||
if (SparkleShare.Controller.NotificationsEnabled)
|
||||
NotificationsMenuItem.Title = "Turn Notifications Off";
|
||||
else
|
||||
NotificationsMenuItem.Title = "Turn Notifications On";
|
||||
|
||||
NotificationsMenuItem.Activated += delegate {
|
||||
SparkleShare.Controller.ToggleNotifications ();
|
||||
|
||||
InvokeOnMainThread (delegate {
|
||||
if (SparkleShare.Controller.NotificationsEnabled)
|
||||
NotificationsMenuItem.Title = "Turn Notifications Off";
|
||||
else
|
||||
NotificationsMenuItem.Title = "Turn Notifications On";
|
||||
});
|
||||
};
|
||||
|
||||
Menu.AddItem (NotificationsMenuItem);
|
||||
Menu.AddItem (NSMenuItem.SeparatorItem);
|
||||
|
||||
AboutMenuItem = new NSMenuItem () {
|
||||
Title = "About SparkleShare"
|
||||
};
|
||||
|
||||
AboutMenuItem.Activated += delegate {
|
||||
InvokeOnMainThread (delegate {
|
||||
NSApplication.SharedApplication.ActivateIgnoringOtherApps (true);
|
||||
|
||||
if (SparkleUI.About == null)
|
||||
SparkleUI.About = new SparkleAbout ();
|
||||
|
||||
SparkleUI.About.OrderFrontRegardless ();
|
||||
SparkleUI.About.MakeKeyAndOrderFront (this);
|
||||
SparkleUI.About.CheckForNewVersion ();
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
Menu.AddItem (AboutMenuItem);
|
||||
|
||||
|
||||
|
||||
StatusItem.Menu = Menu;
|
||||
StatusItem.Menu.Update ();
|
||||
}
|
||||
|
||||
|
||||
// A method reference that makes sure that opening the
|
||||
// event log for each repository works correctly
|
||||
private EventHandler OpenFolderDelegate (string name)
|
||||
{
|
||||
return delegate {
|
||||
SparkleShare.Controller.OpenSparkleShareFolder (name);
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
public void UpdateMenu ()
|
||||
{
|
||||
StateMenuItem.Title = StateText;
|
||||
}
|
||||
|
||||
|
||||
// The state when there's nothing going on
|
||||
private void SetNormalState ()
|
||||
{
|
||||
if (SparkleShare.Controller.UnsyncedFolders.Count > 0)
|
||||
SetNormalState (true);
|
||||
else
|
||||
SetNormalState (false);
|
||||
}
|
||||
|
||||
|
||||
// The state when there's nothing going on
|
||||
private void SetNormalState (bool error)
|
||||
{
|
||||
Animation.Stop ();
|
||||
|
||||
if (SparkleShare.Controller.Folders.Count == 0) {
|
||||
StateText = _("Welcome to SparkleShare!");
|
||||
|
||||
InvokeOnMainThread (delegate {
|
||||
StatusItem.Image = new NSImage (NSBundle.MainBundle.ResourcePath + "/Pixmaps/idle0.png");
|
||||
StatusItem.AlternateImage = new NSImage (NSBundle.MainBundle.ResourcePath + "/Pixmaps/idle0-active.png");
|
||||
StatusItem.Image.Size = new SizeF (16, 16);
|
||||
StatusItem.AlternateImage.Size = new SizeF (16, 16);
|
||||
});
|
||||
|
||||
} else {
|
||||
if (error) {
|
||||
StateText = _("Not everything is synced");
|
||||
|
||||
InvokeOnMainThread (delegate {
|
||||
StatusItem.Image = new NSImage (NSBundle.MainBundle.ResourcePath + "/Pixmaps/error.png");
|
||||
StatusItem.AlternateImage = new NSImage (NSBundle.MainBundle.ResourcePath + "/Pixmaps/error-active.png");
|
||||
StatusItem.Image.Size = new SizeF (16, 16);
|
||||
StatusItem.AlternateImage.Size = new SizeF (16, 16);
|
||||
});
|
||||
|
||||
} else {
|
||||
StateText = _("Up to date") + " (" + SparkleShare.Controller.FolderSize + ")";
|
||||
|
||||
InvokeOnMainThread (delegate {
|
||||
StatusItem.Image = new NSImage (NSBundle.MainBundle.ResourcePath + "/Pixmaps/idle0.png");
|
||||
StatusItem.AlternateImage = new NSImage (NSBundle.MainBundle.ResourcePath + "/Pixmaps/idle0-active.png");
|
||||
StatusItem.Image.Size = new SizeF (16, 16);
|
||||
StatusItem.AlternateImage.Size = new SizeF (16, 16);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// The state when animating
|
||||
private void SetAnimationState ()
|
||||
{
|
||||
StateText = _("Syncing…");
|
||||
|
||||
if (!Animation.Enabled)
|
||||
Animation.Start ();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@ using System.Drawing;
|
|||
using System.IO;
|
||||
using System.Timers;
|
||||
|
||||
using Mono.Unix;
|
||||
using MonoMac.Foundation;
|
||||
using MonoMac.AppKit;
|
||||
using MonoMac.ObjCRuntime;
|
||||
|
@ -28,39 +29,20 @@ using MonoMac.Growl;
|
|||
|
||||
namespace SparkleShare {
|
||||
|
||||
public partial class AppDelegate : NSApplicationDelegate {
|
||||
public class SparkleUI : AppDelegate {
|
||||
|
||||
public override void WillBecomeActive (NSNotification notification)
|
||||
{
|
||||
NSApplication.SharedApplication.DockTile.BadgeLabel = null;
|
||||
}
|
||||
|
||||
public override void OrderFrontStandardAboutPanel (NSObject sender)
|
||||
{
|
||||
// FIXME: Doesn't work
|
||||
new SparkleAbout ();
|
||||
}
|
||||
|
||||
public override void WillTerminate (NSNotification notification)
|
||||
{
|
||||
SparkleShare.Controller.Quit ();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class SparkleUI : AppDelegate {
|
||||
|
||||
public static SparkleStatusIcon StatusIcon;
|
||||
public static SparkleEventLog EventLog;
|
||||
public static SparkleIntro Intro;
|
||||
public static SparkleStatusIcon StatusIcon;
|
||||
public static SparkleEventLog EventLog;
|
||||
public static SparkleSetup Setup;
|
||||
public static SparkleBubbles Bubbles;
|
||||
public static SparkleAbout About;
|
||||
public static NSFont Font;
|
||||
public static NSFont Font;
|
||||
|
||||
private NSAlert alert;
|
||||
|
||||
|
||||
public SparkleUI ()
|
||||
{
|
||||
public SparkleUI ()
|
||||
{
|
||||
string content_path = Directory.GetParent (
|
||||
System.AppDomain.CurrentDomain.BaseDirectory).ToString ();
|
||||
|
||||
|
@ -71,6 +53,10 @@ namespace SparkleShare {
|
|||
Dlfcn.dlopen (growl_path, 0);
|
||||
NSApplication.Init ();
|
||||
|
||||
// Use translations
|
||||
Catalog.Init ("sparkleshare",
|
||||
Path.Combine (NSBundle.MainBundle.ResourcePath, "Translations"));
|
||||
|
||||
using (NSAutoreleasePool pool = new NSAutoreleasePool ()) {
|
||||
|
||||
// Needed for Growl
|
||||
|
@ -79,106 +65,44 @@ namespace SparkleShare {
|
|||
NSApplication.SharedApplication.ApplicationIconImage
|
||||
= NSImage.ImageNamed ("sparkleshare.icns");
|
||||
|
||||
SetFolderIcon ();
|
||||
|
||||
if (!SparkleShare.Controller.BackendIsPresent) {
|
||||
this.alert = new SparkleAlert ();
|
||||
this.alert.RunModal ();
|
||||
return;
|
||||
}
|
||||
|
||||
SetFolderIcon ();
|
||||
|
||||
Font = NSFontManager.SharedFontManager.FontWithFamily
|
||||
("Lucida Grande", NSFontTraitMask.Condensed, 0, 13);
|
||||
|
||||
StatusIcon = new SparkleStatusIcon ();
|
||||
Bubbles = new SparkleBubbles ();
|
||||
|
||||
if (SparkleShare.Controller.FirstRun) {
|
||||
Setup = new SparkleSetup ();
|
||||
Setup.Controller.ShowSetupPage ();
|
||||
}
|
||||
}
|
||||
|
||||
SparkleShare.Controller.NotificationRaised += delegate (string user_name, string user_email,
|
||||
string message, string repository_path) {
|
||||
InvokeOnMainThread (delegate {
|
||||
if (EventLog != null)
|
||||
EventLog.UpdateEvents ();
|
||||
|
||||
if (SparkleShare.Controller.NotificationsEnabled) {
|
||||
if (NSApplication.SharedApplication.DockTile.BadgeLabel == null)
|
||||
NSApplication.SharedApplication.DockTile.BadgeLabel = "1";
|
||||
else
|
||||
NSApplication.SharedApplication.DockTile.BadgeLabel =
|
||||
(int.Parse (NSApplication.SharedApplication.DockTile.BadgeLabel) + 1).ToString ();
|
||||
|
||||
if (GrowlApplicationBridge.IsGrowlRunning ()) {
|
||||
SparkleBubble bubble = new SparkleBubble (user_name, message) {
|
||||
ImagePath = SparkleShare.Controller.GetAvatar (user_email, 36)
|
||||
};
|
||||
|
||||
bubble.Show ();
|
||||
|
||||
} else {
|
||||
NSApplication.SharedApplication.RequestUserAttention
|
||||
(NSRequestUserAttentionType.InformationalRequest);
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
SparkleShare.Controller.ConflictNotificationRaised += delegate {
|
||||
string title = "Ouch! Mid-air collision!";
|
||||
string subtext = "Don't worry, SparkleShare made a copy of each conflicting file.";
|
||||
public void SetFolderIcon ()
|
||||
{
|
||||
string folder_icon_path = Path.Combine (NSBundle.MainBundle.ResourcePath,
|
||||
"sparkleshare-mac.icns");
|
||||
|
||||
new SparkleBubble (title, subtext).Show ();
|
||||
};
|
||||
NSImage folder_icon = new NSImage (folder_icon_path);
|
||||
|
||||
NSWorkspace.SharedWorkspace.SetIconforFile (folder_icon,
|
||||
SparkleShare.Controller.SparklePath, 0);
|
||||
}
|
||||
|
||||
|
||||
SparkleShare.Controller.AvatarFetched += delegate {
|
||||
InvokeOnMainThread (delegate {
|
||||
if (EventLog != null)
|
||||
EventLog.UpdateEvents ();
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
SparkleShare.Controller.OnIdle += delegate {
|
||||
InvokeOnMainThread (delegate {
|
||||
if (EventLog != null)
|
||||
EventLog.UpdateEvents ();
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
SparkleShare.Controller.FolderListChanged += delegate {
|
||||
InvokeOnMainThread (delegate {
|
||||
if (EventLog != null) {
|
||||
EventLog.UpdateChooser ();
|
||||
EventLog.UpdateEvents ();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
if (SparkleShare.Controller.FirstRun) {
|
||||
Intro = new SparkleIntro ();
|
||||
Intro.ShowAccountForm ();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void SetFolderIcon ()
|
||||
{
|
||||
string folder_icon_path = Path.Combine (NSBundle.MainBundle.ResourcePath,
|
||||
"sparkleshare-mac.icns");
|
||||
|
||||
NSImage folder_icon = new NSImage (folder_icon_path);
|
||||
|
||||
NSWorkspace.SharedWorkspace.SetIconforFile (folder_icon,
|
||||
SparkleShare.Controller.SparklePath, 0);
|
||||
}
|
||||
|
||||
|
||||
public void Run ()
|
||||
{
|
||||
public void Run ()
|
||||
{
|
||||
NSApplication.Main (new string [0]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[Export("registrationDictionaryForGrowl")]
|
||||
|
@ -188,4 +112,18 @@ namespace SparkleShare {
|
|||
return NSDictionary.FromFile (path);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public partial class AppDelegate : NSApplicationDelegate {
|
||||
|
||||
public override void WillBecomeActive (NSNotification notification)
|
||||
{
|
||||
NSApplication.SharedApplication.DockTile.BadgeLabel = null;
|
||||
}
|
||||
|
||||
public override void WillTerminate (NSNotification notification)
|
||||
{
|
||||
SparkleShare.Controller.Quit ();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,19 +13,39 @@ endif
|
|||
|
||||
SOURCES = \
|
||||
SparkleAbout.cs \
|
||||
SparkleBubble.cs \
|
||||
SparkleAboutController.cs \
|
||||
SparkleBubbles.cs \
|
||||
SparkleBubblesController.cs \
|
||||
SparkleController.cs \
|
||||
SparkleEntry.cs \
|
||||
SparkleInfobar.cs \
|
||||
SparkleIntro.cs \
|
||||
SparkleLinController.cs \
|
||||
SparkleEventLog.cs \
|
||||
SparkleEventLogController.cs \
|
||||
SparkleLinController.cs \
|
||||
SparkleSetup.cs \
|
||||
SparkleSetupController.cs \
|
||||
SparkleSetupWindow.cs \
|
||||
SparkleShare.cs \
|
||||
SparkleSpinner.cs \
|
||||
SparkleStatusIcon.cs \
|
||||
SparkleStatusIconController.cs \
|
||||
SparkleUI.cs \
|
||||
SparkleUIHelpers.cs \
|
||||
SparkleWindow.cs
|
||||
SparkleUIHelpers.cs
|
||||
SparkleBubbles.cs \
|
||||
SparkleBubblesController.cs \
|
||||
SparkleController.cs \
|
||||
SparkleEntry.cs \
|
||||
SparkleEventLog.cs \
|
||||
SparkleEventLogController.cs \
|
||||
SparkleLinController.cs \
|
||||
SparkleSetup.cs \
|
||||
SparkleSetupController.cs \
|
||||
SparkleSetupWindow.cs \
|
||||
SparkleShare.cs \
|
||||
SparkleSpinner.cs \
|
||||
SparkleStatusIcon.cs \
|
||||
SparkleStatusIconController.cs \
|
||||
SparkleUI.cs \
|
||||
SparkleUIHelpers.cs
|
||||
|
||||
include $(top_srcdir)/build/build.mk
|
||||
|
||||
|
|
|
@ -26,7 +26,9 @@ namespace SparkleShare {
|
|||
|
||||
public class SparkleAbout : Window {
|
||||
|
||||
private Label version;
|
||||
public SparkleAboutController Controller = new SparkleAboutController ();
|
||||
|
||||
private Label updates;
|
||||
|
||||
|
||||
// Short alias for the translations
|
||||
|
@ -38,30 +40,54 @@ namespace SparkleShare {
|
|||
|
||||
public SparkleAbout () : base ("")
|
||||
{
|
||||
DefaultSize = new Gdk.Size (360, 260);
|
||||
DeleteEvent += delegate (object o, DeleteEventArgs args) {
|
||||
HideAll ();
|
||||
args.RetVal = true;
|
||||
};
|
||||
|
||||
DefaultSize = new Gdk.Size (600, 260);
|
||||
Resizable = false;
|
||||
BorderWidth = 0;
|
||||
IconName = "folder-sparkleshare";
|
||||
WindowPosition = WindowPosition.Center;
|
||||
Title = _("About SparkleShare");
|
||||
Resizable = false;
|
||||
AppPaintable = true;
|
||||
|
||||
// TODO: Should be able to do without referencing SparkleLib...
|
||||
//string image_path = SparkleLib.SparkleHelpers.CombineMore (SparkleLib.Defines.DATAROOTDIR,
|
||||
// "sparkleshare", "pixmaps", "about.png");
|
||||
|
||||
Realize ();
|
||||
//Gdk.Pixbuf buf = new Gdk.Pixbuf (image_path);
|
||||
//Gdk.Pixmap map, map2;
|
||||
//buf.RenderPixmapAndMask (out map, out map2, 255);
|
||||
//GdkWindow.SetBackPixmap (map, false);
|
||||
|
||||
CreateAbout ();
|
||||
|
||||
SparkleShare.Controller.NewVersionAvailable += delegate (string new_version) {
|
||||
Controller.NewVersionEvent += delegate (string new_version) {
|
||||
Application.Invoke (delegate {
|
||||
this.version.Markup = String.Format ("<small><span fgcolor='#f57900'>{0}: {1}</span></small>", _("A newer version is available"), new_version);
|
||||
this.version.ShowAll ();
|
||||
this.updates.Markup = String.Format ("<span font_size='small' fgcolor='#f57900'>{0}</span>",
|
||||
String.Format (_("A newer version ({0}) is available!"), new_version));
|
||||
this.updates.ShowAll ();
|
||||
});
|
||||
};
|
||||
|
||||
SparkleShare.Controller.VersionUpToDate += delegate {
|
||||
Controller.VersionUpToDateEvent += delegate {
|
||||
Application.Invoke (delegate {
|
||||
this.version.Markup = String.Format ("<small><span fgcolor='#4e9a06'>{0}</span></small>", _("You are running the latest version."));
|
||||
this.version.ShowAll ();
|
||||
this.updates.Markup = String.Format ("<span font_size='small' fgcolor='#4e9a06'>{0}</span>",
|
||||
_("You are running the latest version."));
|
||||
this.updates.ShowAll ();
|
||||
});
|
||||
};
|
||||
|
||||
SparkleShare.Controller.CheckForNewVersion ();
|
||||
Controller.CheckingForNewVersionEvent += delegate {
|
||||
Application.Invoke (delegate {
|
||||
this.updates.Markup = String.Format ("<span font_size='small' fgcolor='#4e9a06'>{0}</span>",
|
||||
_("Checking for updates..."));
|
||||
this.updates.ShowAll ();
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
@ -70,84 +96,58 @@ namespace SparkleShare {
|
|||
Gdk.Color color = Style.Foreground (StateType.Insensitive);
|
||||
string secondary_text_color = SparkleUIHelpers.GdkColorToHex (color);
|
||||
|
||||
EventBox box = new EventBox ();
|
||||
box.ModifyBg (StateType.Normal, new TreeView ().Style.Base (StateType.Normal));
|
||||
|
||||
Label header = new Label () {
|
||||
Markup = "<span font_size='xx-large'>SparkleShare</span>\n<span fgcolor='" + secondary_text_color + "'><small>" + SparkleShare.Controller.Version + "</small></span>",
|
||||
Xalign = 0,
|
||||
Xpad = 18,
|
||||
Ypad = 18
|
||||
};
|
||||
|
||||
box.Add (header);
|
||||
|
||||
this.version = new Label () {
|
||||
Markup = String.Format ("<small>{0}</small>", _("Checking for updates...")),
|
||||
Label version = new Label () {
|
||||
Markup = "<span font_size='small' fgcolor='white'>" +
|
||||
"version " + Controller.RunningVersion +
|
||||
"</span>",
|
||||
Xalign = 0,
|
||||
Xpad = 18,
|
||||
Ypad = 22,
|
||||
Xpad = 300
|
||||
};
|
||||
|
||||
this.updates = new Label () {
|
||||
Markup = "<span font_size='small' fgcolor='" + secondary_text_color + "'>" +
|
||||
_("Checking for updates...") +
|
||||
"</span>",
|
||||
Xalign = 0,
|
||||
Xpad = 300
|
||||
};
|
||||
|
||||
Label copyright = new Label () {
|
||||
Markup = "<span font_size='small' fgcolor='white'>" +
|
||||
"Copyright © 2010–" + DateTime.Now.Year + " " +
|
||||
"Hylke Bons and others." +
|
||||
"</span>",
|
||||
Xalign = 0,
|
||||
Xpad = 300
|
||||
};
|
||||
|
||||
Label license = new Label () {
|
||||
Xalign = 0,
|
||||
Xpad = 18,
|
||||
Ypad = 0,
|
||||
LineWrap = true,
|
||||
Wrap = true,
|
||||
LineWrapMode = Pango.WrapMode.Word,
|
||||
|
||||
Markup = "<small>Copyright © 2010–" + DateTime.Now.Year + " Hylke Bons and others\n" +
|
||||
"\n" +
|
||||
"SparkleShare is Free and Open Source Software. " +
|
||||
"You are free to use, modify, and redistribute it " +
|
||||
"under the terms of the GNU General Public License version 3 or later.</small>"
|
||||
Markup = "<span font_size='small' fgcolor='white'>" +
|
||||
"SparkleShare is Free and Open Source Software. You are free to use, modify, " +
|
||||
"and redistribute it under the GNU General Public License version 3 or later." +
|
||||
"</span>",
|
||||
WidthRequest = 330,
|
||||
Wrap = true,
|
||||
Xalign = 0,
|
||||
Xpad = 300,
|
||||
};
|
||||
|
||||
VBox vbox = new VBox (false, 0) {
|
||||
BorderWidth = 0
|
||||
VBox layout_horizontal = new VBox (false, 0) {
|
||||
BorderWidth = 0,
|
||||
HeightRequest = 260,
|
||||
WidthRequest = 640
|
||||
};
|
||||
|
||||
HButtonBox button_bar = new HButtonBox () {
|
||||
BorderWidth = 12
|
||||
};
|
||||
layout_horizontal.PackStart (new Label (""), false, false, 42);
|
||||
layout_horizontal.PackStart (version, false, false, 0);
|
||||
layout_horizontal.PackStart (this.updates, false, false, 0);
|
||||
layout_horizontal.PackStart (copyright, false, false, 9);
|
||||
layout_horizontal.PackStart (license, false, false, 0);
|
||||
layout_horizontal.PackStart (new Label (""), false, false, 0);
|
||||
|
||||
Button credits_button = new Button (_("_Show Credits")) {
|
||||
UseUnderline = true
|
||||
};
|
||||
|
||||
credits_button.Clicked += delegate {
|
||||
|
||||
Process process = new Process ();
|
||||
process.StartInfo.FileName = "xdg-open";
|
||||
process.StartInfo.Arguments = "http://www.sparkleshare.org/credits";
|
||||
process.Start ();
|
||||
|
||||
};
|
||||
|
||||
Button website_button = new Button (_("_Visit Website")) {
|
||||
UseUnderline = true
|
||||
};
|
||||
|
||||
website_button.Clicked += delegate {
|
||||
|
||||
Process process = new Process ();
|
||||
process.StartInfo.FileName = "xdg-open";
|
||||
process.StartInfo.Arguments = "http://www.sparkleshare.org/";
|
||||
process.Start ();
|
||||
|
||||
};
|
||||
|
||||
button_bar.Add (website_button);
|
||||
button_bar.Add (credits_button);
|
||||
|
||||
vbox.PackStart (box, true, true, 0);
|
||||
vbox.PackStart (this.version, false, false, 0);
|
||||
vbox.PackStart (license, true, true, 0);
|
||||
vbox.PackStart (new Label (""), true, true, 0);
|
||||
vbox.PackStart (button_bar, false, false, 0);
|
||||
|
||||
Add (vbox);
|
||||
Add (layout_horizontal);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
95
SparkleShare/SparkleAboutController.cs
Normal file
|
@ -0,0 +1,95 @@
|
|||
// SparkleShare, a collaboration and sharing tool.
|
||||
// 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 System;
|
||||
using System.Net;
|
||||
using System.Threading;
|
||||
using System.Timers;
|
||||
|
||||
using SparkleLib;
|
||||
|
||||
namespace SparkleShare {
|
||||
|
||||
public class SparkleAboutController {
|
||||
|
||||
public event NewVersionEventHandler NewVersionEvent;
|
||||
public delegate void NewVersionEventHandler (string new_version);
|
||||
|
||||
public event VersionUpToDateEventHandler VersionUpToDateEvent;
|
||||
public delegate void VersionUpToDateEventHandler ();
|
||||
|
||||
public event CheckingForNewVersionEventHandler CheckingForNewVersionEvent;
|
||||
public delegate void CheckingForNewVersionEventHandler ();
|
||||
|
||||
public string RunningVersion {
|
||||
get {
|
||||
return SparkleBackend.Version;
|
||||
}
|
||||
}
|
||||
|
||||
// Check for a new version once a day
|
||||
private System.Timers.Timer version_checker = new System.Timers.Timer () {
|
||||
Enabled = true,
|
||||
Interval = 24 * 60 * 60 * 1000
|
||||
};
|
||||
|
||||
|
||||
public SparkleAboutController ()
|
||||
{
|
||||
CheckForNewVersion ();
|
||||
|
||||
this.version_checker.Elapsed += delegate {
|
||||
CheckForNewVersion ();
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
public void CheckForNewVersion ()
|
||||
{
|
||||
this.version_checker.Stop ();
|
||||
if (CheckingForNewVersionEvent != null)
|
||||
CheckingForNewVersionEvent ();
|
||||
|
||||
WebClient web_client = new WebClient ();
|
||||
Uri uri = new Uri ("http://www.sparkleshare.org/version");
|
||||
|
||||
web_client.DownloadStringCompleted += delegate (object o, DownloadStringCompletedEventArgs args) {
|
||||
if (args.Error != null)
|
||||
return;
|
||||
|
||||
string new_version = args.Result.Trim ();
|
||||
|
||||
// Add a little delay, making it seems we're
|
||||
// actually doing hard work
|
||||
Thread.Sleep (2 * 1000);
|
||||
|
||||
if (RunningVersion.Equals (new_version)) {
|
||||
if (VersionUpToDateEvent != null)
|
||||
VersionUpToDateEvent ();
|
||||
|
||||
} else {
|
||||
if (NewVersionEvent != null)
|
||||
NewVersionEvent (new_version);
|
||||
}
|
||||
|
||||
this.version_checker.Start ();
|
||||
};
|
||||
|
||||
web_client.DownloadStringAsync (uri);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -16,26 +16,41 @@
|
|||
|
||||
|
||||
using System;
|
||||
|
||||
using Gtk;
|
||||
using Notifications;
|
||||
|
||||
namespace SparkleShare {
|
||||
|
||||
public class SparkleBubble : Notification {
|
||||
public class SparkleBubbles {
|
||||
|
||||
public SparkleBubble (string title, string subtext) : base (title, subtext)
|
||||
public SparkleBubblesController Controller = new SparkleBubblesController ();
|
||||
|
||||
|
||||
public SparkleBubbles ()
|
||||
{
|
||||
IconName = "folder-sparkleshare";
|
||||
Timeout = 4500;
|
||||
Urgency = Urgency.Low;
|
||||
Controller.ShowBubbleEvent += delegate (string title, string subtext, string image_path) {
|
||||
Notification notification = new Notification () {
|
||||
Timeout = 5 * 1000,
|
||||
Urgency = Urgency.Low
|
||||
};
|
||||
|
||||
if (image_path != null)
|
||||
notification.Icon = new Gdk.Pixbuf (image_path);
|
||||
else
|
||||
notification.IconName = "folder-sparkleshare";
|
||||
|
||||
notification.Show ();
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
// Checks whether the system allows adding buttons to a notification,
|
||||
// prevents error messages in Ubuntu.
|
||||
new public void AddAction (string action, string label, ActionHandler handler)
|
||||
{
|
||||
if (Array.IndexOf (Notifications.Global.Capabilities, "actions") > -1)
|
||||
base.AddAction (action, label, handler);
|
||||
}
|
||||
// new public void AddAction (string action, string label, ActionHandler handler)
|
||||
// {
|
||||
// if (Array.IndexOf (Notifications.Global.Capabilities, "actions") > -1)
|
||||
// base.AddAction (action, label, handler);
|
||||
// }
|
||||
}
|
||||
}
|
45
SparkleShare/SparkleBubblesController.cs
Normal file
|
@ -0,0 +1,45 @@
|
|||
// SparkleShare, a collaboration and sharing tool.
|
||||
// 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 System;
|
||||
|
||||
namespace SparkleShare {
|
||||
|
||||
public class SparkleBubblesController {
|
||||
|
||||
public event ShowBubbleEventHandler ShowBubbleEvent;
|
||||
public delegate void ShowBubbleEventHandler (string title, string subtext, string image_path);
|
||||
|
||||
|
||||
public SparkleBubblesController ()
|
||||
{
|
||||
SparkleShare.Controller.ConflictNotificationRaised += delegate {
|
||||
if (ShowBubbleEvent != null && SparkleShare.Controller.NotificationsEnabled)
|
||||
ShowBubbleEvent ("Ouch! Mid-air collision!",
|
||||
"Don't worry, SparkleShare made a copy of each conflicting file.", null);
|
||||
};
|
||||
|
||||
SparkleShare.Controller.NotificationRaised += delegate (string user_name, string user_email,
|
||||
string message, string folder_path) {
|
||||
|
||||
if (ShowBubbleEvent != null && SparkleShare.Controller.NotificationsEnabled)
|
||||
ShowBubbleEvent (user_name, message,
|
||||
SparkleShare.Controller.GetAvatar (user_email, 36));
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
|
@ -74,12 +74,6 @@ namespace SparkleShare {
|
|||
public delegate void NotificationRaisedEventHandler (string user_name, string user_email,
|
||||
string message, string repository_path);
|
||||
|
||||
public event NewVersionAvailableEventHandler NewVersionAvailable;
|
||||
public delegate void NewVersionAvailableEventHandler (string new_version);
|
||||
|
||||
public event VersionUpToDateEventHandler VersionUpToDate;
|
||||
public delegate void VersionUpToDateEventHandler ();
|
||||
|
||||
|
||||
// Short alias for the translations
|
||||
public static string _ (string s)
|
||||
|
@ -285,6 +279,7 @@ namespace SparkleShare {
|
|||
public string GetHTMLLog (List<SparkleChangeSet> change_sets)
|
||||
{
|
||||
List <ActivityDay> activity_days = new List <ActivityDay> ();
|
||||
List<string> emails = new List<string> ();
|
||||
|
||||
change_sets.Sort ((x, y) => (x.Timestamp.CompareTo (y.Timestamp)));
|
||||
change_sets.Reverse ();
|
||||
|
@ -293,7 +288,8 @@ namespace SparkleShare {
|
|||
return null;
|
||||
|
||||
foreach (SparkleChangeSet change_set in change_sets) {
|
||||
GetAvatar (change_set.UserEmail, 36);
|
||||
if (!emails.Contains (change_set.UserEmail))
|
||||
emails.Add (change_set.UserEmail);
|
||||
|
||||
bool change_set_inserted = false;
|
||||
foreach (ActivityDay stored_activity_day in activity_days) {
|
||||
|
@ -314,6 +310,10 @@ namespace SparkleShare {
|
|||
}
|
||||
}
|
||||
|
||||
new Thread (new ThreadStart (delegate {
|
||||
FetchAvatars (emails, 48);
|
||||
})).Start ();
|
||||
|
||||
string event_log_html = EventLogHTML;
|
||||
string day_entry_html = DayEntryHTML;
|
||||
string event_entry_html = EventEntryHTML;
|
||||
|
@ -335,9 +335,9 @@ namespace SparkleShare {
|
|||
change_set.Folder, file_path);
|
||||
|
||||
if (File.Exists (absolute_file_path))
|
||||
event_entry += "<dd class='document-edited'><a href='" + absolute_file_path + "'>" + file_path + "</a></dd>";
|
||||
event_entry += "<dd class='document edited'><a href='" + absolute_file_path + "'>" + file_path + "</a></dd>";
|
||||
else
|
||||
event_entry += "<dd class='document-edited'>" + file_path + "</dd>";
|
||||
event_entry += "<dd class='document edited'>" + file_path + "</dd>";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -347,9 +347,9 @@ namespace SparkleShare {
|
|||
change_set.Folder, file_path);
|
||||
|
||||
if (File.Exists (absolute_file_path))
|
||||
event_entry += "<dd class='document-added'><a href='" + absolute_file_path + "'>" + file_path + "</a></dd>";
|
||||
event_entry += "<dd class='document added'><a href='" + absolute_file_path + "'>" + file_path + "</a></dd>";
|
||||
else
|
||||
event_entry += "<dd class='document-added'>" + file_path + "</dd>";
|
||||
event_entry += "<dd class='document added'>" + file_path + "</dd>";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -359,9 +359,9 @@ namespace SparkleShare {
|
|||
change_set.Folder, file_path);
|
||||
|
||||
if (File.Exists (absolute_file_path))
|
||||
event_entry += "<dd class='document-deleted'><a href='" + absolute_file_path + "'>" + file_path + "</a></dd>";
|
||||
event_entry += "<dd class='document deleted'><a href='" + absolute_file_path + "'>" + file_path + "</a></dd>";
|
||||
else
|
||||
event_entry += "<dd class='document-deleted'>" + file_path + "</dd>";
|
||||
event_entry += "<dd class='document deleted'>" + file_path + "</dd>";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -375,9 +375,9 @@ namespace SparkleShare {
|
|||
change_set.Folder, to_file_path);
|
||||
|
||||
if (File.Exists (absolute_file_path))
|
||||
event_entry += "<dd class='document-moved'><a href='" + absolute_file_path + "'>" + file_path + "</a><br/>";
|
||||
event_entry += "<dd class='document moved'><a href='" + absolute_file_path + "'>" + file_path + "</a><br/>";
|
||||
else
|
||||
event_entry += "<dd class='document-moved'>" + file_path + "<br/>";
|
||||
event_entry += "<dd class='document moved'>" + file_path + "<br/>";
|
||||
|
||||
if (File.Exists (absolute_to_file_path))
|
||||
event_entry += "<a href='" + absolute_to_file_path + "'>" + to_file_path + "</a></dd>";
|
||||
|
@ -389,13 +389,37 @@ namespace SparkleShare {
|
|||
}
|
||||
}
|
||||
|
||||
string comments = "";
|
||||
comments = "<div class=\"comments\">";
|
||||
|
||||
if (change_set.Notes != null) {
|
||||
change_set.Notes.Sort ((x, y) => (x.Timestamp.CompareTo (y.Timestamp)));
|
||||
|
||||
foreach (SparkleNote note in change_set.Notes) {
|
||||
comments += "<div class=\"comment-text\">" +
|
||||
"<p class=\"comment-author\"" +
|
||||
" style=\"background-image: url('file://" + GetAvatar (note.UserEmail, 48) + "');\">" +
|
||||
note.UserName + "</p>" +
|
||||
note.Body +
|
||||
"</div>";
|
||||
}
|
||||
}
|
||||
|
||||
comments += "</div>";
|
||||
|
||||
string avatar_email = "";
|
||||
if (File.Exists (GetAvatar (change_set.UserEmail, 48)))
|
||||
avatar_email = change_set.UserEmail;
|
||||
|
||||
event_entry += "</dl>";
|
||||
event_entries += event_entry_html.Replace ("<!-- $event-entry-content -->", event_entry)
|
||||
.Replace ("<!-- $event-user-name -->", change_set.UserName)
|
||||
.Replace ("<!-- $event-avatar-url -->", "file://" + GetAvatar (change_set.UserEmail, 36))
|
||||
.Replace ("<!-- $event-avatar-url -->", "file://" + GetAvatar (avatar_email, 48))
|
||||
.Replace ("<!-- $event-time -->", change_set.Timestamp.ToString ("H:mm"))
|
||||
.Replace ("<!-- $event-folder -->", change_set.Folder)
|
||||
.Replace ("<!-- $event-folder-color -->", AssignColor (change_set.Folder));
|
||||
.Replace ("<!-- $event-revision -->", change_set.Revision)
|
||||
.Replace ("<!-- $event-folder-color -->", AssignColor (change_set.Folder))
|
||||
.Replace ("<!-- $event-comments -->", comments);
|
||||
}
|
||||
|
||||
string day_entry = "";
|
||||
|
@ -406,31 +430,35 @@ namespace SparkleShare {
|
|||
today.Month == activity_day.DateTime.Month &&
|
||||
today.Year == activity_day.DateTime.Year) {
|
||||
|
||||
day_entry = day_entry_html.Replace ("<!-- $day-entry-header -->", "<b>Today</b>");
|
||||
day_entry = day_entry_html.Replace ("<!-- $day-entry-header -->", "Today");
|
||||
|
||||
} else if (yesterday.Day == activity_day.DateTime.Day &&
|
||||
yesterday.Month == activity_day.DateTime.Month &&
|
||||
yesterday.Year == activity_day.DateTime.Year) {
|
||||
|
||||
day_entry = day_entry_html.Replace ("<!-- $day-entry-header -->", "<b>Yesterday</b>");
|
||||
day_entry = day_entry_html.Replace ("<!-- $day-entry-header -->", "Yesterday");
|
||||
|
||||
} else {
|
||||
if (activity_day.DateTime.Year != DateTime.Now.Year) {
|
||||
// TRANSLATORS: This is the date in the event logs
|
||||
day_entry = day_entry_html.Replace ("<!-- $day-entry-header -->",
|
||||
"<b>" + activity_day.DateTime.ToString (_("ddd MMM d, yyyy")) + "</b>");
|
||||
activity_day.DateTime.ToString (_("dddd, MMMM d, yyyy")));
|
||||
|
||||
} else {
|
||||
// TRANSLATORS: This is the date in the event logs, without the year
|
||||
day_entry = day_entry_html.Replace ("<!-- $day-entry-header -->",
|
||||
"<b>" + activity_day.DateTime.ToString (_("ddd MMM d")) + "</b>");
|
||||
activity_day.DateTime.ToString (_("dddd, MMMM d")));
|
||||
}
|
||||
}
|
||||
|
||||
event_log += day_entry.Replace ("<!-- $day-entry-content -->", event_entries);
|
||||
}
|
||||
|
||||
return event_log_html.Replace ("<!-- $event-log-content -->", event_log);
|
||||
string html = event_log_html.Replace ("<!-- $event-log-content -->", event_log)
|
||||
.Replace ("<!-- $username -->", UserName)
|
||||
.Replace ("<!-- $user-avatar-url -->", "file://" + GetAvatar (UserEmail, 48));
|
||||
|
||||
return html;
|
||||
}
|
||||
|
||||
|
||||
|
@ -454,7 +482,7 @@ namespace SparkleShare {
|
|||
|
||||
|
||||
// Fires events for the current syncing state
|
||||
private void UpdateState ()
|
||||
public void UpdateState ()
|
||||
{
|
||||
foreach (SparkleRepoBase repo in Repositories) {
|
||||
if (repo.Status == SyncStatus.SyncDown ||
|
||||
|
@ -496,7 +524,6 @@ namespace SparkleShare {
|
|||
if (backend == null)
|
||||
return;
|
||||
|
||||
|
||||
SparkleRepoBase repo = null;
|
||||
|
||||
if (backend.Equals ("Hg"))
|
||||
|
@ -508,7 +535,6 @@ namespace SparkleShare {
|
|||
else
|
||||
repo = new SparkleRepoGit (folder_path, SparkleBackend.DefaultBackend);
|
||||
|
||||
|
||||
repo.NewChangeSet += delegate (SparkleChangeSet change_set, string repository_path) {
|
||||
string message = FormatMessage (change_set);
|
||||
|
||||
|
@ -522,6 +548,11 @@ namespace SparkleShare {
|
|||
};
|
||||
|
||||
repo.SyncStatusChanged += delegate (SyncStatus status) {
|
||||
/* if (status == SyncStatus.SyncUp) {
|
||||
foreach (string path in repo.UnsyncedFilePaths)
|
||||
Console.WriteLine (path);
|
||||
}
|
||||
*/
|
||||
if (status == SyncStatus.Idle ||
|
||||
status == SyncStatus.SyncUp ||
|
||||
status == SyncStatus.SyncDown ||
|
||||
|
@ -814,68 +845,77 @@ namespace SparkleShare {
|
|||
|
||||
|
||||
// Gets the avatar for a specific email address and size
|
||||
public string GetAvatar (string email, int size)
|
||||
public void FetchAvatars (List<string> emails, int size)
|
||||
{
|
||||
string avatar_path = SparkleHelpers.CombineMore (SparklePaths.SparkleLocalIconPath,
|
||||
size + "x" + size, "status");
|
||||
List<string> old_avatars = new List<string> ();
|
||||
bool avatar_fetched = false;
|
||||
string avatar_path = SparkleHelpers.CombineMore (
|
||||
SparklePaths.SparkleLocalIconPath, size + "x" + size, "status");
|
||||
|
||||
string avatar_file_path = Path.Combine (avatar_path, "avatar-" + email);
|
||||
if (!Directory.Exists (avatar_path)) {
|
||||
Directory.CreateDirectory (avatar_path);
|
||||
SparkleHelpers.DebugInfo ("Config", "Created '" + avatar_path + "'");
|
||||
}
|
||||
|
||||
if (File.Exists (avatar_file_path)) {
|
||||
FileInfo avatar_info = new FileInfo (avatar_file_path);
|
||||
foreach (string email in emails) {
|
||||
string avatar_file_path = Path.Combine (avatar_path, "avatar-" + email);
|
||||
|
||||
// Delete avatars older than a month and get a new one
|
||||
if (avatar_info.CreationTime < DateTime.Now.AddMonths (-1)) {
|
||||
avatar_info.Delete ();
|
||||
return GetAvatar (email, size);
|
||||
if (File.Exists (avatar_file_path)) {
|
||||
FileInfo avatar_info = new FileInfo (avatar_file_path);
|
||||
|
||||
// Delete avatars older than a month
|
||||
if (avatar_info.CreationTime < DateTime.Now.AddMonths (-1)) {
|
||||
avatar_info.Delete ();
|
||||
old_avatars.Add (email);
|
||||
}
|
||||
|
||||
} else {
|
||||
return avatar_file_path;
|
||||
}
|
||||
WebClient client = new WebClient ();
|
||||
string url = "http://gravatar.com/avatar/" + GetMD5 (email) +
|
||||
".jpg?s=" + size + "&d=404";
|
||||
|
||||
} else {
|
||||
if (!Directory.Exists (avatar_path)) {
|
||||
Directory.CreateDirectory (avatar_path);
|
||||
SparkleHelpers.DebugInfo ("Config", "Created '" + avatar_path + "'");
|
||||
}
|
||||
try {
|
||||
// Fetch the avatar
|
||||
byte [] buffer = client.DownloadData (url);
|
||||
|
||||
// Let's try to get the person's gravatar for next time
|
||||
WebClient web_client = new WebClient ();
|
||||
Uri uri = new Uri ("https://secure.gravatar.com/avatar/" + GetMD5 (email) +
|
||||
".jpg?s=" + size + "&d=404");
|
||||
// Write the avatar data to a
|
||||
// if not empty
|
||||
if (buffer.Length > 255) {
|
||||
avatar_fetched = true;
|
||||
File.WriteAllBytes (avatar_file_path, buffer);
|
||||
SparkleHelpers.DebugInfo ("Controller", "Fetched gravatar for " + email);
|
||||
}
|
||||
|
||||
string tmp_file_path = SparkleHelpers.CombineMore (SparklePaths.SparkleTmpPath, email + size);
|
||||
|
||||
if (!File.Exists (tmp_file_path)) {
|
||||
web_client.DownloadFileAsync (uri, tmp_file_path);
|
||||
|
||||
web_client.DownloadFileCompleted += delegate {
|
||||
if (File.Exists (avatar_file_path))
|
||||
File.Delete (avatar_file_path);
|
||||
|
||||
FileInfo tmp_file_info = new FileInfo (tmp_file_path);
|
||||
|
||||
if (tmp_file_info.Length > 255)
|
||||
File.Move (tmp_file_path, avatar_file_path);
|
||||
|
||||
SparkleHelpers.DebugInfo ("Controller", "Fetched gravatar: " + email);
|
||||
|
||||
if (AvatarFetched != null)
|
||||
AvatarFetched ();
|
||||
};
|
||||
}
|
||||
|
||||
// Fall back to a generic icon if there is no gravatar
|
||||
if (File.Exists (avatar_file_path))
|
||||
return avatar_file_path;
|
||||
else
|
||||
return null;
|
||||
} catch (WebException) {
|
||||
SparkleHelpers.DebugInfo ("Controller", "Failed fetching gravatar for " + email);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Fetch new versions of the avatars that we
|
||||
// deleted because they were too old
|
||||
if (old_avatars.Count > 0)
|
||||
FetchAvatars (old_avatars, size);
|
||||
|
||||
if (AvatarFetched != null && avatar_fetched)
|
||||
AvatarFetched ();
|
||||
}
|
||||
|
||||
|
||||
public string GetAvatar (string email, int size)
|
||||
{
|
||||
string avatar_file_path = SparkleHelpers.CombineMore (
|
||||
SparklePaths.SparkleLocalIconPath, size + "x" + size, "status", "avatar-" + email);
|
||||
|
||||
return avatar_file_path;
|
||||
}
|
||||
|
||||
|
||||
public void FetchFolder (string server, string remote_folder)
|
||||
{
|
||||
server = server.Trim ();
|
||||
remote_folder = remote_folder.Trim ();
|
||||
|
||||
if (!Directory.Exists (SparklePaths.SparkleTmpPath))
|
||||
Directory.CreateDirectory (SparklePaths.SparkleTmpPath);
|
||||
|
||||
|
@ -950,7 +990,6 @@ namespace SparkleShare {
|
|||
|
||||
|
||||
fetcher.Failed += delegate {
|
||||
|
||||
if (FolderFetchError != null)
|
||||
FolderFetchError ();
|
||||
|
||||
|
@ -1012,36 +1051,17 @@ namespace SparkleShare {
|
|||
}
|
||||
|
||||
|
||||
public string Version {
|
||||
get {
|
||||
return SparkleBackend.Version;
|
||||
|
||||
|
||||
public void AddNoteToFolder (string folder_name, string revision, string note)
|
||||
{
|
||||
foreach (SparkleRepoBase repo in Repositories) {
|
||||
if (repo.Name.Equals (folder_name))
|
||||
repo.AddNote (revision, note);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void CheckForNewVersion ()
|
||||
{
|
||||
WebClient web_client = new WebClient ();
|
||||
Uri uri = new Uri ("http://www.sparkleshare.org/version");
|
||||
|
||||
web_client.DownloadStringCompleted += delegate (object o, DownloadStringCompletedEventArgs args) {
|
||||
if (args.Error != null)
|
||||
return;
|
||||
|
||||
string new_version = args.Result.Trim ();
|
||||
|
||||
if (Version.Equals (new_version)) {
|
||||
if (VersionUpToDate != null)
|
||||
VersionUpToDate ();
|
||||
|
||||
} else {
|
||||
if (NewVersionAvailable != null)
|
||||
NewVersionAvailable (new_version);
|
||||
}
|
||||
};
|
||||
|
||||
web_client.DownloadStringAsync (uri);
|
||||
}
|
||||
|
||||
|
||||
private string [] tango_palette = new string [] {"#eaab00", "#e37222",
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
|
||||
using Gtk;
|
||||
|
||||
// TODO: Remove with Gtk3
|
||||
namespace SparkleShare {
|
||||
|
||||
public class SparkleEntry : Entry {
|
||||
|
@ -33,7 +34,6 @@ namespace SparkleShare {
|
|||
ClipboardPasted += delegate { OnEntered (); };
|
||||
|
||||
FocusOutEvent += delegate {
|
||||
|
||||
if (Text.Equals ("") || Text == null)
|
||||
ExampleTextActive = true;
|
||||
|
||||
|
|
|
@ -84,7 +84,6 @@ namespace SparkleShare {
|
|||
LinkStatus = args.Link;
|
||||
};
|
||||
|
||||
// FIXME: Use the right event, waiting for newer webkit bindings: NavigationPolicyDecisionRequested
|
||||
WebView.NavigationRequested += delegate (object o, WebKit.NavigationRequestedArgs args) {
|
||||
if (args.Request.Uri == LinkStatus) {
|
||||
Process process = new Process ();
|
||||
|
@ -92,9 +91,26 @@ namespace SparkleShare {
|
|||
process.StartInfo.Arguments = args.Request.Uri.Replace (" ", "\\ "); // Escape space-characters
|
||||
process.Start ();
|
||||
|
||||
// Don't follow HREFs (as this would cause a page refresh)
|
||||
args.RetVal = 1;
|
||||
} else {
|
||||
Regex regex = new Regex (@"(.+)~(.+)~(.+)");
|
||||
Match match = regex.Match (args.Request.Uri);
|
||||
|
||||
if (match.Success) {
|
||||
string folder_name = match.Groups [1].Value;
|
||||
string revision = match.Groups [2].Value;
|
||||
string note = match.Groups [3].Value.Replace ("%20", " ");
|
||||
|
||||
Thread thread = new Thread (new ThreadStart (delegate {
|
||||
SparkleShare.Controller.AddNoteToFolder (folder_name, revision, note);
|
||||
}));
|
||||
|
||||
thread.Start ();
|
||||
}
|
||||
}
|
||||
|
||||
// Don't follow HREFs (as this would cause a page refresh)
|
||||
if (!args.Request.Uri.Equals ("file:"))
|
||||
args.RetVal = 1;
|
||||
};
|
||||
|
||||
ScrolledWindow.Add (WebView);
|
||||
|
@ -142,6 +158,12 @@ namespace SparkleShare {
|
|||
return (item == "---");
|
||||
};
|
||||
|
||||
if (this.selected_log != null &&
|
||||
!SparkleShare.Controller.Folders.Contains (this.selected_log)) {
|
||||
|
||||
this.selected_log = null;
|
||||
}
|
||||
|
||||
this.combo_box.Changed += delegate {
|
||||
TreeIter iter;
|
||||
this.combo_box.GetActiveIter (out iter);
|
||||
|
|
119
SparkleShare/SparkleEventLogController.cs
Normal file
|
@ -0,0 +1,119 @@
|
|||
// SparkleShare, a collaboration and sharing tool.
|
||||
// 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 System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Threading;
|
||||
|
||||
using SparkleLib;
|
||||
|
||||
namespace SparkleShare {
|
||||
|
||||
public class SparkleEventLogController {
|
||||
|
||||
public event UpdateContentEventEventHandler UpdateContentEvent;
|
||||
public delegate void UpdateContentEventEventHandler (string html);
|
||||
|
||||
public event UpdateChooserEventHandler UpdateChooserEvent;
|
||||
public delegate void UpdateChooserEventHandler (string [] folders);
|
||||
|
||||
public event ContentLoadingEventHandler ContentLoadingEvent;
|
||||
public delegate void ContentLoadingEventHandler ();
|
||||
|
||||
|
||||
public string SelectedFolder {
|
||||
get {
|
||||
return this.selected_folder;
|
||||
}
|
||||
|
||||
set {
|
||||
this.selected_folder = value;
|
||||
|
||||
if (ContentLoadingEvent != null)
|
||||
ContentLoadingEvent ();
|
||||
|
||||
Stopwatch watch = new Stopwatch ();
|
||||
watch.Start ();
|
||||
|
||||
Thread thread = new Thread (new ThreadStart (delegate {
|
||||
string html = HTML;
|
||||
watch.Stop ();
|
||||
|
||||
// A short delay is less annoying than
|
||||
// a flashing window
|
||||
if (watch.ElapsedMilliseconds < 500)
|
||||
Thread.Sleep (500 - (int) watch.ElapsedMilliseconds);
|
||||
|
||||
if (UpdateContentEvent != null)
|
||||
UpdateContentEvent (html);
|
||||
}));
|
||||
|
||||
thread.Start ();
|
||||
}
|
||||
}
|
||||
|
||||
public string HTML {
|
||||
get {
|
||||
List<SparkleChangeSet> change_sets = SparkleShare.Controller.GetLog (this.selected_folder);
|
||||
return SparkleShare.Controller.GetHTMLLog (change_sets);
|
||||
}
|
||||
}
|
||||
|
||||
public string [] Folders {
|
||||
get {
|
||||
return SparkleShare.Controller.Folders.ToArray ();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private string selected_folder;
|
||||
|
||||
|
||||
public SparkleEventLogController ()
|
||||
{
|
||||
SparkleShare.Controller.AvatarFetched += delegate {
|
||||
if (UpdateContentEvent != null)
|
||||
UpdateContentEvent (HTML);
|
||||
};
|
||||
|
||||
SparkleShare.Controller.OnIdle += delegate {
|
||||
if (UpdateContentEvent != null)
|
||||
UpdateContentEvent (HTML);
|
||||
};
|
||||
|
||||
SparkleShare.Controller.FolderListChanged += delegate {
|
||||
if (this.selected_folder != null &&
|
||||
!SparkleShare.Controller.Folders.Contains (this.selected_folder)) {
|
||||
|
||||
this.selected_folder = null;
|
||||
}
|
||||
|
||||
if (UpdateChooserEvent != null)
|
||||
UpdateChooserEvent (Folders);
|
||||
|
||||
if (UpdateContentEvent != null)
|
||||
UpdateContentEvent (HTML);
|
||||
};
|
||||
|
||||
SparkleShare.Controller.NotificationRaised += delegate {
|
||||
if (UpdateContentEvent != null)
|
||||
UpdateContentEvent (HTML);
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,50 +0,0 @@
|
|||
// SparkleShare, a collaboration and sharing tool.
|
||||
// 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 {
|
||||
|
||||
// An infobar
|
||||
public class SparkleInfobar : EventBox {
|
||||
|
||||
public SparkleInfobar (string icon_name, string title, string text)
|
||||
{
|
||||
Window window = new Window (WindowType.Popup) {
|
||||
Name = "gtk-tooltip"
|
||||
};
|
||||
|
||||
window.EnsureStyle ();
|
||||
Style = window.Style;
|
||||
|
||||
Label label = new Label () {
|
||||
Markup = "<b>" + title + "</b>\n" + text
|
||||
};
|
||||
|
||||
HBox hbox = new HBox (false, 12) {
|
||||
BorderWidth = 12
|
||||
};
|
||||
|
||||
hbox.PackStart (new Image (SparkleUIHelpers.GetIcon (icon_name, 24)),
|
||||
false, false, 0);
|
||||
|
||||
hbox.PackStart (label, false, false, 0);
|
||||
|
||||
Add (hbox);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,667 +0,0 @@
|
|||
// SparkleShare, a collaboration and sharing tool.
|
||||
// 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 private 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 private License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General private License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Timers;
|
||||
|
||||
using Gtk;
|
||||
using Notifications;
|
||||
|
||||
namespace SparkleShare {
|
||||
|
||||
public class SparkleIntro : SparkleWindow {
|
||||
|
||||
private Entry NameEntry;
|
||||
private Entry EmailEntry;
|
||||
private SparkleEntry ServerEntry;
|
||||
private SparkleEntry FolderEntry;
|
||||
private Button NextButton;
|
||||
private Button SyncButton;
|
||||
private bool ServerFormOnly;
|
||||
private string SecondaryTextColor;
|
||||
private ProgressBar progress_bar = new ProgressBar () { PulseStep = 0.01 };
|
||||
private Timer progress_bar_pulse_timer = new Timer () { Interval = 25, Enabled = true };
|
||||
|
||||
|
||||
// Short alias for the translations
|
||||
public static string _ (string s)
|
||||
{
|
||||
return s;
|
||||
}
|
||||
|
||||
|
||||
public SparkleIntro () : base ()
|
||||
{
|
||||
ServerFormOnly = false;
|
||||
SecondaryTextColor = SparkleUIHelpers.GdkColorToHex (Style.Foreground (StateType.Insensitive));
|
||||
}
|
||||
|
||||
|
||||
public void ShowAccountForm ()
|
||||
{
|
||||
Reset ();
|
||||
|
||||
VBox layout_vertical = new VBox (false, 0);
|
||||
|
||||
Deletable = false;
|
||||
|
||||
Label header = new Label ("<span size='large'><b>" +
|
||||
_("Welcome to SparkleShare!") +
|
||||
"</b></span>") {
|
||||
UseMarkup = true,
|
||||
Xalign = 0
|
||||
};
|
||||
|
||||
Label information = new Label (_("Before we can create a SparkleShare folder on this " +
|
||||
"computer, we need a few bits of information from you.")) {
|
||||
Xalign = 0,
|
||||
Wrap = true
|
||||
};
|
||||
|
||||
Table table = new Table (4, 2, true) {
|
||||
RowSpacing = 6
|
||||
};
|
||||
|
||||
Label name_label = new Label ("<b>" + _("Full Name:") + "</b>") {
|
||||
UseMarkup = true,
|
||||
Xalign = 0
|
||||
};
|
||||
|
||||
NameEntry = new Entry (SparkleShare.Controller.UserName);
|
||||
NameEntry.Changed += delegate {
|
||||
CheckAccountForm ();
|
||||
};
|
||||
|
||||
EmailEntry = new Entry ();
|
||||
EmailEntry.Changed += delegate {
|
||||
CheckAccountForm ();
|
||||
};
|
||||
|
||||
Label email_label = new Label ("<b>" + _("Email:") + "</b>") {
|
||||
UseMarkup = true,
|
||||
Xalign = 0
|
||||
};
|
||||
|
||||
|
||||
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);
|
||||
|
||||
NextButton = new Button (_("Next")) {
|
||||
Sensitive = false
|
||||
};
|
||||
|
||||
NextButton.Clicked += delegate (object o, EventArgs args) {
|
||||
NextButton.Remove (NextButton.Child);
|
||||
NextButton.Add (new Label (_("Configuring…")));
|
||||
|
||||
NextButton.Sensitive = false;
|
||||
table.Sensitive = false;
|
||||
|
||||
NextButton.ShowAll ();
|
||||
|
||||
SparkleShare.Controller.UserName = NameEntry.Text;
|
||||
SparkleShare.Controller.UserEmail = EmailEntry.Text;
|
||||
|
||||
SparkleShare.Controller.GenerateKeyPair ();
|
||||
SparkleShare.Controller.AddKey ();
|
||||
|
||||
SparkleUI.StatusIcon.CreateMenu ();
|
||||
|
||||
Deletable = true;
|
||||
ShowServerForm ();
|
||||
};
|
||||
|
||||
AddButton (NextButton);
|
||||
|
||||
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);
|
||||
|
||||
Add (layout_vertical);
|
||||
CheckAccountForm ();
|
||||
ShowAll ();
|
||||
}
|
||||
|
||||
|
||||
public void ShowServerForm (bool server_form_only)
|
||||
{
|
||||
ServerFormOnly = server_form_only;
|
||||
ShowServerForm ();
|
||||
}
|
||||
|
||||
|
||||
public void ShowServerForm ()
|
||||
{
|
||||
Reset ();
|
||||
|
||||
VBox layout_vertical = new VBox (false, 0);
|
||||
|
||||
Label header = new Label ("<span size='large'><b>" +
|
||||
_("Where is your remote folder?") +
|
||||
"</b></span>") {
|
||||
UseMarkup = true,
|
||||
Xalign = 0
|
||||
};
|
||||
|
||||
Table table = new Table (7, 2, false) {
|
||||
RowSpacing = 12
|
||||
};
|
||||
|
||||
HBox layout_server = new HBox (true, 0);
|
||||
|
||||
ServerEntry = new SparkleEntry () {
|
||||
ExampleText = _("address-to-server.com")
|
||||
};
|
||||
|
||||
ServerEntry.Changed += CheckServerForm;
|
||||
|
||||
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'>" +
|
||||
_("Free hosting for Free and Open Source Software projects.") + "\n" +
|
||||
_("Also has paid accounts for extra private 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.") + "\n" +
|
||||
_("Select this option if you’re 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'>" +
|
||||
_("Completely Free as in Freedom infrastructure.") + "\n" +
|
||||
_("Free accounts for Free and 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_github.Toggled += delegate {
|
||||
if (radio_button_github.Active)
|
||||
FolderEntry.ExampleText = _("Username/Folder");
|
||||
};
|
||||
|
||||
radio_button_gitorious.Toggled += delegate {
|
||||
if (radio_button_gitorious.Active)
|
||||
FolderEntry.ExampleText = _("Project/Folder");
|
||||
};
|
||||
|
||||
radio_button_gnome.Toggled += delegate {
|
||||
if (radio_button_gnome.Active)
|
||||
FolderEntry.ExampleText = _("Project");
|
||||
};
|
||||
|
||||
radio_button.Toggled += delegate {
|
||||
if (radio_button.Active) {
|
||||
FolderEntry.ExampleText = _("Folder");
|
||||
ServerEntry.Sensitive = true;
|
||||
CheckServerForm ();
|
||||
} else {
|
||||
ServerEntry.Sensitive = false;
|
||||
CheckServerForm ();
|
||||
}
|
||||
|
||||
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 SparkleEntry () {
|
||||
ExampleText = _("Folder")
|
||||
};
|
||||
|
||||
FolderEntry.Changed += CheckServerForm;
|
||||
|
||||
Label folder_label = new Label (_("Folder Name:")) {
|
||||
UseMarkup = true,
|
||||
Xalign = 1
|
||||
};
|
||||
|
||||
(radio_button.Child as Label).UseMarkup = true;
|
||||
|
||||
layout_folder.PackStart (folder_label, true, true, 12);
|
||||
layout_folder.PackStart (FolderEntry, true, true, 0);
|
||||
|
||||
SyncButton = new Button (_("Sync"));
|
||||
|
||||
SyncButton.Clicked += delegate {
|
||||
string folder_name = FolderEntry.Text;
|
||||
string server = ServerEntry.Text;
|
||||
string canonical_name = System.IO.Path.GetFileNameWithoutExtension (folder_name);
|
||||
|
||||
if (radio_button_gitorious.Active)
|
||||
server = "gitorious.org";
|
||||
|
||||
if (radio_button_github.Active)
|
||||
server = "github.com";
|
||||
|
||||
if (radio_button_gnome.Active)
|
||||
server = "gnome.org";
|
||||
|
||||
Application.Invoke (delegate {
|
||||
Deletable = false;
|
||||
ShowSyncingPage (canonical_name);
|
||||
});
|
||||
|
||||
SparkleShare.Controller.FolderFetched += delegate {
|
||||
Application.Invoke (delegate {
|
||||
this.progress_bar_pulse_timer.Stop ();
|
||||
Deletable = true;
|
||||
UrgencyHint = true;
|
||||
ShowSuccessPage (canonical_name);
|
||||
});
|
||||
};
|
||||
|
||||
SparkleShare.Controller.FolderFetchError += delegate {
|
||||
Application.Invoke (delegate {
|
||||
this.progress_bar_pulse_timer.Stop ();
|
||||
Deletable = true;
|
||||
ShowErrorPage ();
|
||||
});
|
||||
};
|
||||
|
||||
SparkleShare.Controller.FetchFolder (server, folder_name);
|
||||
};
|
||||
|
||||
|
||||
if (ServerFormOnly) {
|
||||
Button cancel_button = new Button (_("Cancel"));
|
||||
|
||||
cancel_button.Clicked += delegate {
|
||||
Close ();
|
||||
};
|
||||
|
||||
AddButton (cancel_button);
|
||||
} else {
|
||||
Button skip_button = new Button (_("Skip"));
|
||||
|
||||
skip_button.Clicked += delegate {
|
||||
ShowCompletedPage ();
|
||||
};
|
||||
|
||||
AddButton (skip_button);
|
||||
}
|
||||
|
||||
AddButton (SyncButton);
|
||||
|
||||
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);
|
||||
|
||||
Add (layout_vertical);
|
||||
CheckServerForm ();
|
||||
ShowAll ();
|
||||
}
|
||||
|
||||
|
||||
public void ShowInvitationPage (string server, string folder, string token)
|
||||
{
|
||||
VBox layout_vertical = new VBox (false, 0);
|
||||
|
||||
Label header = new Label ("<span size='large'><b>" +
|
||||
_("Invitation received!") +
|
||||
"</b></span>") {
|
||||
UseMarkup = true,
|
||||
Xalign = 0
|
||||
};
|
||||
|
||||
Label information = new Label (_("You've received an invitation to join a shared folder.\n" +
|
||||
"We're ready to hook you up immediately if you wish.")) {
|
||||
Xalign = 0,
|
||||
Wrap = true
|
||||
};
|
||||
|
||||
Label question = new Label (_("Do you accept this invitation?")) {
|
||||
Xalign = 0,
|
||||
Wrap = true
|
||||
};
|
||||
|
||||
Table table = new Table (2, 2, false) {
|
||||
RowSpacing = 6
|
||||
};
|
||||
|
||||
Label server_label = new Label (_("Server Address:")) {
|
||||
Xalign = 0
|
||||
};
|
||||
|
||||
Label server_text = new Label ("<b>" + server + "</b>") {
|
||||
UseMarkup = true,
|
||||
Xalign = 0
|
||||
};
|
||||
|
||||
Label folder_label = new Label (_("Folder Name:")) {
|
||||
Xalign = 0
|
||||
};
|
||||
|
||||
Label folder_text = new Label ("<b>" + folder + "</b>") {
|
||||
UseMarkup = true,
|
||||
Xalign = 0
|
||||
};
|
||||
|
||||
table.Attach (folder_label, 0, 1, 0, 1);
|
||||
table.Attach (folder_text, 1, 2, 0, 1);
|
||||
table.Attach (server_label, 0, 1, 1, 2);
|
||||
table.Attach (server_text, 1, 2, 1, 2);
|
||||
|
||||
Button reject_button = new Button (_("Reject"));
|
||||
Button accept_button = new Button (_("Accept and Sync"));
|
||||
|
||||
reject_button.Clicked += delegate {
|
||||
Close ();
|
||||
};
|
||||
|
||||
accept_button.Clicked += delegate {
|
||||
string url = "ssh://git@" + server + "/" + folder;
|
||||
|
||||
SparkleShare.Controller.FolderFetched += delegate {
|
||||
Application.Invoke (delegate {
|
||||
this.progress_bar_pulse_timer.Stop ();
|
||||
ShowSuccessPage (folder);
|
||||
});
|
||||
};
|
||||
|
||||
SparkleShare.Controller.FolderFetchError += delegate {
|
||||
Application.Invoke (delegate {
|
||||
this.progress_bar_pulse_timer.Stop ();
|
||||
ShowErrorPage ();
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
SparkleShare.Controller.FetchFolder (url, folder);
|
||||
};
|
||||
|
||||
AddButton (reject_button);
|
||||
AddButton (accept_button);
|
||||
|
||||
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 (new Label (""), false, false, 0);
|
||||
layout_vertical.PackStart (question, false, false, 21);
|
||||
|
||||
Add (layout_vertical);
|
||||
ShowAll ();
|
||||
}
|
||||
|
||||
|
||||
// The page shown when syncing has failed
|
||||
private void ShowErrorPage ()
|
||||
{
|
||||
Reset ();
|
||||
|
||||
VBox layout_vertical = new VBox (false, 0);
|
||||
|
||||
Label header = new Label ("<span size='large'><b>" +
|
||||
_("Something went wrong…") +
|
||||
"</b></span>\n") {
|
||||
UseMarkup = true,
|
||||
Xalign = 0
|
||||
};
|
||||
|
||||
Button try_again_button = new Button (_("Try Again")) {
|
||||
Sensitive = true
|
||||
};
|
||||
|
||||
try_again_button.Clicked += delegate (object o, EventArgs args) {
|
||||
ShowServerForm ();
|
||||
};
|
||||
|
||||
AddButton (try_again_button);
|
||||
|
||||
layout_vertical.PackStart (header, false, false, 0);
|
||||
|
||||
Add (layout_vertical);
|
||||
ShowAll ();
|
||||
}
|
||||
|
||||
|
||||
// The page shown when syncing has succeeded
|
||||
private void ShowSuccessPage (string folder_name)
|
||||
{
|
||||
Reset ();
|
||||
|
||||
UrgencyHint = true;
|
||||
|
||||
if (!HasToplevelFocus) {
|
||||
string title = String.Format (_("‘{0}’ has been successfully added"), folder_name);
|
||||
string subtext = _("");
|
||||
|
||||
new SparkleBubble (title, subtext).Show ();
|
||||
}
|
||||
|
||||
VBox layout_vertical = new VBox (false, 0);
|
||||
|
||||
Label header = new Label ("<span size='large'><b>" +
|
||||
_("Folder synced successfully!") +
|
||||
"</b></span>") {
|
||||
UseMarkup = true,
|
||||
Xalign = 0
|
||||
};
|
||||
|
||||
Label information = new Label (
|
||||
String.Format (_("Now you can access the synced files from ‘{0}’ in your SparkleShare folder."),
|
||||
folder_name)) {
|
||||
Xalign = 0,
|
||||
Wrap = true,
|
||||
UseMarkup = true
|
||||
};
|
||||
|
||||
// A button that opens the synced folder
|
||||
Button open_folder_button = new Button (_("Open Folder"));
|
||||
|
||||
open_folder_button.Clicked += delegate {
|
||||
SparkleShare.Controller.OpenSparkleShareFolder (folder_name);
|
||||
};
|
||||
|
||||
Button finish_button = new Button (_("Finish"));
|
||||
|
||||
finish_button.Clicked += delegate (object o, EventArgs args) {
|
||||
Close ();
|
||||
};
|
||||
|
||||
AddButton (open_folder_button);
|
||||
AddButton (finish_button);
|
||||
|
||||
layout_vertical.PackStart (header, false, false, 0);
|
||||
layout_vertical.PackStart (information, false, false, 21);
|
||||
|
||||
Add (layout_vertical);
|
||||
ShowAll ();
|
||||
}
|
||||
|
||||
|
||||
// The page shown whilst syncing
|
||||
private void ShowSyncingPage (string name)
|
||||
{
|
||||
Reset ();
|
||||
|
||||
VBox layout_vertical = new VBox (false, 0);
|
||||
|
||||
Label header = new Label ("<span size='large'><b>" +
|
||||
String.Format (_("Syncing folder ‘{0}’…"), name) +
|
||||
"</b></span>") {
|
||||
UseMarkup = true,
|
||||
Xalign = 0,
|
||||
Wrap = true
|
||||
};
|
||||
|
||||
Label information = new Label (_("This may take a while.\n") +
|
||||
_("Are you sure it’s not coffee o'clock?")) {
|
||||
UseMarkup = true,
|
||||
Xalign = 0
|
||||
};
|
||||
|
||||
Button button = new Button () {
|
||||
Sensitive = false,
|
||||
Label = _("Finish")
|
||||
};
|
||||
|
||||
button.Clicked += delegate {
|
||||
Close ();
|
||||
};
|
||||
|
||||
AddButton (button);
|
||||
|
||||
layout_vertical.PackStart (header, false, false, 0);
|
||||
layout_vertical.PackStart (information, false, false, 21);
|
||||
|
||||
this.progress_bar_pulse_timer.Elapsed += delegate {
|
||||
Application.Invoke (delegate {
|
||||
progress_bar.Pulse ();
|
||||
});
|
||||
};
|
||||
|
||||
if (this.progress_bar.Parent != null)
|
||||
layout_vertical.Reparent(this.progress_bar);
|
||||
|
||||
layout_vertical.PackStart (this.progress_bar, false, false, 54);
|
||||
|
||||
Add (layout_vertical);
|
||||
ShowAll ();
|
||||
}
|
||||
|
||||
|
||||
// The page shown when the setup has been completed
|
||||
private void ShowCompletedPage ()
|
||||
{
|
||||
Reset ();
|
||||
|
||||
VBox layout_vertical = new VBox (false, 0);
|
||||
|
||||
Label header = new Label ("<span size='large'><b>" +
|
||||
_("SparkleShare is ready to go!") +
|
||||
"</b></span>") {
|
||||
UseMarkup = true,
|
||||
Xalign = 0
|
||||
};
|
||||
|
||||
Label information = new Label (_("Now you can start accepting invitations from others. " + "\n" +
|
||||
"Just click on invitations you get by email and " +
|
||||
"we will take care of the rest.")) {
|
||||
UseMarkup = true,
|
||||
Wrap = true,
|
||||
Xalign = 0
|
||||
};
|
||||
|
||||
|
||||
HBox link_wrapper = new HBox (false, 0);
|
||||
LinkButton link = new LinkButton ("http://www.sparkleshare.org/",
|
||||
_("Learn how to host your own SparkleServer"));
|
||||
|
||||
link_wrapper.PackStart (link, 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);
|
||||
|
||||
Button finish_button = new Button (_("Finish"));
|
||||
|
||||
finish_button.Clicked += delegate (object o, EventArgs args) {
|
||||
Close ();
|
||||
};
|
||||
|
||||
AddButton (finish_button);
|
||||
|
||||
Add (layout_vertical);
|
||||
ShowAll ();
|
||||
}
|
||||
|
||||
|
||||
// Enables or disables the 'Next' button depending on the
|
||||
// entries filled in by the user
|
||||
private void CheckAccountForm ()
|
||||
{
|
||||
if (NameEntry.Text.Length > 0 &&
|
||||
IsValidEmail (EmailEntry.Text)) {
|
||||
|
||||
NextButton.Sensitive = true;
|
||||
} else {
|
||||
NextButton.Sensitive = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Enables the Add button when the fields are
|
||||
// filled in correctly
|
||||
public void CheckServerForm (object o, EventArgs args)
|
||||
{
|
||||
CheckServerForm ();
|
||||
}
|
||||
|
||||
|
||||
// Enables the Add button when the fields are
|
||||
// filled in correctly
|
||||
public void CheckServerForm ()
|
||||
{
|
||||
SyncButton.Sensitive = false;
|
||||
|
||||
if (FolderEntry.ExampleTextActive ||
|
||||
(ServerEntry.Sensitive && ServerEntry.ExampleTextActive))
|
||||
return;
|
||||
|
||||
bool IsFolder = !FolderEntry.Text.Trim ().Equals ("");
|
||||
bool IsServer = !ServerEntry.Text.Trim ().Equals ("");
|
||||
|
||||
if (ServerEntry.Sensitive == true) {
|
||||
if (IsServer && IsFolder)
|
||||
SyncButton.Sensitive = true;
|
||||
} else if (IsFolder) {
|
||||
SyncButton.Sensitive = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Checks to see if an email address is valid
|
||||
private bool IsValidEmail (string email)
|
||||
{
|
||||
Regex regex = new Regex (@"^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$", RegexOptions.IgnoreCase);
|
||||
return regex.IsMatch (email);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,5 +0,0 @@
|
|||
|
||||
|
||||
|
||||
|
||||
|
|
@ -167,7 +167,12 @@ namespace SparkleShare {
|
|||
string path = SparkleHelpers.CombineMore (Defines.PREFIX,
|
||||
"share", "sparkleshare", "html", "event-log.html");
|
||||
|
||||
return String.Join (Environment.NewLine, File.ReadAllLines (path));
|
||||
string html = String.Join (Environment.NewLine, File.ReadAllLines (path));
|
||||
|
||||
html = html.Replace ("<!-- $jquery-url -->", "file://" +
|
||||
SparkleHelpers.CombineMore (Defines.PREFIX, "share", "sparkleshare", "html", "jquery.js"));
|
||||
|
||||
return html;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
432
SparkleShare/SparkleSetup.cs
Normal file
|
@ -0,0 +1,432 @@
|
|||
// SparkleShare, a collaboration and sharing tool.
|
||||
// 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 private 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 private License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General private License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Timers;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using Gtk;
|
||||
using Mono.Unix;
|
||||
|
||||
|
||||
namespace SparkleShare {
|
||||
|
||||
public class SparkleSetup : SparkleSetupWindow {
|
||||
|
||||
public SparkleSetupController Controller = new SparkleSetupController ();
|
||||
|
||||
private string SecondaryTextColor;
|
||||
|
||||
private Entry NameEntry;
|
||||
private Entry EmailEntry;
|
||||
private SparkleEntry ServerEntry;
|
||||
private SparkleEntry FolderEntry;
|
||||
|
||||
private Button NextButton;
|
||||
private Button SyncButton;
|
||||
|
||||
private Table Table;
|
||||
|
||||
private ProgressBar progress_bar = new ProgressBar () { PulseStep = 0.01 };
|
||||
private Timer progress_bar_pulse_timer = new Timer () { Interval = 25, Enabled = true };
|
||||
|
||||
|
||||
// Short alias for the translations
|
||||
public static string _ (string s)
|
||||
{
|
||||
return Catalog.GetString (s);
|
||||
}
|
||||
|
||||
|
||||
public SparkleSetup () : base ()
|
||||
{
|
||||
SecondaryTextColor = SparkleUIHelpers.GdkColorToHex (Style.Foreground (StateType.Insensitive));
|
||||
|
||||
Controller.ChangePageEvent += delegate (PageType type) {
|
||||
Application.Invoke (delegate {
|
||||
Reset ();
|
||||
|
||||
switch (type) {
|
||||
case PageType.Setup:
|
||||
|
||||
Header = _("Welcome to SparkleShare!");
|
||||
Description = _("Before we can create a SparkleShare folder on this " +
|
||||
"computer, we need a few bits of information from you.");
|
||||
|
||||
Table = new Table (4, 2, true) {
|
||||
RowSpacing = 6
|
||||
};
|
||||
|
||||
Label name_label = new Label ("<b>" + _("Full Name:") + "</b>") {
|
||||
UseMarkup = true,
|
||||
Xalign = 0
|
||||
};
|
||||
|
||||
NameEntry = new Entry (SparkleShare.Controller.UserName);
|
||||
NameEntry.Changed += delegate {
|
||||
CheckSetupPage ();
|
||||
};
|
||||
|
||||
EmailEntry = new Entry ();
|
||||
EmailEntry.Changed += delegate {
|
||||
CheckSetupPage ();
|
||||
};
|
||||
|
||||
Label email_label = new Label ("<b>" + _("Email:") + "</b>") {
|
||||
UseMarkup = true,
|
||||
Xalign = 0
|
||||
};
|
||||
|
||||
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);
|
||||
|
||||
NextButton = new Button (_("Next")) {
|
||||
Sensitive = false
|
||||
};
|
||||
|
||||
NextButton.Clicked += delegate (object o, EventArgs args) {
|
||||
string full_name = NameEntry.Text;
|
||||
string email = EmailEntry.Text;
|
||||
|
||||
Controller.SetupPageCompleted (full_name, email);
|
||||
};
|
||||
|
||||
AddButton (NextButton);
|
||||
Add (Table);
|
||||
|
||||
CheckSetupPage ();
|
||||
|
||||
break;
|
||||
|
||||
case PageType.Add:
|
||||
|
||||
Header = _("Where is your remote folder?");
|
||||
|
||||
Table = new Table (6, 2, false) {
|
||||
RowSpacing = 12
|
||||
};
|
||||
|
||||
HBox layout_server = new HBox (true, 0);
|
||||
|
||||
// Own server radiobutton
|
||||
RadioButton radio_button = new RadioButton ("<b>" + _("On my own server:") + "</b>");
|
||||
(radio_button.Child as Label).UseMarkup = true;
|
||||
|
||||
radio_button.Toggled += delegate {
|
||||
if (radio_button.Active) {
|
||||
FolderEntry.ExampleText = _("Folder");
|
||||
ServerEntry.Sensitive = true;
|
||||
CheckAddPage ();
|
||||
} else {
|
||||
ServerEntry.Sensitive = false;
|
||||
CheckAddPage ();
|
||||
}
|
||||
|
||||
ShowAll ();
|
||||
};
|
||||
|
||||
// Own server entry
|
||||
ServerEntry = new SparkleEntry () { };
|
||||
ServerEntry.Completion = new EntryCompletion();
|
||||
|
||||
ListStore server_store = new ListStore (typeof (string));
|
||||
|
||||
//TODO foreach (string host in SparkleShare.Controller.PreviousHosts)
|
||||
// server_store.AppendValues (host);
|
||||
|
||||
ServerEntry.Completion.Model = server_store;
|
||||
ServerEntry.Completion.TextColumn = 0;
|
||||
|
||||
if (!string.IsNullOrEmpty (Controller.PreviousServer)) {
|
||||
ServerEntry.Text = Controller.PreviousServer;
|
||||
ServerEntry.ExampleTextActive = false;
|
||||
} else {
|
||||
ServerEntry.ExampleText = _("address-to-server.com");
|
||||
}
|
||||
|
||||
ServerEntry.Changed += delegate {
|
||||
CheckAddPage ();
|
||||
};
|
||||
|
||||
layout_server.Add (radio_button);
|
||||
layout_server.Add (ServerEntry);
|
||||
|
||||
Table.Attach (layout_server, 0, 2, 1, 2);
|
||||
|
||||
// Github radiobutton
|
||||
string github_text = "<b>" + "Github" + "</b>\n" +
|
||||
"<span fgcolor='" + SecondaryTextColor + "' size='small'>" +
|
||||
_("Free hosting for Free and Open Source Software projects.") + "\n" +
|
||||
_("Also has paid accounts for extra private 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;
|
||||
|
||||
radio_button_github.Toggled += delegate {
|
||||
if (radio_button_github.Active)
|
||||
FolderEntry.ExampleText = _("Username/Folder");
|
||||
};
|
||||
|
||||
|
||||
// Gitorious radiobutton
|
||||
string gitorious_text = "<b>" + _("Gitorious") + "</b>\n" +
|
||||
"<span fgcolor='" + SecondaryTextColor + "' size='small'>" +
|
||||
_("Completely Free as in Freedom infrastructure.") + "\n" +
|
||||
_("Free accounts for Free and Open Source projects.") +
|
||||
"</span>";
|
||||
|
||||
RadioButton radio_button_gitorious = new RadioButton (radio_button, gitorious_text);
|
||||
(radio_button_gitorious.Child as Label).UseMarkup = true;
|
||||
(radio_button_gitorious.Child as Label).Wrap = true;
|
||||
|
||||
radio_button_gitorious.Toggled += delegate {
|
||||
if (radio_button_gitorious.Active)
|
||||
FolderEntry.ExampleText = _("Project/Folder");
|
||||
};
|
||||
|
||||
|
||||
// GNOME radiobutton
|
||||
string gnome_text = "<b>" + _("The GNOME Project") + "</b>\n"+
|
||||
"<span fgcolor='" + SecondaryTextColor + "' size='small'>" +
|
||||
_("GNOME is an easy to understand interface to your computer.") + "\n" +
|
||||
_("Select this option if you’re 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;
|
||||
|
||||
radio_button_gnome.Toggled += delegate {
|
||||
if (radio_button_gnome.Active)
|
||||
FolderEntry.ExampleText = _("Project");
|
||||
};
|
||||
|
||||
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);
|
||||
|
||||
// Folder label and entry
|
||||
HBox layout_folder = new HBox (true, 0);
|
||||
|
||||
Label folder_label = new Label (_("Folder Name:")) {
|
||||
UseMarkup = true,
|
||||
Xalign = 1
|
||||
};
|
||||
|
||||
FolderEntry = new SparkleEntry ();
|
||||
FolderEntry.ExampleText = _("Folder");
|
||||
|
||||
FolderEntry.Changed += delegate {
|
||||
CheckAddPage ();
|
||||
};
|
||||
|
||||
layout_folder.PackStart (folder_label, true, true, 12);
|
||||
layout_folder.PackStart (FolderEntry, true, true, 0);
|
||||
|
||||
Table.Attach (layout_folder, 0, 2, 5, 6);
|
||||
Add (Table);
|
||||
|
||||
// Cancel button
|
||||
Button cancel_button = new Button (_("Cancel"));
|
||||
|
||||
cancel_button.Clicked += delegate {
|
||||
Close ();
|
||||
};
|
||||
|
||||
|
||||
// Sync button
|
||||
SyncButton = new Button (_("Sync"));
|
||||
|
||||
SyncButton.Clicked += delegate {
|
||||
string server = ServerEntry.Text;
|
||||
string folder_name = FolderEntry.Text;
|
||||
|
||||
if (radio_button_gitorious.Active)
|
||||
server = "gitorious.org";
|
||||
|
||||
if (radio_button_github.Active)
|
||||
server = "github.com";
|
||||
|
||||
if (radio_button_gnome.Active)
|
||||
server = "gnome.org";
|
||||
|
||||
Controller.AddPageCompleted (server, folder_name);
|
||||
};
|
||||
|
||||
AddButton (cancel_button);
|
||||
AddButton (SyncButton);
|
||||
|
||||
CheckAddPage ();
|
||||
|
||||
break;
|
||||
|
||||
case PageType.Syncing:
|
||||
|
||||
Header = String.Format (_("Syncing folder ‘{0}’…"), Controller.SyncingFolder);
|
||||
Description = _("This may take a while." + Environment.NewLine) +
|
||||
_("Are you sure it’s not coffee o'clock?");
|
||||
|
||||
Button button = new Button () {
|
||||
Sensitive = false,
|
||||
Label = _("Finish")
|
||||
};
|
||||
|
||||
button.Clicked += delegate {
|
||||
Close ();
|
||||
};
|
||||
|
||||
AddButton (button);
|
||||
|
||||
this.progress_bar_pulse_timer.Elapsed += delegate {
|
||||
Application.Invoke (delegate {
|
||||
progress_bar.Pulse ();
|
||||
});
|
||||
};
|
||||
|
||||
if (this.progress_bar.Parent != null)
|
||||
(this.progress_bar.Parent as Container).Remove (this.progress_bar);
|
||||
|
||||
VBox bar_wrapper = new VBox (false , 0);
|
||||
bar_wrapper.PackStart (this.progress_bar, false, false, 0);
|
||||
|
||||
Add (bar_wrapper);
|
||||
|
||||
break;
|
||||
|
||||
case PageType.Error:
|
||||
|
||||
string n = Environment.NewLine;
|
||||
|
||||
Header = _("Something went wrong") + "…";
|
||||
Description = "We don't know exactly what the problem is, " +
|
||||
"but we can try to help you pinpoint it.";
|
||||
|
||||
|
||||
Label l = new Label (
|
||||
"First, have you tried turning it off and on again?" + n +
|
||||
n +
|
||||
Controller.SyncingFolder +" is the address we've compiled from the information " +
|
||||
"you entered. Does this look correct?" + n +
|
||||
n +
|
||||
"The host needs to know who you are. Have you uploaded the key that sits in your SparkleShare folder?");
|
||||
|
||||
|
||||
|
||||
l.Xpad = 12;
|
||||
l.Wrap = true;
|
||||
|
||||
|
||||
|
||||
Button try_again_button = new Button (_("Try Again")) {
|
||||
Sensitive = true
|
||||
};
|
||||
|
||||
try_again_button.Clicked += delegate {
|
||||
Controller.ErrorPageCompleted ();
|
||||
};
|
||||
|
||||
AddButton (try_again_button);
|
||||
Add (l);
|
||||
|
||||
break;
|
||||
|
||||
case PageType.Finished:
|
||||
|
||||
UrgencyHint = true;
|
||||
|
||||
if (!HasToplevelFocus) {
|
||||
string title = String.Format (_("‘{0}’ has been successfully added"), Controller.SyncingFolder);
|
||||
string subtext = _("");
|
||||
|
||||
//TODO new SparkleBubble (title, subtext).Show ();
|
||||
}
|
||||
|
||||
Header = _("Folder synced successfully!");
|
||||
Description = _("Access the synced files from your SparkleShare folder.");
|
||||
|
||||
// A button that opens the synced folder
|
||||
Button open_folder_button = new Button (_("Open Folder"));
|
||||
|
||||
open_folder_button.Clicked += delegate {
|
||||
SparkleShare.Controller.OpenSparkleShareFolder (Controller.SyncingFolder);
|
||||
};
|
||||
|
||||
Button finish_button = new Button (_("Finish"));
|
||||
|
||||
finish_button.Clicked += delegate {
|
||||
Close ();
|
||||
};
|
||||
|
||||
Add (null);
|
||||
|
||||
AddButton (open_folder_button);
|
||||
AddButton (finish_button);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
ShowAll ();
|
||||
});
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
|
||||
// Enables or disables the 'Next' button depending on the
|
||||
// entries filled in by the user
|
||||
private void CheckSetupPage ()
|
||||
{
|
||||
if (NameEntry.Text.Length > 0 &&
|
||||
SparkleShare.Controller.IsValidEmail (EmailEntry.Text)) {
|
||||
|
||||
NextButton.Sensitive = true;
|
||||
} else {
|
||||
NextButton.Sensitive = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Enables or disables the 'Next' button depending on the
|
||||
// entries filled in by the user
|
||||
public void CheckAddPage ()
|
||||
{
|
||||
SyncButton.Sensitive = false;
|
||||
|
||||
if (FolderEntry.ExampleTextActive ||
|
||||
(ServerEntry.Sensitive && ServerEntry.ExampleTextActive))
|
||||
return;
|
||||
|
||||
bool IsFolder = !FolderEntry.Text.Trim ().Equals ("");
|
||||
bool IsServer = !ServerEntry.Text.Trim ().Equals ("");
|
||||
|
||||
if (ServerEntry.Sensitive == true) {
|
||||
if (IsServer && IsFolder)
|
||||
SyncButton.Sensitive = true;
|
||||
} else if (IsFolder) {
|
||||
SyncButton.Sensitive = true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
142
SparkleShare/SparkleSetupController.cs
Normal file
|
@ -0,0 +1,142 @@
|
|||
// SparkleShare, a collaboration and sharing tool.
|
||||
// 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 System;
|
||||
using System.IO;
|
||||
|
||||
namespace SparkleShare {
|
||||
|
||||
public enum PageType {
|
||||
Setup,
|
||||
Add,
|
||||
Syncing,
|
||||
Error,
|
||||
Finished
|
||||
}
|
||||
|
||||
|
||||
public class SparkleSetupController {
|
||||
|
||||
public event ChangePageEventHandler ChangePageEvent;
|
||||
public delegate void ChangePageEventHandler (PageType page);
|
||||
|
||||
public string PreviousServer {
|
||||
get {
|
||||
return this.previous_server;
|
||||
}
|
||||
}
|
||||
|
||||
public string PreviousFolder {
|
||||
get {
|
||||
return this.previous_folder;
|
||||
}
|
||||
}
|
||||
|
||||
public string SyncingFolder {
|
||||
get {
|
||||
return this.syncing_folder;
|
||||
}
|
||||
}
|
||||
|
||||
public PageType PreviousPage {
|
||||
get {
|
||||
return this.previous_page;
|
||||
}
|
||||
}
|
||||
|
||||
private string previous_server = "";
|
||||
private string previous_folder = "";
|
||||
private string syncing_folder = "";
|
||||
private PageType previous_page;
|
||||
|
||||
public SparkleSetupController ()
|
||||
{
|
||||
ChangePageEvent += delegate (PageType page) {
|
||||
this.previous_page = page;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
public void ShowAddPage ()
|
||||
{
|
||||
if (ChangePageEvent != null)
|
||||
ChangePageEvent (PageType.Add);
|
||||
}
|
||||
|
||||
|
||||
public void ShowSetupPage ()
|
||||
{
|
||||
if (ChangePageEvent != null)
|
||||
ChangePageEvent (PageType.Setup);
|
||||
}
|
||||
|
||||
|
||||
public void SetupPageCompleted (string full_name, string email)
|
||||
{
|
||||
SparkleShare.Controller.UserName = full_name;
|
||||
SparkleShare.Controller.UserEmail = email;
|
||||
|
||||
SparkleShare.Controller.GenerateKeyPair ();
|
||||
SparkleShare.Controller.UpdateState ();
|
||||
|
||||
if (ChangePageEvent != null)
|
||||
ChangePageEvent (PageType.Add);
|
||||
}
|
||||
|
||||
|
||||
public void AddPageCompleted (string server, string folder_name)
|
||||
{
|
||||
this.syncing_folder = Path.GetFileNameWithoutExtension (folder_name);
|
||||
this.previous_server = server;
|
||||
this.previous_folder = folder_name;
|
||||
|
||||
if (ChangePageEvent != null)
|
||||
ChangePageEvent (PageType.Syncing);
|
||||
|
||||
SparkleShare.Controller.FolderFetched += delegate {
|
||||
if (ChangePageEvent != null)
|
||||
ChangePageEvent (PageType.Finished);
|
||||
|
||||
this.syncing_folder = "";
|
||||
};
|
||||
|
||||
SparkleShare.Controller.FolderFetchError += delegate {
|
||||
if (ChangePageEvent != null)
|
||||
ChangePageEvent (PageType.Error);
|
||||
|
||||
this.syncing_folder = "";
|
||||
};
|
||||
|
||||
SparkleShare.Controller.FetchFolder (server, this.syncing_folder);
|
||||
}
|
||||
|
||||
|
||||
public void ErrorPageCompleted ()
|
||||
{
|
||||
if (ChangePageEvent != null)
|
||||
ChangePageEvent (PageType.Add);
|
||||
}
|
||||
|
||||
|
||||
public void FinishedPageCompleted ()
|
||||
{
|
||||
this.previous_server = "";
|
||||
this.previous_folder = "";
|
||||
SparkleShare.Controller.UpdateState ();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -27,21 +27,26 @@ using SparkleLib;
|
|||
|
||||
namespace SparkleShare {
|
||||
|
||||
public class SparkleWindow : Window {
|
||||
public class SparkleSetupWindow : Window {
|
||||
|
||||
private HBox HBox;
|
||||
private VBox VBox;
|
||||
private VBox Wrapper;
|
||||
private HButtonBox Buttons;
|
||||
|
||||
public string Header;
|
||||
public string Description;
|
||||
|
||||
public SparkleWindow () : base ("")
|
||||
public Container Content;
|
||||
|
||||
public SparkleSetupWindow () : base ("")
|
||||
{
|
||||
Title = "SparkleShare Setup";
|
||||
BorderWidth = 0;
|
||||
IconName = "folder-sparkleshare";
|
||||
Resizable = false;
|
||||
WindowPosition = WindowPosition.Center;
|
||||
Deletable = false;
|
||||
|
||||
SetSizeRequest (680, 440);
|
||||
|
||||
|
@ -103,13 +108,35 @@ namespace SparkleShare {
|
|||
|
||||
new public void Add (Widget widget)
|
||||
{
|
||||
Wrapper.PackStart (widget, true, true, 0);
|
||||
Label header = new Label ("<span size='large'><b>" + Header + "</b></span>") {
|
||||
UseMarkup = true,
|
||||
Xalign = 0
|
||||
};
|
||||
|
||||
Label description = new Label (Description) {
|
||||
Xalign = 0,
|
||||
Wrap = true
|
||||
};
|
||||
|
||||
VBox layout_vertical = new VBox (false, 0);
|
||||
layout_vertical.PackStart (header, false, false, 0);
|
||||
|
||||
if (!string.IsNullOrEmpty (Description))
|
||||
layout_vertical.PackStart (description, false, false, 21);
|
||||
|
||||
if (widget != null)
|
||||
layout_vertical.PackStart (widget, true, true, 21);
|
||||
|
||||
Wrapper.PackStart (layout_vertical, true, true, 0);
|
||||
ShowAll ();
|
||||
}
|
||||
|
||||
|
||||
public void Reset ()
|
||||
{
|
||||
Header = "";
|
||||
Description = "";
|
||||
|
||||
if (Wrapper.Children.Length > 0)
|
||||
Wrapper.Remove (Wrapper.Children [0]);
|
||||
|
||||
|
@ -121,7 +148,9 @@ namespace SparkleShare {
|
|||
|
||||
new public void ShowAll ()
|
||||
{
|
||||
Present ();
|
||||
|
||||
Present ();
|
||||
|
||||
base.ShowAll ();
|
||||
}
|
||||
|
|
@ -43,11 +43,6 @@ namespace SparkleShare {
|
|||
|
||||
public static void Main (string [] args)
|
||||
{
|
||||
// Use translations
|
||||
if ((SparkleBackend.Platform == PlatformID.Unix ||
|
||||
SparkleBackend.Platform == PlatformID.MacOSX))
|
||||
Mono.Unix.Catalog.Init (Defines.GETTEXT_PACKAGE, Defines.LOCALE_DIR);
|
||||
|
||||
// Don't allow running as root on Linux or Mac
|
||||
if ((SparkleBackend.Platform == PlatformID.Unix ||
|
||||
SparkleBackend.Platform == PlatformID.MacOSX) &&
|
||||
|
@ -59,17 +54,14 @@ namespace SparkleShare {
|
|||
}
|
||||
|
||||
// Parse the command line options
|
||||
bool hide_ui = false;
|
||||
bool show_help = false;
|
||||
|
||||
var p = new OptionSet () {
|
||||
{ "d|disable-gui", _("Don't show the notification icon"), v => hide_ui = v != null },
|
||||
bool show_help = false;
|
||||
OptionSet option_set = new OptionSet () {
|
||||
{ "v|version", _("Print version information"), v => { PrintVersion (); } },
|
||||
{ "h|help", _("Show this help text"), v => show_help = v != null }
|
||||
};
|
||||
|
||||
try {
|
||||
p.Parse (args);
|
||||
option_set.Parse (args);
|
||||
|
||||
} catch (OptionException e) {
|
||||
Console.Write ("SparkleShare: ");
|
||||
|
@ -78,7 +70,7 @@ namespace SparkleShare {
|
|||
}
|
||||
|
||||
if (show_help)
|
||||
ShowHelp (p);
|
||||
ShowHelp (option_set);
|
||||
|
||||
// Load the right controller for the OS
|
||||
string controller_name = "Lin";
|
||||
|
@ -101,7 +93,7 @@ namespace SparkleShare {
|
|||
|
||||
Controller.Initialize ();
|
||||
|
||||
if (Controller != null && !hide_ui) {
|
||||
if (Controller != null) {
|
||||
UI = new SparkleUI ();
|
||||
UI.Run ();
|
||||
}
|
||||
|
|
|
@ -37,22 +37,6 @@
|
|||
<Reference Include="System" />
|
||||
<Reference Include="Mono.Posix" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="SparkleBubble.cs" />
|
||||
<Compile Include="SparkleIntro.cs" />
|
||||
<Compile Include="SparkleShare.cs" />
|
||||
<Compile Include="SparkleSpinner.cs" />
|
||||
<Compile Include="SparkleStatusIcon.cs" />
|
||||
<Compile Include="SparkleUI.cs" />
|
||||
<Compile Include="SparkleWindow.cs" />
|
||||
<Compile Include="SparkleEntry.cs" />
|
||||
<Compile Include="SparkleEventLog.cs" />
|
||||
<Compile Include="SparkleUIHelpers.cs" />
|
||||
<Compile Include="SparkleInfobar.cs" />
|
||||
<Compile Include="SparkleController.cs" />
|
||||
<Compile Include="SparkleAbout.cs" />
|
||||
<Compile Include="SparkleLinController.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\SparkleLib\SparkleLib.csproj">
|
||||
<Project>{2C914413-B31C-4362-93C7-1AE34F09112A}</Project>
|
||||
|
@ -74,4 +58,24 @@
|
|||
</Properties>
|
||||
</MonoDevelop>
|
||||
</ProjectExtensions>
|
||||
<ItemGroup>
|
||||
<Compile Include="SparkleBubbles.cs" />
|
||||
<Compile Include="SparkleBubblesController.cs" />
|
||||
<Compile Include="SparkleController.cs" />
|
||||
<Compile Include="SparkleEntry.cs" />
|
||||
<Compile Include="SparkleLinController.cs" />
|
||||
<Compile Include="SparkleSetup.cs" />
|
||||
<Compile Include="SparkleSetupController.cs" />
|
||||
<Compile Include="SparkleSetupWindow.cs" />
|
||||
<Compile Include="SparkleShare.cs" />
|
||||
<Compile Include="SparkleSpinner.cs" />
|
||||
<Compile Include="SparkleStatusIcon.cs" />
|
||||
<Compile Include="SparkleStatusIconController.cs" />
|
||||
<Compile Include="SparkleUI.cs" />
|
||||
<Compile Include="SparkleUIHelpers.cs" />
|
||||
<Compile Include="SparkleEventLogController.cs" />
|
||||
<Compile Include="SparkleEventLog.cs" />
|
||||
<Compile Include="SparkleAboutController.cs" />
|
||||
<Compile Include="SparkleAbout.cs" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
|
@ -223,16 +223,16 @@ namespace SparkleShare {
|
|||
sync_item.Activated += delegate {
|
||||
Application.Invoke (delegate {
|
||||
|
||||
if (SparkleUI.Intro == null) {
|
||||
SparkleUI.Intro = new SparkleIntro ();
|
||||
SparkleUI.Intro.ShowServerForm (true);
|
||||
if (SparkleUI.Setup == null) {
|
||||
SparkleUI.Setup = new SparkleSetup ();
|
||||
SparkleUI.Setup.Controller.ShowAddPage ();
|
||||
}
|
||||
|
||||
if (!SparkleUI.Intro.Visible)
|
||||
SparkleUI.Intro.ShowServerForm (true);
|
||||
if (!SparkleUI.Setup.Visible)
|
||||
SparkleUI.Setup.Controller.ShowAddPage ();
|
||||
|
||||
SparkleUI.Intro.ShowAll ();
|
||||
SparkleUI.Intro.Present ();
|
||||
//SparkleUI.Intro.ShowAll ();
|
||||
//SparkleUI.Intro.Present ();
|
||||
});
|
||||
};
|
||||
|
||||
|
@ -275,8 +275,13 @@ namespace SparkleShare {
|
|||
MenuItem about_item = new MenuItem (_("About SparkleShare"));
|
||||
|
||||
about_item.Activated += delegate {
|
||||
SparkleAbout about = new SparkleAbout ();
|
||||
about.ShowAll ();
|
||||
Application.Invoke (delegate {
|
||||
if (SparkleUI.About == null)
|
||||
SparkleUI.About = new SparkleAbout ();
|
||||
|
||||
SparkleUI.About.ShowAll ();
|
||||
SparkleUI.About.Present ();
|
||||
});
|
||||
};
|
||||
|
||||
Menu.Add (about_item);
|
||||
|
|
86
SparkleShare/SparkleStatusIconController.cs
Normal file
|
@ -0,0 +1,86 @@
|
|||
// SparkleShare, a collaboration and sharing tool.
|
||||
// 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 System;
|
||||
using System.IO;
|
||||
|
||||
namespace SparkleShare {
|
||||
|
||||
public enum IconState {
|
||||
Idle,
|
||||
Syncing,
|
||||
Error
|
||||
}
|
||||
|
||||
|
||||
public class SparkleStatusIconController {
|
||||
|
||||
public delegate void UpdateStatusLineEventHandler ();
|
||||
|
||||
public event UpdateMenuEventHandler UpdateMenuEvent;
|
||||
public delegate void UpdateMenuEventHandler (IconState state);
|
||||
|
||||
public IconState CurrentState = IconState.Idle;
|
||||
|
||||
public string [] Folders {
|
||||
get {
|
||||
return SparkleShare.Controller.Folders.ToArray ();
|
||||
}
|
||||
}
|
||||
|
||||
public string FolderSize {
|
||||
get {
|
||||
return SparkleShare.Controller.FolderSize;
|
||||
}
|
||||
}
|
||||
|
||||
public SparkleStatusIconController ()
|
||||
{
|
||||
SparkleShare.Controller.FolderSizeChanged += delegate {
|
||||
if (UpdateMenuEvent != null)
|
||||
UpdateMenuEvent (CurrentState);
|
||||
};
|
||||
|
||||
SparkleShare.Controller.FolderListChanged += delegate {
|
||||
if (UpdateMenuEvent != null)
|
||||
UpdateMenuEvent (CurrentState);
|
||||
};
|
||||
|
||||
SparkleShare.Controller.OnIdle += delegate {
|
||||
if (CurrentState != IconState.Error)
|
||||
CurrentState = IconState.Idle;
|
||||
|
||||
if (UpdateMenuEvent != null)
|
||||
UpdateMenuEvent (CurrentState);
|
||||
};
|
||||
|
||||
SparkleShare.Controller.OnSyncing += delegate {
|
||||
CurrentState = IconState.Syncing;
|
||||
|
||||
if (UpdateMenuEvent != null)
|
||||
UpdateMenuEvent (IconState.Syncing);
|
||||
};
|
||||
|
||||
SparkleShare.Controller.OnError += delegate {
|
||||
CurrentState = IconState.Error;
|
||||
|
||||
if (UpdateMenuEvent != null)
|
||||
UpdateMenuEvent (IconState.Error);
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
|
@ -32,7 +32,8 @@ namespace SparkleShare {
|
|||
|
||||
public static SparkleStatusIcon StatusIcon;
|
||||
public static SparkleEventLog EventLog;
|
||||
public static SparkleIntro Intro;
|
||||
public static SparkleSetup Setup;
|
||||
public static SparkleAbout About;
|
||||
|
||||
|
||||
// Short alias for the translations
|
||||
|
@ -72,75 +73,13 @@ namespace SparkleShare {
|
|||
StatusIcon = new SparkleStatusIcon ();
|
||||
|
||||
if (SparkleShare.Controller.FirstRun) {
|
||||
Intro = new SparkleIntro ();
|
||||
Intro.ShowAccountForm ();
|
||||
Setup = new SparkleSetup ();
|
||||
Setup.Controller.ShowSetupPage ();
|
||||
}
|
||||
|
||||
SparkleShare.Controller.OnQuitWhileSyncing += delegate {
|
||||
// TODO: Pop up a warning when quitting whilst syncing
|
||||
};
|
||||
|
||||
SparkleShare.Controller.OnInvitation += delegate (string server, string folder, string token) {
|
||||
Application.Invoke (delegate {
|
||||
SparkleIntro intro = new SparkleIntro ();
|
||||
intro.ShowInvitationPage (server, folder, token);
|
||||
});
|
||||
};
|
||||
|
||||
// Show a bubble when there are new changes
|
||||
SparkleShare.Controller.NotificationRaised += delegate (string user_name, string user_email,
|
||||
string message, string repository_path) {
|
||||
Application.Invoke (delegate {
|
||||
if (EventLog != null)
|
||||
EventLog.UpdateEvents ();
|
||||
|
||||
if (!SparkleShare.Controller.NotificationsEnabled)
|
||||
return;
|
||||
|
||||
SparkleBubble bubble = new SparkleBubble (user_name, message);
|
||||
string avatar_file_path = SparkleShare.Controller.GetAvatar (user_email, 32);
|
||||
|
||||
if (avatar_file_path != null)
|
||||
bubble.Icon = new Gdk.Pixbuf (avatar_file_path);
|
||||
else
|
||||
bubble.Icon = SparkleUIHelpers.GetIcon ("avatar-default", 32);
|
||||
|
||||
bubble.Show ();
|
||||
});
|
||||
};
|
||||
|
||||
// Show a bubble when there was a conflict
|
||||
SparkleShare.Controller.ConflictNotificationRaised += delegate {
|
||||
Application.Invoke (delegate {
|
||||
string title = _("Ouch! Mid-air collision!");
|
||||
string subtext = _("Don't worry, SparkleShare made a copy of each conflicting file.");
|
||||
|
||||
new SparkleBubble (title, subtext).Show ();
|
||||
});
|
||||
};
|
||||
|
||||
SparkleShare.Controller.AvatarFetched += delegate {
|
||||
Application.Invoke (delegate {
|
||||
if (EventLog != null)
|
||||
EventLog.UpdateEvents ();
|
||||
});
|
||||
};
|
||||
|
||||
SparkleShare.Controller.OnIdle += delegate {
|
||||
Application.Invoke (delegate {
|
||||
if (EventLog != null)
|
||||
EventLog.UpdateEvents ();
|
||||
});
|
||||
};
|
||||
|
||||
SparkleShare.Controller.FolderListChanged += delegate {
|
||||
Application.Invoke (delegate {
|
||||
if (EventLog != null) {
|
||||
EventLog.UpdateChooser ();
|
||||
EventLog.UpdateEvents ();
|
||||
}
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
// Runs the application
|
||||
|
|
|
@ -156,39 +156,21 @@
|
|||
</data>
|
||||
<data name="error" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\..\data\icons\error.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="folder_sparkleshare_16_mist" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\..\data\icons\folder-sparkleshare-16-mist.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="folder_sparkleshare_16" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\..\data\icons\folder-sparkleshare-16.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="folder_sparkleshare_22_mist" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\..\data\icons\folder-sparkleshare-22-mist.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="folder_sparkleshare_22" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\..\data\icons\folder-sparkleshare-22.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="folder_sparkleshare_24_mist" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\..\data\icons\folder-sparkleshare-24-mist.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="folder_sparkleshare_24" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\..\data\icons\folder-sparkleshare-24.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="folder_sparkleshare_256_mist" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\..\data\icons\folder-sparkleshare-256-mist.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="folder_sparkleshare_256" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\..\data\icons\folder-sparkleshare-256.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="folder_sparkleshare_32_mist" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\..\data\icons\folder-sparkleshare-32-mist.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="folder_sparkleshare_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\..\data\icons\folder-sparkleshare-32.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="folder_sparkleshare_48_mist" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\..\data\icons\folder-sparkleshare-48-mist.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="folder_sparkleshare_48" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\..\data\icons\folder-sparkleshare-48.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
|
@ -222,9 +204,6 @@
|
|||
</data>
|
||||
<data name="idle4" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\..\data\icons\idle4.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="process_syncing_sparkleshare_24_mist" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\..\data\icons\process-syncing-sparkleshare-24-mist.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="process_syncing_sparkleshare_24" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\..\data\icons\process-syncing-sparkleshare-24.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
|
|
|
@ -89,17 +89,18 @@
|
|||
<Compile Include="SparkleBubble.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="..\SparkleIntro.cs" />
|
||||
<Compile Include="..\SparkleSetup.cs" />
|
||||
<Compile Include="..\SparkleSetupController.cs" />
|
||||
<Compile Include="..\SparkleSetupWindow.cs" />
|
||||
<Compile Include="..\SparkleShare.cs" />
|
||||
<Compile Include="..\SparkleSpinner.cs" />
|
||||
<Compile Include="..\SparkleStatusIcon.cs" />
|
||||
<Compile Include="..\SparkleUI.cs" />
|
||||
<Compile Include="..\SparkleWindow.cs" />
|
||||
<Compile Include="..\SparkleEntry.cs" />
|
||||
<Compile Include="..\SparkleUIHelpers.cs" />
|
||||
<Compile Include="..\SparkleInfobar.cs" />
|
||||
<Compile Include="..\SparkleController.cs" />
|
||||
<Compile Include="..\SparkleAbout.cs" />
|
||||
<Compile Include="..\SparkleAboutController.cs" />
|
||||
<Compile Include="SparkleEventLog.cs" />
|
||||
<Compile Include="SparkleWinController.cs" />
|
||||
</ItemGroup>
|
||||
|
|
|
@ -19,7 +19,11 @@ start() {
|
|||
fi
|
||||
|
||||
echo -n "Starting SparkleShare... "
|
||||
ssh-agent mono "@expanded_libdir@/@PACKAGE@/SparkleShare.exe" $2 &
|
||||
if [ -n "${SSH_AGENT_PID}" -o -n "${SSH_AUTH_SOCK}" ] ; then
|
||||
mono "@expanded_libdir@/@PACKAGE@/SparkleShare.exe" $2 &
|
||||
else
|
||||
ssh-agent mono "@expanded_libdir@/@PACKAGE@/SparkleShare.exe" $2 &
|
||||
fi
|
||||
( umask 066; echo $! > ${pidfile} )
|
||||
echo "Done."
|
||||
}
|
||||
|
|
87
configure.ac
|
@ -1,9 +1,9 @@
|
|||
dnl Process this file with autoconf to produce a configure script.
|
||||
m4_define([sparkleshare_version],
|
||||
[0.2.2])
|
||||
[0.2.4])
|
||||
|
||||
m4_define([sparkleshare_asm_version],
|
||||
[0.2.2])
|
||||
[0.2.4])
|
||||
|
||||
AC_PREREQ([2.54])
|
||||
AC_INIT([SparkleShare], sparkleshare_version)
|
||||
|
@ -38,13 +38,21 @@ AC_PROG_INSTALL
|
|||
|
||||
dnl Mono and gmcs
|
||||
SHAMROCK_CHECK_MONO_MODULE(2.2)
|
||||
SHAMROCK_FIND_MONO_2_0_COMPILER
|
||||
SHAMROCK_FIND_MONO_RUNTIME
|
||||
|
||||
PKG_CHECK_EXISTS([mono >= 2.8],
|
||||
[SHAMROCK_FIND_MONO_4_0_COMPILER
|
||||
SHAMROCK_CHECK_MONO_4_0_GAC_ASSEMBLIES([
|
||||
System
|
||||
System.Security
|
||||
Mono.Posix
|
||||
])],
|
||||
[SHAMROCK_FIND_MONO_2_0_COMPILER
|
||||
SHAMROCK_CHECK_MONO_2_0_GAC_ASSEMBLIES([
|
||||
System
|
||||
System.Security
|
||||
Mono.Posix
|
||||
])
|
||||
])])
|
||||
|
||||
SPARKLESHARE_CHECK_NOTIFY_SHARP
|
||||
|
||||
|
@ -91,42 +99,64 @@ PKG_CHECK_MODULES([SMARTIRC4NET], [smartirc4net],
|
|||
)
|
||||
AM_CONDITIONAL([HAVE_SMARTIRC4NET], test x$SPARKLE_SMARTIRC4NETDIR = x)
|
||||
|
||||
dnl check for webkit-sharp
|
||||
PKG_CHECK_MODULES(WEBKIT_SHARP, webkit-sharp-1.0, have_webkit_sharp=yes, have_webkit_sharp=no)
|
||||
AC_SUBST(WEBKIT_SHARP_LIBS)
|
||||
|
||||
SHAMROCK_CHECK_NUNIT
|
||||
|
||||
APPINDICATOR_REQUIRED=0.0.7
|
||||
AC_ARG_ENABLE(gtkui,
|
||||
AS_HELP_STRING([--disable-gtkui], [Do not build the Gtk+ user interface]),
|
||||
[ enable_gtkui=no ], [ enable_gtkui=yes ])
|
||||
|
||||
AC_ARG_ENABLE(appindicator,
|
||||
AS_HELP_STRING([--enable-appindicator[=@<:@no/auto/yes@:>@]],[Build support for application indicators ]),
|
||||
[enable_appindicator=$enableval],
|
||||
[enable_appindicator="auto"])
|
||||
AS_HELP_STRING([--enable-appindicator[=@<:@no/auto/yes@:>@]],[Build support for application indicators ]),
|
||||
[enable_appindicator=$enableval],
|
||||
[enable_appindicator="auto"])
|
||||
|
||||
if test x$enable_appindicator = xauto ; then
|
||||
PKG_CHECK_EXISTS([appindicator-sharp-0.1 >= $APPINDICATOR_REQUIRED],
|
||||
enable_appindicator="yes",
|
||||
enable_appindicator="no")
|
||||
AM_CONDITIONAL(ENABLE_GTKUI, test x$enable_gtkui = xyes)
|
||||
if test "x$enable_gtkui" = "xyes" ; then
|
||||
dnl check for webkit-sharp
|
||||
PKG_CHECK_MODULES(WEBKIT_SHARP, webkit-sharp-1.0, have_webkit_sharp=yes, have_webkit_sharp=no)
|
||||
if test "x$have_webkit_sharp" = "xno" ; then
|
||||
AC_ERROR("webkit-sharp is a required dependency: you need to install the appropriate devel package before you can compile")
|
||||
fi
|
||||
AC_SUBST(WEBKIT_SHARP_LIBS)
|
||||
|
||||
dnl check for notify-sharp
|
||||
PKG_CHECK_MODULES(NOTIFY_SHARP, notify-sharp, have_notify_sharp=yes, have_notify_sharp=no)
|
||||
if test "x$have_notify_sharp" = "xno" ; then
|
||||
AC_ERROR("notify-sharp is a required dependency: you need to install the appropriate devel package before you can compile")
|
||||
fi
|
||||
AC_SUBST(NOTIFY_SHARP_LIBS)
|
||||
|
||||
APPINDICATOR_REQUIRED=0.0.7
|
||||
|
||||
if test x$enable_appindicator = xauto ; then
|
||||
PKG_CHECK_EXISTS([appindicator-sharp-0.1 >= $APPINDICATOR_REQUIRED],
|
||||
enable_appindicator="yes",
|
||||
enable_appindicator="no")
|
||||
fi
|
||||
|
||||
if test x$enable_appindicator = xyes ; then
|
||||
PKG_CHECK_EXISTS([appindicator-sharp-0.1 >= $APPINDICATOR_REQUIRED],,
|
||||
AC_MSG_ERROR([appindicator-sharp-0.1 is not installed]))
|
||||
PKG_CHECK_MODULES(APP_INDICATOR,
|
||||
appindicator-sharp-0.1 >= $APPINDICATOR_REQUIRED)
|
||||
AC_SUBST(APP_INDICATOR_CFLAGS)
|
||||
AC_SUBST(APP_INDICATOR_LIBS)
|
||||
AC_DEFINE(HAVE_APP_INDICATOR, 1, [Have AppIndicator])
|
||||
fi
|
||||
|
||||
GUISUBDIRS=SparkleShare
|
||||
else
|
||||
GUISUBDIRS=
|
||||
fi
|
||||
|
||||
if test x$enable_appindicator = xyes ; then
|
||||
PKG_CHECK_EXISTS([appindicator-sharp-0.1 >= $APPINDICATOR_REQUIRED],,
|
||||
AC_MSG_ERROR([appindicator-sharp-0.1 is not installed]))
|
||||
PKG_CHECK_MODULES(APP_INDICATOR,
|
||||
appindicator-sharp-0.1 >= $APPINDICATOR_REQUIRED)
|
||||
AC_SUBST(APP_INDICATOR_CFLAGS)
|
||||
AC_SUBST(APP_INDICATOR_LIBS)
|
||||
AC_DEFINE(HAVE_APP_INDICATOR, 1, [Have AppIndicator])
|
||||
fi
|
||||
AM_CONDITIONAL(HAVE_APP_INDICATOR, test x"$enable_appindicator" = xyes)
|
||||
AC_SUBST([GUISUBDIRS])
|
||||
|
||||
SHAMROCK_CHECK_NUNIT
|
||||
|
||||
dnl Get nautilus extensions directory
|
||||
SPARKLESHARE_NAUTILUS_PYTHON
|
||||
|
||||
SHAVE_INIT([build/m4/shave], [enable])
|
||||
|
||||
|
||||
AC_OUTPUT([
|
||||
build/Makefile
|
||||
build/m4/Makefile
|
||||
|
@ -153,6 +183,7 @@ SparkleShare ${VERSION}
|
|||
|
||||
Configuration:
|
||||
Prefix : ${prefix}
|
||||
Build Gtk+ UI : ${enable_gtkui}
|
||||
Nautilus plugin : ${have_nautilus_python}
|
||||
User Help : ${enable_user_help} (requires gnome-doc-utils >= 0.17.3)
|
||||
|
||||
|
|
|
@ -3,9 +3,8 @@ SUBDIRS = \
|
|||
html
|
||||
|
||||
dist_pixmaps_DATA = \
|
||||
sparkleshare-gnome.svg \
|
||||
sparkleshare-mist.svg \
|
||||
side-splash.png
|
||||
side-splash.png \
|
||||
about.png
|
||||
|
||||
pixmapsdir = $(pkgdatadir)/pixmaps/
|
||||
|
||||
|
|
BIN
data/about.png
Normal file
After Width: | Height: | Size: 50 KiB |
1960
data/actions.svg
Before Width: | Height: | Size: 64 KiB |
|
@ -1,9 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
|
||||
<sparkleshare_invitation>
|
||||
|
||||
<server>git.gnome.org</server>
|
||||
<folder>gnome-design</folder>
|
||||
<token>a22bc6f4b9ffe8e5acd4be0838d41aa10a1187dd</token>
|
||||
|
||||
</sparkleshare_invitation>
|
|
@ -1,7 +1,8 @@
|
|||
dist_html_DATA = \
|
||||
day-entry.html \
|
||||
event-entry.html \
|
||||
event-log.html
|
||||
event-log.html \
|
||||
jquery.js
|
||||
|
||||
htmldir = $(pkgdatadir)/html/
|
||||
|
||||
|
|
|
@ -1,16 +1,22 @@
|
|||
<div class='event-entry'>
|
||||
<div class='event-entry-content'>
|
||||
<div class='event-info'>
|
||||
<div class='wrapper'>
|
||||
<div class='no-buddy-icon'>
|
||||
<div class='buddy-icon' style='background-image: url("<!-- $event-avatar-url -->");'></div>
|
||||
</div>
|
||||
<b><!-- $event-user-name --></b><br/>
|
||||
<small><!-- $event-time --></small>
|
||||
</div>
|
||||
<div class='event-time' style='background-color: <!-- $event-folder-color -->'><!-- $event-folder --></div>
|
||||
</div>
|
||||
<!-- $event-entry-content -->
|
||||
<div class='event-entry' style='background-image: url("<!-- $event-avatar-url -->");'>
|
||||
<div class='event-user-name'><!-- $event-user-name --></div>
|
||||
<div class='event-folder'><!-- $event-folder --></div>
|
||||
|
||||
<!-- $event-entry-content -->
|
||||
|
||||
<div class="clearer"></div>
|
||||
<div class="event-timestamp"><!-- $event-time --></div>
|
||||
<div class="action note">Add note</div>
|
||||
<div class="action show">Show all</div>
|
||||
|
||||
<div class="clearer"></div>
|
||||
|
||||
<div class="comments-section">
|
||||
<!-- $event-comments -->
|
||||
<textarea class="comment-textarea"></textarea>
|
||||
<input class="comment-button" type="button" value="Add note"
|
||||
id="<!-- $event-folder -->~<!-- $event-revision -->">
|
||||
<div style='clear: both'></div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
|
|
|
@ -2,9 +2,81 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>SparkleShare Event Log</title>
|
||||
<script type="text/javascript" src="<!-- $jquery-url -->"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function () {
|
||||
$('.comments-section').each (function () {
|
||||
if ($(this).find ('.comments').children ().size () < 1) {
|
||||
$(this).hide ();
|
||||
}
|
||||
});
|
||||
|
||||
$('.buddy-icon').each (function () {
|
||||
if ($(this).css('backgroundImage').indexOf ('@') != -1) {
|
||||
$(this).css ('backgroundColor', '#fff');
|
||||
}
|
||||
});
|
||||
|
||||
// Show the form when 'Add note' is clicked
|
||||
$('.note').click(function () {
|
||||
$(this).parent ().find ('.comments-section').show ();
|
||||
});
|
||||
|
||||
// Hide the 'Show all' link when there are less than 10 events
|
||||
$('.show').each (function () {
|
||||
var entries = $(this).parent ().find ('dl').children ().length;
|
||||
|
||||
if (entries <= 10) {
|
||||
$(this).hide ();
|
||||
} else {
|
||||
// Append the number of entries
|
||||
$(this).html ('Show all ' + entries);
|
||||
}
|
||||
});
|
||||
|
||||
// When 'Show all' is clicked, show all collapsed events
|
||||
$('.show').click(function () {
|
||||
$(this).parent ().find ('dl').children ().show ();
|
||||
$(this).hide ();
|
||||
});
|
||||
|
||||
$("input").click(function () {
|
||||
textarea = $(this).parent ().find ('textarea');
|
||||
text = textarea.val ();
|
||||
|
||||
if (text == '')
|
||||
return;
|
||||
|
||||
// Clear the textarea
|
||||
textarea.val ('');
|
||||
|
||||
table = $(this).parent ().find (".comments");
|
||||
comments = table.html ();
|
||||
|
||||
// Add the note to the html
|
||||
comments += '<div class="comment-text">' +
|
||||
'<p class="comment-author"' +
|
||||
' style="background-image: url(\'<!-- $user-avatar-url -->\');">' +
|
||||
'<!-- $username --></p>' +
|
||||
text +
|
||||
'</div>';
|
||||
|
||||
table.html (comments);
|
||||
|
||||
// Feed the note to the backend
|
||||
location = this.id + '~' + text;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<style>
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
-webkit-box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: #dedede;
|
||||
background-color: #fff;
|
||||
color: <!-- $body-color -->;
|
||||
font-size: <!-- $body-font-size -->;
|
||||
font-family: <!-- $body-font-family -->;
|
||||
|
@ -22,15 +94,26 @@
|
|||
color: <!-- $secondary-font-color -->;
|
||||
}
|
||||
|
||||
.day-entry-header {
|
||||
font-size: <!-- $day-entry-header-font-size -->;
|
||||
color: #444;
|
||||
padding: 18px;
|
||||
padding-top: 9px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
.comment-text {
|
||||
font-size: 90%;
|
||||
padding: 12px;
|
||||
background-color: #FFF4DB;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
|
||||
.day-entry-header {
|
||||
color: #aaa;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
display: block;
|
||||
text-align: center;
|
||||
margin-bottom: 36px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.day-entry-content .event-entry:last-child {
|
||||
border: none;
|
||||
}
|
||||
|
||||
a {
|
||||
color: <!-- $a-color -->;
|
||||
|
@ -41,92 +124,182 @@
|
|||
color: <!-- $a-hover-color -->;
|
||||
}
|
||||
|
||||
.event-time {
|
||||
margin: 15px;
|
||||
opacity: 0.8;
|
||||
font-size: 80%;
|
||||
color: #fff;
|
||||
float: right;
|
||||
padding: 3px 15px;
|
||||
font-weight: bold;
|
||||
-webkit-border-radius: 100px;
|
||||
}
|
||||
|
||||
.event-entry-content {
|
||||
display: block;
|
||||
background-color: #f0f0f0;
|
||||
margin-bottom: 12px;
|
||||
padding: 0px;
|
||||
padding-bottom: 6px;
|
||||
border: #ccc 1px solid;
|
||||
}
|
||||
|
||||
.wrapper {
|
||||
margin: 15px;
|
||||
.event-timestamp {
|
||||
float: left;
|
||||
font-size: 80%;
|
||||
color: <!-- $secondary-font-color -->;
|
||||
}
|
||||
|
||||
.event-user-name {
|
||||
float: left;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.event-folder {
|
||||
float: right;
|
||||
color: <!-- $secondary-font-color -->;
|
||||
}
|
||||
|
||||
.event-entry {
|
||||
margin-bottom: 24px;
|
||||
padding-bottom: 24px;
|
||||
border-bottom: 1px <!-- $secondary-font-color --> solid;
|
||||
width: 90%;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
padding-left: 72px;
|
||||
padding-right: 12px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: 12px top;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.action {
|
||||
font-size: 80%;
|
||||
margin-left: 15px;
|
||||
float: right;
|
||||
margin-bottom: 9px;
|
||||
color: <!-- $a-color -->;
|
||||
}
|
||||
|
||||
.action:hover {
|
||||
color: <!-- $a-hover-color -->;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.clearer {
|
||||
clear: both;
|
||||
backround-color: blue;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
.separator {
|
||||
clear: both;
|
||||
border-bottom: 1px #ccc solid;
|
||||
margin-top: 24px;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
dl {
|
||||
padding : 0;
|
||||
margin: 0;
|
||||
margin-bottom: 12px;
|
||||
padding-top: 6px;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
dd {
|
||||
width: 90%;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
padding: 0;
|
||||
padding-top: 2px;
|
||||
padding-bottom: 4px;
|
||||
padding-left: 22px;
|
||||
margin: 0;
|
||||
margin-bottom: 2px;
|
||||
margin-left: 12px;
|
||||
border-bottom: 1px solid #ddd;
|
||||
background-repeat: no-repeat;
|
||||
display: none;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
width: 90%;
|
||||
padding: 0;
|
||||
padding-top: 2px;
|
||||
padding-bottom: 2px;
|
||||
padding-left: 20px;
|
||||
margin: 0;
|
||||
margin-bottom: 1px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center left;
|
||||
}
|
||||
|
||||
dd:last-child {
|
||||
border: none;
|
||||
dl dd:nth-child(-n+10) {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.document-added {
|
||||
.document {
|
||||
text-overflow: ellipsis;
|
||||
width: 100%;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.added {
|
||||
background-image: url('<!-- $document-added-background-image -->');
|
||||
}
|
||||
|
||||
.document-deleted {
|
||||
.deleted {
|
||||
background-image: url('<!-- $document-deleted-background-image -->');
|
||||
}
|
||||
|
||||
.document-edited {
|
||||
.edited {
|
||||
background-image: url('<!-- $document-edited-background-image -->');
|
||||
}
|
||||
|
||||
.document-moved {
|
||||
.moved {
|
||||
background-image: url('<!-- $document-moved-background-image -->');
|
||||
}
|
||||
|
||||
.no-buddy-icon {
|
||||
position: relative;
|
||||
top: 0;
|
||||
left: 0;
|
||||
float: left;
|
||||
margin-right: 12px;
|
||||
width: 36px;
|
||||
width: 48px;
|
||||
background-image: url('<!-- $no-buddy-icon-background-image -->');
|
||||
background-repeat: no-repeat;
|
||||
background-position: top center;
|
||||
}
|
||||
|
||||
.buddy-icon {
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
}
|
||||
|
||||
.event-info {
|
||||
float: left;
|
||||
margin-bottom: 8px;
|
||||
.comments {
|
||||
width: 100%;
|
||||
background-color: #fff;
|
||||
border-bottom: 1px #ccc solid;
|
||||
font-size: 90%;
|
||||
margin-bottom: 9px;
|
||||
}
|
||||
|
||||
.comment-author {
|
||||
font-size: 90%;
|
||||
font-weight: bold;
|
||||
margin: 0;
|
||||
margin-bottom: 9px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: bottom left;
|
||||
background-size: 24px;
|
||||
height: 24px;
|
||||
padding-left: 30px;
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
.comment-timestamp {
|
||||
color: <!-- $secondary-font-color -->;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.comment-button {
|
||||
float:right;
|
||||
margin-top: 6px;
|
||||
}
|
||||
|
||||
.comment-textarea {
|
||||
box-sizing: border-box;
|
||||
-webkit-box-sizing: border-box;
|
||||
width: 100%;
|
||||
height: 3em;
|
||||
padding-bottom: 6px;
|
||||
}
|
||||
|
||||
.comments-section {
|
||||
box-sizing: border-box;
|
||||
-webkit-box-sizing: border-box;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.comments-wrapper {
|
||||
box-sizing: border-box;
|
||||
-webkit-box-sizing: border-box;
|
||||
width: 100%;
|
||||
margin-top: 12px;
|
||||
}
|
||||
|
||||
.comment-text {
|
||||
padding-bottom: 15px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
|
18
data/html/jquery.js
vendored
Normal file
Before Width: | Height: | Size: 459 B After Width: | Height: | Size: 498 B |
Before Width: | Height: | Size: 333 B After Width: | Height: | Size: 314 B |
Before Width: | Height: | Size: 618 B After Width: | Height: | Size: 665 B |
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 971 B |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 978 B |
Before Width: | Height: | Size: 52 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 2.4 KiB |
BIN
data/icons/sparkleshare-windows-status.png
Normal file
After Width: | Height: | Size: 869 B |
|
@ -1,28 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>sparkleshare</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>sparkleshare.icns</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>org.sparkleshare.sparkleshare</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>SparkleShare</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.2</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>xmmd</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>0.2</string>
|
||||
<key>NSAppleScriptEnabled</key>
|
||||
<string>NO</string>
|
||||
</dict>
|
||||
</plist>
|
21204
data/src/actions.svg
Normal file
After Width: | Height: | Size: 682 KiB |
Before Width: | Height: | Size: 841 KiB After Width: | Height: | Size: 841 KiB |
|
@ -16,7 +16,7 @@
|
|||
inkscape:export-xdpi="90.000000"
|
||||
inkscape:export-ydpi="90.000000"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
inkscape:version="0.48.0 r9654"
|
||||
inkscape:version="0.48.1 r9760"
|
||||
sodipodi:docname="sparkleshare-gnome.svg"
|
||||
sodipodi:version="0.32"
|
||||
style="display:inline;enable-background:new"
|
||||
|
@ -31,20 +31,20 @@
|
|||
height="300px"
|
||||
id="base"
|
||||
inkscape:current-layer="layer20"
|
||||
inkscape:cx="464.56664"
|
||||
inkscape:cy="123.20561"
|
||||
inkscape:cx="489.3933"
|
||||
inkscape:cy="158.04102"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:showpageshadow="false"
|
||||
inkscape:snap-bbox="true"
|
||||
inkscape:snap-bbox="false"
|
||||
inkscape:snap-nodes="false"
|
||||
inkscape:window-height="756"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="852"
|
||||
inkscape:window-width="1440"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:zoom="8"
|
||||
inkscape:zoom="2"
|
||||
objecttolerance="10000"
|
||||
pagecolor="#ffffff"
|
||||
showgrid="true"
|
||||
|
@ -53,7 +53,7 @@
|
|||
showguides="false"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:snap-global="true"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:bbox-paths="false"
|
||||
inkscape:bbox-nodes="false">
|
||||
<inkscape:grid
|
||||
|
@ -2436,6 +2436,88 @@
|
|||
fx="626"
|
||||
fy="505.22311"
|
||||
r="30.535728" />
|
||||
<linearGradient
|
||||
id="linearGradient4908-1">
|
||||
<stop
|
||||
style="stop-color:#ce5c00;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop4910-1" />
|
||||
<stop
|
||||
style="stop-color:#f57900;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop4912-5" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient11481-5">
|
||||
<stop
|
||||
id="stop11483-5"
|
||||
offset="0"
|
||||
style="stop-color:#a04600;stop-opacity:1" />
|
||||
<stop
|
||||
id="stop11485-4"
|
||||
offset="1"
|
||||
style="stop-color:#ce5c00;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4989-6">
|
||||
<stop
|
||||
id="stop4991-7"
|
||||
offset="0"
|
||||
style="stop-color:#f57900;stop-opacity:1" />
|
||||
<stop
|
||||
style="stop-color:#fcaf3e;stop-opacity:1"
|
||||
offset="0.06043659"
|
||||
id="stop4993-3" />
|
||||
<stop
|
||||
style="stop-color:#fcaf3e;stop-opacity:1"
|
||||
offset="0.17753538"
|
||||
id="stop4995-05" />
|
||||
<stop
|
||||
id="stop4997-8"
|
||||
offset="0.89421868"
|
||||
style="stop-color:#f57900;stop-opacity:1" />
|
||||
<stop
|
||||
style="stop-color:#ce5c00;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop4999-0" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient12469">
|
||||
<stop
|
||||
id="stop12471"
|
||||
offset="0"
|
||||
style="stop-color:#a04600;stop-opacity:1" />
|
||||
<stop
|
||||
id="stop12473"
|
||||
offset="1"
|
||||
style="stop-color:#ce5c00;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
r="103.04688"
|
||||
fy="525.86011"
|
||||
fx="147.01562"
|
||||
cy="525.86011"
|
||||
cx="147.01562"
|
||||
gradientTransform="matrix(1.5869209,1.2598559e-7,-5.9772551e-8,0.7528981,-86.286523,85.899531)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient11735-0"
|
||||
xlink:href="#linearGradient4347-6-5-6"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
id="linearGradient4347-6-5-6">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop4349-3-4-7" />
|
||||
<stop
|
||||
id="stop16502-2"
|
||||
offset="0.5"
|
||||
style="stop-color:#ffffff;stop-opacity:0.49803922;" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop4351-6-4-2" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g
|
||||
transform="translate(0,300)"
|
||||
|
@ -3676,6 +3758,100 @@
|
|||
transform="translate(-151,-50)"
|
||||
id="path7293" />
|
||||
</g>
|
||||
<rect
|
||||
ry="0"
|
||||
rx="0"
|
||||
y="-60"
|
||||
x="701"
|
||||
height="0"
|
||||
width="1.9999704"
|
||||
id="rect12657-5"
|
||||
style="color:#000000;fill:#888a85;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
|
||||
<g
|
||||
style="display:inline;enable-background:new"
|
||||
id="g12764-7"
|
||||
transform="translate(-77.003148,62.985444)">
|
||||
<g
|
||||
transform="translate(231,-288.9985)"
|
||||
id="g12757-4"
|
||||
style="opacity:0.5;fill:none;stroke:#000000;stroke-opacity:1;display:inline;enable-background:new">
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline;enable-background:new"
|
||||
d="m 536.4981,230.5 c -0.57203,0.064 -1.00351,0.54941 -1,1.125 l 0,0.90625 c -0.68054,0 -0.99809,0.62729 -0.9981,1.4375 l 0,9.125 c 0,1.33756 1.27557,2.40625 2.09375,2.40625 l 10.96875,0 c 0.81819,0 1.9375,-1.06869 1.9375,-2.40625 l 0,-9.90625 c 0,-0.37505 -0.29595,-0.6875 -0.65625,-0.6875 l -5.99653,0 -0.88822,-2 z"
|
||||
transform="translate(-231,-11.0015)"
|
||||
id="path12759-9"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccssssssccc" />
|
||||
</g>
|
||||
<g
|
||||
style="stroke:none;display:inline;enable-background:new"
|
||||
id="g10370-6-2"
|
||||
transform="translate(231,-287.9985)">
|
||||
<path
|
||||
sodipodi:nodetypes="cccccsssssssssccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path12761-5"
|
||||
d="m 305.59375,218.9985 c -0.32201,0.036 -0.56448,0.30099 -0.5625,0.625 l 0,0.90625 c -3e-5,0.26179 -0.23821,0.49997 -0.5,0.5 -0.18664,0 -0.24684,0.0427 -0.34375,0.1875 -0.0969,0.1448 -0.1875,0.41704 -0.1875,0.75 l 0,9.125 c 0,0.50984 0.24538,0.98446 0.59375,1.34375 0.34837,0.35929 0.80861,0.5625 1,0.5625 l 10.96875,0 c 0.1914,0 0.5954,-0.17788 0.90625,-0.53125 0.31085,-0.35337 0.53125,-0.84569 0.53125,-1.375 l 0,-9.90625 c 0,-0.11202 -0.085,-0.1875 -0.15625,-0.1875 l -6.35938,0 -0.87864,-2 z"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;display:inline;enable-background:new" />
|
||||
</g>
|
||||
<rect
|
||||
style="color:#000000;fill:#b4b4b2;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new"
|
||||
id="rect12657-0"
|
||||
width="1.9999704"
|
||||
height="2"
|
||||
x="541"
|
||||
y="-62"
|
||||
rx="0"
|
||||
ry="0" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccccccccccccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path12670-1"
|
||||
d="m 541.99919,-64.500037 -0.30757,-2.21e-4 -1.00266,1.994507 -2.18347,0.0051 C 538,-63 538.49167,-61.814834 538.49167,-61.814834 l 1.90193,1.921793 -1.0451,2.136338 0.56709,0.392297 2.0565,-1.320983 2.12881,1.380561 0.47825,-0.47492 -0.98095,-2.111519 1.90439,-1.918369 -0.0349,-0.683193 -2.15805,-0.0083 -1.00551,-1.995469 z"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;stroke:#626262;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="m 541.96092,-65.499657 -0.95078,-3.43e-4 -1.01569,2.021211 -2.50769,0.0014 0.007,2.45777 2.01317,1.531383 -0.98278,1.525808 -0.006,1.459651 1.48216,0.02348 2.01572,-0.973778 2,0.958667 1.49773,0.0026 9.9e-4,-1.503099 -1.01656,-1.490525 2.02188,-1.531544 0.004,-2.463825 -2.53024,0.0027 -0.99318,-2.016236 z"
|
||||
id="path12672-4"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccccccccccccccccc" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path12726-8"
|
||||
d="m 536.03219,-68.007813 c 0.005,0.665823 -0.019,0.874167 -0.34061,1 l 6.80384,0 -0.44979,-1 z"
|
||||
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#646464;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="rect12659-6"
|
||||
d="m 542,-64 1,2 -2,0 z"
|
||||
style="color:#000000;fill:#626262;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
|
||||
<path
|
||||
style="color:#000000;fill:#626262;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new"
|
||||
d="m 545,-62 -2,2 0,-2 z"
|
||||
id="path12662-6"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path12664-4"
|
||||
d="m 539,-62 2,2 0,-2 z"
|
||||
style="color:#000000;fill:#626262;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
|
||||
<path
|
||||
style="color:#000000;fill:#626262;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new"
|
||||
d="M 539.99997,-57.970102 542.9961,-59.97231 541.00992,-60 z"
|
||||
id="path12666-5"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path12668-2"
|
||||
d="M 544,-58 540.99997,-59.97231 542.98615,-60 z"
|
||||
style="color:#000000;fill:#626262;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
style="display:inline"
|
Before Width: | Height: | Size: 905 KiB After Width: | Height: | Size: 913 KiB |
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 53 KiB |
Before Width: | Height: | Size: 458 KiB After Width: | Height: | Size: 458 KiB |
|
@ -6,13 +6,12 @@ SparkleShare/Mac/SparkleStatusIcon.cs
|
|||
SparkleShare/Mac/SparkleUI.cs
|
||||
SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in
|
||||
SparkleShare/SparkleAbout.cs
|
||||
SparkleShare/SparkleBubble.cs
|
||||
SparkleShare/SparkleController.cs
|
||||
SparkleShare/SparkleIntro.cs
|
||||
SparkleShare/SparkleEventLog.cs
|
||||
SparkleShare/SparkleSetup.cs
|
||||
SparkleShare/SparkleSetupWindow.cs
|
||||
SparkleShare/SparkleShare.cs
|
||||
SparkleShare/SparkleSpinner.cs
|
||||
SparkleShare/SparkleStatusIcon.cs
|
||||
SparkleShare/SparkleUI.cs
|
||||
SparkleShare/SparkleWindow.cs
|
||||
|
||||
|
|
73
po/ar.po
|
@ -9,31 +9,32 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: SparkleShare\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-06-17 12:09+0200\n"
|
||||
"PO-Revision-Date: 2011-06-17 14:36+0000\n"
|
||||
"Last-Translator: usb333 <majid@aldharrab.com>\n"
|
||||
"POT-Creation-Date: 2011-06-29 11:38+0200\n"
|
||||
"PO-Revision-Date: 2011-06-26 09:22+0000\n"
|
||||
"Last-Translator: deejay1 <deejay1@srem.org>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ar\n"
|
||||
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5\n"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:338
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:337
|
||||
#: ../SparkleShare/SparkleIntro.cs:67 ../SparkleShare/SparkleStatusIcon.cs:345
|
||||
msgid "Welcome to SparkleShare!"
|
||||
msgstr "مرحبًا بك في سباركلشير!"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:349
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:348
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:357
|
||||
msgid "Not everything is synced"
|
||||
msgstr "ليس كل شيء مزامَنًا"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:359
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:358
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:367
|
||||
msgid "Up to date"
|
||||
msgstr "محدَّث"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:375
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:374
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:383
|
||||
msgid "Syncing…"
|
||||
msgstr "يزامن..."
|
||||
|
@ -83,35 +84,35 @@ msgstr "أظهر الإ_شادات"
|
|||
msgid "_Visit Website"
|
||||
msgstr "_زر الموقع الإلكتروني"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:422
|
||||
#: ../SparkleShare/SparkleController.cs:455
|
||||
msgid "ddd MMM d, yyyy"
|
||||
msgstr "ddd MMM d, yyyy"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:427
|
||||
#: ../SparkleShare/SparkleController.cs:460
|
||||
msgid "ddd MMM d"
|
||||
msgstr "ddd MMM d"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:629
|
||||
#: ../SparkleShare/SparkleController.cs:661
|
||||
#, csharp-format
|
||||
msgid "added ‘{0}’"
|
||||
msgstr "أضيفَ ‘{0}’"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:634
|
||||
#: ../SparkleShare/SparkleController.cs:666
|
||||
#, csharp-format
|
||||
msgid "moved ‘{0}’"
|
||||
msgstr "نُقل ‘{0}’"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:639
|
||||
#: ../SparkleShare/SparkleController.cs:671
|
||||
#, csharp-format
|
||||
msgid "edited ‘{0}’"
|
||||
msgstr "حرِّر ‘{0}’"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:644
|
||||
#: ../SparkleShare/SparkleController.cs:676
|
||||
#, csharp-format
|
||||
msgid "deleted ‘{0}’"
|
||||
msgstr "حُذف ‘{0}’"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:653
|
||||
#: ../SparkleShare/SparkleController.cs:685
|
||||
#, csharp-format
|
||||
msgid "and {0} more"
|
||||
msgid_plural "and {0} more"
|
||||
|
@ -122,7 +123,7 @@ msgstr[3] "و{0} ملفات أخرى"
|
|||
msgstr[4] "و{ملف آخر"
|
||||
msgstr[5] "و{0} ملف آخر"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:657
|
||||
#: ../SparkleShare/SparkleController.cs:689
|
||||
msgid "did something magical"
|
||||
msgstr "فعلتُ شيئًا سحريًا"
|
||||
|
||||
|
@ -320,74 +321,70 @@ msgstr "تعلم كيف تستضيف خادوم سباركلشير بنفسك
|
|||
msgid "Recent Events"
|
||||
msgstr "الأحداث الأخيرة"
|
||||
|
||||
#: ../SparkleShare/SparkleEventLog.cs:131
|
||||
#: ../SparkleShare/SparkleEventLog.cs:150
|
||||
#: ../SparkleShare/SparkleEventLog.cs:148
|
||||
#: ../SparkleShare/SparkleEventLog.cs:173
|
||||
msgid "All Folders"
|
||||
msgstr "كل المجلدات"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:56
|
||||
#: ../SparkleShare/SparkleShare.cs:53
|
||||
msgid "Sorry, you can't run SparkleShare with these permissions."
|
||||
msgstr "المعذرة، لا يمكنك تشغيل سباركلشير بهذه الأذون."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:57
|
||||
#: ../SparkleShare/SparkleShare.cs:54
|
||||
msgid "Things would go utterly wrong."
|
||||
msgstr "وإلا فستسير الأمور على غير ما يرام."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:66
|
||||
msgid "Don't show the notification icon"
|
||||
msgstr "لا تظهِر أيقونة التنبيه"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:67
|
||||
#: ../SparkleShare/SparkleShare.cs:61
|
||||
msgid "Print version information"
|
||||
msgstr "اطبع معلومات الإصدارة"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:68
|
||||
#: ../SparkleShare/SparkleShare.cs:62
|
||||
msgid "Show this help text"
|
||||
msgstr "أظهر نص المساعدة هذا"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
#: ../SparkleShare/SparkleShare.cs:109
|
||||
msgid "SparkleShare, a collaboration and sharing tool."
|
||||
msgstr "سباركلشير، أداة تعاون ومشاركة."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:116
|
||||
#: ../SparkleShare/SparkleShare.cs:110
|
||||
msgid "Copyright (C) 2010 Hylke Bons"
|
||||
msgstr "Copyright (C) 2010 Hylke Bons"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
#: ../SparkleShare/SparkleShare.cs:112
|
||||
msgid "This program comes with ABSOLUTELY NO WARRANTY."
|
||||
msgstr "لا يشمل هذا البرنامج أي ضمان"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
#: ../SparkleShare/SparkleShare.cs:114
|
||||
msgid "This is free software, and you are welcome to redistribute it "
|
||||
msgstr "هذا برنامج حر، ونحن نرحب بتوزيعه "
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
msgid "under certain conditions. Please read the GNU GPLv3 for details."
|
||||
msgstr ""
|
||||
"ضمن شروط معينة. يرجى قراءة رخصة جنو العمومية - الإصدارة الثالثة للاطلاع على "
|
||||
"التفاصيل."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
#: ../SparkleShare/SparkleShare.cs:117
|
||||
msgid "SparkleShare automatically syncs Git repositories in "
|
||||
msgstr "يزامن سباركلشير مستودعات جِت الموجودة في "
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:124
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
msgid "the ~/SparkleShare folder with their remote origins."
|
||||
msgstr "مجلد ~/SparkleShare مع أصولها البعيدة آليًا."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:126
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
msgid "Usage: sparkleshare [start|stop|restart] [OPTION]..."
|
||||
msgstr "طريقة الاستخدام: sparkleshare [start|stop|restart] [OPTION]..."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:127
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
msgid "Sync SparkleShare folder with remote repositories."
|
||||
msgstr "زامن مجلد سباركلشير مع مستودعات بعيدة."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:129
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
msgid "Arguments:"
|
||||
msgstr "المعطيات:"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:139
|
||||
#: ../SparkleShare/SparkleShare.cs:133
|
||||
msgid "SparkleShare "
|
||||
msgstr "سباركلشير "
|
||||
|
||||
|
@ -417,11 +414,11 @@ msgstr "فعِّل التنبيهات"
|
|||
msgid "Quit"
|
||||
msgstr "اخرج"
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:96
|
||||
#: ../SparkleShare/SparkleUI.cs:99
|
||||
msgid "Ouch! Mid-air collision!"
|
||||
msgstr "آخ! اصطدام هوائي!"
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:97
|
||||
#: ../SparkleShare/SparkleUI.cs:100
|
||||
msgid "Don't worry, SparkleShare made a copy of each conflicting file."
|
||||
msgstr "لا تقلق، صنع سباركلشير نسخة من كل ملف متعارض."
|
||||
|
||||
|
|
71
po/bg.po
|
@ -9,31 +9,32 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: SparkleShare\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-06-17 12:09+0200\n"
|
||||
"PO-Revision-Date: 2011-06-17 10:13+0000\n"
|
||||
"POT-Creation-Date: 2011-06-29 11:38+0200\n"
|
||||
"PO-Revision-Date: 2011-06-26 09:22+0000\n"
|
||||
"Last-Translator: deejay1 <deejay1@srem.org>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: bg\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:338
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:337
|
||||
#: ../SparkleShare/SparkleIntro.cs:67 ../SparkleShare/SparkleStatusIcon.cs:345
|
||||
msgid "Welcome to SparkleShare!"
|
||||
msgstr "Здравейте в SparkleShare!"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:349
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:348
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:357
|
||||
msgid "Not everything is synced"
|
||||
msgstr "Синхронизирането не е приключило"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:359
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:358
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:367
|
||||
msgid "Up to date"
|
||||
msgstr "Обновено"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:375
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:374
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:383
|
||||
msgid "Syncing…"
|
||||
msgstr "Синхронизиране…"
|
||||
|
@ -83,42 +84,42 @@ msgstr "_Заслуги"
|
|||
msgid "_Visit Website"
|
||||
msgstr "_Към уеб сайта"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:422
|
||||
#: ../SparkleShare/SparkleController.cs:455
|
||||
msgid "ddd MMM d, yyyy"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:427
|
||||
#: ../SparkleShare/SparkleController.cs:460
|
||||
msgid "ddd MMM d"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:629
|
||||
#: ../SparkleShare/SparkleController.cs:661
|
||||
#, csharp-format
|
||||
msgid "added ‘{0}’"
|
||||
msgstr "добавен е „{0}“"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:634
|
||||
#: ../SparkleShare/SparkleController.cs:666
|
||||
#, csharp-format
|
||||
msgid "moved ‘{0}’"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:639
|
||||
#: ../SparkleShare/SparkleController.cs:671
|
||||
#, csharp-format
|
||||
msgid "edited ‘{0}’"
|
||||
msgstr "редактиран е „{0}“"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:644
|
||||
#: ../SparkleShare/SparkleController.cs:676
|
||||
#, csharp-format
|
||||
msgid "deleted ‘{0}’"
|
||||
msgstr "изтрит е „{0}“"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:653
|
||||
#: ../SparkleShare/SparkleController.cs:685
|
||||
#, csharp-format
|
||||
msgid "and {0} more"
|
||||
msgid_plural "and {0} more"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:657
|
||||
#: ../SparkleShare/SparkleController.cs:689
|
||||
msgid "did something magical"
|
||||
msgstr ""
|
||||
|
||||
|
@ -318,75 +319,71 @@ msgstr "Научете как да създадете свой сървър за
|
|||
msgid "Recent Events"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleEventLog.cs:131
|
||||
#: ../SparkleShare/SparkleEventLog.cs:150
|
||||
#: ../SparkleShare/SparkleEventLog.cs:148
|
||||
#: ../SparkleShare/SparkleEventLog.cs:173
|
||||
msgid "All Folders"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:56
|
||||
#: ../SparkleShare/SparkleShare.cs:53
|
||||
msgid "Sorry, you can't run SparkleShare with these permissions."
|
||||
msgstr "С настоящите права не може да стартирате SparkleShare."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:57
|
||||
#: ../SparkleShare/SparkleShare.cs:54
|
||||
msgid "Things would go utterly wrong."
|
||||
msgstr "Нещата могат изцяло да се объркат."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:66
|
||||
msgid "Don't show the notification icon"
|
||||
msgstr "Без икона в областта за уведомяване"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:67
|
||||
#: ../SparkleShare/SparkleShare.cs:61
|
||||
msgid "Print version information"
|
||||
msgstr "Извеждане на информация за версията"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:68
|
||||
#: ../SparkleShare/SparkleShare.cs:62
|
||||
msgid "Show this help text"
|
||||
msgstr "Показване на този помощен текст"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
#: ../SparkleShare/SparkleShare.cs:109
|
||||
msgid "SparkleShare, a collaboration and sharing tool."
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:116
|
||||
#: ../SparkleShare/SparkleShare.cs:110
|
||||
msgid "Copyright (C) 2010 Hylke Bons"
|
||||
msgstr "Авторски права: © 2010 Hylke Bons"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
#: ../SparkleShare/SparkleShare.cs:112
|
||||
msgid "This program comes with ABSOLUTELY NO WARRANTY."
|
||||
msgstr "Тази програма идва БЕЗ НИКАКВИ ГАРАНЦИИ."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
#: ../SparkleShare/SparkleShare.cs:114
|
||||
msgid "This is free software, and you are welcome to redistribute it "
|
||||
msgstr ""
|
||||
"Това е свободен софтуер, можете да го разпространявате при определени "
|
||||
"условия."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
msgid "under certain conditions. Please read the GNU GPLv3 for details."
|
||||
msgstr "За повече информация вижте Общия публичен лиценз на GNU, версия 3."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
#: ../SparkleShare/SparkleShare.cs:117
|
||||
msgid "SparkleShare automatically syncs Git repositories in "
|
||||
msgstr "SparkleShare автоматично синхронизира хранилища на Git"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:124
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
msgid "the ~/SparkleShare folder with their remote origins."
|
||||
msgstr "в папката ~/SparkleShare с отдалечените им източници."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:126
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
msgid "Usage: sparkleshare [start|stop|restart] [OPTION]..."
|
||||
msgstr "Употреба: sparkleshare [start|stop|restart] [ОПЦИЯ]…"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:127
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
msgid "Sync SparkleShare folder with remote repositories."
|
||||
msgstr ""
|
||||
"Синхронизиране на папката ви за SparkleShare с отдалечените източници."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:129
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
msgid "Arguments:"
|
||||
msgstr "Аргументи:"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:139
|
||||
#: ../SparkleShare/SparkleShare.cs:133
|
||||
msgid "SparkleShare "
|
||||
msgstr "SparkleShare "
|
||||
|
||||
|
@ -416,11 +413,11 @@ msgstr "Включване на уведомленията"
|
|||
msgid "Quit"
|
||||
msgstr "Спиране на програмата"
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:96
|
||||
#: ../SparkleShare/SparkleUI.cs:99
|
||||
msgid "Ouch! Mid-air collision!"
|
||||
msgstr "Опс, конфликт на версии!"
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:97
|
||||
#: ../SparkleShare/SparkleUI.cs:100
|
||||
msgid "Don't worry, SparkleShare made a copy of each conflicting file."
|
||||
msgstr "Без паника! SparkleShare е създал копие на всеки файл в конфликт."
|
||||
|
||||
|
|
84
po/ca.po
|
@ -6,36 +6,38 @@
|
|||
#
|
||||
# <bielet@bielet.com>, 2011.
|
||||
# Carles Mateu <carlesm@carlesm.com>, 2011.
|
||||
# <a@alexandresaiz.com>, 2011.
|
||||
# alexandresaiz <a@alexandresaiz.com>, 2011.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SparkleShare\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-06-17 12:09+0200\n"
|
||||
"PO-Revision-Date: 2011-06-17 10:13+0000\n"
|
||||
"Last-Translator: deejay1 <deejay1@srem.org>\n"
|
||||
"POT-Creation-Date: 2011-06-29 11:38+0200\n"
|
||||
"PO-Revision-Date: 2011-07-02 21:33+0000\n"
|
||||
"Last-Translator: alexandresaiz <a@alexandresaiz.com>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ca\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:338
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:337
|
||||
#: ../SparkleShare/SparkleIntro.cs:67 ../SparkleShare/SparkleStatusIcon.cs:345
|
||||
msgid "Welcome to SparkleShare!"
|
||||
msgstr "Benvinguts a SparkleShare"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:349
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:348
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:357
|
||||
msgid "Not everything is synced"
|
||||
msgstr "No està tot sincronitzat"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:359
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:358
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:367
|
||||
msgid "Up to date"
|
||||
msgstr "Al dia"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:375
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:374
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:383
|
||||
msgid "Syncing…"
|
||||
msgstr "Sincronitzant ..."
|
||||
|
@ -85,42 +87,42 @@ msgstr "Mostra els Credits"
|
|||
msgid "_Visit Website"
|
||||
msgstr "_Visitar lloc web"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:422
|
||||
#: ../SparkleShare/SparkleController.cs:455
|
||||
msgid "ddd MMM d, yyyy"
|
||||
msgstr ""
|
||||
msgstr "ddd MMM d, yyyy"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:427
|
||||
#: ../SparkleShare/SparkleController.cs:460
|
||||
msgid "ddd MMM d"
|
||||
msgstr ""
|
||||
msgstr "ddd MMM d"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:629
|
||||
#: ../SparkleShare/SparkleController.cs:661
|
||||
#, csharp-format
|
||||
msgid "added ‘{0}’"
|
||||
msgstr "afegit '{0}'"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:634
|
||||
#: ../SparkleShare/SparkleController.cs:666
|
||||
#, csharp-format
|
||||
msgid "moved ‘{0}’"
|
||||
msgstr "mogut ’{0}’"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:639
|
||||
#: ../SparkleShare/SparkleController.cs:671
|
||||
#, csharp-format
|
||||
msgid "edited ‘{0}’"
|
||||
msgstr "editat '{0}'"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:644
|
||||
#: ../SparkleShare/SparkleController.cs:676
|
||||
#, csharp-format
|
||||
msgid "deleted ‘{0}’"
|
||||
msgstr "eliminat '{0}'"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:653
|
||||
#: ../SparkleShare/SparkleController.cs:685
|
||||
#, csharp-format
|
||||
msgid "and {0} more"
|
||||
msgid_plural "and {0} more"
|
||||
msgstr[0] "i ‘{0}’ més"
|
||||
msgstr[1] "i ‘{0}’ més"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:657
|
||||
#: ../SparkleShare/SparkleController.cs:689
|
||||
msgid "did something magical"
|
||||
msgstr "va fer una cosa màgica"
|
||||
|
||||
|
@ -323,76 +325,72 @@ msgstr "Apren com gestionar el teu propi servidor SparkleShare"
|
|||
|
||||
#: ../SparkleShare/SparkleEventLog.cs:61
|
||||
msgid "Recent Events"
|
||||
msgstr ""
|
||||
msgstr "Accions recents"
|
||||
|
||||
#: ../SparkleShare/SparkleEventLog.cs:131
|
||||
#: ../SparkleShare/SparkleEventLog.cs:150
|
||||
#: ../SparkleShare/SparkleEventLog.cs:148
|
||||
#: ../SparkleShare/SparkleEventLog.cs:173
|
||||
msgid "All Folders"
|
||||
msgstr ""
|
||||
msgstr "Totes les carpetes"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:56
|
||||
#: ../SparkleShare/SparkleShare.cs:53
|
||||
msgid "Sorry, you can't run SparkleShare with these permissions."
|
||||
msgstr "Ho sentim, no pots executar SparkleShare amb aquests permisos."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:57
|
||||
#: ../SparkleShare/SparkleShare.cs:54
|
||||
msgid "Things would go utterly wrong."
|
||||
msgstr "Les coses anirien molt malament."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:66
|
||||
msgid "Don't show the notification icon"
|
||||
msgstr "No mostrar la icona de notificació"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:67
|
||||
#: ../SparkleShare/SparkleShare.cs:61
|
||||
msgid "Print version information"
|
||||
msgstr "Imprimir la informació de versió"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:68
|
||||
#: ../SparkleShare/SparkleShare.cs:62
|
||||
msgid "Show this help text"
|
||||
msgstr "Mostra aquest text d'ajuda"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
#: ../SparkleShare/SparkleShare.cs:109
|
||||
msgid "SparkleShare, a collaboration and sharing tool."
|
||||
msgstr "una eina d'intercanvi i col·laboració"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:116
|
||||
#: ../SparkleShare/SparkleShare.cs:110
|
||||
msgid "Copyright (C) 2010 Hylke Bons"
|
||||
msgstr "Copyright (C) 2010 Hylke Bons"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
#: ../SparkleShare/SparkleShare.cs:112
|
||||
msgid "This program comes with ABSOLUTELY NO WARRANTY."
|
||||
msgstr "Aquest programa ve sense, absolutament, cap garantia."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
#: ../SparkleShare/SparkleShare.cs:114
|
||||
msgid "This is free software, and you are welcome to redistribute it "
|
||||
msgstr "Aquest és programari lliure, i estas convidat a redistribuir-lo"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
msgid "under certain conditions. Please read the GNU GPLv3 for details."
|
||||
msgstr ""
|
||||
"sota certes condicions. Si us plau, llegeix la GNU GPLv3 per obtenir més "
|
||||
"detalls."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
#: ../SparkleShare/SparkleShare.cs:117
|
||||
msgid "SparkleShare automatically syncs Git repositories in "
|
||||
msgstr "SparkleShare sincronitza automàticament repositoris Git a"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:124
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
msgid "the ~/SparkleShare folder with their remote origins."
|
||||
msgstr "carpeta ~ / SparkleShare amb els seus orígens remots."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:126
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
msgid "Usage: sparkleshare [start|stop|restart] [OPTION]..."
|
||||
msgstr "Ús: sparkleshare [start|stop|restart] [OPCIÓ] ..."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:127
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
msgid "Sync SparkleShare folder with remote repositories."
|
||||
msgstr "Sincronitza carpeta SparkleShare amb repositoris remots."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:129
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
msgid "Arguments:"
|
||||
msgstr "Arguments:"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:139
|
||||
#: ../SparkleShare/SparkleShare.cs:133
|
||||
msgid "SparkleShare "
|
||||
msgstr "SparkleShare"
|
||||
|
||||
|
@ -407,7 +405,7 @@ msgstr "Afegeix una carpeta remota"
|
|||
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:242
|
||||
msgid "Show Recent Events"
|
||||
msgstr ""
|
||||
msgstr "Mostra les accions més recents"
|
||||
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:262
|
||||
msgid "Turn Notifications Off"
|
||||
|
@ -422,11 +420,11 @@ msgstr "Activa les Notificacions"
|
|||
msgid "Quit"
|
||||
msgstr "Sortir"
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:96
|
||||
#: ../SparkleShare/SparkleUI.cs:99
|
||||
msgid "Ouch! Mid-air collision!"
|
||||
msgstr "Ai! Col·lisió en ple vol!"
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:97
|
||||
#: ../SparkleShare/SparkleUI.cs:100
|
||||
msgid "Don't worry, SparkleShare made a copy of each conflicting file."
|
||||
msgstr ""
|
||||
"No et preocupis, SparkleShare ha fet una còpia de cada fitxer en conflicte."
|
||||
|
|
100
po/cs_CZ.po
|
@ -4,36 +4,38 @@
|
|||
# we apologise for any incovenience this may have caused and we hope to bring them
|
||||
# back in the future.
|
||||
#
|
||||
# Jiri Slezka <jiri.slezka@slu.cz>, 2011.
|
||||
# zzanzare <zzanzare@gmail.com>, 2011.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SparkleShare\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-06-17 12:09+0200\n"
|
||||
"PO-Revision-Date: 2011-06-17 10:13+0000\n"
|
||||
"Last-Translator: deejay1 <deejay1@srem.org>\n"
|
||||
"POT-Creation-Date: 2011-06-29 11:38+0200\n"
|
||||
"PO-Revision-Date: 2011-07-09 22:10+0000\n"
|
||||
"Last-Translator: dron23 <jiri.slezka@slu.cz>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: cs_CZ\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:338
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:337
|
||||
#: ../SparkleShare/SparkleIntro.cs:67 ../SparkleShare/SparkleStatusIcon.cs:345
|
||||
msgid "Welcome to SparkleShare!"
|
||||
msgstr "Vítejte ve SparkleShare!"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:349
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:348
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:357
|
||||
msgid "Not everything is synced"
|
||||
msgstr "Něco není synchronizováno"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:359
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:358
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:367
|
||||
msgid "Up to date"
|
||||
msgstr "Aktuální"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:375
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:374
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:383
|
||||
msgid "Syncing…"
|
||||
msgstr "Synchronizuji…"
|
||||
|
@ -65,15 +67,15 @@ msgstr "O SparkleShare"
|
|||
|
||||
#: ../SparkleShare/SparkleAbout.cs:53
|
||||
msgid "A newer version is available"
|
||||
msgstr ""
|
||||
msgstr "Je k dispozici novější verze"
|
||||
|
||||
#: ../SparkleShare/SparkleAbout.cs:60
|
||||
msgid "You are running the latest version."
|
||||
msgstr ""
|
||||
msgstr "Provozujete aktuální verzi."
|
||||
|
||||
#: ../SparkleShare/SparkleAbout.cs:87
|
||||
msgid "Checking for updates..."
|
||||
msgstr ""
|
||||
msgstr "Kontroluji aktualizace..."
|
||||
|
||||
#: ../SparkleShare/SparkleAbout.cs:116
|
||||
msgid "_Show Credits"
|
||||
|
@ -83,45 +85,45 @@ msgstr "_Zásluhy"
|
|||
msgid "_Visit Website"
|
||||
msgstr "_Navštívit domovskou stránku"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:422
|
||||
#: ../SparkleShare/SparkleController.cs:455
|
||||
msgid "ddd MMM d, yyyy"
|
||||
msgstr "ddd d. MMM, yyyy"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:427
|
||||
#: ../SparkleShare/SparkleController.cs:460
|
||||
msgid "ddd MMM d"
|
||||
msgstr "ddd d. MMM"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:629
|
||||
#: ../SparkleShare/SparkleController.cs:661
|
||||
#, csharp-format
|
||||
msgid "added ‘{0}’"
|
||||
msgstr "přidal(a) ‘{0}’"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:634
|
||||
#: ../SparkleShare/SparkleController.cs:666
|
||||
#, csharp-format
|
||||
msgid "moved ‘{0}’"
|
||||
msgstr ""
|
||||
msgstr "přesunuto \"{0}\""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:639
|
||||
#: ../SparkleShare/SparkleController.cs:671
|
||||
#, csharp-format
|
||||
msgid "edited ‘{0}’"
|
||||
msgstr "upravil(a) ‘{0}’"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:644
|
||||
#: ../SparkleShare/SparkleController.cs:676
|
||||
#, csharp-format
|
||||
msgid "deleted ‘{0}’"
|
||||
msgstr "smazal(a) ‘{0}’"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:653
|
||||
#: ../SparkleShare/SparkleController.cs:685
|
||||
#, csharp-format
|
||||
msgid "and {0} more"
|
||||
msgid_plural "and {0} more"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[2] ""
|
||||
msgstr[0] "a {0} více"
|
||||
msgstr[1] "a {0} více"
|
||||
msgstr[2] "a {0} více"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:657
|
||||
#: ../SparkleShare/SparkleController.cs:689
|
||||
msgid "did something magical"
|
||||
msgstr ""
|
||||
msgstr "stalo se něco magického"
|
||||
|
||||
#: ../SparkleShare/SparkleIntro.cs:73
|
||||
msgid ""
|
||||
|
@ -319,76 +321,72 @@ msgstr "Zjistěte jak připravit svůj vlastní SparkleServer"
|
|||
|
||||
#: ../SparkleShare/SparkleEventLog.cs:61
|
||||
msgid "Recent Events"
|
||||
msgstr ""
|
||||
msgstr "Nedávné události"
|
||||
|
||||
#: ../SparkleShare/SparkleEventLog.cs:131
|
||||
#: ../SparkleShare/SparkleEventLog.cs:150
|
||||
#: ../SparkleShare/SparkleEventLog.cs:148
|
||||
#: ../SparkleShare/SparkleEventLog.cs:173
|
||||
msgid "All Folders"
|
||||
msgstr ""
|
||||
msgstr "Všechny složky"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:56
|
||||
#: ../SparkleShare/SparkleShare.cs:53
|
||||
msgid "Sorry, you can't run SparkleShare with these permissions."
|
||||
msgstr ""
|
||||
"Je nám líto, ale nemůžete spouštět SparkleShare s těmito přístupovými právy."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:57
|
||||
#: ../SparkleShare/SparkleShare.cs:54
|
||||
msgid "Things would go utterly wrong."
|
||||
msgstr "Věci by se mohly příšerně pokazit."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:66
|
||||
msgid "Don't show the notification icon"
|
||||
msgstr "Nezobrazovat oznamovací ikonu"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:67
|
||||
#: ../SparkleShare/SparkleShare.cs:61
|
||||
msgid "Print version information"
|
||||
msgstr "Vypíše informace o verzi"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:68
|
||||
#: ../SparkleShare/SparkleShare.cs:62
|
||||
msgid "Show this help text"
|
||||
msgstr "Zobrazit tuto nápovědu"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
#: ../SparkleShare/SparkleShare.cs:109
|
||||
msgid "SparkleShare, a collaboration and sharing tool."
|
||||
msgstr ""
|
||||
msgstr "SparkleShare, nástroj pro sdílení a spolupráci."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:116
|
||||
#: ../SparkleShare/SparkleShare.cs:110
|
||||
msgid "Copyright (C) 2010 Hylke Bons"
|
||||
msgstr "Všechna práva vyhrazena (C) 2010 Hylke Bons"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
#: ../SparkleShare/SparkleShare.cs:112
|
||||
msgid "This program comes with ABSOLUTELY NO WARRANTY."
|
||||
msgstr "Tento program je ABSOLUTNĚ BEZ ZÁRUKY."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
#: ../SparkleShare/SparkleShare.cs:114
|
||||
msgid "This is free software, and you are welcome to redistribute it "
|
||||
msgstr "Toto je svobodný software a můžete jej dále šířit."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
msgid "under certain conditions. Please read the GNU GPLv3 for details."
|
||||
msgstr ""
|
||||
"za jistých podmínek. Prosím, přečtěte si GNU GPLv3 pro více informací."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
#: ../SparkleShare/SparkleShare.cs:117
|
||||
msgid "SparkleShare automatically syncs Git repositories in "
|
||||
msgstr "SparkleShare automaticky synchronizuje repozitáře Git v "
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:124
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
msgid "the ~/SparkleShare folder with their remote origins."
|
||||
msgstr "složce ~/SparkleShare s jejich vzdálenými protistranami."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:126
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
msgid "Usage: sparkleshare [start|stop|restart] [OPTION]..."
|
||||
msgstr "Použití: sparkleshare [start|stop|restart] [VOLBY]..."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:127
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
msgid "Sync SparkleShare folder with remote repositories."
|
||||
msgstr "Synchronizovat složku SparkleShare se vzdálenými repozitáři."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:129
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
msgid "Arguments:"
|
||||
msgstr "Argumenty:"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:139
|
||||
#: ../SparkleShare/SparkleShare.cs:133
|
||||
msgid "SparkleShare "
|
||||
msgstr "SparkleShare "
|
||||
|
||||
|
@ -403,7 +401,7 @@ msgstr "Přidat vzdálenou složku…"
|
|||
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:242
|
||||
msgid "Show Recent Events"
|
||||
msgstr ""
|
||||
msgstr "Zobrazit nedávné události"
|
||||
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:262
|
||||
msgid "Turn Notifications Off"
|
||||
|
@ -418,17 +416,17 @@ msgstr "Zapnout upozornění"
|
|||
msgid "Quit"
|
||||
msgstr "Ukončit"
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:96
|
||||
#: ../SparkleShare/SparkleUI.cs:99
|
||||
msgid "Ouch! Mid-air collision!"
|
||||
msgstr "Au! Nehoda na cestě!"
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:97
|
||||
#: ../SparkleShare/SparkleUI.cs:100
|
||||
msgid "Don't worry, SparkleShare made a copy of each conflicting file."
|
||||
msgstr ""
|
||||
"Nemějte strach, SparkleShare udělal kopie každého konfliktního souboru."
|
||||
|
||||
#: ../SparkleShare/SparkleWindow.cs:41
|
||||
msgid "SparkleShare Setup"
|
||||
msgstr ""
|
||||
msgstr "Nastavení SparkleShare"
|
||||
|
||||
|
||||
|
|
71
po/da.po
|
@ -9,31 +9,32 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: SparkleShare\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-06-17 12:09+0200\n"
|
||||
"PO-Revision-Date: 2011-06-17 10:13+0000\n"
|
||||
"POT-Creation-Date: 2011-06-29 11:38+0200\n"
|
||||
"PO-Revision-Date: 2011-06-26 09:22+0000\n"
|
||||
"Last-Translator: deejay1 <deejay1@srem.org>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: da\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:338
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:337
|
||||
#: ../SparkleShare/SparkleIntro.cs:67 ../SparkleShare/SparkleStatusIcon.cs:345
|
||||
msgid "Welcome to SparkleShare!"
|
||||
msgstr "Velkommen til SparkleShare!"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:349
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:348
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:357
|
||||
msgid "Not everything is synced"
|
||||
msgstr "Ikke alt er synkroniseret"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:359
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:358
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:367
|
||||
msgid "Up to date"
|
||||
msgstr "Opdateret"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:375
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:374
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:383
|
||||
msgid "Syncing…"
|
||||
msgstr "Synkroniseret"
|
||||
|
@ -83,42 +84,42 @@ msgstr ""
|
|||
msgid "_Visit Website"
|
||||
msgstr "_Besøg hjemmeside"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:422
|
||||
#: ../SparkleShare/SparkleController.cs:455
|
||||
msgid "ddd MMM d, yyyy"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:427
|
||||
#: ../SparkleShare/SparkleController.cs:460
|
||||
msgid "ddd MMM d"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:629
|
||||
#: ../SparkleShare/SparkleController.cs:661
|
||||
#, csharp-format
|
||||
msgid "added ‘{0}’"
|
||||
msgstr "tilføjede '{0}'"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:634
|
||||
#: ../SparkleShare/SparkleController.cs:666
|
||||
#, csharp-format
|
||||
msgid "moved ‘{0}’"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:639
|
||||
#: ../SparkleShare/SparkleController.cs:671
|
||||
#, csharp-format
|
||||
msgid "edited ‘{0}’"
|
||||
msgstr "redigerede '{0}'"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:644
|
||||
#: ../SparkleShare/SparkleController.cs:676
|
||||
#, csharp-format
|
||||
msgid "deleted ‘{0}’"
|
||||
msgstr "slettede '{0}'"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:653
|
||||
#: ../SparkleShare/SparkleController.cs:685
|
||||
#, csharp-format
|
||||
msgid "and {0} more"
|
||||
msgid_plural "and {0} more"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:657
|
||||
#: ../SparkleShare/SparkleController.cs:689
|
||||
msgid "did something magical"
|
||||
msgstr ""
|
||||
|
||||
|
@ -319,72 +320,68 @@ msgstr "Lær hvordan du beværte din egen SparkleServer"
|
|||
msgid "Recent Events"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleEventLog.cs:131
|
||||
#: ../SparkleShare/SparkleEventLog.cs:150
|
||||
#: ../SparkleShare/SparkleEventLog.cs:148
|
||||
#: ../SparkleShare/SparkleEventLog.cs:173
|
||||
msgid "All Folders"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:56
|
||||
#: ../SparkleShare/SparkleShare.cs:53
|
||||
msgid "Sorry, you can't run SparkleShare with these permissions."
|
||||
msgstr "Beklager, du kan ikke køre SparkleShare med disse rettigheder."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:57
|
||||
#: ../SparkleShare/SparkleShare.cs:54
|
||||
msgid "Things would go utterly wrong."
|
||||
msgstr "Det ville gå helt galt."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:66
|
||||
msgid "Don't show the notification icon"
|
||||
msgstr "Vis ikke besked-ikon."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:67
|
||||
#: ../SparkleShare/SparkleShare.cs:61
|
||||
msgid "Print version information"
|
||||
msgstr "Vis versioninformation"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:68
|
||||
#: ../SparkleShare/SparkleShare.cs:62
|
||||
msgid "Show this help text"
|
||||
msgstr "Vis denne hjælpetekst"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
#: ../SparkleShare/SparkleShare.cs:109
|
||||
msgid "SparkleShare, a collaboration and sharing tool."
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:116
|
||||
#: ../SparkleShare/SparkleShare.cs:110
|
||||
msgid "Copyright (C) 2010 Hylke Bons"
|
||||
msgstr "Copyright(C) 2010 Hylke Bons"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
#: ../SparkleShare/SparkleShare.cs:112
|
||||
msgid "This program comes with ABSOLUTELY NO WARRANTY."
|
||||
msgstr "Dette program modtages UDEN NOGEN GARANTIER OVERHOVEDET."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
#: ../SparkleShare/SparkleShare.cs:114
|
||||
msgid "This is free software, and you are welcome to redistribute it "
|
||||
msgstr "Dette er fri software, og du er velkommen til at distribuere den "
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
msgid "under certain conditions. Please read the GNU GPLv3 for details."
|
||||
msgstr "under visse betingelser. Læs venligst GNU GPL v3 for detaljer."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
#: ../SparkleShare/SparkleShare.cs:117
|
||||
msgid "SparkleShare automatically syncs Git repositories in "
|
||||
msgstr "SparkleShare synkroniserer automatisk Git-depoter i "
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:124
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
msgid "the ~/SparkleShare folder with their remote origins."
|
||||
msgstr "mappen ~/SparkleShare med deres fjerne kilder."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:126
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
msgid "Usage: sparkleshare [start|stop|restart] [OPTION]..."
|
||||
msgstr "Anvendelse: sparkleshare [start|stop|restart] [OPTION]..."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:127
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
msgid "Sync SparkleShare folder with remote repositories."
|
||||
msgstr "Synkroniser SparkleShare-mappe med fjerndepot"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:129
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
msgid "Arguments:"
|
||||
msgstr "Argumenter:"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:139
|
||||
#: ../SparkleShare/SparkleShare.cs:133
|
||||
msgid "SparkleShare "
|
||||
msgstr "SparkleShare "
|
||||
|
||||
|
@ -414,11 +411,11 @@ msgstr ""
|
|||
msgid "Quit"
|
||||
msgstr "Afslut"
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:96
|
||||
#: ../SparkleShare/SparkleUI.cs:99
|
||||
msgid "Ouch! Mid-air collision!"
|
||||
msgstr "Av! Luftkollision!"
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:97
|
||||
#: ../SparkleShare/SparkleUI.cs:100
|
||||
msgid "Don't worry, SparkleShare made a copy of each conflicting file."
|
||||
msgstr ""
|
||||
"Bare rolig, SparkleShare kopierede alle filer der gav anledning til "
|
||||
|
|
78
po/de.po
|
@ -4,6 +4,7 @@
|
|||
# we apologise for any incovenience this may have caused and we hope to bring them
|
||||
# back in the future.
|
||||
#
|
||||
# <ch3f@gmx.de>, 2011.
|
||||
# <yujiang.wang@ymail.com>, 2011.
|
||||
# kabum <uu.kabum@gmail.com>, 2011.
|
||||
# kxnop <m_leinmueller@hotmail.com>, 2011.
|
||||
|
@ -14,31 +15,32 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: SparkleShare\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-06-17 12:09+0200\n"
|
||||
"PO-Revision-Date: 2011-06-17 10:13+0000\n"
|
||||
"POT-Creation-Date: 2011-06-29 11:38+0200\n"
|
||||
"PO-Revision-Date: 2011-06-26 09:22+0000\n"
|
||||
"Last-Translator: deejay1 <deejay1@srem.org>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: de\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:338
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:337
|
||||
#: ../SparkleShare/SparkleIntro.cs:67 ../SparkleShare/SparkleStatusIcon.cs:345
|
||||
msgid "Welcome to SparkleShare!"
|
||||
msgstr "Willkommen bei SparkleShare!"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:349
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:348
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:357
|
||||
msgid "Not everything is synced"
|
||||
msgstr "Nicht alles ist synchronisiert"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:359
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:358
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:367
|
||||
msgid "Up to date"
|
||||
msgstr "Schon auf dem aktuellsten Stand."
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:375
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:374
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:383
|
||||
msgid "Syncing…"
|
||||
msgstr "Abgleichen …"
|
||||
|
@ -88,42 +90,42 @@ msgstr "_Zeige Mitwirkende"
|
|||
msgid "_Visit Website"
|
||||
msgstr "_Website besuchen"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:422
|
||||
#: ../SparkleShare/SparkleController.cs:455
|
||||
msgid "ddd MMM d, yyyy"
|
||||
msgstr "ddd MMM d, yyyy"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:427
|
||||
#: ../SparkleShare/SparkleController.cs:460
|
||||
msgid "ddd MMM d"
|
||||
msgstr "ddd MMM d"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:629
|
||||
#: ../SparkleShare/SparkleController.cs:661
|
||||
#, csharp-format
|
||||
msgid "added ‘{0}’"
|
||||
msgstr "‘{0}’ hinzugefügt"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:634
|
||||
#: ../SparkleShare/SparkleController.cs:666
|
||||
#, csharp-format
|
||||
msgid "moved ‘{0}’"
|
||||
msgstr "‘{0}’ verschoben"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:639
|
||||
#: ../SparkleShare/SparkleController.cs:671
|
||||
#, csharp-format
|
||||
msgid "edited ‘{0}’"
|
||||
msgstr "‘{0}’ bearbeitet"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:644
|
||||
#: ../SparkleShare/SparkleController.cs:676
|
||||
#, csharp-format
|
||||
msgid "deleted ‘{0}’"
|
||||
msgstr "‘{0}’ gelöscht"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:653
|
||||
#: ../SparkleShare/SparkleController.cs:685
|
||||
#, csharp-format
|
||||
msgid "and {0} more"
|
||||
msgid_plural "and {0} more"
|
||||
msgstr[0] "und {0} weitere Änderung"
|
||||
msgstr[1] "und {0} weitere Änderungen"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:657
|
||||
#: ../SparkleShare/SparkleController.cs:689
|
||||
msgid "did something magical"
|
||||
msgstr "etwas magisches wurde getan"
|
||||
|
||||
|
@ -325,78 +327,74 @@ msgstr "Lernen Sie, wie Sie Ihren eigenen SparkleServer betreiben können"
|
|||
|
||||
#: ../SparkleShare/SparkleEventLog.cs:61
|
||||
msgid "Recent Events"
|
||||
msgstr ""
|
||||
msgstr "Letzte Ereignisse"
|
||||
|
||||
#: ../SparkleShare/SparkleEventLog.cs:131
|
||||
#: ../SparkleShare/SparkleEventLog.cs:150
|
||||
#: ../SparkleShare/SparkleEventLog.cs:148
|
||||
#: ../SparkleShare/SparkleEventLog.cs:173
|
||||
msgid "All Folders"
|
||||
msgstr ""
|
||||
msgstr "Alle Ordner"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:56
|
||||
#: ../SparkleShare/SparkleShare.cs:53
|
||||
msgid "Sorry, you can't run SparkleShare with these permissions."
|
||||
msgstr ""
|
||||
"Entschuldigung, SparkleShare kann mit diesen Rechten nicht ausgeführt "
|
||||
"werden."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:57
|
||||
#: ../SparkleShare/SparkleShare.cs:54
|
||||
msgid "Things would go utterly wrong."
|
||||
msgstr "Alles würde völlig schief gehen."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:66
|
||||
msgid "Don't show the notification icon"
|
||||
msgstr "Benachrichtigungssymbol nicht anzeigen."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:67
|
||||
#: ../SparkleShare/SparkleShare.cs:61
|
||||
msgid "Print version information"
|
||||
msgstr "Versionsinformationen anzeigen"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:68
|
||||
#: ../SparkleShare/SparkleShare.cs:62
|
||||
msgid "Show this help text"
|
||||
msgstr "Diesen Hilfetext anzeigen"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
#: ../SparkleShare/SparkleShare.cs:109
|
||||
msgid "SparkleShare, a collaboration and sharing tool."
|
||||
msgstr "SparkleShare, ein Werkzeug für verteilte Zusammenarbeit."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:116
|
||||
#: ../SparkleShare/SparkleShare.cs:110
|
||||
msgid "Copyright (C) 2010 Hylke Bons"
|
||||
msgstr "Copyright (C) 2010 Hylke Bons"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
#: ../SparkleShare/SparkleShare.cs:112
|
||||
msgid "This program comes with ABSOLUTELY NO WARRANTY."
|
||||
msgstr "Diese Anwendung kommt OHNE IRGENDEINE GARANTIE."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
#: ../SparkleShare/SparkleShare.cs:114
|
||||
msgid "This is free software, and you are welcome to redistribute it "
|
||||
msgstr "Dies ist freie Software, die Sie gerne weitergeben dürfen"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
msgid "under certain conditions. Please read the GNU GPLv3 for details."
|
||||
msgstr ""
|
||||
"unter bestimmten Bedingungen. Bitte lesen Sie die GNU GPLv3 für weitere "
|
||||
"Details."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
#: ../SparkleShare/SparkleShare.cs:117
|
||||
msgid "SparkleShare automatically syncs Git repositories in "
|
||||
msgstr "SparkleShare synchronisiert sich automatisch mit Git Repositories"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:124
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
msgid "the ~/SparkleShare folder with their remote origins."
|
||||
msgstr "den SparkleShare-Ordner mit den entfernten Quellen."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:126
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
msgid "Usage: sparkleshare [start|stop|restart] [OPTION]..."
|
||||
msgstr "Verwendung: sparkleshare [start|stop|restart] [OPTION]..."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:127
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
msgid "Sync SparkleShare folder with remote repositories."
|
||||
msgstr "SparkleShare Ordner mit dem Remote-Repository synchronisieren."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:129
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
msgid "Arguments:"
|
||||
msgstr "Parameter:"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:139
|
||||
#: ../SparkleShare/SparkleShare.cs:133
|
||||
msgid "SparkleShare "
|
||||
msgstr "SparkleShare"
|
||||
|
||||
|
@ -411,7 +409,7 @@ msgstr "Remote-Ordner hinzufügen..."
|
|||
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:242
|
||||
msgid "Show Recent Events"
|
||||
msgstr ""
|
||||
msgstr "Zeige letzte Ereignisse"
|
||||
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:262
|
||||
msgid "Turn Notifications Off"
|
||||
|
@ -426,11 +424,11 @@ msgstr "Benachrichtigungen aktivieren"
|
|||
msgid "Quit"
|
||||
msgstr "Beenden"
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:96
|
||||
#: ../SparkleShare/SparkleUI.cs:99
|
||||
msgid "Ouch! Mid-air collision!"
|
||||
msgstr "Autsch! Kollision in der Luft!"
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:97
|
||||
#: ../SparkleShare/SparkleUI.cs:100
|
||||
msgid "Don't worry, SparkleShare made a copy of each conflicting file."
|
||||
msgstr ""
|
||||
"Keine Sorge, SparkleShare hat eine Kopie jeder im Konflikt stehenden Datei "
|
||||
|
|
80
po/el.po
|
@ -4,50 +4,52 @@
|
|||
# we apologise for any incovenience this may have caused and we hope to bring them
|
||||
# back in the future.
|
||||
#
|
||||
# <manolis@kapcom.gr>, 2011.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SparkleShare\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-06-17 12:09+0200\n"
|
||||
"PO-Revision-Date: 2011-06-17 10:13+0000\n"
|
||||
"Last-Translator: deejay1 <deejay1@srem.org>\n"
|
||||
"POT-Creation-Date: 2011-06-29 11:38+0200\n"
|
||||
"PO-Revision-Date: 2011-07-13 19:17+0000\n"
|
||||
"Last-Translator: kapcom01 <manolis@kapcom.gr>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: el\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:338
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:337
|
||||
#: ../SparkleShare/SparkleIntro.cs:67 ../SparkleShare/SparkleStatusIcon.cs:345
|
||||
msgid "Welcome to SparkleShare!"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:349
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:348
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:357
|
||||
msgid "Not everything is synced"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:359
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:358
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:367
|
||||
msgid "Up to date"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:375
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:374
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:383
|
||||
msgid "Syncing…"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in:113
|
||||
msgid "Copy Web Link"
|
||||
msgstr ""
|
||||
msgstr "Αντιγραφή Συνδέσμου Ιστού"
|
||||
|
||||
#: ../SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in:114
|
||||
msgid "Copy the web address of this file to the clipboard"
|
||||
msgstr ""
|
||||
msgstr "Αντιγραφή της διεύθυνσης ιστού αυτού του αρχείου στο πρόχειρο"
|
||||
|
||||
#: ../SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in:147
|
||||
msgid "Get Earlier Version"
|
||||
msgstr ""
|
||||
msgstr "Λήψη Προηγούμενης Έκδοσης"
|
||||
|
||||
#: ../SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in:148
|
||||
msgid "Make a copy of an earlier version in this folder"
|
||||
|
@ -82,42 +84,42 @@ msgstr ""
|
|||
msgid "_Visit Website"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:422
|
||||
#: ../SparkleShare/SparkleController.cs:455
|
||||
msgid "ddd MMM d, yyyy"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:427
|
||||
#: ../SparkleShare/SparkleController.cs:460
|
||||
msgid "ddd MMM d"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:629
|
||||
#: ../SparkleShare/SparkleController.cs:661
|
||||
#, csharp-format
|
||||
msgid "added ‘{0}’"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:634
|
||||
#: ../SparkleShare/SparkleController.cs:666
|
||||
#, csharp-format
|
||||
msgid "moved ‘{0}’"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:639
|
||||
#: ../SparkleShare/SparkleController.cs:671
|
||||
#, csharp-format
|
||||
msgid "edited ‘{0}’"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:644
|
||||
#: ../SparkleShare/SparkleController.cs:676
|
||||
#, csharp-format
|
||||
msgid "deleted ‘{0}’"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:653
|
||||
#: ../SparkleShare/SparkleController.cs:685
|
||||
#, csharp-format
|
||||
msgid "and {0} more"
|
||||
msgid_plural "and {0} more"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:657
|
||||
#: ../SparkleShare/SparkleController.cs:689
|
||||
msgid "did something magical"
|
||||
msgstr ""
|
||||
|
||||
|
@ -309,72 +311,68 @@ msgstr ""
|
|||
msgid "Recent Events"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleEventLog.cs:131
|
||||
#: ../SparkleShare/SparkleEventLog.cs:150
|
||||
#: ../SparkleShare/SparkleEventLog.cs:148
|
||||
#: ../SparkleShare/SparkleEventLog.cs:173
|
||||
msgid "All Folders"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:56
|
||||
#: ../SparkleShare/SparkleShare.cs:53
|
||||
msgid "Sorry, you can't run SparkleShare with these permissions."
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:57
|
||||
#: ../SparkleShare/SparkleShare.cs:54
|
||||
msgid "Things would go utterly wrong."
|
||||
msgstr "Τα πράγματα θα πάνε πολύ άσχημα."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:66
|
||||
msgid "Don't show the notification icon"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:67
|
||||
#: ../SparkleShare/SparkleShare.cs:61
|
||||
msgid "Print version information"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:68
|
||||
#: ../SparkleShare/SparkleShare.cs:62
|
||||
msgid "Show this help text"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
#: ../SparkleShare/SparkleShare.cs:109
|
||||
msgid "SparkleShare, a collaboration and sharing tool."
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:116
|
||||
#: ../SparkleShare/SparkleShare.cs:110
|
||||
msgid "Copyright (C) 2010 Hylke Bons"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
#: ../SparkleShare/SparkleShare.cs:112
|
||||
msgid "This program comes with ABSOLUTELY NO WARRANTY."
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
#: ../SparkleShare/SparkleShare.cs:114
|
||||
msgid "This is free software, and you are welcome to redistribute it "
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
msgid "under certain conditions. Please read the GNU GPLv3 for details."
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
#: ../SparkleShare/SparkleShare.cs:117
|
||||
msgid "SparkleShare automatically syncs Git repositories in "
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:124
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
msgid "the ~/SparkleShare folder with their remote origins."
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:126
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
msgid "Usage: sparkleshare [start|stop|restart] [OPTION]..."
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:127
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
msgid "Sync SparkleShare folder with remote repositories."
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:129
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
msgid "Arguments:"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:139
|
||||
#: ../SparkleShare/SparkleShare.cs:133
|
||||
msgid "SparkleShare "
|
||||
msgstr ""
|
||||
|
||||
|
@ -404,11 +402,11 @@ msgstr ""
|
|||
msgid "Quit"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:96
|
||||
#: ../SparkleShare/SparkleUI.cs:99
|
||||
msgid "Ouch! Mid-air collision!"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:97
|
||||
#: ../SparkleShare/SparkleUI.cs:100
|
||||
msgid "Don't worry, SparkleShare made a copy of each conflicting file."
|
||||
msgstr ""
|
||||
|
||||
|
|
84
po/eo.po
|
@ -4,36 +4,38 @@
|
|||
# we apologise for any incovenience this may have caused and we hope to bring them
|
||||
# back in the future.
|
||||
#
|
||||
# <sven.koehler@student.hpi.uni-potsdam.de>, 2011.
|
||||
# eliovir <eliovir@gmail.com>, 2011.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SparkleShare\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-06-17 12:09+0200\n"
|
||||
"PO-Revision-Date: 2011-06-17 10:13+0000\n"
|
||||
"Last-Translator: deejay1 <deejay1@srem.org>\n"
|
||||
"POT-Creation-Date: 2011-06-29 11:38+0200\n"
|
||||
"PO-Revision-Date: 2011-07-12 21:24+0000\n"
|
||||
"Last-Translator: tzwenn <sven.koehler@student.hpi.uni-potsdam.de>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: eo\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:338
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:337
|
||||
#: ../SparkleShare/SparkleIntro.cs:67 ../SparkleShare/SparkleStatusIcon.cs:345
|
||||
msgid "Welcome to SparkleShare!"
|
||||
msgstr "Bonvenon ĉe SparkleShare!"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:349
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:348
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:357
|
||||
msgid "Not everything is synced"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:359
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:358
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:367
|
||||
msgid "Up to date"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:375
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:374
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:383
|
||||
msgid "Syncing…"
|
||||
msgstr ""
|
||||
|
@ -83,42 +85,42 @@ msgstr ""
|
|||
msgid "_Visit Website"
|
||||
msgstr "_Viziti retejon"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:422
|
||||
#: ../SparkleShare/SparkleController.cs:455
|
||||
msgid "ddd MMM d, yyyy"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:427
|
||||
#: ../SparkleShare/SparkleController.cs:460
|
||||
msgid "ddd MMM d"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:629
|
||||
#: ../SparkleShare/SparkleController.cs:661
|
||||
#, csharp-format
|
||||
msgid "added ‘{0}’"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:634
|
||||
#: ../SparkleShare/SparkleController.cs:666
|
||||
#, csharp-format
|
||||
msgid "moved ‘{0}’"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:639
|
||||
#: ../SparkleShare/SparkleController.cs:671
|
||||
#, csharp-format
|
||||
msgid "edited ‘{0}’"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:644
|
||||
#: ../SparkleShare/SparkleController.cs:676
|
||||
#, csharp-format
|
||||
msgid "deleted ‘{0}’"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:653
|
||||
#: ../SparkleShare/SparkleController.cs:685
|
||||
#, csharp-format
|
||||
msgid "and {0} more"
|
||||
msgid_plural "and {0} more"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:657
|
||||
#: ../SparkleShare/SparkleController.cs:689
|
||||
msgid "did something magical"
|
||||
msgstr ""
|
||||
|
||||
|
@ -178,7 +180,7 @@ msgstr ""
|
|||
|
||||
#: ../SparkleShare/SparkleIntro.cs:206
|
||||
msgid "Gitorious"
|
||||
msgstr ""
|
||||
msgstr "Gitorious"
|
||||
|
||||
#: ../SparkleShare/SparkleIntro.cs:208
|
||||
msgid "Completely Free as in Freedom infrastructure."
|
||||
|
@ -210,7 +212,7 @@ msgstr "Nomo de la dosierujo"
|
|||
|
||||
#: ../SparkleShare/SparkleIntro.cs:269
|
||||
msgid "Sync"
|
||||
msgstr ""
|
||||
msgstr "Sinkronigi"
|
||||
|
||||
#: ../SparkleShare/SparkleIntro.cs:312
|
||||
msgid "Cancel"
|
||||
|
@ -282,7 +284,7 @@ msgstr ""
|
|||
#: ../SparkleShare/SparkleIntro.cs:528
|
||||
#, csharp-format
|
||||
msgid "Syncing folder ‘{0}’…"
|
||||
msgstr ""
|
||||
msgstr "Sinkronigi dosierujon '{0}'..."
|
||||
|
||||
#: ../SparkleShare/SparkleIntro.cs:535
|
||||
msgid "This may take a while.\n"
|
||||
|
@ -310,72 +312,68 @@ msgstr ""
|
|||
msgid "Recent Events"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleEventLog.cs:131
|
||||
#: ../SparkleShare/SparkleEventLog.cs:150
|
||||
#: ../SparkleShare/SparkleEventLog.cs:148
|
||||
#: ../SparkleShare/SparkleEventLog.cs:173
|
||||
msgid "All Folders"
|
||||
msgstr ""
|
||||
msgstr "Ĉiuj dosierujoj"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:56
|
||||
#: ../SparkleShare/SparkleShare.cs:53
|
||||
msgid "Sorry, you can't run SparkleShare with these permissions."
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:57
|
||||
#: ../SparkleShare/SparkleShare.cs:54
|
||||
msgid "Things would go utterly wrong."
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:66
|
||||
msgid "Don't show the notification icon"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:67
|
||||
#: ../SparkleShare/SparkleShare.cs:61
|
||||
msgid "Print version information"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:68
|
||||
#: ../SparkleShare/SparkleShare.cs:62
|
||||
msgid "Show this help text"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
#: ../SparkleShare/SparkleShare.cs:109
|
||||
msgid "SparkleShare, a collaboration and sharing tool."
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:116
|
||||
#: ../SparkleShare/SparkleShare.cs:110
|
||||
msgid "Copyright (C) 2010 Hylke Bons"
|
||||
msgstr ""
|
||||
msgstr "Kopirajto (C) 2010 Hylke Bons"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
#: ../SparkleShare/SparkleShare.cs:112
|
||||
msgid "This program comes with ABSOLUTELY NO WARRANTY."
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
#: ../SparkleShare/SparkleShare.cs:114
|
||||
msgid "This is free software, and you are welcome to redistribute it "
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
msgid "under certain conditions. Please read the GNU GPLv3 for details."
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
#: ../SparkleShare/SparkleShare.cs:117
|
||||
msgid "SparkleShare automatically syncs Git repositories in "
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:124
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
msgid "the ~/SparkleShare folder with their remote origins."
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:126
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
msgid "Usage: sparkleshare [start|stop|restart] [OPTION]..."
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:127
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
msgid "Sync SparkleShare folder with remote repositories."
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:129
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
msgid "Arguments:"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:139
|
||||
#: ../SparkleShare/SparkleShare.cs:133
|
||||
msgid "SparkleShare "
|
||||
msgstr ""
|
||||
|
||||
|
@ -405,11 +403,11 @@ msgstr ""
|
|||
msgid "Quit"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:96
|
||||
#: ../SparkleShare/SparkleUI.cs:99
|
||||
msgid "Ouch! Mid-air collision!"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:97
|
||||
#: ../SparkleShare/SparkleUI.cs:100
|
||||
msgid "Don't worry, SparkleShare made a copy of each conflicting file."
|
||||
msgstr ""
|
||||
|
||||
|
|
81
po/es.po
|
@ -4,16 +4,15 @@
|
|||
# we apologise for any incovenience this may have caused and we hope to bring them
|
||||
# back in the future.
|
||||
#
|
||||
# <jamelrom@gmail.com>, 2011.
|
||||
# <luiso.perez@gmail.com>, 2011.
|
||||
# jamelrom <jamelrom@gmail.com>, 2011.
|
||||
# <jamelrom@gmail.com>, 2011.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SparkleShare\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-06-17 12:09+0200\n"
|
||||
"PO-Revision-Date: 2011-06-17 10:13+0000\n"
|
||||
"Last-Translator: deejay1 <deejay1@srem.org>\n"
|
||||
"POT-Creation-Date: 2011-06-29 11:38+0200\n"
|
||||
"PO-Revision-Date: 2011-07-01 09:30+0000\n"
|
||||
"Last-Translator: jamelrom <jamelrom@gmail.com>\n"
|
||||
"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/sparkleshare/team/es/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
|
@ -21,22 +20,22 @@ msgstr ""
|
|||
"Language: es\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:338
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:337
|
||||
#: ../SparkleShare/SparkleIntro.cs:67 ../SparkleShare/SparkleStatusIcon.cs:345
|
||||
msgid "Welcome to SparkleShare!"
|
||||
msgstr "¡Bienvenido a SparkleShare!"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:349
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:348
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:357
|
||||
msgid "Not everything is synced"
|
||||
msgstr "Pendiente de sincronizar"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:359
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:358
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:367
|
||||
msgid "Up to date"
|
||||
msgstr "Actualizado"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:375
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:374
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:383
|
||||
msgid "Syncing…"
|
||||
msgstr "Sincronizando..."
|
||||
|
@ -86,42 +85,42 @@ msgstr "_Autores"
|
|||
msgid "_Visit Website"
|
||||
msgstr "_Visitar Página Web"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:422
|
||||
#: ../SparkleShare/SparkleController.cs:455
|
||||
msgid "ddd MMM d, yyyy"
|
||||
msgstr "d. ddd MMMM yyyy"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:427
|
||||
#: ../SparkleShare/SparkleController.cs:460
|
||||
msgid "ddd MMM d"
|
||||
msgstr "d. ddd MMM"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:629
|
||||
#: ../SparkleShare/SparkleController.cs:661
|
||||
#, csharp-format
|
||||
msgid "added ‘{0}’"
|
||||
msgstr "añadido '{0}'"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:634
|
||||
#: ../SparkleShare/SparkleController.cs:666
|
||||
#, csharp-format
|
||||
msgid "moved ‘{0}’"
|
||||
msgstr "movido '{0}'"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:639
|
||||
#: ../SparkleShare/SparkleController.cs:671
|
||||
#, csharp-format
|
||||
msgid "edited ‘{0}’"
|
||||
msgstr "editado '{0}'"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:644
|
||||
#: ../SparkleShare/SparkleController.cs:676
|
||||
#, csharp-format
|
||||
msgid "deleted ‘{0}’"
|
||||
msgstr "eliminado '{0}'"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:653
|
||||
#: ../SparkleShare/SparkleController.cs:685
|
||||
#, csharp-format
|
||||
msgid "and {0} more"
|
||||
msgid_plural "and {0} more"
|
||||
msgstr[0] "y {0} más"
|
||||
msgstr[1] "y {0} más"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:657
|
||||
#: ../SparkleShare/SparkleController.cs:689
|
||||
msgid "did something magical"
|
||||
msgstr "algo mágico ocurrió"
|
||||
|
||||
|
@ -324,75 +323,71 @@ msgstr "Aprenda como hospedar su propio SparkleServer"
|
|||
|
||||
#: ../SparkleShare/SparkleEventLog.cs:61
|
||||
msgid "Recent Events"
|
||||
msgstr ""
|
||||
msgstr "Eventos recientes"
|
||||
|
||||
#: ../SparkleShare/SparkleEventLog.cs:131
|
||||
#: ../SparkleShare/SparkleEventLog.cs:150
|
||||
#: ../SparkleShare/SparkleEventLog.cs:148
|
||||
#: ../SparkleShare/SparkleEventLog.cs:173
|
||||
msgid "All Folders"
|
||||
msgstr ""
|
||||
msgstr "Todas las carpetas"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:56
|
||||
#: ../SparkleShare/SparkleShare.cs:53
|
||||
msgid "Sorry, you can't run SparkleShare with these permissions."
|
||||
msgstr "Perdón, no puede ejecutar SparkleShare con estos permisos."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:57
|
||||
#: ../SparkleShare/SparkleShare.cs:54
|
||||
msgid "Things would go utterly wrong."
|
||||
msgstr "Las cosas irían absolutamente mal."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:66
|
||||
msgid "Don't show the notification icon"
|
||||
msgstr "No mostrar el icono de notificaciones"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:67
|
||||
#: ../SparkleShare/SparkleShare.cs:61
|
||||
msgid "Print version information"
|
||||
msgstr "Muestra la información de la versión"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:68
|
||||
#: ../SparkleShare/SparkleShare.cs:62
|
||||
msgid "Show this help text"
|
||||
msgstr "Mostrar este texto de ayuda"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
#: ../SparkleShare/SparkleShare.cs:109
|
||||
msgid "SparkleShare, a collaboration and sharing tool."
|
||||
msgstr "SparkleShare, una herramienta de compartición y colaboración"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:116
|
||||
#: ../SparkleShare/SparkleShare.cs:110
|
||||
msgid "Copyright (C) 2010 Hylke Bons"
|
||||
msgstr "Copyright (C) 2010 Hylke Bons"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
#: ../SparkleShare/SparkleShare.cs:112
|
||||
msgid "This program comes with ABSOLUTELY NO WARRANTY."
|
||||
msgstr "Este programa viene SIN NINGUNA GARANTÍA."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
#: ../SparkleShare/SparkleShare.cs:114
|
||||
msgid "This is free software, and you are welcome to redistribute it "
|
||||
msgstr "Esto es software libre, y esta invitado a redistribuirlo"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
msgid "under certain conditions. Please read the GNU GPLv3 for details."
|
||||
msgstr ""
|
||||
"bajo determinadas condiciones. Por favor lea la GNU GPLv3 para más detalles."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
#: ../SparkleShare/SparkleShare.cs:117
|
||||
msgid "SparkleShare automatically syncs Git repositories in "
|
||||
msgstr "SparkleShare sincroniza automaticamente repositorios Git en "
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:124
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
msgid "the ~/SparkleShare folder with their remote origins."
|
||||
msgstr "La carpeta ~/SparkleShare con su origen remoto."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:126
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
msgid "Usage: sparkleshare [start|stop|restart] [OPTION]..."
|
||||
msgstr "Uso: sparkleshare [start|stop|restart] [OPCION]..."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:127
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
msgid "Sync SparkleShare folder with remote repositories."
|
||||
msgstr "Sincronizar carpeta SparkleShare con el repositorio remoto."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:129
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
msgid "Arguments:"
|
||||
msgstr "Parámetros:"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:139
|
||||
#: ../SparkleShare/SparkleShare.cs:133
|
||||
msgid "SparkleShare "
|
||||
msgstr "SparkleShare"
|
||||
|
||||
|
@ -407,7 +402,7 @@ msgstr "Añadir carpeta remota..."
|
|||
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:242
|
||||
msgid "Show Recent Events"
|
||||
msgstr ""
|
||||
msgstr "Mostrar eventos recientes"
|
||||
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:262
|
||||
msgid "Turn Notifications Off"
|
||||
|
@ -422,11 +417,11 @@ msgstr "Activar las notificaciones"
|
|||
msgid "Quit"
|
||||
msgstr "Salir"
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:96
|
||||
#: ../SparkleShare/SparkleUI.cs:99
|
||||
msgid "Ouch! Mid-air collision!"
|
||||
msgstr "¡Ohh! ¡Hay una colisión!"
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:97
|
||||
#: ../SparkleShare/SparkleUI.cs:100
|
||||
msgid "Don't worry, SparkleShare made a copy of each conflicting file."
|
||||
msgstr ""
|
||||
"No se preocupe, SparkleShare hace una copia de cada archivo en conflicto."
|
||||
|
|
71
po/fi.po
|
@ -11,31 +11,32 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: SparkleShare\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-06-17 12:09+0200\n"
|
||||
"PO-Revision-Date: 2011-06-17 10:13+0000\n"
|
||||
"POT-Creation-Date: 2011-06-29 11:38+0200\n"
|
||||
"PO-Revision-Date: 2011-06-26 09:22+0000\n"
|
||||
"Last-Translator: deejay1 <deejay1@srem.org>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: fi\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:338
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:337
|
||||
#: ../SparkleShare/SparkleIntro.cs:67 ../SparkleShare/SparkleStatusIcon.cs:345
|
||||
msgid "Welcome to SparkleShare!"
|
||||
msgstr "Tervetuloa SparkleShareen!"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:349
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:348
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:357
|
||||
msgid "Not everything is synced"
|
||||
msgstr "Kaikkea ei ole synkronoitu"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:359
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:358
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:367
|
||||
msgid "Up to date"
|
||||
msgstr "Ajantasalla"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:375
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:374
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:383
|
||||
msgid "Syncing…"
|
||||
msgstr "Synkronoidaan..."
|
||||
|
@ -85,42 +86,42 @@ msgstr "_Näytä osallistujat"
|
|||
msgid "_Visit Website"
|
||||
msgstr "_Käy nettisivulla"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:422
|
||||
#: ../SparkleShare/SparkleController.cs:455
|
||||
msgid "ddd MMM d, yyyy"
|
||||
msgstr "ppp kkk d, vvvv"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:427
|
||||
#: ../SparkleShare/SparkleController.cs:460
|
||||
msgid "ddd MMM d"
|
||||
msgstr "ppp kkk d"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:629
|
||||
#: ../SparkleShare/SparkleController.cs:661
|
||||
#, csharp-format
|
||||
msgid "added ‘{0}’"
|
||||
msgstr "lisätty '{0}'"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:634
|
||||
#: ../SparkleShare/SparkleController.cs:666
|
||||
#, csharp-format
|
||||
msgid "moved ‘{0}’"
|
||||
msgstr "siirrettiin '{0}'"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:639
|
||||
#: ../SparkleShare/SparkleController.cs:671
|
||||
#, csharp-format
|
||||
msgid "edited ‘{0}’"
|
||||
msgstr "muokattu '{0}'"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:644
|
||||
#: ../SparkleShare/SparkleController.cs:676
|
||||
#, csharp-format
|
||||
msgid "deleted ‘{0}’"
|
||||
msgstr "poistettu '{0}'"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:653
|
||||
#: ../SparkleShare/SparkleController.cs:685
|
||||
#, csharp-format
|
||||
msgid "and {0} more"
|
||||
msgid_plural "and {0} more"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:657
|
||||
#: ../SparkleShare/SparkleController.cs:689
|
||||
msgid "did something magical"
|
||||
msgstr "teki jotain maagista"
|
||||
|
||||
|
@ -319,72 +320,68 @@ msgstr "Selvitä, kuinka voit pitää omaa SparkleServer-palvelinta"
|
|||
msgid "Recent Events"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleEventLog.cs:131
|
||||
#: ../SparkleShare/SparkleEventLog.cs:150
|
||||
#: ../SparkleShare/SparkleEventLog.cs:148
|
||||
#: ../SparkleShare/SparkleEventLog.cs:173
|
||||
msgid "All Folders"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:56
|
||||
#: ../SparkleShare/SparkleShare.cs:53
|
||||
msgid "Sorry, you can't run SparkleShare with these permissions."
|
||||
msgstr "Et voi ajaa SparkleSharea näillä oikeuksilla."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:57
|
||||
#: ../SparkleShare/SparkleShare.cs:54
|
||||
msgid "Things would go utterly wrong."
|
||||
msgstr "Asiat menevät paljon pieleen."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:66
|
||||
msgid "Don't show the notification icon"
|
||||
msgstr "Älä näytä huomautusikonia"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:67
|
||||
#: ../SparkleShare/SparkleShare.cs:61
|
||||
msgid "Print version information"
|
||||
msgstr "Tulosta versiotiedot"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:68
|
||||
#: ../SparkleShare/SparkleShare.cs:62
|
||||
msgid "Show this help text"
|
||||
msgstr "Näytä tämä ohjeteksti"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
#: ../SparkleShare/SparkleShare.cs:109
|
||||
msgid "SparkleShare, a collaboration and sharing tool."
|
||||
msgstr "SparkleShare, yhteistyö- ja jakotyökalu."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:116
|
||||
#: ../SparkleShare/SparkleShare.cs:110
|
||||
msgid "Copyright (C) 2010 Hylke Bons"
|
||||
msgstr "Copyright (C) 2010 Hylke Bons"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
#: ../SparkleShare/SparkleShare.cs:112
|
||||
msgid "This program comes with ABSOLUTELY NO WARRANTY."
|
||||
msgstr "Tällä ohjelmalla EI OLE TAKUUTA."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
#: ../SparkleShare/SparkleShare.cs:114
|
||||
msgid "This is free software, and you are welcome to redistribute it "
|
||||
msgstr "Tämä on vapaa ohjelma, ja saat vapaasti levittää sitä"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
msgid "under certain conditions. Please read the GNU GPLv3 for details."
|
||||
msgstr "tietyin ehdoin. Saat lisätietoja GNU GPLv3:sta."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
#: ../SparkleShare/SparkleShare.cs:117
|
||||
msgid "SparkleShare automatically syncs Git repositories in "
|
||||
msgstr "SparkleShare synkronoi automaattisesti Git-tietokannat"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:124
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
msgid "the ~/SparkleShare folder with their remote origins."
|
||||
msgstr "~/SparkleShare-kansiosta etäpalvelinten kanssa."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:126
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
msgid "Usage: sparkleshare [start|stop|restart] [OPTION]..."
|
||||
msgstr "Käyttö: sparkleshare [start|stop|restart] [asetukset]"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:127
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
msgid "Sync SparkleShare folder with remote repositories."
|
||||
msgstr "Synkronoi SparkleShare-kansio etätietokantoihin."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:129
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
msgid "Arguments:"
|
||||
msgstr "Parametrit:"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:139
|
||||
#: ../SparkleShare/SparkleShare.cs:133
|
||||
msgid "SparkleShare "
|
||||
msgstr "SparkleShare"
|
||||
|
||||
|
@ -414,11 +411,11 @@ msgstr "Ota ilmoitukset käyttöön"
|
|||
msgid "Quit"
|
||||
msgstr "Lopeta"
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:96
|
||||
#: ../SparkleShare/SparkleUI.cs:99
|
||||
msgid "Ouch! Mid-air collision!"
|
||||
msgstr "Auts! Törmäys!"
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:97
|
||||
#: ../SparkleShare/SparkleUI.cs:100
|
||||
msgid "Don't worry, SparkleShare made a copy of each conflicting file."
|
||||
msgstr ""
|
||||
"Ei huolta, SparkleShare teki kopion kaikista tiedostoista, joissa on "
|
||||
|
|
73
po/fr.po
|
@ -12,31 +12,32 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: SparkleShare\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-06-17 12:09+0200\n"
|
||||
"PO-Revision-Date: 2011-06-20 09:05+0000\n"
|
||||
"Last-Translator: barliguy <from-transifex@arliguy.net>\n"
|
||||
"POT-Creation-Date: 2011-06-29 11:38+0200\n"
|
||||
"PO-Revision-Date: 2011-06-26 09:22+0000\n"
|
||||
"Last-Translator: deejay1 <deejay1@srem.org>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: fr\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:338
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:337
|
||||
#: ../SparkleShare/SparkleIntro.cs:67 ../SparkleShare/SparkleStatusIcon.cs:345
|
||||
msgid "Welcome to SparkleShare!"
|
||||
msgstr "Bienvenue sur SparkleShare !"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:349
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:348
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:357
|
||||
msgid "Not everything is synced"
|
||||
msgstr "Tout n'est pas synchronisé"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:359
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:358
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:367
|
||||
msgid "Up to date"
|
||||
msgstr "À jour"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:375
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:374
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:383
|
||||
msgid "Syncing…"
|
||||
msgstr "Synchronisation en cours…"
|
||||
|
@ -86,42 +87,42 @@ msgstr "_Afficher les crédits"
|
|||
msgid "_Visit Website"
|
||||
msgstr "_Visiter le site web"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:422
|
||||
#: ../SparkleShare/SparkleController.cs:455
|
||||
msgid "ddd MMM d, yyyy"
|
||||
msgstr "ddd d MMM yyyy"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:427
|
||||
#: ../SparkleShare/SparkleController.cs:460
|
||||
msgid "ddd MMM d"
|
||||
msgstr "ddd d MMM"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:629
|
||||
#: ../SparkleShare/SparkleController.cs:661
|
||||
#, csharp-format
|
||||
msgid "added ‘{0}’"
|
||||
msgstr "Ajouté : « {0} »"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:634
|
||||
#: ../SparkleShare/SparkleController.cs:666
|
||||
#, csharp-format
|
||||
msgid "moved ‘{0}’"
|
||||
msgstr "Déplacé : « {0} »"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:639
|
||||
#: ../SparkleShare/SparkleController.cs:671
|
||||
#, csharp-format
|
||||
msgid "edited ‘{0}’"
|
||||
msgstr "Edité : « {0} »"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:644
|
||||
#: ../SparkleShare/SparkleController.cs:676
|
||||
#, csharp-format
|
||||
msgid "deleted ‘{0}’"
|
||||
msgstr "Supprimé : « {0} »"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:653
|
||||
#: ../SparkleShare/SparkleController.cs:685
|
||||
#, csharp-format
|
||||
msgid "and {0} more"
|
||||
msgid_plural "and {0} more"
|
||||
msgstr[0] "et {0} de plus"
|
||||
msgstr[1] "et {0} de plus"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:657
|
||||
#: ../SparkleShare/SparkleController.cs:689
|
||||
msgid "did something magical"
|
||||
msgstr "quelque chose de magique s'est passé"
|
||||
|
||||
|
@ -329,76 +330,72 @@ msgstr "Apprendre à héberger son propre serveur SparkleServer"
|
|||
msgid "Recent Events"
|
||||
msgstr "Évènements récents"
|
||||
|
||||
#: ../SparkleShare/SparkleEventLog.cs:131
|
||||
#: ../SparkleShare/SparkleEventLog.cs:150
|
||||
#: ../SparkleShare/SparkleEventLog.cs:148
|
||||
#: ../SparkleShare/SparkleEventLog.cs:173
|
||||
msgid "All Folders"
|
||||
msgstr "Tous les dossiers"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:56
|
||||
#: ../SparkleShare/SparkleShare.cs:53
|
||||
msgid "Sorry, you can't run SparkleShare with these permissions."
|
||||
msgstr ""
|
||||
"Désolé, vous ne disposez pas des autorisations nécessaires pour lancer "
|
||||
"SparkleShare."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:57
|
||||
#: ../SparkleShare/SparkleShare.cs:54
|
||||
msgid "Things would go utterly wrong."
|
||||
msgstr "Les choses pourraient très mal tourner."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:66
|
||||
msgid "Don't show the notification icon"
|
||||
msgstr "Masquer l’icône de notification"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:67
|
||||
#: ../SparkleShare/SparkleShare.cs:61
|
||||
msgid "Print version information"
|
||||
msgstr "Affiche les informations de la version"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:68
|
||||
#: ../SparkleShare/SparkleShare.cs:62
|
||||
msgid "Show this help text"
|
||||
msgstr "Afficher ce texte d’aide"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
#: ../SparkleShare/SparkleShare.cs:109
|
||||
msgid "SparkleShare, a collaboration and sharing tool."
|
||||
msgstr "SparkleShare, outils de collaboration et de partage"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:116
|
||||
#: ../SparkleShare/SparkleShare.cs:110
|
||||
msgid "Copyright (C) 2010 Hylke Bons"
|
||||
msgstr "Copyright (C) 2010 Hylke Bons"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
#: ../SparkleShare/SparkleShare.cs:112
|
||||
msgid "This program comes with ABSOLUTELY NO WARRANTY."
|
||||
msgstr "Ce logiciel est diffusé sans AUCUNE GARANTIE."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
#: ../SparkleShare/SparkleShare.cs:114
|
||||
msgid "This is free software, and you are welcome to redistribute it "
|
||||
msgstr "Ce logiciel est libre et vous êtes invité à le re‑distribuer "
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
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."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
#: ../SparkleShare/SparkleShare.cs:117
|
||||
msgid "SparkleShare automatically syncs Git repositories in "
|
||||
msgstr "SparkleShare synchronise automatiquement les dépôts Git dans "
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:124
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
msgid "the ~/SparkleShare folder with their remote origins."
|
||||
msgstr "le dossier ~/SparkleShare avec leurs racines distantes."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:126
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
msgid "Usage: sparkleshare [start|stop|restart] [OPTION]..."
|
||||
msgstr "Utilisation : sparkleshare [start|stop|restart] [OPTION]…"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:127
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
msgid "Sync SparkleShare folder with remote repositories."
|
||||
msgstr "Synchroniser le dossier SparkleShare avec les dépôts distants."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:129
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
msgid "Arguments:"
|
||||
msgstr "Paramètres :"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:139
|
||||
#: ../SparkleShare/SparkleShare.cs:133
|
||||
msgid "SparkleShare "
|
||||
msgstr "SparkleShare"
|
||||
|
||||
|
@ -428,11 +425,11 @@ msgstr "Activer les notifications"
|
|||
msgid "Quit"
|
||||
msgstr "Quitter"
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:96
|
||||
#: ../SparkleShare/SparkleUI.cs:99
|
||||
msgid "Ouch! Mid-air collision!"
|
||||
msgstr "Outch ! Collision en plein ciel !"
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:97
|
||||
#: ../SparkleShare/SparkleUI.cs:100
|
||||
msgid "Don't worry, SparkleShare made a copy of each conflicting file."
|
||||
msgstr ""
|
||||
"Ne vous inquiétez pas, SparkleShare a effectué une copie de chacun des "
|
||||
|
|
71
po/he.po
|
@ -8,31 +8,32 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: SparkleShare\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-06-17 12:09+0200\n"
|
||||
"PO-Revision-Date: 2011-06-17 10:13+0000\n"
|
||||
"POT-Creation-Date: 2011-06-29 11:38+0200\n"
|
||||
"PO-Revision-Date: 2011-06-26 09:22+0000\n"
|
||||
"Last-Translator: deejay1 <deejay1@srem.org>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: he\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:338
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:337
|
||||
#: ../SparkleShare/SparkleIntro.cs:67 ../SparkleShare/SparkleStatusIcon.cs:345
|
||||
msgid "Welcome to SparkleShare!"
|
||||
msgstr "ברוכים הבאים לספארקלשר!"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:349
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:348
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:357
|
||||
msgid "Not everything is synced"
|
||||
msgstr "לא הכל מסונכרן"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:359
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:358
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:367
|
||||
msgid "Up to date"
|
||||
msgstr "מעודכן"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:375
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:374
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:383
|
||||
msgid "Syncing…"
|
||||
msgstr "מסנכרן..."
|
||||
|
@ -82,42 +83,42 @@ msgstr ""
|
|||
msgid "_Visit Website"
|
||||
msgstr "_בקר באתר"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:422
|
||||
#: ../SparkleShare/SparkleController.cs:455
|
||||
msgid "ddd MMM d, yyyy"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:427
|
||||
#: ../SparkleShare/SparkleController.cs:460
|
||||
msgid "ddd MMM d"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:629
|
||||
#: ../SparkleShare/SparkleController.cs:661
|
||||
#, csharp-format
|
||||
msgid "added ‘{0}’"
|
||||
msgstr "הוסף ‘{0}’"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:634
|
||||
#: ../SparkleShare/SparkleController.cs:666
|
||||
#, csharp-format
|
||||
msgid "moved ‘{0}’"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:639
|
||||
#: ../SparkleShare/SparkleController.cs:671
|
||||
#, csharp-format
|
||||
msgid "edited ‘{0}’"
|
||||
msgstr "נערך ‘{0}’"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:644
|
||||
#: ../SparkleShare/SparkleController.cs:676
|
||||
#, csharp-format
|
||||
msgid "deleted ‘{0}’"
|
||||
msgstr "נמחק ‘{0}’"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:653
|
||||
#: ../SparkleShare/SparkleController.cs:685
|
||||
#, csharp-format
|
||||
msgid "and {0} more"
|
||||
msgid_plural "and {0} more"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:657
|
||||
#: ../SparkleShare/SparkleController.cs:689
|
||||
msgid "did something magical"
|
||||
msgstr ""
|
||||
|
||||
|
@ -312,72 +313,68 @@ msgstr "למד איך להקים שרת אכסון, ספארקלסרבר (Sparkl
|
|||
msgid "Recent Events"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleEventLog.cs:131
|
||||
#: ../SparkleShare/SparkleEventLog.cs:150
|
||||
#: ../SparkleShare/SparkleEventLog.cs:148
|
||||
#: ../SparkleShare/SparkleEventLog.cs:173
|
||||
msgid "All Folders"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:56
|
||||
#: ../SparkleShare/SparkleShare.cs:53
|
||||
msgid "Sorry, you can't run SparkleShare with these permissions."
|
||||
msgstr "מצטערים, אך אינך יכול להריץ ספארקלשר עם ההרשאות האלה."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:57
|
||||
#: ../SparkleShare/SparkleShare.cs:54
|
||||
msgid "Things would go utterly wrong."
|
||||
msgstr "דברים בלתי תקינים עשויים לקרות."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:66
|
||||
msgid "Don't show the notification icon"
|
||||
msgstr "אל תראה את סמל ההתרעה"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:67
|
||||
#: ../SparkleShare/SparkleShare.cs:61
|
||||
msgid "Print version information"
|
||||
msgstr "מידע גרסת ההדפסה"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:68
|
||||
#: ../SparkleShare/SparkleShare.cs:62
|
||||
msgid "Show this help text"
|
||||
msgstr "הראה את מלל העזרה"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
#: ../SparkleShare/SparkleShare.cs:109
|
||||
msgid "SparkleShare, a collaboration and sharing tool."
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:116
|
||||
#: ../SparkleShare/SparkleShare.cs:110
|
||||
msgid "Copyright (C) 2010 Hylke Bons"
|
||||
msgstr "זכויות שמורות (C) 2010 Hylke Bons"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
#: ../SparkleShare/SparkleShare.cs:112
|
||||
msgid "This program comes with ABSOLUTELY NO WARRANTY."
|
||||
msgstr "תוכנה זו באה ללא כל אחריות."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
#: ../SparkleShare/SparkleShare.cs:114
|
||||
msgid "This is free software, and you are welcome to redistribute it "
|
||||
msgstr "תוכנה זו הינה חופשית ואתם מוזמנים להפיצה"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
msgid "under certain conditions. Please read the GNU GPLv3 for details."
|
||||
msgstr "תחת תנאים מסויימים. אנא קראו את רשיון GNU GPLv3 לקבלת פרטים."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
#: ../SparkleShare/SparkleShare.cs:117
|
||||
msgid "SparkleShare automatically syncs Git repositories in "
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:124
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
msgid "the ~/SparkleShare folder with their remote origins."
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:126
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
msgid "Usage: sparkleshare [start|stop|restart] [OPTION]..."
|
||||
msgstr "שימוש: sparkleshare [start|stop|restart] [אפשרויות]..."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:127
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
msgid "Sync SparkleShare folder with remote repositories."
|
||||
msgstr "סנכרן תקיית ספארקלשר עם מאגרים מרוחקים."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:129
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
msgid "Arguments:"
|
||||
msgstr "ארגומנטים:"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:139
|
||||
#: ../SparkleShare/SparkleShare.cs:133
|
||||
msgid "SparkleShare "
|
||||
msgstr "ספארקלשר"
|
||||
|
||||
|
@ -407,11 +404,11 @@ msgstr ""
|
|||
msgid "Quit"
|
||||
msgstr "צא"
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:96
|
||||
#: ../SparkleShare/SparkleUI.cs:99
|
||||
msgid "Ouch! Mid-air collision!"
|
||||
msgstr "איה! התנגשות באמצע ההעברה!"
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:97
|
||||
#: ../SparkleShare/SparkleUI.cs:100
|
||||
msgid "Don't worry, SparkleShare made a copy of each conflicting file."
|
||||
msgstr "אל דאגה, ספארקלשר יצר העתק של כל אחד מהקבצים הסותרים (השונים)"
|
||||
|
||||
|
|
77
po/hu.po
|
@ -9,31 +9,32 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: SparkleShare\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-06-17 12:09+0200\n"
|
||||
"PO-Revision-Date: 2011-06-17 10:13+0000\n"
|
||||
"POT-Creation-Date: 2011-06-29 11:38+0200\n"
|
||||
"PO-Revision-Date: 2011-06-26 09:22+0000\n"
|
||||
"Last-Translator: deejay1 <deejay1@srem.org>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: hu\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:338
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:337
|
||||
#: ../SparkleShare/SparkleIntro.cs:67 ../SparkleShare/SparkleStatusIcon.cs:345
|
||||
msgid "Welcome to SparkleShare!"
|
||||
msgstr "Üdvözli a SparkleShare!"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:349
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:348
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:357
|
||||
msgid "Not everything is synced"
|
||||
msgstr "Nincs minden szinkronizálva"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:359
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:358
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:367
|
||||
msgid "Up to date"
|
||||
msgstr "Naprakész"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:375
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:374
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:383
|
||||
msgid "Syncing…"
|
||||
msgstr "Szinkronizálás..."
|
||||
|
@ -83,42 +84,42 @@ msgstr "Szerzői névsor megjelenítése"
|
|||
msgid "_Visit Website"
|
||||
msgstr "Weboldal meglátogatása"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:422
|
||||
#: ../SparkleShare/SparkleController.cs:455
|
||||
msgid "ddd MMM d, yyyy"
|
||||
msgstr "ddd MMM d, yyyy"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:427
|
||||
#: ../SparkleShare/SparkleController.cs:460
|
||||
msgid "ddd MMM d"
|
||||
msgstr "ddd MMM d"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:629
|
||||
#: ../SparkleShare/SparkleController.cs:661
|
||||
#, csharp-format
|
||||
msgid "added ‘{0}’"
|
||||
msgstr "hozzáadva '{0}'"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:634
|
||||
#: ../SparkleShare/SparkleController.cs:666
|
||||
#, csharp-format
|
||||
msgid "moved ‘{0}’"
|
||||
msgstr "elmozgatva '{0}'"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:639
|
||||
#: ../SparkleShare/SparkleController.cs:671
|
||||
#, csharp-format
|
||||
msgid "edited ‘{0}’"
|
||||
msgstr "szerkesztve '{0}'"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:644
|
||||
#: ../SparkleShare/SparkleController.cs:676
|
||||
#, csharp-format
|
||||
msgid "deleted ‘{0}’"
|
||||
msgstr "törölve '{0}'"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:653
|
||||
#: ../SparkleShare/SparkleController.cs:685
|
||||
#, csharp-format
|
||||
msgid "and {0} more"
|
||||
msgid_plural "and {0} more"
|
||||
msgstr[0] "és {0} további"
|
||||
msgstr[1] "és {0} továbbiak"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:657
|
||||
#: ../SparkleShare/SparkleController.cs:689
|
||||
msgid "did something magical"
|
||||
msgstr "valami varázslatosat tett"
|
||||
|
||||
|
@ -321,75 +322,71 @@ msgstr "Ismerje meg, hogyan tarthat saját SparkleServer-t"
|
|||
|
||||
#: ../SparkleShare/SparkleEventLog.cs:61
|
||||
msgid "Recent Events"
|
||||
msgstr ""
|
||||
msgstr "Utóbbi események"
|
||||
|
||||
#: ../SparkleShare/SparkleEventLog.cs:131
|
||||
#: ../SparkleShare/SparkleEventLog.cs:150
|
||||
#: ../SparkleShare/SparkleEventLog.cs:148
|
||||
#: ../SparkleShare/SparkleEventLog.cs:173
|
||||
msgid "All Folders"
|
||||
msgstr ""
|
||||
msgstr "MInden mappa"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:56
|
||||
#: ../SparkleShare/SparkleShare.cs:53
|
||||
msgid "Sorry, you can't run SparkleShare with these permissions."
|
||||
msgstr "Elnézést, nem tudja futtatni SparkleShare ezekkel a jogosultságokkal."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:57
|
||||
#: ../SparkleShare/SparkleShare.cs:54
|
||||
msgid "Things would go utterly wrong."
|
||||
msgstr "A dolgok teljesen rossz irányt vehetnek."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:66
|
||||
msgid "Don't show the notification icon"
|
||||
msgstr "Ne jelenjen meg az értesítési ikon"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:67
|
||||
#: ../SparkleShare/SparkleShare.cs:61
|
||||
msgid "Print version information"
|
||||
msgstr "Verzió információk nyomtatása"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:68
|
||||
#: ../SparkleShare/SparkleShare.cs:62
|
||||
msgid "Show this help text"
|
||||
msgstr "Ezt a súgó segítséget jeleníti meg"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
#: ../SparkleShare/SparkleShare.cs:109
|
||||
msgid "SparkleShare, a collaboration and sharing tool."
|
||||
msgstr "SparkleShare, az együttműködés és megosztás eszköze."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:116
|
||||
#: ../SparkleShare/SparkleShare.cs:110
|
||||
msgid "Copyright (C) 2010 Hylke Bons"
|
||||
msgstr "Copyright (C) 2010 Hylke Bons"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
#: ../SparkleShare/SparkleShare.cs:112
|
||||
msgid "This program comes with ABSOLUTELY NO WARRANTY."
|
||||
msgstr "Erre a programra nincs SEMMIFÉLE GARANCIA."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
#: ../SparkleShare/SparkleShare.cs:114
|
||||
msgid "This is free software, and you are welcome to redistribute it "
|
||||
msgstr "Ez egy szabad szoftver, és mindig örülünk, ha terjesztik "
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
msgid "under certain conditions. Please read the GNU GPLv3 for details."
|
||||
msgstr ""
|
||||
"bizonyos feltételek mellett. Kérjük, olvassa el a GNU GPLv3 a részletekért."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
#: ../SparkleShare/SparkleShare.cs:117
|
||||
msgid "SparkleShare automatically syncs Git repositories in "
|
||||
msgstr "SparkleShare automatikusan szinkronizálja Git adattárakat a"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:124
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
msgid "the ~/SparkleShare folder with their remote origins."
|
||||
msgstr "a ~/SparkleShare mappával a távoli eredetükkel."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:126
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
msgid "Usage: sparkleshare [start|stop|restart] [OPTION]..."
|
||||
msgstr "Használat: sparkleshare [start | stop | újraindítás] [OPCIÓK] ..."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:127
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
msgid "Sync SparkleShare folder with remote repositories."
|
||||
msgstr "A SparkleShare mappa szinkronizálása a távoli tárolókkal."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:129
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
msgid "Arguments:"
|
||||
msgstr "Paraméterek:"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:139
|
||||
#: ../SparkleShare/SparkleShare.cs:133
|
||||
msgid "SparkleShare "
|
||||
msgstr "SparkleShare "
|
||||
|
||||
|
@ -404,7 +401,7 @@ msgstr "Távoli mappa hozzáadása..."
|
|||
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:242
|
||||
msgid "Show Recent Events"
|
||||
msgstr ""
|
||||
msgstr "Utolsó események megjelenítése"
|
||||
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:262
|
||||
msgid "Turn Notifications Off"
|
||||
|
@ -419,11 +416,11 @@ msgstr "Értesítések bekapcsolása"
|
|||
msgid "Quit"
|
||||
msgstr "Kilépés"
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:96
|
||||
#: ../SparkleShare/SparkleUI.cs:99
|
||||
msgid "Ouch! Mid-air collision!"
|
||||
msgstr "Jaj! Ütközés a forgalomban!"
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:97
|
||||
#: ../SparkleShare/SparkleUI.cs:100
|
||||
msgid "Don't worry, SparkleShare made a copy of each conflicting file."
|
||||
msgstr ""
|
||||
"Nincs ok az aggodalomra, SparkleShare minden ütköző fájlról készít "
|
||||
|
|
71
po/it.po
|
@ -10,31 +10,32 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: SparkleShare\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-06-17 12:09+0200\n"
|
||||
"PO-Revision-Date: 2011-06-17 10:13+0000\n"
|
||||
"POT-Creation-Date: 2011-06-29 11:38+0200\n"
|
||||
"PO-Revision-Date: 2011-06-26 09:22+0000\n"
|
||||
"Last-Translator: deejay1 <deejay1@srem.org>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: it\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:338
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:337
|
||||
#: ../SparkleShare/SparkleIntro.cs:67 ../SparkleShare/SparkleStatusIcon.cs:345
|
||||
msgid "Welcome to SparkleShare!"
|
||||
msgstr "Benvenuto in SparkleShare!"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:349
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:348
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:357
|
||||
msgid "Not everything is synced"
|
||||
msgstr "Non tutto è sincronizzato"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:359
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:358
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:367
|
||||
msgid "Up to date"
|
||||
msgstr "Aggiornato"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:375
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:374
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:383
|
||||
msgid "Syncing…"
|
||||
msgstr "Sincronizzazione in corso..."
|
||||
|
@ -84,42 +85,42 @@ msgstr "_Mostra Crediti"
|
|||
msgid "_Visit Website"
|
||||
msgstr "_Visita il sito web"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:422
|
||||
#: ../SparkleShare/SparkleController.cs:455
|
||||
msgid "ddd MMM d, yyyy"
|
||||
msgstr "ddd MMM d, yyyy"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:427
|
||||
#: ../SparkleShare/SparkleController.cs:460
|
||||
msgid "ddd MMM d"
|
||||
msgstr "ddd MMM d"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:629
|
||||
#: ../SparkleShare/SparkleController.cs:661
|
||||
#, csharp-format
|
||||
msgid "added ‘{0}’"
|
||||
msgstr "aggiunti '{0}'"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:634
|
||||
#: ../SparkleShare/SparkleController.cs:666
|
||||
#, csharp-format
|
||||
msgid "moved ‘{0}’"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:639
|
||||
#: ../SparkleShare/SparkleController.cs:671
|
||||
#, csharp-format
|
||||
msgid "edited ‘{0}’"
|
||||
msgstr "modificati '{0}'"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:644
|
||||
#: ../SparkleShare/SparkleController.cs:676
|
||||
#, csharp-format
|
||||
msgid "deleted ‘{0}’"
|
||||
msgstr "eliminati '{0}'"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:653
|
||||
#: ../SparkleShare/SparkleController.cs:685
|
||||
#, csharp-format
|
||||
msgid "and {0} more"
|
||||
msgid_plural "and {0} more"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:657
|
||||
#: ../SparkleShare/SparkleController.cs:689
|
||||
msgid "did something magical"
|
||||
msgstr ""
|
||||
|
||||
|
@ -323,73 +324,69 @@ msgstr "Impara come installare il tuo SparkleServer personale"
|
|||
msgid "Recent Events"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleEventLog.cs:131
|
||||
#: ../SparkleShare/SparkleEventLog.cs:150
|
||||
#: ../SparkleShare/SparkleEventLog.cs:148
|
||||
#: ../SparkleShare/SparkleEventLog.cs:173
|
||||
msgid "All Folders"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:56
|
||||
#: ../SparkleShare/SparkleShare.cs:53
|
||||
msgid "Sorry, you can't run SparkleShare with these permissions."
|
||||
msgstr "Spiacente, non è possibile eseguire SparkleShare con questi permessi."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:57
|
||||
#: ../SparkleShare/SparkleShare.cs:54
|
||||
msgid "Things would go utterly wrong."
|
||||
msgstr "Le cose potrebbero andare estremamente male."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:66
|
||||
msgid "Don't show the notification icon"
|
||||
msgstr "Non mostrare l'icona di notifica"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:67
|
||||
#: ../SparkleShare/SparkleShare.cs:61
|
||||
msgid "Print version information"
|
||||
msgstr "Stampa informazioni sulla versione"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:68
|
||||
#: ../SparkleShare/SparkleShare.cs:62
|
||||
msgid "Show this help text"
|
||||
msgstr "Mostra questo messaggio di aiuto"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
#: ../SparkleShare/SparkleShare.cs:109
|
||||
msgid "SparkleShare, a collaboration and sharing tool."
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:116
|
||||
#: ../SparkleShare/SparkleShare.cs:110
|
||||
msgid "Copyright (C) 2010 Hylke Bons"
|
||||
msgstr "Copyright (C) 2010 Hylke Bons"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
#: ../SparkleShare/SparkleShare.cs:112
|
||||
msgid "This program comes with ABSOLUTELY NO WARRANTY."
|
||||
msgstr "Questo programma viene fornito ASSOLUTAMENTE SENZA NESSUNA GARANZIA."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
#: ../SparkleShare/SparkleShare.cs:114
|
||||
msgid "This is free software, and you are welcome to redistribute it "
|
||||
msgstr "Questo è software libero e sei invitato a redistribuirlo"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
msgid "under certain conditions. Please read the GNU GPLv3 for details."
|
||||
msgstr ""
|
||||
"rispettando alcune restrizioni. Leggi la licenza GNU GPLv3 per i dettagli"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
#: ../SparkleShare/SparkleShare.cs:117
|
||||
msgid "SparkleShare automatically syncs Git repositories in "
|
||||
msgstr "SparkleShare sincronizza automaticamente i repository Git nella"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:124
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
msgid "the ~/SparkleShare folder with their remote origins."
|
||||
msgstr "cartella ~/.SparkleShare con le loro origini."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:126
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
msgid "Usage: sparkleshare [start|stop|restart] [OPTION]..."
|
||||
msgstr "Utilizzo: sparkleshare [start|stop|restart] [OPTION]..."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:127
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
msgid "Sync SparkleShare folder with remote repositories."
|
||||
msgstr "Sincronizza cartella SparkleShare con repository remoti."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:129
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
msgid "Arguments:"
|
||||
msgstr "Argomenti"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:139
|
||||
#: ../SparkleShare/SparkleShare.cs:133
|
||||
msgid "SparkleShare "
|
||||
msgstr "SparkleShare "
|
||||
|
||||
|
@ -419,11 +416,11 @@ msgstr "Accendi le notifiche"
|
|||
msgid "Quit"
|
||||
msgstr "Esci"
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:96
|
||||
#: ../SparkleShare/SparkleUI.cs:99
|
||||
msgid "Ouch! Mid-air collision!"
|
||||
msgstr "Ahi! Una collisione in volo!"
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:97
|
||||
#: ../SparkleShare/SparkleUI.cs:100
|
||||
msgid "Don't worry, SparkleShare made a copy of each conflicting file."
|
||||
msgstr ""
|
||||
"Non ti preoccupare, SparkleShare ha eseguito una copia di ogni file in "
|
||||
|
|
71
po/ja.po
|
@ -10,31 +10,32 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: SparkleShare\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-06-17 12:09+0200\n"
|
||||
"PO-Revision-Date: 2011-06-17 10:13+0000\n"
|
||||
"POT-Creation-Date: 2011-06-29 11:38+0200\n"
|
||||
"PO-Revision-Date: 2011-06-26 09:22+0000\n"
|
||||
"Last-Translator: deejay1 <deejay1@srem.org>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ja\n"
|
||||
"Plural-Forms: nplurals=1; plural=0\n"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:338
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:337
|
||||
#: ../SparkleShare/SparkleIntro.cs:67 ../SparkleShare/SparkleStatusIcon.cs:345
|
||||
msgid "Welcome to SparkleShare!"
|
||||
msgstr "SparkleShareへようこそ!"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:349
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:348
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:357
|
||||
msgid "Not everything is synced"
|
||||
msgstr "すべてが同期されていません"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:359
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:358
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:367
|
||||
msgid "Up to date"
|
||||
msgstr "最新の状態です。"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:375
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:374
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:383
|
||||
msgid "Syncing…"
|
||||
msgstr "同期中..."
|
||||
|
@ -84,41 +85,41 @@ msgstr "クレジットを表示する(_S)"
|
|||
msgid "_Visit Website"
|
||||
msgstr "Webサイトにアクセスする(_V)"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:422
|
||||
#: ../SparkleShare/SparkleController.cs:455
|
||||
msgid "ddd MMM d, yyyy"
|
||||
msgstr "ddd MMM d, yyyy"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:427
|
||||
#: ../SparkleShare/SparkleController.cs:460
|
||||
msgid "ddd MMM d"
|
||||
msgstr "ddd MMM d"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:629
|
||||
#: ../SparkleShare/SparkleController.cs:661
|
||||
#, csharp-format
|
||||
msgid "added ‘{0}’"
|
||||
msgstr "'{0}'を追加しました"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:634
|
||||
#: ../SparkleShare/SparkleController.cs:666
|
||||
#, csharp-format
|
||||
msgid "moved ‘{0}’"
|
||||
msgstr "'{0}'を移動しました"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:639
|
||||
#: ../SparkleShare/SparkleController.cs:671
|
||||
#, csharp-format
|
||||
msgid "edited ‘{0}’"
|
||||
msgstr "'{0}'を編集しました"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:644
|
||||
#: ../SparkleShare/SparkleController.cs:676
|
||||
#, csharp-format
|
||||
msgid "deleted ‘{0}’"
|
||||
msgstr "'{0}'を削除しました"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:653
|
||||
#: ../SparkleShare/SparkleController.cs:685
|
||||
#, csharp-format
|
||||
msgid "and {0} more"
|
||||
msgid_plural "and {0} more"
|
||||
msgstr[0] "、{0}詳細"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:657
|
||||
#: ../SparkleShare/SparkleController.cs:689
|
||||
msgid "did something magical"
|
||||
msgstr "何か摩訶不思議なことをしました"
|
||||
|
||||
|
@ -314,72 +315,68 @@ msgstr "個人でSparkleServerを立ち上げる方法"
|
|||
msgid "Recent Events"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleEventLog.cs:131
|
||||
#: ../SparkleShare/SparkleEventLog.cs:150
|
||||
#: ../SparkleShare/SparkleEventLog.cs:148
|
||||
#: ../SparkleShare/SparkleEventLog.cs:173
|
||||
msgid "All Folders"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:56
|
||||
#: ../SparkleShare/SparkleShare.cs:53
|
||||
msgid "Sorry, you can't run SparkleShare with these permissions."
|
||||
msgstr "申し訳ありませんが、SparkleShareを実行する権限がありません。パーミッションの設定を見直してください。"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:57
|
||||
#: ../SparkleShare/SparkleShare.cs:54
|
||||
msgid "Things would go utterly wrong."
|
||||
msgstr "全く予期しないことになるかもしれません。"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:66
|
||||
msgid "Don't show the notification icon"
|
||||
msgstr "通知アイコンを表示しない"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:67
|
||||
#: ../SparkleShare/SparkleShare.cs:61
|
||||
msgid "Print version information"
|
||||
msgstr "バージョン情報の表示"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:68
|
||||
#: ../SparkleShare/SparkleShare.cs:62
|
||||
msgid "Show this help text"
|
||||
msgstr "このヘルプテキストを表示"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
#: ../SparkleShare/SparkleShare.cs:109
|
||||
msgid "SparkleShare, a collaboration and sharing tool."
|
||||
msgstr "SparkleShare、コラボレーションと共有のためのツールです。"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:116
|
||||
#: ../SparkleShare/SparkleShare.cs:110
|
||||
msgid "Copyright (C) 2010 Hylke Bons"
|
||||
msgstr "Copyright (C)2010 Hylke Bons"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
#: ../SparkleShare/SparkleShare.cs:112
|
||||
msgid "This program comes with ABSOLUTELY NO WARRANTY."
|
||||
msgstr "このプログラムは完全無保証です。"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
#: ../SparkleShare/SparkleShare.cs:114
|
||||
msgid "This is free software, and you are welcome to redistribute it "
|
||||
msgstr "これはフリーソフトウェアであり、再配布を歓迎します。"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
msgid "under certain conditions. Please read the GNU GPLv3 for details."
|
||||
msgstr "一定の条件の下で。詳細については、GNUのGPLv3をお読みください。"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
#: ../SparkleShare/SparkleShare.cs:117
|
||||
msgid "SparkleShare automatically syncs Git repositories in "
|
||||
msgstr "SparkleShareは自動的に..のGitリポジトリと同期します"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:124
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
msgid "the ~/SparkleShare folder with their remote origins."
|
||||
msgstr "リモートの元フォルダを含んだ~/SparkleShareフォルダ"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:126
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
msgid "Usage: sparkleshare [start|stop|restart] [OPTION]..."
|
||||
msgstr "使用法: sparkleshare [start|stop|restart] [オプション]..."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:127
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
msgid "Sync SparkleShare folder with remote repositories."
|
||||
msgstr "SparkleShareフォルダをリモートのリポジトリと同期。"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:129
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
msgid "Arguments:"
|
||||
msgstr "引数:"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:139
|
||||
#: ../SparkleShare/SparkleShare.cs:133
|
||||
msgid "SparkleShare "
|
||||
msgstr "SparkleShare"
|
||||
|
||||
|
@ -409,11 +406,11 @@ msgstr "通知をオン"
|
|||
msgid "Quit"
|
||||
msgstr "終了"
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:96
|
||||
#: ../SparkleShare/SparkleUI.cs:99
|
||||
msgid "Ouch! Mid-air collision!"
|
||||
msgstr "イテテ!空中衝突だ!"
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:97
|
||||
#: ../SparkleShare/SparkleUI.cs:100
|
||||
msgid "Don't worry, SparkleShare made a copy of each conflicting file."
|
||||
msgstr "心配しないでください。SparkleShareは、各競合しているファイルのコピーを作成しました。"
|
||||
|
||||
|
|
93
po/nl.po
|
@ -4,37 +4,40 @@
|
|||
# we apologise for any incovenience this may have caused and we hope to bring them
|
||||
# back in the future.
|
||||
#
|
||||
# <sven.koehler@student.hpi.uni-potsdam.de>, 2011.
|
||||
# <benjamincottyn@gmail.com>, 2011.
|
||||
# smeagiel <michielaiso@hotmail.com>, 2011.
|
||||
# Łukasz Jernaś <deejay1@srem.org>, 2011.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SparkleShare\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-06-17 12:09+0200\n"
|
||||
"PO-Revision-Date: 2011-06-17 10:13+0000\n"
|
||||
"Last-Translator: deejay1 <deejay1@srem.org>\n"
|
||||
"POT-Creation-Date: 2011-06-29 11:38+0200\n"
|
||||
"PO-Revision-Date: 2011-07-12 21:12+0000\n"
|
||||
"Last-Translator: tzwenn <sven.koehler@student.hpi.uni-potsdam.de>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: nl\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:338
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:337
|
||||
#: ../SparkleShare/SparkleIntro.cs:67 ../SparkleShare/SparkleStatusIcon.cs:345
|
||||
msgid "Welcome to SparkleShare!"
|
||||
msgstr "Welkom bij SparkleShare!"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:349
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:348
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:357
|
||||
msgid "Not everything is synced"
|
||||
msgstr "Niet alles is gesynchroniseerd"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:359
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:358
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:367
|
||||
msgid "Up to date"
|
||||
msgstr "Up-to-date"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:375
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:374
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:383
|
||||
msgid "Syncing…"
|
||||
msgstr "Synchroniseren…"
|
||||
|
@ -66,15 +69,15 @@ msgstr "Over SparkleShare"
|
|||
|
||||
#: ../SparkleShare/SparkleAbout.cs:53
|
||||
msgid "A newer version is available"
|
||||
msgstr ""
|
||||
msgstr "Een nieuwere versie is beschikbaar"
|
||||
|
||||
#: ../SparkleShare/SparkleAbout.cs:60
|
||||
msgid "You are running the latest version."
|
||||
msgstr ""
|
||||
msgstr "U werkt met de nieuwste versie."
|
||||
|
||||
#: ../SparkleShare/SparkleAbout.cs:87
|
||||
msgid "Checking for updates..."
|
||||
msgstr ""
|
||||
msgstr "Controleren op updates ..."
|
||||
|
||||
#: ../SparkleShare/SparkleAbout.cs:116
|
||||
msgid "_Show Credits"
|
||||
|
@ -84,42 +87,42 @@ msgstr ""
|
|||
msgid "_Visit Website"
|
||||
msgstr "_Bezoek website"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:422
|
||||
#: ../SparkleShare/SparkleController.cs:455
|
||||
msgid "ddd MMM d, yyyy"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:427
|
||||
#: ../SparkleShare/SparkleController.cs:460
|
||||
msgid "ddd MMM d"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:629
|
||||
#: ../SparkleShare/SparkleController.cs:661
|
||||
#, csharp-format
|
||||
msgid "added ‘{0}’"
|
||||
msgstr "voegde ‘{0}’ toe"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:634
|
||||
#: ../SparkleShare/SparkleController.cs:666
|
||||
#, csharp-format
|
||||
msgid "moved ‘{0}’"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:639
|
||||
#: ../SparkleShare/SparkleController.cs:671
|
||||
#, csharp-format
|
||||
msgid "edited ‘{0}’"
|
||||
msgstr "bewerkte ‘{0}’"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:644
|
||||
#: ../SparkleShare/SparkleController.cs:676
|
||||
#, csharp-format
|
||||
msgid "deleted ‘{0}’"
|
||||
msgstr "verwijderde ‘{0}’"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:653
|
||||
#: ../SparkleShare/SparkleController.cs:685
|
||||
#, csharp-format
|
||||
msgid "and {0} more"
|
||||
msgid_plural "and {0} more"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:657
|
||||
#: ../SparkleShare/SparkleController.cs:689
|
||||
msgid "did something magical"
|
||||
msgstr ""
|
||||
|
||||
|
@ -263,7 +266,7 @@ msgstr "Opnieuw proberen"
|
|||
#: ../SparkleShare/SparkleIntro.cs:473
|
||||
#, csharp-format
|
||||
msgid "‘{0}’ has been successfully added"
|
||||
msgstr ""
|
||||
msgstr "'{0}' is met succes toegevoegd"
|
||||
|
||||
#: ../SparkleShare/SparkleIntro.cs:482
|
||||
msgid "Folder synced successfully!"
|
||||
|
@ -318,76 +321,72 @@ msgstr "Leer hoe je je eigen SparkleServer kan opzetten"
|
|||
|
||||
#: ../SparkleShare/SparkleEventLog.cs:61
|
||||
msgid "Recent Events"
|
||||
msgstr ""
|
||||
msgstr "Recente gebeurtenissen"
|
||||
|
||||
#: ../SparkleShare/SparkleEventLog.cs:131
|
||||
#: ../SparkleShare/SparkleEventLog.cs:150
|
||||
#: ../SparkleShare/SparkleEventLog.cs:148
|
||||
#: ../SparkleShare/SparkleEventLog.cs:173
|
||||
msgid "All Folders"
|
||||
msgstr ""
|
||||
msgstr "Alle mappen"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:56
|
||||
#: ../SparkleShare/SparkleShare.cs:53
|
||||
msgid "Sorry, you can't run SparkleShare with these permissions."
|
||||
msgstr "Sorry, SparkleShare kan niet gedraaid worden met deze rechten."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:57
|
||||
#: ../SparkleShare/SparkleShare.cs:54
|
||||
msgid "Things would go utterly wrong."
|
||||
msgstr "Dingen zouden vresenlijk mis gaan"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:66
|
||||
msgid "Don't show the notification icon"
|
||||
msgstr "Toon het notificatiepictogram niet."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:67
|
||||
#: ../SparkleShare/SparkleShare.cs:61
|
||||
msgid "Print version information"
|
||||
msgstr "Druk versie-informatie af"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:68
|
||||
#: ../SparkleShare/SparkleShare.cs:62
|
||||
msgid "Show this help text"
|
||||
msgstr "Toon deze helptekst"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
#: ../SparkleShare/SparkleShare.cs:109
|
||||
msgid "SparkleShare, a collaboration and sharing tool."
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:116
|
||||
#: ../SparkleShare/SparkleShare.cs:110
|
||||
msgid "Copyright (C) 2010 Hylke Bons"
|
||||
msgstr "Copyright (C) 2010 Hylke Bons"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
#: ../SparkleShare/SparkleShare.cs:112
|
||||
msgid "This program comes with ABSOLUTELY NO WARRANTY."
|
||||
msgstr "Er zit ABSOLUUT GEEN GARANTIE op dit programma."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
#: ../SparkleShare/SparkleShare.cs:114
|
||||
msgid "This is free software, and you are welcome to redistribute it "
|
||||
msgstr ""
|
||||
"Dit is vrije software en je bent van harte uitgenodigd om het te "
|
||||
"herdistribueren "
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
msgid "under certain conditions. Please read the GNU GPLv3 for details."
|
||||
msgstr " onder bepaalde voorwaarden. Zie de GNU GPLv3 voor meer informatie."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
#: ../SparkleShare/SparkleShare.cs:117
|
||||
msgid "SparkleShare automatically syncs Git repositories in "
|
||||
msgstr "SparkleShare automatisch synchroniseerd Git repositories in "
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:124
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
msgid "the ~/SparkleShare folder with their remote origins."
|
||||
msgstr "de ~/SparkleShare map met de externe bron."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:126
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
msgid "Usage: sparkleshare [start|stop|restart] [OPTION]..."
|
||||
msgstr "Gebruik: sparkleshare [start|stop|restart] [OPTION]..."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:127
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
msgid "Sync SparkleShare folder with remote repositories."
|
||||
msgstr "Synchroniseer de SparkleShare map met externe repositories"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:129
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
msgid "Arguments:"
|
||||
msgstr "Argumenten"
|
||||
msgstr "Argumenten:"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:139
|
||||
#: ../SparkleShare/SparkleShare.cs:133
|
||||
msgid "SparkleShare "
|
||||
msgstr "SparkleShare "
|
||||
|
||||
|
@ -402,7 +401,7 @@ msgstr "Externe map toevoegen…"
|
|||
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:242
|
||||
msgid "Show Recent Events"
|
||||
msgstr ""
|
||||
msgstr "Toon recente gebeurtenissen"
|
||||
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:262
|
||||
msgid "Turn Notifications Off"
|
||||
|
@ -417,11 +416,11 @@ msgstr "Zet mededelingen aan"
|
|||
msgid "Quit"
|
||||
msgstr "Afsluiten"
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:96
|
||||
#: ../SparkleShare/SparkleUI.cs:99
|
||||
msgid "Ouch! Mid-air collision!"
|
||||
msgstr "Ouw! Botsing!"
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:97
|
||||
#: ../SparkleShare/SparkleUI.cs:100
|
||||
msgid "Don't worry, SparkleShare made a copy of each conflicting file."
|
||||
msgstr ""
|
||||
"Geen zorgen, SparkleShare heeft een kopie van elk conflicterend bestand "
|
||||
|
@ -429,6 +428,6 @@ msgstr ""
|
|||
|
||||
#: ../SparkleShare/SparkleWindow.cs:41
|
||||
msgid "SparkleShare Setup"
|
||||
msgstr ""
|
||||
msgstr "SparkleShare Setup"
|
||||
|
||||
|
||||
|
|
112
po/no_NO.po
|
@ -4,36 +4,38 @@
|
|||
# we apologise for any incovenience this may have caused and we hope to bring them
|
||||
# back in the future.
|
||||
#
|
||||
# <vegard.aarseth@gmail.com>, 2011.
|
||||
# habakke <habakke@matrise.net>, 2011.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SparkleShare\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-06-17 12:09+0200\n"
|
||||
"PO-Revision-Date: 2011-06-17 10:13+0000\n"
|
||||
"Last-Translator: deejay1 <deejay1@srem.org>\n"
|
||||
"POT-Creation-Date: 2011-06-29 11:38+0200\n"
|
||||
"PO-Revision-Date: 2011-07-05 10:29+0000\n"
|
||||
"Last-Translator: VegardAa <vegard.aarseth@gmail.com>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: no_NO\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:338
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:337
|
||||
#: ../SparkleShare/SparkleIntro.cs:67 ../SparkleShare/SparkleStatusIcon.cs:345
|
||||
msgid "Welcome to SparkleShare!"
|
||||
msgstr "Velkommen til SparkleShare!"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:349
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:348
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:357
|
||||
msgid "Not everything is synced"
|
||||
msgstr "Ikke alt er synkronisert"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:359
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:358
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:367
|
||||
msgid "Up to date"
|
||||
msgstr "Oppdatert"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:375
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:374
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:383
|
||||
msgid "Syncing…"
|
||||
msgstr "Synkroniserer..."
|
||||
|
@ -61,66 +63,66 @@ msgstr "Vel for å få en kopi av denne versjonen."
|
|||
#. A menu item that takes the user to http://www.sparkleshare.org/
|
||||
#: ../SparkleShare/SparkleAbout.cs:46 ../SparkleShare/SparkleStatusIcon.cs:275
|
||||
msgid "About SparkleShare"
|
||||
msgstr ""
|
||||
msgstr "Om SparkleShare"
|
||||
|
||||
#: ../SparkleShare/SparkleAbout.cs:53
|
||||
msgid "A newer version is available"
|
||||
msgstr ""
|
||||
msgstr "En nyere versjon er tilgjengelig"
|
||||
|
||||
#: ../SparkleShare/SparkleAbout.cs:60
|
||||
msgid "You are running the latest version."
|
||||
msgstr ""
|
||||
msgstr "Du kjører siste versjon"
|
||||
|
||||
#: ../SparkleShare/SparkleAbout.cs:87
|
||||
msgid "Checking for updates..."
|
||||
msgstr ""
|
||||
msgstr "Ser etter oppdateringer..."
|
||||
|
||||
#: ../SparkleShare/SparkleAbout.cs:116
|
||||
msgid "_Show Credits"
|
||||
msgstr ""
|
||||
msgstr "_Vis ...."
|
||||
|
||||
#: ../SparkleShare/SparkleAbout.cs:129
|
||||
msgid "_Visit Website"
|
||||
msgstr "_Besøk webside"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:422
|
||||
#: ../SparkleShare/SparkleController.cs:455
|
||||
msgid "ddd MMM d, yyyy"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:427
|
||||
#: ../SparkleShare/SparkleController.cs:460
|
||||
msgid "ddd MMM d"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:629
|
||||
#: ../SparkleShare/SparkleController.cs:661
|
||||
#, csharp-format
|
||||
msgid "added ‘{0}’"
|
||||
msgstr "la til '{0}'"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:634
|
||||
#: ../SparkleShare/SparkleController.cs:666
|
||||
#, csharp-format
|
||||
msgid "moved ‘{0}’"
|
||||
msgstr ""
|
||||
msgstr "Flyttet ‘{0}’"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:639
|
||||
#: ../SparkleShare/SparkleController.cs:671
|
||||
#, csharp-format
|
||||
msgid "edited ‘{0}’"
|
||||
msgstr "redigerte '{0}'"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:644
|
||||
#: ../SparkleShare/SparkleController.cs:676
|
||||
#, csharp-format
|
||||
msgid "deleted ‘{0}’"
|
||||
msgstr "slettet '{0}'"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:653
|
||||
#: ../SparkleShare/SparkleController.cs:685
|
||||
#, csharp-format
|
||||
msgid "and {0} more"
|
||||
msgid_plural "and {0} more"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:657
|
||||
#: ../SparkleShare/SparkleController.cs:689
|
||||
msgid "did something magical"
|
||||
msgstr ""
|
||||
msgstr "Gjorde noe magisk"
|
||||
|
||||
#: ../SparkleShare/SparkleIntro.cs:73
|
||||
msgid ""
|
||||
|
@ -148,7 +150,7 @@ msgstr "Konfigurerer..."
|
|||
|
||||
#: ../SparkleShare/SparkleIntro.cs:161
|
||||
msgid "Where is your remote folder?"
|
||||
msgstr "Hvor er din eksterne mappen?"
|
||||
msgstr "Hvor er din eksterne mappe?"
|
||||
|
||||
#: ../SparkleShare/SparkleIntro.cs:174
|
||||
msgid "address-to-server.com"
|
||||
|
@ -160,7 +162,7 @@ msgstr "På min egen server:"
|
|||
|
||||
#: ../SparkleShare/SparkleIntro.cs:186
|
||||
msgid "Free hosting for Free and Open Source Software projects."
|
||||
msgstr "Gratis hosting for Free og Åpne Kildekode prosjekter"
|
||||
msgstr "Gratis hosting for gratis og Åpen Kildekode prosjekter"
|
||||
|
||||
#: ../SparkleShare/SparkleIntro.cs:187
|
||||
msgid "Also has paid accounts for extra private space and bandwidth."
|
||||
|
@ -215,7 +217,7 @@ msgstr "Mappe Navn:"
|
|||
|
||||
#: ../SparkleShare/SparkleIntro.cs:269
|
||||
msgid "Sync"
|
||||
msgstr "Synk"
|
||||
msgstr "Synkroniser"
|
||||
|
||||
#: ../SparkleShare/SparkleIntro.cs:312
|
||||
msgid "Cancel"
|
||||
|
@ -243,7 +245,7 @@ msgstr "Aksepterer du denne invitasjonen?"
|
|||
|
||||
#: ../SparkleShare/SparkleIntro.cs:368
|
||||
msgid "Server Address:"
|
||||
msgstr "Server Adresse:"
|
||||
msgstr "Tjener Adresse:"
|
||||
|
||||
#: ../SparkleShare/SparkleIntro.cs:391
|
||||
msgid "Reject"
|
||||
|
@ -251,7 +253,7 @@ msgstr "Avvis"
|
|||
|
||||
#: ../SparkleShare/SparkleIntro.cs:392
|
||||
msgid "Accept and Sync"
|
||||
msgstr "Godta og Synk"
|
||||
msgstr "Godta og Synkroniser"
|
||||
|
||||
#: ../SparkleShare/SparkleIntro.cs:442
|
||||
msgid "Something went wrong…"
|
||||
|
@ -264,7 +266,7 @@ msgstr "Forsøk igjen"
|
|||
#: ../SparkleShare/SparkleIntro.cs:473
|
||||
#, csharp-format
|
||||
msgid "‘{0}’ has been successfully added"
|
||||
msgstr ""
|
||||
msgstr "‘{0}’ har blitt lagt til"
|
||||
|
||||
#: ../SparkleShare/SparkleIntro.cs:482
|
||||
msgid "Folder synced successfully!"
|
||||
|
@ -319,75 +321,71 @@ msgstr "Lær hvordan du kan være vert for din egen SparkleServer"
|
|||
|
||||
#: ../SparkleShare/SparkleEventLog.cs:61
|
||||
msgid "Recent Events"
|
||||
msgstr ""
|
||||
msgstr "Nylige hendelser"
|
||||
|
||||
#: ../SparkleShare/SparkleEventLog.cs:131
|
||||
#: ../SparkleShare/SparkleEventLog.cs:150
|
||||
#: ../SparkleShare/SparkleEventLog.cs:148
|
||||
#: ../SparkleShare/SparkleEventLog.cs:173
|
||||
msgid "All Folders"
|
||||
msgstr ""
|
||||
msgstr "Alle mapper"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:56
|
||||
#: ../SparkleShare/SparkleShare.cs:53
|
||||
msgid "Sorry, you can't run SparkleShare with these permissions."
|
||||
msgstr "Beklager, du kan ikke kjøre SparkleShare med disse tillatelsene."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:57
|
||||
#: ../SparkleShare/SparkleShare.cs:54
|
||||
msgid "Things would go utterly wrong."
|
||||
msgstr "Ting ville gå helt galt."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:66
|
||||
msgid "Don't show the notification icon"
|
||||
msgstr "Ikke vis varslingsikonet"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:67
|
||||
#: ../SparkleShare/SparkleShare.cs:61
|
||||
msgid "Print version information"
|
||||
msgstr "Print versjons informasjon"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:68
|
||||
#: ../SparkleShare/SparkleShare.cs:62
|
||||
msgid "Show this help text"
|
||||
msgstr "Vis denne hjelpeteksten"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
#: ../SparkleShare/SparkleShare.cs:109
|
||||
msgid "SparkleShare, a collaboration and sharing tool."
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:116
|
||||
#: ../SparkleShare/SparkleShare.cs:110
|
||||
msgid "Copyright (C) 2010 Hylke Bons"
|
||||
msgstr "Copyright (C) 2010 Hylke Bons"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
#: ../SparkleShare/SparkleShare.cs:112
|
||||
msgid "This program comes with ABSOLUTELY NO WARRANTY."
|
||||
msgstr "Dette programmet kommer med ABSOLUTT INGEN GARANTI."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
#: ../SparkleShare/SparkleShare.cs:114
|
||||
msgid "This is free software, and you are welcome to redistribute it "
|
||||
msgstr ""
|
||||
"Dette er fri programvare, og du er velkommen til å videredistribuere det"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
msgid "under certain conditions. Please read the GNU GPLv3 for details."
|
||||
msgstr "under visse vilkår. Vennligst les GNU GPLv3 for detaljer."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
#: ../SparkleShare/SparkleShare.cs:117
|
||||
msgid "SparkleShare automatically syncs Git repositories in "
|
||||
msgstr "SparkleShare synkroniserer automatisk Git repositories i"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:124
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
msgid "the ~/SparkleShare folder with their remote origins."
|
||||
msgstr "på ~ / SparkleShare mappe med deres eksterne opprinnelse."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:126
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
msgid "Usage: sparkleshare [start|stop|restart] [OPTION]..."
|
||||
msgstr "Bruk: sparkleshare [start | stop | restart] [VALG] ..."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:127
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
msgid "Sync SparkleShare folder with remote repositories."
|
||||
msgstr "Synkroniser SparkleShare mappe med eksterne repositories."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:129
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
msgid "Arguments:"
|
||||
msgstr "Argumenter:"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:139
|
||||
#: ../SparkleShare/SparkleShare.cs:133
|
||||
msgid "SparkleShare "
|
||||
msgstr "SparkleShare"
|
||||
|
||||
|
@ -398,30 +396,30 @@ msgstr "Ingen Eksterne Mapper Ennå"
|
|||
#. Opens the wizard to add a new remote folder
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:218
|
||||
msgid "Add Remote Folder…"
|
||||
msgstr ""
|
||||
msgstr "Legg til esktern mappe..."
|
||||
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:242
|
||||
msgid "Show Recent Events"
|
||||
msgstr ""
|
||||
msgstr "Vis nylige hendelser"
|
||||
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:262
|
||||
msgid "Turn Notifications Off"
|
||||
msgstr ""
|
||||
msgstr "Slå av varslinger"
|
||||
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:264
|
||||
msgid "Turn Notifications On"
|
||||
msgstr ""
|
||||
msgstr "Slå på varslinger"
|
||||
|
||||
#. A menu item that quits the application
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:286
|
||||
msgid "Quit"
|
||||
msgstr "Avslutt"
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:96
|
||||
#: ../SparkleShare/SparkleUI.cs:99
|
||||
msgid "Ouch! Mid-air collision!"
|
||||
msgstr "Au! Kollisjon midt i luften!"
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:97
|
||||
#: ../SparkleShare/SparkleUI.cs:100
|
||||
msgid "Don't worry, SparkleShare made a copy of each conflicting file."
|
||||
msgstr ""
|
||||
"Ikke bekymre deg, SparkleShare laget en kopi av hver motstridende fil."
|
||||
|
|
85
po/pl.po
|
@ -9,31 +9,32 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: SparkleShare\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-06-17 12:09+0200\n"
|
||||
"PO-Revision-Date: 2011-06-17 10:13+0000\n"
|
||||
"POT-Creation-Date: 2011-06-29 11:38+0200\n"
|
||||
"PO-Revision-Date: 2011-07-02 16:58+0000\n"
|
||||
"Last-Translator: deejay1 <deejay1@srem.org>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: pl\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:338
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:337
|
||||
#: ../SparkleShare/SparkleIntro.cs:67 ../SparkleShare/SparkleStatusIcon.cs:345
|
||||
msgid "Welcome to SparkleShare!"
|
||||
msgstr "Witamy w programie SparkleShare!"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:349
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:348
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:357
|
||||
msgid "Not everything is synced"
|
||||
msgstr "Nie wszystko zostało zsynchronizowane"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:359
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:358
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:367
|
||||
msgid "Up to date"
|
||||
msgstr "Wszystko jest aktualne"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:375
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:374
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:383
|
||||
msgid "Syncing…"
|
||||
msgstr "Synchronizowanie…"
|
||||
|
@ -65,15 +66,15 @@ msgstr "Informacje o"
|
|||
|
||||
#: ../SparkleShare/SparkleAbout.cs:53
|
||||
msgid "A newer version is available"
|
||||
msgstr ""
|
||||
msgstr "Dostępna jest nowsza wersja"
|
||||
|
||||
#: ../SparkleShare/SparkleAbout.cs:60
|
||||
msgid "You are running the latest version."
|
||||
msgstr ""
|
||||
msgstr "Korzystasz z najnowszej wersji."
|
||||
|
||||
#: ../SparkleShare/SparkleAbout.cs:87
|
||||
msgid "Checking for updates..."
|
||||
msgstr ""
|
||||
msgstr "Wyszukiwanie aktualizacji"
|
||||
|
||||
#: ../SparkleShare/SparkleAbout.cs:116
|
||||
msgid "_Show Credits"
|
||||
|
@ -83,35 +84,35 @@ msgstr "Za_sługi"
|
|||
msgid "_Visit Website"
|
||||
msgstr "_Odwiedź stronę domową"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:422
|
||||
#: ../SparkleShare/SparkleController.cs:455
|
||||
msgid "ddd MMM d, yyyy"
|
||||
msgstr "ddd, d MMM yyyy"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:427
|
||||
#: ../SparkleShare/SparkleController.cs:460
|
||||
msgid "ddd MMM d"
|
||||
msgstr "ddd, d MMM"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:629
|
||||
#: ../SparkleShare/SparkleController.cs:661
|
||||
#, csharp-format
|
||||
msgid "added ‘{0}’"
|
||||
msgstr "dodano „{0}”"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:634
|
||||
#: ../SparkleShare/SparkleController.cs:666
|
||||
#, csharp-format
|
||||
msgid "moved ‘{0}’"
|
||||
msgstr "przesunięto \"{0}\""
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:639
|
||||
#: ../SparkleShare/SparkleController.cs:671
|
||||
#, csharp-format
|
||||
msgid "edited ‘{0}’"
|
||||
msgstr "edytowano „{0}”"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:644
|
||||
#: ../SparkleShare/SparkleController.cs:676
|
||||
#, csharp-format
|
||||
msgid "deleted ‘{0}’"
|
||||
msgstr "usunięto „{0}”"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:653
|
||||
#: ../SparkleShare/SparkleController.cs:685
|
||||
#, csharp-format
|
||||
msgid "and {0} more"
|
||||
msgid_plural "and {0} more"
|
||||
|
@ -119,7 +120,7 @@ msgstr[0] "oraz {0} więcej"
|
|||
msgstr[1] "oraz {0} więcej"
|
||||
msgstr[2] "oraz {0} więcej"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:657
|
||||
#: ../SparkleShare/SparkleController.cs:689
|
||||
msgid "did something magical"
|
||||
msgstr "wydarzyło się coś magicznego"
|
||||
|
||||
|
@ -318,83 +319,79 @@ msgstr "Dowiedz się, jak postawić własny SparkleServer"
|
|||
|
||||
#: ../SparkleShare/SparkleEventLog.cs:61
|
||||
msgid "Recent Events"
|
||||
msgstr ""
|
||||
msgstr "Ostatnie zdarzenia"
|
||||
|
||||
#: ../SparkleShare/SparkleEventLog.cs:131
|
||||
#: ../SparkleShare/SparkleEventLog.cs:150
|
||||
#: ../SparkleShare/SparkleEventLog.cs:148
|
||||
#: ../SparkleShare/SparkleEventLog.cs:173
|
||||
msgid "All Folders"
|
||||
msgstr ""
|
||||
msgstr "Wszystkie katalogi"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:56
|
||||
#: ../SparkleShare/SparkleShare.cs:53
|
||||
msgid "Sorry, you can't run SparkleShare with these permissions."
|
||||
msgstr ""
|
||||
"Przepraszamy, nie można uruchomić programu SparkleShare z bieżącymi "
|
||||
"uprawnieniami."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:57
|
||||
#: ../SparkleShare/SparkleShare.cs:54
|
||||
msgid "Things would go utterly wrong."
|
||||
msgstr "Może to spowodować nieprzewidziane skutki."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:66
|
||||
msgid "Don't show the notification icon"
|
||||
msgstr "Wyłącza wyświetlanie ikony w obszarze powiadamiania"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:67
|
||||
#: ../SparkleShare/SparkleShare.cs:61
|
||||
msgid "Print version information"
|
||||
msgstr "Wyświetla informacje o wersji"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:68
|
||||
#: ../SparkleShare/SparkleShare.cs:62
|
||||
msgid "Show this help text"
|
||||
msgstr "Wyświetla opcje pomocy"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
#: ../SparkleShare/SparkleShare.cs:109
|
||||
msgid "SparkleShare, a collaboration and sharing tool."
|
||||
msgstr "SparkleShare ‒ narzędzie wspomagające współpracę."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:116
|
||||
#: ../SparkleShare/SparkleShare.cs:110
|
||||
msgid "Copyright (C) 2010 Hylke Bons"
|
||||
msgstr "Copyright (C) 2010 Hylke Bons"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
#: ../SparkleShare/SparkleShare.cs:112
|
||||
msgid "This program comes with ABSOLUTELY NO WARRANTY."
|
||||
msgstr "Niniejszy program dostarczany jest BEZ JAKIEJKOLWIEK GWARANCJI."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
#: ../SparkleShare/SparkleShare.cs:114
|
||||
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."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
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."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
#: ../SparkleShare/SparkleShare.cs:117
|
||||
msgid "SparkleShare automatically syncs Git repositories in "
|
||||
msgstr ""
|
||||
"Program SparkleShare automatycznie synchronizuje reozytoria Git znajdujące "
|
||||
"się"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:124
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
msgid "the ~/SparkleShare folder with their remote origins."
|
||||
msgstr "w katalogu ~/SparkleShare z ich zdalnymi gałęziami."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:126
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
msgid "Usage: sparkleshare [start|stop|restart] [OPTION]..."
|
||||
msgstr "Użycie: sparkleshare [start|stop|restart] [OPCJA]..."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:127
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
msgid "Sync SparkleShare folder with remote repositories."
|
||||
msgstr ""
|
||||
"Synchronizuj zawartość katalogu SparkleShare ze zdalnymi repozytoriami."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:129
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
msgid "Arguments:"
|
||||
msgstr "Parametry:"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:139
|
||||
#: ../SparkleShare/SparkleShare.cs:133
|
||||
msgid "SparkleShare "
|
||||
msgstr "SparkleShare"
|
||||
|
||||
|
@ -409,7 +406,7 @@ msgstr "Dodaj zdalny katalog"
|
|||
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:242
|
||||
msgid "Show Recent Events"
|
||||
msgstr ""
|
||||
msgstr "Wyświetl ostatnie zdarzenia"
|
||||
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:262
|
||||
msgid "Turn Notifications Off"
|
||||
|
@ -424,16 +421,16 @@ msgstr "Włącz powiadomienia"
|
|||
msgid "Quit"
|
||||
msgstr "Zakończ"
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:96
|
||||
#: ../SparkleShare/SparkleUI.cs:99
|
||||
msgid "Ouch! Mid-air collision!"
|
||||
msgstr "Ups! Nastąpiło czołowe zderzenie! "
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:97
|
||||
#: ../SparkleShare/SparkleUI.cs:100
|
||||
msgid "Don't worry, SparkleShare made a copy of each conflicting file."
|
||||
msgstr "Bez obaw, program SparkleShare wykonał kopię skonfliktowanych plików."
|
||||
|
||||
#: ../SparkleShare/SparkleWindow.cs:41
|
||||
msgid "SparkleShare Setup"
|
||||
msgstr ""
|
||||
msgstr "Ustawienia programu SparkleShare"
|
||||
|
||||
|
||||
|
|
71
po/pt_BR.po
|
@ -10,31 +10,32 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: SparkleShare\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-06-17 12:09+0200\n"
|
||||
"PO-Revision-Date: 2011-06-17 10:13+0000\n"
|
||||
"POT-Creation-Date: 2011-06-29 11:38+0200\n"
|
||||
"PO-Revision-Date: 2011-06-26 09:22+0000\n"
|
||||
"Last-Translator: deejay1 <deejay1@srem.org>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: pt_BR\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:338
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:337
|
||||
#: ../SparkleShare/SparkleIntro.cs:67 ../SparkleShare/SparkleStatusIcon.cs:345
|
||||
msgid "Welcome to SparkleShare!"
|
||||
msgstr "Bem-vindo ao SparkleShare!"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:349
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:348
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:357
|
||||
msgid "Not everything is synced"
|
||||
msgstr "Nem tudo foi sincronizado"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:359
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:358
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:367
|
||||
msgid "Up to date"
|
||||
msgstr "Atualizado"
|
||||
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:375
|
||||
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:374
|
||||
#: ../SparkleShare/SparkleStatusIcon.cs:383
|
||||
msgid "Syncing…"
|
||||
msgstr "Sincronizando…"
|
||||
|
@ -84,42 +85,42 @@ msgstr "_Exibir os Créditos"
|
|||
msgid "_Visit Website"
|
||||
msgstr "Visite o site"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:422
|
||||
#: ../SparkleShare/SparkleController.cs:455
|
||||
msgid "ddd MMM d, yyyy"
|
||||
msgstr "ddd d MMM yyyy"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:427
|
||||
#: ../SparkleShare/SparkleController.cs:460
|
||||
msgid "ddd MMM d"
|
||||
msgstr "ddd d MMM"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:629
|
||||
#: ../SparkleShare/SparkleController.cs:661
|
||||
#, csharp-format
|
||||
msgid "added ‘{0}’"
|
||||
msgstr "incluído '{0}'"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:634
|
||||
#: ../SparkleShare/SparkleController.cs:666
|
||||
#, csharp-format
|
||||
msgid "moved ‘{0}’"
|
||||
msgstr "'{0}' movida"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:639
|
||||
#: ../SparkleShare/SparkleController.cs:671
|
||||
#, csharp-format
|
||||
msgid "edited ‘{0}’"
|
||||
msgstr "editado '{0}'"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:644
|
||||
#: ../SparkleShare/SparkleController.cs:676
|
||||
#, csharp-format
|
||||
msgid "deleted ‘{0}’"
|
||||
msgstr "excluído '{0}'"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:653
|
||||
#: ../SparkleShare/SparkleController.cs:685
|
||||
#, csharp-format
|
||||
msgid "and {0} more"
|
||||
msgid_plural "and {0} more"
|
||||
msgstr[0] "e {0} mais"
|
||||
msgstr[1] "e {0} mais"
|
||||
|
||||
#: ../SparkleShare/SparkleController.cs:657
|
||||
#: ../SparkleShare/SparkleController.cs:689
|
||||
msgid "did something magical"
|
||||
msgstr "Algo mágico aconteceu"
|
||||
|
||||
|
@ -321,73 +322,69 @@ msgstr "Aprenda a hospedar o seu próprio SparkleServer"
|
|||
msgid "Recent Events"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleEventLog.cs:131
|
||||
#: ../SparkleShare/SparkleEventLog.cs:150
|
||||
#: ../SparkleShare/SparkleEventLog.cs:148
|
||||
#: ../SparkleShare/SparkleEventLog.cs:173
|
||||
msgid "All Folders"
|
||||
msgstr ""
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:56
|
||||
#: ../SparkleShare/SparkleShare.cs:53
|
||||
msgid "Sorry, you can't run SparkleShare with these permissions."
|
||||
msgstr "Descuple, você não pode rodar o SparkleShare sem essas permissões."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:57
|
||||
#: ../SparkleShare/SparkleShare.cs:54
|
||||
msgid "Things would go utterly wrong."
|
||||
msgstr "Algo vai dar muito errado."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:66
|
||||
msgid "Don't show the notification icon"
|
||||
msgstr "Não exibir o ícone de notificação"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:67
|
||||
#: ../SparkleShare/SparkleShare.cs:61
|
||||
msgid "Print version information"
|
||||
msgstr "Imprimir informações da versão"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:68
|
||||
#: ../SparkleShare/SparkleShare.cs:62
|
||||
msgid "Show this help text"
|
||||
msgstr "Exibir esse texto de ajuda"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
#: ../SparkleShare/SparkleShare.cs:109
|
||||
msgid "SparkleShare, a collaboration and sharing tool."
|
||||
msgstr "SparkleShare, uma ferramenta de colaboração e compartilhamento"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:116
|
||||
#: ../SparkleShare/SparkleShare.cs:110
|
||||
msgid "Copyright (C) 2010 Hylke Bons"
|
||||
msgstr "Copyright (C) 2010 Hylke Bons - Todos os direitos reservados"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
#: ../SparkleShare/SparkleShare.cs:112
|
||||
msgid "This program comes with ABSOLUTELY NO WARRANTY."
|
||||
msgstr "Este programa vem com ABSOLUTAMENTE NENHUMA GARANTIA."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
#: ../SparkleShare/SparkleShare.cs:114
|
||||
msgid "This is free software, and you are welcome to redistribute it "
|
||||
msgstr "Este é um software livre, e você está convidado a distribuí-lo"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
#: ../SparkleShare/SparkleShare.cs:115
|
||||
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."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
#: ../SparkleShare/SparkleShare.cs:117
|
||||
msgid "SparkleShare automatically syncs Git repositories in "
|
||||
msgstr "O SparkleShare sincroniza os repositórios do Git automaticamente"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:124
|
||||
#: ../SparkleShare/SparkleShare.cs:118
|
||||
msgid "the ~/SparkleShare folder with their remote origins."
|
||||
msgstr "a pasta ~/SparkleShare com suas origens remotas"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:126
|
||||
#: ../SparkleShare/SparkleShare.cs:120
|
||||
msgid "Usage: sparkleshare [start|stop|restart] [OPTION]..."
|
||||
msgstr "Utilização: sparkleshare [start|stop|restart] [OPÇÕES]..."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:127
|
||||
#: ../SparkleShare/SparkleShare.cs:121
|
||||
msgid "Sync SparkleShare folder with remote repositories."
|
||||
msgstr "Sincroniza a pasta SparkleShare com repositórios remotos."
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:129
|
||||
#: ../SparkleShare/SparkleShare.cs:123
|
||||
msgid "Arguments:"
|
||||
msgstr "Argumentos:"
|
||||
|
||||
#: ../SparkleShare/SparkleShare.cs:139
|
||||
#: ../SparkleShare/SparkleShare.cs:133
|
||||
msgid "SparkleShare "
|
||||
msgstr "SparkleShare"
|
||||
|
||||
|
@ -417,11 +414,11 @@ msgstr "Ligar as notificações"
|
|||
msgid "Quit"
|
||||
msgstr "Sair"
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:96
|
||||
#: ../SparkleShare/SparkleUI.cs:99
|
||||
msgid "Ouch! Mid-air collision!"
|
||||
msgstr "Ops! Colisão em pleno vôo!"
|
||||
|
||||
#: ../SparkleShare/SparkleUI.cs:97
|
||||
#: ../SparkleShare/SparkleUI.cs:100
|
||||
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."
|
||||
|
|