Compare commits

..

1 commit

Author SHA1 Message Date
Hylke Bons
9388930566 controller: Fix moving of project folder across devices/partitions/volumes 2018-05-10 09:52:54 +01:00
114 changed files with 1405 additions and 3185 deletions

1
.github/AUTHORS.md vendored
View file

@ -20,7 +20,6 @@ Code:
Luis Cordova <cordoval@gmail.com>
Łukasz Jernaś <deejay1@srem.org>
Markus Stoll <post@mstoll.de>
Malte Kiefer <malte.kiefer@mailgermania.de>
Michael Monreal <michael.monreal@gmail.com>
Nick Richards <nick@nickr.org>
Oleg Khlystov <pktfag@gmail.com>

1
.github/FUNDING.yml vendored
View file

@ -1 +0,0 @@
github: hbons

3
.gitignore vendored
View file

@ -18,8 +18,8 @@ obj/
git-*
Sparkles/InstallationInfo.Directory.cs
SparkleShare/Linux/sparkleshare
SparkleShare/Mac/git/*
SparkleShare/Mac/git*
SparkleShare/Mac/*.tar.gz
/sparkleshare-*
desktop.ini
_ReSharper.*
@ -29,7 +29,6 @@ _ReSharper.*
*.wxs
*.dotCover
SparkleShare/Windows/build/
.vs/
# NuGet Packages
*.nupkg

View file

@ -9,7 +9,7 @@ matrix:
sudo: required
before_install:
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then docker pull ubuntu:xenial ; fi
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then docker pull ubuntu:17.10 ; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then wget https://dl.xamarin.com/XamarinforMac/Mac/xamarin.mac-3.0.0.393.pkg ; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then sudo installer -pkg xamarin.mac*.pkg -target / ; fi

View file

@ -1,44 +1,25 @@
# [SparkleShare](https://www.sparkleshare.org/)
[SparkleShare](https://www.sparkleshare.org/) is a file sharing and collaboration app. It works just like Dropbox, and you can run it on your own server. It's available for Linux distributions, macOS, and Windows.
[SparkleShare](https://www.sparkleshare.org/) is a file sharing and collaboration app. It works just like Dropbox, and you can run it on your own server. It's available for Linux distributions, macOS, and Windows. [Support the project on Patreon](https://www.patreon.com/SparkleShare).
![Banner](https://raw.githubusercontent.com/hbons/SparkleShare/master/SparkleShare/Common/Images/readme-banner.png)
You can support this project through [💕 GitHub Sponsors](https://github.com/sponsors/hbons).
## How does it work?
SparkleShare creates a special folder on your computer. You can add remotely hosted folders (or "projects") to this folder. These projects will be automatically kept in sync with both the host and all of your peers when someone adds, removes or edits a file.
## Install on Ubuntu or Fedora
You can install the package from your distribution (likely old and not updated often), but we recommend to get our Flatpak with automatic updates to always enjoy the latest and greatest:
```bash
flatpak remote-add flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install flathub org.sparkleshare.SparkleShare
```
Now you can run SparkleShare from the apps menu.
**Note:** by default SparkleShare uses an AppIndicator status icon on Linux. If you use GNOME on a distribution other than Ubuntu, please install the [AppIndicator extension](https://extensions.gnome.org/extension/615/appindicator-support/). If you don't use GNOME, you can start SparkleShare with `--status-icon=gtk`.
## Install on macOS
Download the app from the [releases page](https://github.com/hbons/SparkleShare/releases).
## Set up a host
Under the hood SparkleShare uses the version control system [Git](https://git-scm.com/) and the large files extension [Git LFS](https://git-lfs.github.com), so setting up a host yourself is relatively easy. Using your own host gives you more privacy and control, as well as lots of cheap storage space and higher transfer speeds. We've made a simple [script](https://github.com/hbons/Dazzle) that does the hard work for you. If you need to manage a lot of projects and/or users we recommend hosting a [GitLab Community Edition](https://about.gitlab.com/installation/) instance.
## Build from source
`SparkleShare` is Free and Open Source software and licensed under the [GNU GPLv3 or later](LICENSE.md). You are welcome to change and redistribute it under certain conditions. Its library `Sparkles` is licensed under the [GNU LGPLv3 or later](LICENSE_Sparkles.md).
`SparkleShare` is Free and Open Source software and licensed under the [GNU GPLv3 or later](legal/License_for_SparkleShare.txt). You are welcome to change and redistribute it under certain conditions. Its library `Sparkles` is licensed under the [GNU LGPLv3 or later](legal/License_for_Sparkles.txt).
Here are instructions to build SparkleShare on [Linux distributions](SparkleShare/Linux/README.md), [macOS](SparkleShare/Mac/README.md), and [Windows](SparkleShare/Windows/README.md).
Note: on some Linux distributions you'll need the [TopIcons extension](https://extensions.gnome.org/extension/495/topicons/) for GNOME Shell to show the SparkleShare status icon.
[![Build Status](https://travis-ci.org/hbons/SparkleShare.svg?branch=master)](https://travis-ci.org/hbons/SparkleShare)
[![Join the chat at https://gitter.im/hbons/SparkleShare](https://badges.gitter.im/hbons/SparkleShare.svg)](https://gitter.im/hbons/SparkleShare?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)

View file

@ -1,34 +1,24 @@
3.38.0 (Sun 29 Nov, 2020):
- Added support for LibRAavatar
- Updated Gravatar cert fingerprint
- Removed planio from supported presets
- Support default branches that are not named 'master'
- Added support for nightly Flatpak builds
3.28.0 (Sat 14 Jul, 2018):
3.28.0 (Fri Mar 16, 2018):
Fixed a bunch of crashes and lots of under-the-hood improvements.
SparkleShare will now follow the GNOME release schedule and version
number scheme as much as possible.
Please make sure to install the AppIndicator Support GNOME Shell extension
(https://extensions.gnome.org/extension/615/appindicator-support/) to display
status icons in GNOME 3.26 or later. Or start with --status-icon=gtk.
Please make sure to install the TopIcons GNOME Shell extension
(https://extensions.gnome.org/extension/495/topicons/) to display
status icons in GNOME 3.26 or later.
Linux:
- Use the Meson build system
- Use appindicator as the default status icon
- Fix event log parsing for newer versions of Git
- Fix status icon lookup for some cases
- Fix eventlog parsing for newer versions of Git
- Flatpak improvements
macOS:
- Fix the system font in eventlog and related crash
- Fix the system font in eventlog and related crash
- Fix hang when quitting the app
Special thanks to Thiago Santos and Renpytom for supporting the project on Patreon.
2.0.1 (Tue 19 Dec, 2017):

View file

@ -32,7 +32,7 @@ namespace SparkleShare {
public delegate void UpdateLabelEventDelegate (string text);
public readonly string WebsiteLinkAddress = "https://www.sparkleshare.org/";
public readonly string CreditsLinkAddress = "https://github.com/hbons/SparkleShare/blob/master/.github/AUTHORS.md";
public readonly string CreditsLinkAddress = "https://github.com/hbons/SparkleShare/blob/master/legal/Authors.txt";
public readonly string ReportProblemLinkAddress = "https://www.github.com/hbons/SparkleShare/issues";
public readonly string DebugLogLinkAddress = "file://" + SparkleShare.Controller.Config.LogFilePath;
@ -61,10 +61,8 @@ namespace SparkleShare {
UpdateLabelEvent ("Checking for updates…");
Thread.Sleep (500);
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
var web_client = new WebClient ();
var uri = new Uri ("https://www.sparkleshare.org/version");
var uri = new Uri ("http://www.sparkleshare.org/version");
try {
string latest_version = web_client.DownloadString (uri);

View file

@ -32,11 +32,10 @@ namespace SparkleShare
static List<string> skipped_avatars = new List<string> ();
public static string GetAvatar (string email, int size, string target_path, string provider)
public static string GetAvatar (string email, int size, string target_path)
{
#if __MonoCS__
if (provider == "gravatar")
ServicePointManager.ServerCertificateValidationCallback = GetGravatarValidationCallBack;
ServicePointManager.ServerCertificateValidationCallback = GetAvatarValidationCallBack;
#endif
email = email.ToLower ();
@ -69,12 +68,7 @@ namespace SparkleShare
}
var client = new WebClient ();
string url = "";
if (provider == "libravatar")
url = "https://seccdn.libravatar.org/avatar/" + email.MD5 () + ".png?s=" + size + "&d=404";
else
url = "https://secure.gravatar.com/avatar/" + email.MD5 () + ".png?s=" + size + "&d=404";
string url = "https://gravatar.com/avatar/" + email.MD5 () + ".png?s=" + size + "&d=404";
try {
byte [] buffer = client.DownloadData (url);
@ -113,7 +107,7 @@ namespace SparkleShare
}
private static bool GetGravatarValidationCallBack (Object sender,
private static bool GetAvatarValidationCallBack (Object sender,
X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
{
X509Certificate2 certificate2 = new X509Certificate2 (certificate.GetRawCertData ());
@ -121,10 +115,9 @@ namespace SparkleShare
// On some systems (mostly Linux) we can't assume the needed certificates are
// available, so we have to check the certificate's SHA-1 fingerprint manually.
//
// SHA1 fingerprinter obtained from https://www.gravatar.com/ on Oct 23 2020
// Set to expire on Nov 16 2022
string gravatar_cert_fingerprint = "846963703FD297724E91BDF47FFE4BC19E93EA15";
// SHA1 fingerprinter obtained from https://www.gravatar.com/ on Oct 16 2015
// Set to expire on Oct 14 2018
string gravatar_cert_fingerprint = "1264B3F00814C6077D3853238771EE67FB6321C9";
if (!certificate2.Thumbprint.Equals (gravatar_cert_fingerprint)) {
Logger.LogInfo ("Avatars", "Invalid certificate for https://www.gravatar.com/");

View file

@ -153,16 +153,6 @@ namespace SparkleShare {
}
}
public string AvatarsProvider {
get {
string avatars_provider_string = Config.GetConfigOption ("avatars_provider");
if (avatars_provider_string == null)
return "gravatar";
return avatars_provider_string;
}
}
// Path where the plugins are kept
public abstract string PresetsPath { get; }
@ -461,16 +451,8 @@ namespace SparkleShare {
};
repo.NewChangeSet += delegate (ChangeSet change_set) {
if (AvatarsEnabled) {
string provider = "gravatar";
if (AvatarsProvider == "libravatar")
provider = AvatarsProvider;
change_set.User.AvatarFilePath = Avatars.GetAvatar (change_set.User.Email, 48, Config.DirectoryPath, provider);
}
if (AvatarsEnabled)
change_set.User.AvatarFilePath = Avatars.GetAvatar (change_set.User.Email, 48, Config.DirectoryPath);
NotificationRaised (change_set);
};
@ -668,24 +650,27 @@ namespace SparkleShare {
string target_folder_path = DetermineFolderPath ();
string target_folder_name = Path.GetFileName (target_folder_path);
ClearDirectoryAttributes (this.fetcher.TargetFolder);
try {
Directory.Move (this.fetcher.TargetFolder, target_folder_path);
} catch (IOException) {
Logger.LogInfo ("Controller", "Moving directory across devices/partitions/volumes...");
// Moving doesn't work across devices/partitions/volumes, so copy recursively and then delete
CopyDirectoryRecursively (new DirectoryInfo (this.fetcher.TargetFolder), new DirectoryInfo (target_folder_path));
Directory.Delete (this.fetcher.TargetFolder, recursive: true);
} catch (Exception e) {
Logger.LogInfo ("Controller", "Error moving directory, trying again...", e);
Logger.LogInfo ("Controller", "Error moving directory", e);
try {
ClearDirectoryAttributes (this.fetcher.TargetFolder);
Directory.Move (this.fetcher.TargetFolder, target_folder_path);
this.fetcher.Dispose ();
this.fetcher = null;
} catch (Exception x) {
Logger.LogInfo ("Controller", "Error moving directory", x);
this.watcher.EnableRaisingEvents = true;
this.fetcher.Dispose ();
this.fetcher = null;
this.watcher.EnableRaisingEvents = true;
return;
}
return;
}
string backend = BaseFetcher.GetBackend (this.fetcher.RemoteUrl.ToString ());
@ -759,5 +744,15 @@ namespace SparkleShare {
if (file.IsSymlink ())
File.SetAttributes (file, FileAttributes.Normal);
}
void CopyDirectoryRecursively (DirectoryInfo source_dir, DirectoryInfo target_dir)
{
foreach (DirectoryInfo dir in source_dir.GetDirectories ())
CopyDirectoryRecursively (dir, target_dir.CreateSubdirectory (dir.Name));
foreach (FileInfo file in source_dir.GetFiles ())
file.CopyTo (Path.Combine (target_dir.FullName, file.Name));
}
}
}

View file

@ -21,20 +21,13 @@ using Sparkles;
namespace SparkleShare {
public class BubblesController {
private bool fix_utf_encoding;
public event ShowBubbleEventHandler ShowBubbleEvent = delegate { };
public delegate void ShowBubbleEventHandler (string title, string subtext, string image_path);
public BubblesController () : this(true)
public BubblesController ()
{
}
public BubblesController (bool fix_utf_encoding)
{
this.fix_utf_encoding = fix_utf_encoding;
SparkleShare.Controller.AlertNotificationRaised += delegate (string title, string message) {
ShowBubble (title, message, null);
};
@ -47,13 +40,10 @@ namespace SparkleShare {
public void ShowBubble (string title, string subtext, string image_path)
{
if(fix_utf_encoding)
{
byte [] title_bytes = Encoding.Default.GetBytes (title);
byte [] subtext_bytes = Encoding.Default.GetBytes (subtext);
title = Encoding.UTF8.GetString (title_bytes);
subtext = Encoding.UTF8.GetString (subtext_bytes);
}
byte [] title_bytes = Encoding.Default.GetBytes (title);
byte [] subtext_bytes = Encoding.Default.GetBytes (subtext);
title = Encoding.UTF8.GetString (title_bytes);
subtext = Encoding.UTF8.GetString (subtext_bytes);
ShowBubbleEvent (title, subtext, image_path);
}

View file

@ -53,7 +53,7 @@ namespace SparkleShare {
private string selected_folder;
private RevisionInfo restore_revision_info;
private bool history_view_active;
private bool fix_utf_encoding;
public bool WindowIsOpen { get; private set; }
@ -144,14 +144,8 @@ namespace SparkleShare {
}
public EventLogController () : this (true)
public EventLogController ()
{
}
public EventLogController (bool fix_utf_encoding)
{
this.fix_utf_encoding = fix_utf_encoding;
SparkleShare.Controller.ShowEventLogWindowEvent += delegate {
if (!WindowIsOpen) {
ContentLoadingEvent ();
@ -263,11 +257,8 @@ namespace SparkleShare {
string folder = href.Replace ("history://", "").Split ("/".ToCharArray ()) [0];
string file_path = href.Replace ("history://" + folder + "/", "");
if(fix_utf_encoding)
{
byte [] file_path_bytes = Encoding.Default.GetBytes (file_path);
file_path = Encoding.UTF8.GetString (file_path_bytes);
}
byte [] file_path_bytes = Encoding.Default.GetBytes (file_path);
file_path = Encoding.UTF8.GetString (file_path_bytes);
file_path = Uri.UnescapeDataString (file_path);
@ -545,13 +536,10 @@ namespace SparkleShare {
private string FormatBreadCrumbs (string path_root, string path)
{
if(fix_utf_encoding)
{
byte [] path_root_bytes = Encoding.Default.GetBytes (path_root);
byte [] path_bytes = Encoding.Default.GetBytes (path);
path_root = Encoding.UTF8.GetString (path_root_bytes);
path = Encoding.UTF8.GetString (path_bytes);
}
byte [] path_root_bytes = Encoding.Default.GetBytes (path_root);
byte [] path_bytes = Encoding.Default.GetBytes (path);
path_root = Encoding.UTF8.GetString (path_root_bytes);
path = Encoding.UTF8.GetString (path_bytes);
path_root = path_root.Replace ("/", Path.DirectorySeparatorChar.ToString ());
path = path.Replace ("/", Path.DirectorySeparatorChar.ToString ());
@ -610,7 +598,7 @@ namespace SparkleShare {
if (!SparkleShare.Controller.AvatarsEnabled)
return "<!-- $pixmaps-path -->/user-icon-default.png";
string fetched_avatar = Avatars.GetAvatar (user.Email, 48, SparkleShare.Controller.Config.DirectoryPath, SparkleShare.Controller.AvatarsProvider);
string fetched_avatar = Avatars.GetAvatar (user.Email, 48, SparkleShare.Controller.Config.DirectoryPath);
if (!string.IsNullOrEmpty (fetched_avatar))
return "file://" + fetched_avatar.Replace ("\\", "/");

File diff suppressed because it is too large Load diff

Before

Width:  |  Height:  |  Size: 122 KiB

After

Width:  |  Height:  |  Size: 99 KiB

View file

@ -0,0 +1,182 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg9662"
height="24"
width="24"
version="1.1"
inkscape:version="0.91+devel r14094"
sodipodi:docname="planio.svg"
viewBox="0 0 24 24"
inkscape:export-filename="/Users/hbons/Personal/Projects/SparkleShare/SparkleShare/Common/Presets/planio.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96">
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1280"
inkscape:window-height="755"
id="namedview4365"
inkscape:document-units="px"
showgrid="false"
inkscape:zoom="16"
inkscape:cx="11.663307"
inkscape:cy="11.258003"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="g4326"
inkscape:snap-global="true"
inkscape:snap-smooth-nodes="false"
inkscape:object-nodes="false"
inkscape:snap-bbox="true"
inkscape:snap-nodes="false"
inkscape:bbox-paths="false"
inkscape:bbox-nodes="true">
<inkscape:grid
type="xygrid"
id="grid4341" />
</sodipodi:namedview>
<defs
id="defs3">
<linearGradient
inkscape:collect="always"
id="linearGradient4455">
<stop
style="stop-color:#74caea;stop-opacity:1"
offset="0"
id="stop4457" />
<stop
style="stop-color:#34a1ca;stop-opacity:1"
offset="1"
id="stop4459" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient4447">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop4449" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop4451" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient4428">
<stop
style="stop-color:#005474;stop-opacity:1"
offset="0"
id="stop4430" />
<stop
style="stop-color:#37a9d4;stop-opacity:1"
offset="1"
id="stop4432" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient4304">
<stop
style="stop-color:#ce2509;stop-opacity:1"
offset="0"
id="stop4306" />
<stop
style="stop-color:#a9210a;stop-opacity:1"
offset="1"
id="stop4308" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4304"
id="linearGradient4310"
x1="28.415369"
y1="9.2727699"
x2="31.521933"
y2="19.203804"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4428"
id="linearGradient4434"
x1="39.367229"
y1="23.90914"
x2="34.828079"
y2="3.3593886"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.9885037,0,0,0.98994346,20.217703,1.7271878)" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient4447"
id="radialGradient4453"
cx="52.259827"
cy="9.6745958"
fx="52.259827"
fy="9.6745958"
r="9.5658912"
gradientTransform="matrix(2.1628252,0,0,2.9778165,-60.887608,-20.066985)"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4455"
id="linearGradient4526"
x1="53.775932"
y1="11.068961"
x2="56.46653"
y2="23.231386"
gradientUnits="userSpaceOnUse" />
</defs>
<metadata
id="metadata4">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="g4326"
transform="matrix(1.01163,0,0,1.0101587,-20.452835,-1.7447338)"
style="stroke-width:0.9892233">
<path
sodipodi:type="inkscape:offset"
inkscape:radius="0.46403605"
inkscape:original="M 54.814453 3.7070312 C 53.729581 3.7104612 52.652708 3.8923279 51.626953 4.2460938 L 52.835938 10.195312 L 48.294922 6.1738281 C 48.133924 6.3131014 47.977862 6.4580369 47.826172 6.6074219 C 46.443434 7.9940104 45.502551 9.7611672 45.123047 11.683594 L 50.873047 13.607422 L 45.123047 15.53125 C 45.502551 17.453676 46.443434 19.218881 47.826172 20.605469 C 47.977861 20.754855 48.133925 20.89979 48.294922 21.039062 L 52.833984 17.017578 L 51.626953 22.966797 C 52.652675 23.320563 53.729581 23.502434 54.814453 23.505859 C 55.899326 23.502359 56.976198 23.320563 58.001953 22.966797 L 56.794922 17.017578 L 61.335938 21.039062 C 61.496935 20.89979 61.652997 20.754855 61.804688 20.605469 C 63.187426 19.218881 64.128308 17.453676 64.507812 15.53125 L 58.757812 13.605469 L 64.507812 11.683594 C 64.128343 9.7611672 63.187425 7.9940104 61.804688 6.6074219 C 61.652998 6.4580369 61.496935 6.3131014 61.335938 6.1738281 L 56.796875 10.195312 L 58.001953 4.2460938 C 56.976198 3.892328 55.899326 3.7104568 54.814453 3.7070312 z "
xlink:href="#path4468"
style="opacity:1;fill:url(#linearGradient4526);fill-opacity:1;stroke:url(#linearGradient4434);stroke-width:0.9892233;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path4443"
d="m 54.8125,3.2421875 c -1.135761,0.00359 -2.26189,0.1940319 -3.335938,0.5644531 a 0.46408245,0.46408245 0 0 0 -0.304687,0.53125 l 0.931641,4.5878906 -3.5,-3.0996093 a 0.46408245,0.46408245 0 0 0 -0.611328,-0.00391 C 47.822934,5.9686805 47.658148,6.1215986 47.5,6.2773438 a 0.46408245,0.46408245 0 0 0 -0.002,0.00195 C 46.05043,7.7309453 45.065232,9.581363 44.667969,11.59375 a 0.46408245,0.46408245 0 0 0 0.308593,0.529297 l 4.4375,1.484375 -4.4375,1.484375 a 0.46408245,0.46408245 0 0 0 -0.308593,0.529297 c 0.397274,2.012444 1.382614,3.861006 2.830078,5.3125 a 0.46408245,0.46408245 0 0 0 0.002,0.002 c 0.158151,0.155749 0.322936,0.308666 0.492188,0.455078 a 0.46408245,0.46408245 0 0 0 0.611328,-0.0039 l 3.5,-3.09961 -0.931641,4.587891 a 0.46408245,0.46408245 0 0 0 0.304687,0.53125 c 1.074021,0.370424 2.200175,0.560867 3.335938,0.564453 a 0.46408245,0.46408245 0 0 0 0.0039,0 c 1.135722,-0.0037 2.261872,-0.194026 3.335938,-0.564453 A 0.46408245,0.46408245 0 0 0 58.457031,22.875 l -0.93164,-4.589844 3.501953,3.101563 a 0.46408245,0.46408245 0 0 0 0.611328,0.0039 c 0.169252,-0.146414 0.334038,-0.299332 0.492187,-0.455078 a 0.46408245,0.46408245 0 0 0 0.002,-0.002 c 1.447464,-1.451494 2.432804,-3.300056 2.830079,-5.3125 a 0.46408245,0.46408245 0 0 0 -0.308594,-0.529297 l -4.4375,-1.486328 4.4375,-1.482422 A 0.46408245,0.46408245 0 0 0 64.962891,11.59375 C 64.565662,9.5813519 63.580426,7.7309425 62.132812,6.2792969 a 0.46408245,0.46408245 0 0 0 -0.002,-0.00195 C 61.97271,6.1215979 61.807923,5.9686793 61.638672,5.8222656 a 0.46408245,0.46408245 0 0 0 -0.611328,0.00391 l -3.5,3.1015625 0.929687,-4.5898438 a 0.46408245,0.46408245 0 0 0 -0.304687,-0.53125 C 57.078298,3.43622 55.95217,3.2457738 54.816406,3.2421875 a 0.46408245,0.46408245 0 0 0 -0.0039,0 z"
inkscape:href="#path4468"
transform="translate(-22.735586)" />
<path
inkscape:href="#path4468"
d="m 54.8125,4.1933594 c -0.888505,0.00318 -1.766397,0.1572767 -2.617188,0.4082031 L 53.3125,10.097656 a 0.4869683,0.4869683 0 0 1 -0.798828,0.462891 L 48.302734,6.8300781 c -0.04455,0.042299 -0.09086,0.081766 -0.134765,0.125 -1.211927,1.2167288 -2.016154,2.7596114 -2.423828,4.4238279 l 5.283203,1.767578 a 0.4869683,0.4869683 0 0 1 0,0.921875 l -5.283203,1.767579 c 0.407646,1.663899 1.211754,3.205001 2.423828,4.421874 0.0439,0.04323 0.09021,0.0827 0.134765,0.125 l 4.208985,-3.730468 a 0.4869683,0.4869683 0 0 1 0.798828,0.46289 l -1.115235,5.496094 c 0.852018,0.251293 1.731274,0.405394 2.621094,0.408203 0.888542,-0.0032 1.766407,-0.157292 2.617188,-0.408203 l -1.115235,-5.496094 a 0.4869683,0.4869683 0 0 1 0.798829,-0.46289 l 4.210937,3.730468 c 0.04322,-0.04103 0.08826,-0.07918 0.130859,-0.121093 1.21414,-1.217521 2.019652,-2.760098 2.427735,-4.425781 l -5.283203,-1.769532 a 0.4869683,0.4869683 0 0 1 0,-0.921875 l 5.283203,-1.765625 C 63.479068,9.7146987 62.674819,8.1718096 61.462891,6.9550781 l -0.0039,-0.00391 c -0.0426,-0.041909 -0.08764,-0.080065 -0.130859,-0.1210938 L 57.119141,10.560547 A 0.4869683,0.4869683 0 0 1 56.320312,10.099609 L 57.433594,4.6015625 C 56.582803,4.3506351 55.70491,4.1965336 54.816406,4.1933594 l -0.0039,0 z"
id="path4445"
style="opacity:0.3;fill:#34a1ca;fill-opacity:1;stroke:url(#radialGradient4453);stroke-width:0.9892233;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
xlink:href="#path4468"
inkscape:original="M 54.814453 3.7070312 C 53.729581 3.7104612 52.652708 3.8923279 51.626953 4.2460938 L 52.835938 10.195312 L 48.294922 6.1738281 C 48.133924 6.3131014 47.977862 6.4580369 47.826172 6.6074219 C 46.443434 7.9940104 45.502551 9.7611672 45.123047 11.683594 L 50.873047 13.607422 L 45.123047 15.53125 C 45.502551 17.453676 46.443434 19.218881 47.826172 20.605469 C 47.977861 20.754855 48.133925 20.89979 48.294922 21.039062 L 52.833984 17.017578 L 51.626953 22.966797 C 52.652675 23.320563 53.729581 23.502434 54.814453 23.505859 C 55.899326 23.502359 56.976198 23.320563 58.001953 22.966797 L 56.794922 17.017578 L 61.335938 21.039062 C 61.496935 20.89979 61.652997 20.754855 61.804688 20.605469 C 63.187426 19.218881 64.128308 17.453676 64.507812 15.53125 L 58.757812 13.605469 L 64.507812 11.683594 C 64.128343 9.7611672 63.187425 7.9940104 61.804688 6.6074219 C 61.652998 6.4580369 61.496935 6.3131014 61.335938 6.1738281 L 56.796875 10.195312 L 58.001953 4.2460938 C 56.976198 3.892328 55.899326 3.7104568 54.814453 3.7070312 z "
inkscape:radius="-0.48691961"
sodipodi:type="inkscape:offset"
transform="translate(-22.735586)" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 10 KiB

View file

@ -0,0 +1,105 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg8763" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="24.009" width="24.013" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs id="defs8765">
<filter id="filter3330" height="1" width="1" color-interpolation-filters="sRGB" y="0" x="0">
<feColorMatrix id="feColorMatrix3332" values="0" type="saturate"/>
</filter>
<filter id="filter4375-3-0" color-interpolation-filters="sRGB" width="1.0248" y="-.35609" x="-.012418" height="1.7122">
<feGaussianBlur id="feGaussianBlur4377-0-0" stdDeviation="1.0664062"/>
</filter>
<linearGradient id="linearGradient11481">
<stop id="stop11483" stop-color="#a04600" offset="0"/>
<stop id="stop11485" stop-color="#ce5c00" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient21508" y2="18.848" gradientUnits="userSpaceOnUse" x2="24.866" gradientTransform="matrix(.30890 0 0 .27375 301.94 218.48)" y1="30.385" x1="24.866">
<stop id="stop4910-6" stop-color="#ce5c00" offset="0"/>
<stop id="stop4912-9" stop-color="#f57900" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient21510" y2="221.38" xlink:href="#linearGradient11481" gradientUnits="userSpaceOnUse" x2="315.29" gradientTransform="translate(0,1)" y1="232.34" x1="315.05"/>
<radialGradient id="radialGradient21512" gradientUnits="userSpaceOnUse" cy="179.01" cx="306.1" gradientTransform="matrix(2.5489 0 0 .51730 -476.41 129.05)" r="8.6094">
<stop id="stop4615" stop-color="#fff" offset="0"/>
<stop id="stop4617" stop-color="#fff" stop-opacity="0" offset="1"/>
</radialGradient>
<linearGradient id="linearGradient21514" y2="-9.4962" gradientUnits="userSpaceOnUse" x2="25.188" gradientTransform="matrix(.28968 0 0 .17690 301.87 224.04)" y1="50.897" x1="25.188">
<stop id="stop4991-0" stop-color="#f57900" offset="0"/>
<stop id="stop4993-4" stop-color="#fcaf3e" offset=".060437"/>
<stop id="stop4995-6" stop-color="#fcaf3e" offset=".17754"/>
<stop id="stop4997-0" stop-color="#f57900" offset=".89422"/>
<stop id="stop4999-3" stop-color="#ce5c00" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient21516" y2="223.68" xlink:href="#linearGradient11481" gradientUnits="userSpaceOnUse" x2="314.47" y1="233.24" x1="314.49"/>
<linearGradient id="linearGradient21518" y2="208.75" gradientUnits="userSpaceOnUse" x2="320.56" y1="184.62" x1="312.44">
<stop id="stop4631" stop-color="#fff" offset="0"/>
<stop id="stop4633" stop-color="#fff" stop-opacity="0" offset="1"/>
</linearGradient>
<radialGradient id="radialGradient21520" gradientUnits="userSpaceOnUse" cy="525.86" cx="147.02" gradientTransform="matrix(1.5869 1.2599e-7 -5.9773e-8 .75290 -86.287 85.9)" r="103.05">
<stop id="stop4349-3-4" stop-color="#fff" offset="0"/>
<stop id="stop16502" stop-color="#fff" stop-opacity=".49804" offset=".5"/>
<stop id="stop4351-6-4" stop-color="#fff" stop-opacity="0" offset="1"/>
</radialGradient>
<linearGradient id="linearGradient21532" y2="263.79" gradientUnits="userSpaceOnUse" x2="117.64" y1="220.79" x1="117.64">
<stop id="stop21528" stop-color="#fff" offset="0"/>
<stop id="stop21530" stop-color="#fff" stop-opacity="0.36" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient21612" y2="251.79" gradientUnits="userSpaceOnUse" x2="94.143" gradientTransform="translate(-333.93 -139.65)" y1="251.79" x1="70.143">
<stop id="stop21608" stop-color="#5dbbc6" offset="0"/>
<stop id="stop21610" stop-color="#96dadb" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient21638" y2="112.14" gradientUnits="userSpaceOnUse" x2="-249.54" y1="112.14" x1="-263.79">
<stop id="stop21634" stop-color="#3e3e3e" offset="0"/>
<stop id="stop21636" stop-opacity="0" offset="1"/>
</linearGradient>
</defs>
<metadata id="metadata8768">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g id="layer1" transform="translate(-474.29 -337.78)">
<g id="g8506" transform="translate(374.14 98)">
<rect id="rect3589" height="24" width="120" display="none" y="241.6" x="97.775" fill="#eeeeec"/>
<rect id="rect4698" height="48" width="48" display="none" y="25.598" x="87.775" fill="#eeeeec"/>
<rect id="rect4700" height="32" width="32" display="none" y="101.6" x="94.775" fill="#eeeeec"/>
<rect id="rect4702" height="22" width="22" display="none" y="152.6" x="94.775" fill="#eeeeec"/>
<rect id="rect4704" height="16" width="16" display="none" y="194.6" x="94.775" fill="#eeeeec"/>
<rect id="rect4706" height="24" width="24" display="none" y="151.6" x="93.775" fill="#eeeeec"/>
<rect id="rect4708" height="256" width="256" display="none" y="3.5985" x="-188.22" fill="#eeeeec"/>
<text id="text4710" style="enable-background:new" xml:space="preserve" font-size="18.301px" display="none" y="-2.8879292" x="-187.25412" font-family="Bitstream Vera Sans" fill="#000000"><tspan id="tspan4712" x="-187.25412" y="-2.8879292">places</tspan></text>
<text id="text4714" style="enable-background:new" line-height="125%" font-weight="bold" xml:space="preserve" font-size="18.301px" y="-2.8879292" x="-66.254158" font-family="Droid Sans" display="none" fill="#000000"><tspan id="tspan4716" x="-66.254158" y="-2.8879292">sparkleshare</tspan></text>
<rect id="rect22378" height="22" width="22" display="none" y="152.6" x="124.78" fill="#ededed"/>
<rect id="rect22380" height="24" width="24" display="none" y="151.6" x="123.78" fill="#ededed"/>
<rect id="rect12657-5" style="color:#000000;enable-background:new" rx="0" ry="0" height="0" width="2" y="165.6" x="467.78" fill="#888a85"/>
<use id="use3340" style="enable-background:new" xlink:href="#g3326" transform="translate(-203.22 225.6)" height="400" width="500" y="0" x="0"/>
<rect id="rect20728" transform="rotate(-90)" rx="3.7196" ry="3.7196" height="22.998" width="22.998" stroke="#6196c5" stroke-linecap="round" y="100.64" x="-263.29" stroke-width="1.002" fill="url(#linearGradient21612)"/>
<path id="path21534" opacity="0.333" d="m248.42 154.51h-6.8943s-2.6516 0.57452-3.0494-3.0494v-11.093s0.35356-1.5468 1.9446-1.9445h5.1265c1.5468 0.48614 2.0771 2.0771 2.0771 2.0771h6.8501s0.75131 0.30935 1.1049 1.1048v9.8276c-0.0442 2.1655-2.0992 3.0992-2.0992 3.0992z" transform="translate(-134.86 105.79)" stroke="#fff" stroke-width="1px" fill="none"/>
<g id="g21596" opacity=".5">
<path id="rect21555" opacity=".25" d="m103.14 239.79h7l2 12z"/>
<path id="path21558" opacity=".25" d="m121.14 263.79h-7l-2-12z"/>
<path id="path21560" opacity=".25" d="m121.14 239.79h-7l-2 12z"/>
<path id="path21562" opacity=".25" d="m103.14 263.79h7l2-12z"/>
<path id="path21570" opacity=".25" d="m124.14 242.79 0.00001 7-12 2z"/>
<path id="path21572" opacity=".25" d="m100.14 260.79-0.00001-7 12-2z"/>
<path id="path21574" opacity=".25" d="m124.14 260.79v-7l-12-2z"/>
<path id="path21576" opacity=".25" d="m100.14 242.79 0.00001 7 12 2z"/>
</g>
<g id="g21498" transform="translate(9.3677 49.194)">
<g id="g10370" style="enable-background:new" transform="translate(-208.22 -24.402)">
<path id="path10372" style="enable-background:new" d="m304.53 220.5c-0.57203 0.064-1.0035 0.54941-1 1.125v10.344c0.00006 0.62129 0.50371 1.1249 1.125 1.125h12.719c0.62129-0.00006 1.1249-0.50371 1.125-1.125v-8.3125c-0.00006-0.62129-0.50371-1.1249-1.125-1.125h-5.8438c-0.3334 0-0.20853 0.0527-0.40625-0.21875l-0.96875-1.3438c-0.2098-0.29211-0.54661-0.46632-0.90625-0.46875h-4.5938c-0.0416-0.002-0.0834-0.002-0.125 0z" fill-rule="evenodd" stroke="url(#linearGradient21510)" fill="url(#linearGradient21508)"/>
<path id="path10374" opacity=".4" style="enable-background:new" d="m304.62 221.44c-0.10325 0.0115-0.15688 0.0836-0.15625 0.1875v10.344c0.00001 0.11468 0.0728 0.18749 0.1875 0.1875h12.719c0.11468-0.00001 0.18749-0.0728 0.1875-0.1875v-8.3125c-0.00001-0.11468-0.0728-0.18749-0.1875-0.1875h-5.8438c-0.0587 0-0.0805-0.001-0.15625 0-0.0757 0.001-0.29559 0.0325-0.5625-0.125-0.26691-0.15754-0.34468-0.32772-0.375-0.375-0.0303-0.0473-0.0322-0.0522-0.0625-0.0937l-0.96875-1.3438c-0.0355-0.0494-0.0954-0.0933-0.15625-0.0937h-4.5938c-0.0104 0.00017-0.0208 0.00017-0.0313 0l0.00005-0.0001z" stroke="url(#radialGradient21512)" fill="none"/>
<path id="path10377" stroke-linejoin="round" style="enable-background:new" d="m309.78 222.5c-0.2554 0-0.45965 0.13987-0.59375 0.34375-0.43264 0.54853-1.1235 1.6562-1.6562 1.6562h-2.6875c-0.83807 0-1.3437 0.5428-1.3438 1.4688v6.125c0 1.3376 0.65057 2.4062 1.4688 2.4062h12.062c0.81819 0 1.4688-1.0687 1.4688-2.4062v-8.9062c0-0.37505-0.29595-0.6875-0.65625-0.6875h-8.0625z" fill-rule="evenodd" stroke="url(#linearGradient21516)" fill="url(#linearGradient21514)"/>
<path id="path10379" opacity=".40639" stroke-linejoin="round" style="enable-background:new" d="m310.94 183.5c-0.74659 0.74659-1.6086 2-2.4062 2h-2.6875c-0.20314 0-0.22418 0.0344-0.25 0.0625-0.0258 0.0281-0.0937 0.12531-0.0937 0.40625v7.5312h13v-10h-7.5625-0.00005z" transform="translate(-1,40)" stroke="url(#linearGradient21518)" fill="none"/>
<path id="path10381" opacity=".71595" style="enable-background:new" d="m250.06 476.75c-0.0458 1.3355-0.49131 2.357-1.2188 3.0625-0.72744 0.70545-1.7687 1.125-3.1875 1.125h-197.25c-1.4189 0-2.4805-0.44927-3.2188-1.1562-0.73826-0.70698-1.1869-1.7049-1.2188-3.0312v3c0.03187 1.3263 0.48049 2.3243 1.2188 3.0312 0.73826 0.70698 1.7998 1.1562 3.2188 1.1562h197.25c1.4188 0 2.4601-0.41955 3.1875-1.125 0.72744-0.70545 1.1729-1.727 1.2188-3.0625v-3z" fill-rule="evenodd" transform="matrix(.065331 0 0 .29412 301.15 90.449)" filter="url(#filter4375-3-0)" fill="url(#radialGradient21520)"/>
</g>
<path id="path5717-2" stroke-linejoin="round" style="enable-background:new" d="m103.15 201.61c-0.1681 0.0217-0.3164 0.15386-0.3579 0.31842l-0.7155 2.1494c-0.019 0.0382-0.032 0.0777-0.039 0.11973-0.038-0.0191-0.078-0.0318-0.1196-0.0395h-2.1866c-0.1222 0-0.2415 0.0637-0.3181 0.15921-0.1612 0.18061-0.1208 0.50107 0.079 0.63685l1.7891 1.3136 0.038 0.19106-0.6757 2.1095c-0.094 0.32925 0.3466 0.66015 0.6361 0.47763l1.7889-1.3134h0.229l1.7891 1.3134c0.1556 0.1019 0.3785 0.0841 0.5167-0.0395 0.1171-0.10827 0.1659-0.28518 0.1196-0.4379l-0.6759-2.1095c-0.064-0.0127 0.025-0.12737 0.038-0.19105l1.7889-1.3136c0.2004-0.13577 0.2401-0.45623 0.079-0.63684-0.076-0.0955-0.1958-0.15526-0.318-0.15921h-2.2264c-0.042 0.0127-0.081 0.0204-0.1196 0.0395-0.013-0.042-0.02-0.0815-0.039-0.11973l-0.6759-2.1493c-0.02-0.0752-0.062-0.14546-0.1196-0.19908-0.084-0.0815-0.2016-0.1261-0.318-0.11973l0.014 0.00013-0.0006 0.00001z" stroke="#c66f11" stroke-linecap="round" fill="none"/>
<path id="path5717" stroke-linejoin="round" style="enable-background:new" d="m103.15 200.61c-0.1681 0.0217-0.3164 0.15386-0.3579 0.31842l-0.7155 2.1494c-0.019 0.0382-0.032 0.0777-0.039 0.11973-0.038-0.0191-0.078-0.0318-0.1196-0.0395h-2.1866c-0.1222 0-0.2415 0.0637-0.3181 0.15921-0.1612 0.18061-0.1208 0.50107 0.079 0.63685l1.7891 1.3136 0.038 0.19106-0.6757 2.1095c-0.094 0.32925 0.3466 0.66015 0.6361 0.47763l1.7889-1.3134h0.229l1.7891 1.3134c0.1556 0.1019 0.3785 0.0841 0.5167-0.0395 0.1171-0.10827 0.1659-0.28518 0.1196-0.4379l-0.6759-2.1095c-0.064-0.0127 0.025-0.12737 0.038-0.19105l1.7889-1.3136c0.2004-0.13577 0.2401-0.45623 0.079-0.63684-0.076-0.0955-0.1958-0.15526-0.318-0.15921h-2.2264c-0.042 0.0127-0.081 0.0204-0.1196 0.0395-0.013-0.042-0.02-0.0815-0.039-0.11973l-0.6759-2.1493c-0.02-0.0752-0.062-0.14546-0.1196-0.19908-0.084-0.0815-0.2016-0.1261-0.318-0.11973l0.014 0.00013-0.0006 0.00001z" stroke="#fff" stroke-linecap="round" fill="none"/>
</g>
<rect id="rect21524" opacity=".83759" rx="2.8127" ry="2.8127" height="20.998" width="20.998" stroke="url(#linearGradient21532)" stroke-linecap="round" y="241.29" x="101.64" stroke-width="1.002" fill="none"/>
<rect id="rect21630" opacity="0.33" ry="3.9071" rx="3.9071" transform="rotate(-90)" height="22.998" width="22.998" stroke="url(#linearGradient21638)" stroke-linecap="round" y="100.64" x="-263.29" stroke-width="1.002" fill="none"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because it is too large Load diff

Before

Width:  |  Height:  |  Size: 186 KiB

After

Width:  |  Height:  |  Size: 143 KiB

View file

@ -39,7 +39,8 @@ namespace SparkleShare {
SparkleShare.Controller.ShowNoteWindowEvent += OnNoteWindowEvent;
if (SparkleShare.Controller.AvatarsEnabled && !SparkleShare.Controller.FirstRun)
AvatarFilePath = Avatars.GetAvatar (SparkleShare.Controller.CurrentUser.Email, 48, SparkleShare.Controller.Config.DirectoryPath, SparkleShare.Controller.AvatarsProvider);
AvatarFilePath = Avatars.GetAvatar (SparkleShare.Controller.CurrentUser.Email,
48, SparkleShare.Controller.Config.DirectoryPath);
}
@ -72,7 +73,7 @@ namespace SparkleShare {
void ResumeWithNote (string note)
{
{
BaseRepository repo = SparkleShare.Controller.GetRepoByName (CurrentProject);
repo.Resume (note);
}

View file

@ -6,7 +6,7 @@
<description>Free code hosting for Git and Mercurial</description>
<icon>bitbucket.png</icon>
<backend>Git</backend>
<fingerprint>4c:eb:19:11:0d:d6:19:65:7b:6a:40:8a:fb:b7:4d:51:81:a1:7a:07:74:4a:b5:22:0c:91:86:42:74:88:9b:bc</fingerprint>
<fingerprint>cf:35:d0:39:74:91:04:48:94:b6:e1:3c:02:29:09:60:ac:1b:1d:ac:6f:49:cd:28:8d:ec:fd:61:76:86:a7:50</fingerprint>
</info>
<address>
<value>ssh://git@bitbucket.org/</value>
@ -19,3 +19,4 @@
</path>
</preset>
</sparkleshare>

View file

@ -7,7 +7,7 @@
<icon>github.png</icon>
<backend>Git</backend>
<storage_type>LargeFiles</storage_type>
<fingerprint>92:a3:7f:bd:5e:21:a5:3a:95:c7:16:e1:14:4f:44:2f:58:2b:94:d0:fa:fc:67:3e:b6:71:7a:4e:b5:1a:88:a7</fingerprint>
<fingerprint>9d:38:5b:83:a9:17:52:92:56:1a:5e:c4:d4:81:8e:0a:ca:51:a2:64:f1:74:20:11:2e:f8:8a:c3:a1:39:49:8f</fingerprint>
</info>
<address>
<value>ssh://git@github.com/</value>

View file

@ -1,6 +1,7 @@
preset_files = ['github.xml', 'github.png',
'gitlab.xml', 'gitlab.png',
'bitbucket.xml', 'bitbucket.png',
'planio.xml', 'planio.png',
'own-server.xml', 'own-server.png'
]

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View file

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<sparkleshare>
<preset>
<info>
<name>Planio</name>
<description>Online project management</description>
<icon>planio.png</icon>
<backend>Git</backend>
<fingerprint>38:29:13:0f:7c:74:67:22:c5:a6:a6:95:b4:b8:e0:ef:3d:e0:9e:87:02:58:ff:37:2c:8b:34:5a:ed:73:5d:81</fingerprint>
<announcements_url>tcp://sparkleshare-notifications.plan.io:443</announcements_url>
</info>
<address>
<value/>
<example>ssh://git@[account].plan.io</example>
</address>
<path>
<value/>
<example>/[account]-[project].git</example>
</path>
</preset>
</sparkleshare>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

View file

@ -533,7 +533,7 @@ namespace SparkleShare {
public void ShowFilesClicked ()
{
string folder_name = Path.GetFileNameWithoutExtension (PreviousPath);
string folder_name = Path.GetFileName (PreviousPath);
folder_name = folder_name.ReplaceUnderscoreWithSpace ();
SparkleShare.Controller.OpenSparkleShareFolder (folder_name);

View file

@ -35,6 +35,25 @@ namespace SparkleShare {
#endif
public static void Main (string [] args)
{
if (args.Length != 0 && (args [0].Equals ("help") || args [0].Equals ("version")) &&
InstallationInfo.OperatingSystem != OS.macOS &&
InstallationInfo.OperatingSystem != OS.Windows) {
string n = Environment.NewLine;
Console.WriteLine (n +
"Share and collaborate by syncing with any Git repository instantly." + n +
n +
"Version: " + InstallationInfo.Version + n +
"Copyright (C) 2010 Hylke Bons and others" + n +
"This program comes with ABSOLUTELY NO WARRANTY." + n +
n +
"This is free software, and you are welcome to redistribute it" + n +
"under certain conditions. Please read the GNU GPLv3 for details." + n);
Environment.Exit (0);
}
// Only allow one instance of SparkleShare (on Windows)
if (!program_mutex.WaitOne (0, exitContext: false)) {
Console.WriteLine ("SparkleShare is already running.");

View file

@ -66,7 +66,7 @@ namespace SparkleShare {
}
if (IsPaused)
return "Paused";
return "Syncing Paused";
if (HasError) {
switch (repo.Error) {

View file

@ -31,6 +31,8 @@ namespace SparkleShare {
public About () : base ("About SparkleShare")
{
SetWmclass ("SparkleShare", "SparkleShare");
IconName = "org.sparkleshare.SparkleShare";
Resizable = false;
WindowPosition = WindowPosition.CenterAlways;

View file

@ -47,13 +47,13 @@ namespace SparkleShare {
public override void SetFolderIcon ()
{
var gio_set = new Command ("gio", "set \"" + Configuration.DefaultConfiguration.FoldersPath + "\" " +
var gvfs_set_attribute = new Command ("gvfs-set-attribute", "\"" + Configuration.DefaultConfiguration.FoldersPath + "\" " +
"metadata::custom-icon-name org.sparkleshare.SparkleShare");
string XDG_DATA_HOME = Path.Combine (Config.HomePath, ".local", "share");
gio_set.StartInfo.EnvironmentVariables ["XDG_DATA_HOME"] = XDG_DATA_HOME;
gvfs_set_attribute.StartInfo.EnvironmentVariables ["XDG_DATA_HOME"] = XDG_DATA_HOME;
gio_set.StartAndWaitForExit ();
gvfs_set_attribute.StartAndWaitForExit ();
}

View file

@ -40,18 +40,19 @@ namespace SparkleShare {
public EventLog () : base ("Recent Changes")
{
SetWmclass ("SparkleShare", "SparkleShare");
TypeHint = Gdk.WindowTypeHint.Dialog;
IconName = "org.sparkleshare.SparkleShare";
SetSizeRequest (480, 640);
Gdk.Rectangle monitor_0_rect = Gdk.Screen.Default.GetMonitorGeometry (0);
pos_x = (int) (monitor_0_rect.Width * 0.61);
pos_y = (int) (monitor_0_rect.Height * 0.5 - (HeightRequest * 0.5));
Resize (480, (int) (monitor_0_rect.Height * 0.8));
pos_x = (int) (monitor_0_rect.Width * 0.62);
pos_y = (int) ((monitor_0_rect.Height - (monitor_0_rect.Height * 0.8)) / 2);
this.size_label = new Label () { Xalign = 0, Markup = "<b>Size:</b> …" };
this.history_label = new Label () { Xalign = 0, Markup = "<b>History:</b> …" };

Binary file not shown.

Before

Width:  |  Height:  |  Size: 232 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 968 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 197 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 750 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 215 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 879 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 575 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 768 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 768 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 831 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

View file

@ -1,47 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="128px" viewBox="0 0 128 128" width="128px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<clipPath id="a">
<rect height="128" width="128"/>
</clipPath>
<clipPath id="b">
<rect height="128" width="128"/>
</clipPath>
<filter id="c" height="100%" width="100%" x="0%" y="0%">
<feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/>
</filter>
<mask id="d">
<g clip-path="url(#b)" filter="url(#c)">
<g clip-path="url(#a)">
<path d="m 20.679688 11.867188 c -4.796876 -0.023438 -8.6875 3.890624 -8.6875 8.6875 v 86.890624 h 95.453124 c 4.945313 0 8.6875 -3.441406 8.6875 -8.734374 v -70 c 0 -4.796876 -3.890624 -8.691407 -8.6875 -8.6875 l -51.445312 -0.023438 l -8 -8 z m 0 0" fill="#fb8c14"/>
<path d="m 64 34 l -8.6875 8.277344 h -34.632812 c -4.796876 0 -8.6875 3.890625 -8.6875 8.6875 v 65.167968 h 95.488281 c 4.320312 0 8.652343 -3.59375 8.652343 -8.683593 v -64.734375 c 0 -4.796875 -3.890624 -8.6875 -8.6875 -8.6875 z m 0 0" fill="#fff1db"/>
<path d="m 116.132812 105.273438 v 2.171874 c 0 4.796876 -3.890624 8.6875 -8.6875 8.6875 h -95.578124 v -2.171874 h 95.578124 c 4.796876 0 8.6875 -3.890626 8.6875 -8.6875 z m 0 0" fill="#fb8c14"/>
<path d="m 569.617711 133.878011 c -1.946492 0.248867 -3.661892 1.786506 -4.141849 3.697445 l -8.274809 24.931084 l -1.839834 0.93325 h -25.295497 c -1.413205 0 -2.790859 0.737711 -3.679668 1.848722 c -1.85761 2.0887 -1.395429 5.812809 0.915473 7.386 l 20.700355 15.24307 l 0.435517 2.213133 l -7.812629 24.468905 c -1.084347 3.821877 4.008527 7.661531 7.359336 5.546166 l 20.691467 -15.24307 h 2.64865 l 20.700355 15.24307 c 1.795394 1.182116 4.372939 0.97769 5.972795 -0.462181 c 1.350989 -1.25322 1.919827 -3.306368 1.386542 -5.075097 l -7.821517 -24.477793 c -0.737711 -0.142209 0.293307 -1.475422 0.444404 -2.213133 l 20.691467 -15.24307 c 2.319791 -1.573191 2.773083 -5.288412 0.906585 -7.386 c -0.871032 -1.111011 -2.257574 -1.804282 -3.67078 -1.848722 h -25.757677 l -1.830946 -0.924362 l -7.821516 -24.939972 c -0.231091 -0.871033 -0.719935 -1.688737 -1.386542 -2.310903 c -0.968801 -0.942137 -2.328679 -1.457646 -3.679668 -1.386542 h 0.168874 z m 0 0" fill="none" stroke="#fb8c14" stroke-linecap="round" stroke-linejoin="round" stroke-width="11.3768" transform="matrix(0.439493 0 0 0.439493 -186.44833 -3.03373)"/>
</g>
</g>
</mask>
<mask id="e">
<g filter="url(#c)">
<rect fill-opacity="0.8" height="128" width="128"/>
</g>
</mask>
<linearGradient id="f" gradientTransform="matrix(0 0.37 -0.98462 0 295.38501 -30.360001)" gradientUnits="userSpaceOnUse" x1="300" x2="428" y1="235" y2="235">
<stop offset="0" stop-color="#f9f06b"/>
<stop offset="1" stop-color="#f5c211"/>
</linearGradient>
<clipPath id="g">
<rect height="128" width="128"/>
</clipPath>
<clipPath id="h">
<rect height="128" width="128"/>
</clipPath>
<path d="m 20.679688 11.867188 c -4.796876 -0.023438 -8.6875 3.890624 -8.6875 8.6875 v 86.890624 h 95.453124 c 4.945313 0 8.6875 -3.441406 8.6875 -8.734374 v -70 c 0 -4.796876 -3.890624 -8.691407 -8.6875 -8.6875 l -51.445312 -0.023438 l -8 -8 z m 0 0" fill="#fb8c14"/>
<path d="m 64 34 l -8.6875 8.277344 h -34.632812 c -4.796876 0 -8.6875 3.890625 -8.6875 8.6875 v 65.167968 h 95.488281 c 4.320312 0 8.652343 -3.59375 8.652343 -8.683593 v -64.734375 c 0 -4.796875 -3.890624 -8.6875 -8.6875 -8.6875 z m 0 0" fill="#fff1db"/>
<path d="m 116.132812 105.273438 v 2.171874 c 0 4.796876 -3.890624 8.6875 -8.6875 8.6875 h -95.578124 v -2.171874 h 95.578124 c 4.796876 0 8.6875 -3.890626 8.6875 -8.6875 z m 0 0" fill="#fb8c14"/>
<path d="m 63.89466666052 55.80471868842 c -0.85546960856 0.10937530443 -1.60937590076 0.78515688146 -1.82031364256 1.62500119539 l -3.63672063184 10.95703690041 l -0.80859416416 0.41015684225 h -11.11719386302 c -0.62109370507 0 -1.22656299449 0.32421882052 -1.61718832832 0.81250037795 c -0.81640659173 0.9179690291 -0.6132812775 2.55468886584 0.40234397519 3.246095298 l 9.09766112002 6.69922256351 l 0.19140667288 0.97265646157 l -3.4335957571 10.75391246516 c -0.47656291607 1.67968818836 1.76171955681 3.36718924378 3.23437665665 2.43750113384 l 9.09375490623 -6.69922256351 h 1.16406313445 l 9.09766112002 6.69922256351 c 0.78906309524 0.51953170719 1.92187607993 0.42968791117 2.62500159294 -0.20312531423 c 0.59375020858 -0.55078141746 0.84375052771 -1.45312559142 0.60937550321 -2.23046960582 l -3.43750197088 -10.75781867895 c -0.32421882052 -0.06249986004 0.12890637335 -0.64843764105 0.19531244717 -0.97265646157 l 9.09375490623 -6.69922256351 c 1.01953190596 -0.69140643216 1.21875056692 -2.32422005512 0.39843776141 -3.246095298 c -0.38281246678 -0.48828155742 -0.99218796998 -0.79296930903 -1.61328211454 -0.81250037795 h -11.32031873776 l -0.80468795038 -0.40625062847 l -3.43750153139 -10.9609431142 c -0.10156287686 -0.38281290627 -0.31640639296 -0.74218809034 -0.60937550321 -1.01562569218 c -0.42578125789 -0.41406261654 -1.02343811975 -0.64062521348 -1.61718832832 -0.60937550321 h 0.07421894088 z m 0 0" fill="none" stroke="#fb8c14" stroke-linecap="round" stroke-linejoin="round" stroke-width="5.0000239624"/>
<g clip-path="url(#h)" mask="url(#d)">
<g clip-path="url(#g)" mask="url(#e)">
<path d="m 128 80.640625 v 47.359375 h -128 v -47.359375 z m 0 0" fill="url(#f)"/>
<path d="m 13.308594 80.640625 l 47.355468 47.359375 h 21.214844 l -47.359375 -47.359375 z m 42.421875 0 l 47.363281 47.359375 h 21.214844 l -47.363282 -47.359375 z m 42.429687 0 l 29.839844 29.839844 v -21.210938 l -8.628906 -8.628906 z m -98.160156 7.90625 v 21.214844 l 18.238281 18.238281 h 21.214844 z m 0 0"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 5.8 KiB

View file

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="128px" viewBox="0 0 128 128" width="128px" xmlns="http://www.w3.org/2000/svg">
<path d="m 20.679688 11.867188 c -4.796876 -0.023438 -8.6875 3.890624 -8.6875 8.6875 v 86.890624 h 95.453124 c 4.945313 0 8.6875 -3.441406 8.6875 -8.734374 v -70 c 0 -4.796876 -3.890624 -8.691407 -8.6875 -8.6875 l -51.445312 -0.023438 l -8 -8 z m 0 0" fill="#fb8c14"/>
<path d="m 64 34 l -8.6875 8.277344 h -34.632812 c -4.796876 0 -8.6875 3.890625 -8.6875 8.6875 v 65.167968 h 95.488281 c 4.320312 0 8.652343 -3.59375 8.652343 -8.683593 v -64.734375 c 0 -4.796875 -3.890624 -8.6875 -8.6875 -8.6875 z m 0 0" fill="#fff1db"/>
<path d="m 116.132812 105.273438 v 2.171874 c 0 4.796876 -3.890624 8.6875 -8.6875 8.6875 h -95.578124 v -2.171874 h 95.578124 c 4.796876 0 8.6875 -3.890626 8.6875 -8.6875 z m 0 0" fill="#fb8c14"/>
<path d="m 63.89466666052 55.80471868842 c -0.85546960856 0.10937530443 -1.60937590076 0.78515688146 -1.82031364256 1.62500119539 l -3.63672063184 10.95703690041 l -0.80859416416 0.41015684225 h -11.11719386302 c -0.62109370507 0 -1.22656299449 0.32421882052 -1.61718832832 0.81250037795 c -0.81640659173 0.9179690291 -0.6132812775 2.55468886584 0.40234397519 3.246095298 l 9.09766112002 6.69922256351 l 0.19140667288 0.97265646157 l -3.4335957571 10.75391246516 c -0.47656291607 1.67968818836 1.76171955681 3.36718924378 3.23437665665 2.43750113384 l 9.09375490623 -6.69922256351 h 1.16406313445 l 9.09766112002 6.69922256351 c 0.78906309524 0.51953170719 1.92187607993 0.42968791117 2.62500159294 -0.20312531423 c 0.59375020858 -0.55078141746 0.84375052771 -1.45312559142 0.60937550321 -2.23046960582 l -3.43750197088 -10.75781867895 c -0.32421882052 -0.06249986004 0.12890637335 -0.64843764105 0.19531244717 -0.97265646157 l 9.09375490623 -6.69922256351 c 1.01953190596 -0.69140643216 1.21875056692 -2.32422005512 0.39843776141 -3.246095298 c -0.38281246678 -0.48828155742 -0.99218796998 -0.79296930903 -1.61328211454 -0.81250037795 h -11.32031873776 l -0.80468795038 -0.40625062847 l -3.43750153139 -10.9609431142 c -0.10156287686 -0.38281290627 -0.31640639296 -0.74218809034 -0.60937550321 -1.01562569218 c -0.42578125789 -0.41406261654 -1.02343811975 -0.64062521348 -1.61718832832 -0.60937550321 h 0.07421894088 z m 0 0" fill="none" stroke="#fb8c14" stroke-linecap="round" stroke-linejoin="round" stroke-width="5.0000239624"/>
</svg>

Before

Width:  |  Height:  |  Size: 2.4 KiB

View file

@ -1,70 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="16px"
height="16px"
viewBox="0 0 16 16"
version="1.1"
id="SVGRoot"
sodipodi:docname="process-syncing-down-symbolic.svg"
inkscape:version="0.91+devel r14094">
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="32"
inkscape:cx="3.531812"
inkscape:cy="6.6741748"
inkscape:document-units="px"
inkscape:current-layer="g4575"
showgrid="false"
inkscape:window-width="2560"
inkscape:window-height="1396"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:grid-bbox="true">
<inkscape:grid
type="xygrid"
id="grid5794" />
</sodipodi:namedview>
<defs
id="defs5218" />
<metadata
id="metadata5221">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Layer 1">
<g
transform="translate(19.99318,-4.4704621e-4)"
id="g4575">
<path
style="color:#000000;text-indent:0;text-transform:none;fill:#bebebe;enable-background:new"
d="M 7.7714844 0.99804688 L 7.7734375 1 C 7.0923875 1.18249 6.4982563 1.7146081 6.3476562 2.4238281 C 6.0411762 3.2857781 5.7868175 4.16535 5.4921875 5.03125 C 4.3730875 5.05615 3.2478125 4.9779719 2.1328125 5.0761719 C 0.9379125 5.3423119 0.3668975 7.1108219 1.3671875 7.9199219 C 2.1813575 8.6113319 3.0778875 9.19895 3.9296875 9.84375 C 3.6174175 10.94005 3.1764644 12.0057 2.9589844 13.125 C 2.8790844 14.418 4.6356781 15.417631 5.6425781 14.519531 C 6.4273681 13.952611 7.2083875 13.3807 7.9921875 12.8125 C 8.9258275 13.45599 9.7939435 14.200978 10.777344 14.767578 C 11.894344 15.257218 13.323941 14.125256 12.994141 12.916016 C 12.731511 11.878616 12.363097 10.86935 12.054688 9.84375 C 12.949936 9.15776 13.908259 8.5477344 14.755859 7.8027344 C 15.431419 7.0691644 15.180611 5.8674188 14.394531 5.3242188 C 13.689221 4.8604788 12.818391 5.08011 12.025391 5.03125 L 10.460938 5.03125 C 10.093227 3.9604499 9.7930125 2.8617937 9.3828125 1.8085938 C 9.2528125 1.3285938 8.4114844 0.99804687 7.7714844 0.99804688 z M 7 6 L 9 6 L 9 7 L 7 7 L 7 6 z M 5 8 L 11 8 L 8 11 L 5 8 z "
transform="translate(-19.99318,4.4704621e-4)"
id="path4553" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3 KiB

View file

@ -1,66 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="16px"
height="16px"
viewBox="0 0 16 16"
version="1.1"
id="SVGRoot"
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
sodipodi:docname="process-syncing-error-symbolic.svg">
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="22.627417"
inkscape:cx="8"
inkscape:cy="8"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:window-width="2493"
inkscape:window-height="1385"
inkscape:window-x="67"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:grid-bbox="true">
<inkscape:grid
type="xygrid"
id="grid5794" />
</sodipodi:namedview>
<defs
id="defs5218" />
<metadata
id="metadata5221">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Layer 1">
<path
inkscape:connector-curvature="0"
style="color:#000000;text-indent:0;text-transform:none;fill:#bebebe;enable-background:new"
d="m 7.779297,0.998047 v 0.00195 C 7.098247,1.182487 6.506069,1.7146051 6.355469,2.4238251 6.048989,3.2857751 5.792677,4.165347 5.498047,5.031247 4.378947,5.056147 3.253672,4.977969 2.138672,5.076169 0.94377201,5.342309 0.37275701,7.1108189 1.373047,7.919919 c 0.81417,0.69141 1.7107,1.2790281 2.5625,1.9238281 -0.31227,1.0962999 -0.753223,2.1619499 -0.970703,3.2812499 -0.0799,1.293 1.678647,2.292631 2.685547,1.394531 0.78479,-0.56692 1.563856,-1.138831 2.347656,-1.707031 0.93364,0.64349 1.803709,1.388478 2.787109,1.955078 1.117,0.48964 2.544644,-0.642322 2.214844,-1.851562 -0.26263,-1.0374 -0.62909,-2.046666 -0.9375,-3.0722659 0.89525,-0.68599 1.853572,-1.2960156 2.701172,-2.0410156 0.67556,-0.7335701 0.424752,-1.9353158 -0.361328,-2.4785156 -0.70531,-0.46374 -1.576141,-0.2441088 -2.369141,-0.2929688 H 10.46875 c -0.36771,-1.0708 -0.669878,-2.1694562 -1.080078,-3.2226562 -0.13,-0.48 -0.969375,-0.8105469 -1.609375,-0.810547 z M 7,6 H 9 V 9.0000001 H 7 Z m 0,4 h 2 v 1 H 7 Z"
id="path4599" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.8 KiB

View file

@ -1,71 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="16px"
height="16px"
viewBox="0 0 16 16"
version="1.1"
id="SVGRoot"
sodipodi:docname="process-syncing-symbolic.svg"
inkscape:version="0.91+devel r14094">
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="32"
inkscape:cx="11.468044"
inkscape:cy="7.7124685"
inkscape:document-units="px"
inkscape:current-layer="g4575"
showgrid="false"
inkscape:window-width="2560"
inkscape:window-height="1396"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:grid-bbox="true"
showguides="true">
<inkscape:grid
type="xygrid"
id="grid5794" />
</sodipodi:namedview>
<defs
id="defs5218" />
<metadata
id="metadata5221">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Layer 1">
<g
transform="translate(19.99318,-4.4704621e-4)"
id="g4575">
<path
style="color:#000000;text-indent:0;text-transform:none;fill:#bebebe;enable-background:new"
d="M 7.7714844 0.99804688 L 7.7734375 1 C 7.0923875 1.18249 6.4982563 1.7146081 6.3476562 2.4238281 C 6.0411762 3.2857781 5.7868175 4.16535 5.4921875 5.03125 C 4.3730875 5.05615 3.2478125 4.9779719 2.1328125 5.0761719 C 0.9379125 5.3423119 0.3668975 7.1108219 1.3671875 7.9199219 C 2.1813575 8.6113319 3.0778875 9.19895 3.9296875 9.84375 C 3.6174175 10.94005 3.1764644 12.0057 2.9589844 13.125 C 2.8790844 14.418 4.6356781 15.417631 5.6425781 14.519531 C 6.4273681 13.952611 7.2083875 13.3807 7.9921875 12.8125 C 8.9258275 13.45599 9.7939435 14.200978 10.777344 14.767578 C 11.894344 15.257218 13.323941 14.125256 12.994141 12.916016 C 12.731511 11.878616 12.363097 10.86935 12.054688 9.84375 C 12.949936 9.15776 13.908259 8.5477344 14.755859 7.8027344 C 15.431419 7.0691644 15.180611 5.8674188 14.394531 5.3242188 C 13.689221 4.8604788 12.818391 5.08011 12.025391 5.03125 L 10.460938 5.03125 C 10.093227 3.9604499 9.7930125 2.8617937 9.3828125 1.8085938 C 9.2528125 1.3285938 8.4114844 0.99804687 7.7714844 0.99804688 z M 8 6 L 10 8 L 6 8 L 8 6 z M 6 9 L 10 9 L 8 11 L 6 9 z "
transform="translate(-19.99318,4.4704621e-4)"
id="path4553" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3 KiB

View file

@ -1,70 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="16px"
height="16px"
viewBox="0 0 16 16"
version="1.1"
id="SVGRoot"
sodipodi:docname="process-syncing-up-symbolic.svg"
inkscape:version="0.91+devel r14094">
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="32"
inkscape:cx="3.531812"
inkscape:cy="6.6741748"
inkscape:document-units="px"
inkscape:current-layer="g4575"
showgrid="false"
inkscape:window-width="2560"
inkscape:window-height="1396"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:grid-bbox="true">
<inkscape:grid
type="xygrid"
id="grid5794" />
</sodipodi:namedview>
<defs
id="defs5218" />
<metadata
id="metadata5221">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Layer 1">
<g
transform="translate(19.99318,-4.4704621e-4)"
id="g4575">
<path
style="color:#000000;text-indent:0;text-transform:none;fill:#bebebe;enable-background:new"
d="M 7.7714844 0.99804688 L 7.7734375 1 C 7.0923875 1.18249 6.4982563 1.7146081 6.3476562 2.4238281 C 6.0411762 3.2857781 5.7868175 4.16535 5.4921875 5.03125 C 4.3730875 5.05615 3.2478125 4.9779719 2.1328125 5.0761719 C 0.9379125 5.3423119 0.3668975 7.1108219 1.3671875 7.9199219 C 2.1813575 8.6113319 3.0778875 9.19895 3.9296875 9.84375 C 3.6174175 10.94005 3.1764644 12.0057 2.9589844 13.125 C 2.8790844 14.418 4.6356781 15.417631 5.6425781 14.519531 C 6.4273681 13.952611 7.2083875 13.3807 7.9921875 12.8125 C 8.9258275 13.45599 9.7939435 14.200978 10.777344 14.767578 C 11.894344 15.257218 13.323941 14.125256 12.994141 12.916016 C 12.731511 11.878616 12.363097 10.86935 12.054688 9.84375 C 12.949936 9.15776 13.908259 8.5477344 14.755859 7.8027344 C 15.431419 7.0691644 15.180611 5.8674188 14.394531 5.3242188 C 13.689221 4.8604788 12.818391 5.08011 12.025391 5.03125 L 10.460938 5.03125 C 10.093227 3.9604499 9.7930125 2.8617937 9.3828125 1.8085938 C 9.2528125 1.3285938 8.4114844 0.99804687 7.7714844 0.99804688 z M 8 6 L 11 9 L 5 9 L 8 6 z M 7 10 L 9 10 L 9 11 L 7 11 L 7 10 z "
transform="translate(-19.99318,4.4704621e-4)"
id="path4553" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3 KiB

View file

@ -1,21 +1,14 @@
# Install app icons in system theme
theme_dir = join_paths(get_option('prefix'), 'share', 'icons', 'hicolor')
icon_sizes = ['scalable']
icon_sizes = ['16', '22', '24', '32', '48', '256', '512']
app_icon_name = 'org.sparkleshare.SparkleShare'
source_icon_name = app_icon_name
if get_option('nightly')
source_icon_name = app_icon_name + '.Nightly'
endif
foreach size : icon_sizes
icon_dir = join_paths(size + 'x' + size, 'apps')
install_data(
sources: join_paths('hicolor', icon_dir, source_icon_name + '.svg'),
install_dir: join_paths(theme_dir, icon_dir),
rename: app_icon_name + '.svg')
sources: join_paths('hicolor', icon_dir, app_icon_name + '.png'),
install_dir: join_paths(theme_dir, icon_dir))
endforeach
install_data(
@ -23,27 +16,6 @@ install_data(
install_dir: join_paths(theme_dir, 'symbolic', 'apps'))
# Install the status icons
status_icons = ['syncing',
'syncing-up',
'syncing-down',
'syncing-error']
foreach icon : status_icons
install_data(
sources: join_paths('hicolor', '24x24', 'status', app_icon_name + '-' + icon + '.png'),
install_dir: join_paths(theme_dir, '24x24', 'apps'))
install_data(
sources: join_paths('hicolor', '48x48', 'status', app_icon_name + '-' + icon + '.png'),
install_dir: join_paths(theme_dir, '48x48', 'apps'))
install_data(
sources: join_paths('hicolor', 'symbolic', 'status', app_icon_name + '-' + icon + '-symbolic.svg'),
install_dir: join_paths(theme_dir, 'symbolic', 'apps'))
endforeach
# Install other icons in app theme
app_theme_dir = join_paths(install_dir, 'icons', 'hicolor')
category = 'status'
@ -67,8 +39,45 @@ size = '16'
install_data(sources: join_paths('hicolor', size + 'x' + size, category, 'list-point.png'),
install_dir: join_paths(app_theme_dir, size + 'x' + size, category))
size = '22'
sizes = ['24', '48']
install_data(sources: join_paths('hicolor', size + 'x' + size, category, 'process-working.png'),
install_dir: join_paths(app_theme_dir, size + 'x' + size, category))
foreach size : sizes
install_data(sources: join_paths('hicolor', size + 'x' + size, category, 'process-syncing.png'),
install_dir: join_paths(app_theme_dir, size + 'x' + size, category))
install_data(sources: join_paths('hicolor', size + 'x' + size, category, 'process-syncing-up.png'),
install_dir: join_paths(app_theme_dir, size + 'x' + size, category))
install_data(sources: join_paths('hicolor', size + 'x' + size, category, 'process-syncing-down.png'),
install_dir: join_paths(app_theme_dir, size + 'x' + size, category))
install_data(sources: join_paths('hicolor', size + 'x' + size, category, 'process-syncing-error.png'),
install_dir: join_paths(app_theme_dir, size + 'x' + size, category))
endforeach
# Install Ubuntu icons
if get_option('ubuntu')
themes = ['ubuntu-mono-dark', 'ubuntu-mono-light']
size = '24'
foreach theme : themes
theme_dir = join_paths(get_option('prefix'), 'share', 'icons', theme)
install_data(sources: join_paths(theme, category, size, 'process-syncing.png'),
install_dir: join_paths(theme_dir, category, size))
install_data(sources: join_paths(theme, category, size, 'process-syncing-idle.png'),
install_dir: join_paths(theme_dir, category, size))
install_data(sources: join_paths(theme, category, size, 'process-syncing-up.png'),
install_dir: join_paths(theme_dir, category, size))
install_data(sources: join_paths(theme, category, size, 'process-syncing-down.png'),
install_dir: join_paths(theme_dir, category, size))
install_data(sources: join_paths(theme, category, size, 'process-syncing-error.png'),
install_dir: join_paths(theme_dir, category, size))
endforeach
endif

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 268 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 337 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 259 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 B

View file

@ -27,6 +27,8 @@ namespace SparkleShare {
public Note () : base ("Add Note")
{
SetWmclass ("SparkleShare", "SparkleShare");
IconName = "org.sparkleshare.SparkleShare";
Resizable = false;
WindowPosition = WindowPosition.CenterAlways;

View file

@ -1,58 +1,36 @@
# SparkleShare for Linux
## Building with Flatpak
If you want to test SparkleShare from Git, it's easiest to build a flatpak locally using [this spec](
https://github.com/hbons/org.sparkleshare.SparkleShare/) and run it.
## Building on Linux
### Common build requirements
You will need the packages listed below for the most used Linux distributions:
You will need the packages listed below for the most used Linux distributions (some are run requirements):
```shell
# On Ubuntu 16.04:
# Run requirements
sudo apt-get install \
curl \
git \
git-lfs \
gvfs
# Build requirements
sudo apt-get install \
curl \ # Run requirement
desktop-file-utils \
gtk-sharp3-gapi \
git \ # Run requirement
git-lfs \ # Run requirement
gtk-sharp3-gapi \ # To build webkit2-sharp
gvfs \ # Run requirement
libappindicator3-0.1-cil-dev \
libdbus-glib2.0-cil-dev \
libgtk3.0-cil-dev \
libnotify3.0-cil-dev \
libsoup2.4-dev \
libtool-bin \
libwebkit2gtk-4.0 \
meson \
mono-devel \
mono-mcs \
xsltproc
meson
# On Fedora 27:
# Run requirements
sudo dnf install \
curl \
git \
git-lfs \
gvfs
# Build requirements
sudo dnf install \
curl \ # Run requirement
git \ # Run requirement
git-lfs \ # Run requirement
gtk-sharp3-devel \
gtk-sharp3-gapi \
libtool \
gtk-sharp3-gapi \ # To build webkit2-sharp
gvfs \ # Run requirement
meson \
notify-sharp3-devel \
webkitgtk4-devel \
@ -62,34 +40,20 @@ sudo dnf install \
### Additional source build requirements
Install these `soup-sharp` and `webkit2gtk-sharp` bindings:
Install the `soup-sharp` and `webkit2gtk-sharp` bindings from:
https://github.com/hbons/soup-sharp
https://github.com/hbons/webkit2gtk-sharp
Both with:
```bash
git clone https://github.com/hbons/soup-sharp
cd soup-sharp/
./autogen.sh
make
sudo make install
```
```bash
git clone https://github.com/hbons/webkit2-sharp
cd webkit2-sharp/
./autogen.sh
make
sudo make install
```
On Ubuntu, also install these `appindicator-sharp` bindings:
```bash
sudo apt-get install libappindicator3-dev
git clone https://github.com/hbons/appindicator-sharp
cd appindicator-sharp/
./autogen.sh
make
sudo make install
```
Om Ubuntu, also install the `appindicator-sharp` bindings from:
https://github.com/hbons/appindicator-sharp
### Start the build
@ -103,7 +67,7 @@ sudo ninja install -C build/
```
If your distribution has an out of date `meson` package, you can install the latest version using the Python package manager:
If your distribution has an out of date meson package, you can install the latest version using the Python package manager:
```bash
# Install pip using your system's package manager

View file

@ -152,22 +152,22 @@ namespace SparkleShare {
// Padding column
tree_view.AppendColumn ("Padding", new Gtk.CellRendererText (), "text", 0);
tree_view.Columns [0].Cells [0].Xpad = 8;
tree_view.Columns [0].Cells [0].Xpad = 4;
// Icon column
tree_view.AppendColumn ("Icon", new Gtk.CellRendererPixbuf (), "pixbuf", 1);
tree_view.Columns [1].Cells [0].Xpad = 6;
tree_view.Columns [1].Cells [0].Xpad = 4;
// Service column
TreeViewColumn service_column = new TreeViewColumn () { Title = "Service" };
CellRendererText service_cell = new CellRendererText () { Ypad = 12 };
CellRendererText service_cell = new CellRendererText () { Ypad = 8 };
service_column.PackStart (service_cell, true);
service_column.SetCellDataFunc (service_cell, new TreeCellDataFunc (RenderServiceColumn));
foreach (Preset preset in Controller.Presets) {
store.AppendValues ("", new Gdk.Pixbuf (preset.ImagePath),
"<span><b>" + preset.Name + "</b>\n" +
"<span size=\"small\" fgcolor=\"" + SparkleShare.UI.SecondaryTextColor + "\">" + preset.Description + "</span>" +
"<span size=\"small\"><b>" + preset.Name + "</b>\n" +
"<span fgcolor=\"" + SparkleShare.UI.SecondaryTextColor + "\">" + preset.Description + "</span>" +
"</span>", preset);
}

View file

@ -32,19 +32,22 @@ namespace SparkleShare {
public SetupWindow () : base ("SparkleShare Setup")
{
SetWmclass ("SparkleShare", "SparkleShare");
IconName = "org.sparkleshare.SparkleShare";
Resizable = false;
WindowPosition = WindowPosition.CenterAlways;
Deletable = false;
TypeHint = Gdk.WindowTypeHint.Dialog;
SetSizeRequest (720, 540);
SetSizeRequest (400, 400);
DeleteEvent += delegate (object sender, DeleteEventArgs args) { args.RetVal = true; };
VBox layout_vertical = new VBox (false, 16);
layout_vertical.BorderWidth = 16;
this.content_area = new EventBox ();
this.content_area = new EventBox ();
this.option_area = new EventBox ();
this.buttons = CreateButtonBox ();

View file

@ -5,4 +5,3 @@ Exec=sh -c "type -P sparkleshare &>/dev/null && sparkleshare || flatpak run org.
Icon=org.sparkleshare.SparkleShare
Terminal=false
X-GNOME-Autostart-enabled=true
X-AppStream-Ignore=true

View file

@ -125,6 +125,15 @@
<None Include="..\Common\Presets\own-server%402x.png">
<Link>Presets\own-server%402x.png</Link>
</None>
<None Include="..\Common\Presets\planio.png">
<Link>Presets\planio.png</Link>
</None>
<None Include="..\Common\Presets\planio.xml">
<Link>Presets\planio.xml</Link>
</None>
<None Include="..\Common\Presets\planio%402x.png">
<Link>Presets\planio%402x.png</Link>
</None>
<None Include="org.sparkleshare.SparkleShare.appdata.xml" />
<None Include="org.sparkleshare.SparkleShare.desktop" />
<None Include="org.sparkleshare.SparkleShare.Invites.desktop" />
@ -166,4 +175,4 @@
</ItemGroup>
<Import Project="..\Common\SparkleShare.projitems" Label="Shared" Condition="Exists('..\Common\SparkleShare.projitems')" />
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
</Project>
</Project>

View file

@ -31,7 +31,6 @@ namespace SparkleShare {
public class StatusIcon {
public StatusIconController Controller = new StatusIconController ();
public static bool use_appindicator = true;
Gtk.StatusIcon status_icon;
@ -48,16 +47,16 @@ namespace SparkleShare {
public StatusIcon ()
{
if (use_appindicator) {
if (InstallationInfo.OperatingSystem == OS.Ubuntu) {
#if HAVE_APP_INDICATOR
indicator = new Indicator ("sparkleshare", "sparkleshare", (int) IndicatorCategory.ApplicationStatus) {
IconName = UserInterface.APP_ID + "-symbolic",
IconName = "process-syncing-idle",
Status = (int) IndicatorStatus.Active
};
#endif
} else {
this.status_icon = new Gtk.StatusIcon { IconName = UserInterface.APP_ID };
this.status_icon = new Gtk.StatusIcon { IconName = "org.sparkleshare.SparkleShare" };
this.status_icon.Activate += ShowMenu; // Primary mouse button click
this.status_icon.PopupMenu += ShowMenu; // Secondary mouse button click
}
@ -68,22 +67,24 @@ namespace SparkleShare {
Application.Invoke (delegate {
string icon_name = "org.sparkleshare.SparkleShare";
if (InstallationInfo.OperatingSystem == OS.Ubuntu) {
icon_name = "process-syncing-idle";
}
if (state == IconState.SyncingUp)
icon_name += "-syncing-up";
icon_name = "process-syncing-up";
else if (state == IconState.SyncingDown)
icon_name += "-syncing-down";
icon_name = "process-syncing-down";
else if (state == IconState.Syncing)
icon_name += "-syncing";
icon_name = "process-syncing";
else if (state == IconState.Error)
icon_name += "-syncing-error";
if (use_appindicator) {
icon_name += "-symbolic";
icon_name = "process-syncing-error";
if (InstallationInfo.OperatingSystem == OS.Ubuntu) {
#if HAVE_APP_INDICATOR
indicator.IconName = icon_name;
// Hack to force update the status icon
// Force update of the status icon
indicator.Status = (int) IndicatorStatus.Attention;
indicator.Status = (int) IndicatorStatus.Active;
#endif
@ -127,8 +128,7 @@ namespace SparkleShare {
this.state_item = new MenuItem (Controller.StateText) { Sensitive = false };
ImageMenuItem folder_item = new SparkleMenuItem ("SparkleShare");
folder_item.Image = new Image (UserInterfaceHelpers.GetIcon (UserInterface.APP_ID, 16));
folder_item.Submenu = new Menu ();
folder_item.Image = new Image (UserInterfaceHelpers.GetIcon ("org.sparkleshare.SparkleShare", 16));
this.menu.Add (this.state_item);
this.menu.Add (new SeparatorMenuItem ());
@ -148,9 +148,7 @@ namespace SparkleShare {
this.state_menu_items [i] = new SparkleMenuItem (project.StatusMessage) { Sensitive = false };
(item.Submenu as Menu).Add (this.state_menu_items [i]);
if (!use_appindicator)
(item.Submenu as Menu).Add (new SeparatorMenuItem ());
(item.Submenu as Menu).Add (new SeparatorMenuItem ());
if (project.IsPaused) {
MenuItem resume_item;
@ -159,17 +157,12 @@ namespace SparkleShare {
string icons_path = Path.Combine (UserInterface.AssetsPath, "icons", "hicolor", "12x12", "status");
foreach (KeyValuePair<string, string> pair in project.UnsyncedChangesInfo) {
string icon_path = Path.Combine (icons_path, pair.Value.Replace ("-12", ""));
var change_item = new SparkleMenuItem (pair.Key) {
(item.Submenu as Menu).Add (new SparkleMenuItem (pair.Key) {
Image = new Image (icon_path),
Sensitive = false
};
if (!use_appindicator) {
string icon_path = Path.Combine (icons_path, pair.Value.Replace ("-12", ""));
change_item.Image = new Image (icon_path);
}
(item.Submenu as Menu).Add (change_item);
});
}
if (!string.IsNullOrEmpty (project.MoreUnsyncedChanges)) {
@ -177,10 +170,8 @@ namespace SparkleShare {
Sensitive = false
});
}
if (!use_appindicator)
(item.Submenu as Menu).Add (new SeparatorMenuItem ());
(item.Submenu as Menu).Add (new SeparatorMenuItem ());
resume_item = new MenuItem ("Sync and Resume…");
} else {
@ -207,21 +198,14 @@ namespace SparkleShare {
(item.Child as Label).UseUnderline = false;
item.Image = new Image (folder_icon);
(folder_item.Submenu as Menu).Add (item);
this.menu.Add (item);
i++;
};
}
this.recent_events_item = new MenuItem ("Recent Changes…");
this.recent_events_item = new MenuItem ("History…");
this.recent_events_item.Sensitive = Controller.RecentEventsItemEnabled;
if (!use_appindicator)
(folder_item.Submenu as Menu).Add (new SeparatorMenuItem ());
(folder_item.Submenu as Menu).Add (this.recent_events_item);
this.quit_item = new MenuItem ("Quit") { Sensitive = Controller.QuitItemEnabled };
MenuItem add_item = new MenuItem ("Sync Remote Project…");
@ -237,10 +221,7 @@ namespace SparkleShare {
copy_item.Activated += delegate { Controller.CopyToClipboardClicked (); };
(link_code_item.Submenu as Menu).Add (code_item);
if (!use_appindicator)
(link_code_item.Submenu as Menu).Add (new SeparatorMenuItem ());
(link_code_item.Submenu as Menu).Add (new SeparatorMenuItem ());
(link_code_item.Submenu as Menu).Add (copy_item);
}
@ -251,16 +232,44 @@ namespace SparkleShare {
this.recent_events_item.Activated += delegate { Controller.RecentEventsClicked (); };
this.quit_item.Activated += delegate { Controller.QuitClicked (); };
folder_item.Submenu = new Menu ();
(folder_item.Submenu as Menu).Add (this.recent_events_item);
if (InstallationInfo.OperatingSystem == OS.Ubuntu) {
MenuItem notify_item;
if (SparkleShare.Controller.NotificationsEnabled)
notify_item = new MenuItem ("Turn Notifications Off");
else
notify_item = new MenuItem ("Turn Notifications On");
notify_item.Activated += delegate {
SparkleShare.Controller.ToggleNotifications ();
Application.Invoke (delegate {
if (SparkleShare.Controller.NotificationsEnabled)
(notify_item.Child as Label).Text = "Turn Notifications Off";
else
(notify_item.Child as Label).Text = "Turn Notifications On";
});
};
(folder_item.Submenu as Menu).Add (new SeparatorMenuItem ());
(folder_item.Submenu as Menu).Add (notify_item);
}
(folder_item.Submenu as Menu).Add (new SeparatorMenuItem ());
(folder_item.Submenu as Menu).Add (link_code_item);
(folder_item.Submenu as Menu).Add (new SeparatorMenuItem ());
(folder_item.Submenu as Menu).Add (about_item);
this.menu.Add (new SeparatorMenuItem ());
this.menu.Add (add_item);
this.menu.Add (link_code_item);
this.menu.Add (new SeparatorMenuItem ());
this.menu.Add (about_item);
this.menu.Add (new SeparatorMenuItem ());
this.menu.Add (this.quit_item);
this.menu.ShowAll ();
if (use_appindicator) {
if (InstallationInfo.OperatingSystem == OS.Ubuntu) {
#if HAVE_APP_INDICATOR
indicator.Menu = this.menu;
#endif
@ -291,3 +300,4 @@ namespace SparkleShare {
}
}
}

View file

@ -35,10 +35,9 @@ namespace SparkleShare
public About About;
public Note Note;
public string SecondaryTextColor;
public string SecondaryTextColorSelected;
public readonly string SecondaryTextColor;
public readonly string SecondaryTextColorSelected;
public static readonly string APP_ID = "org.sparkleshare.SparkleShare";
Application application;
@ -47,20 +46,31 @@ namespace SparkleShare
string gtk_version = string.Format ("{0}.{1}.{2}", Global.MajorVersion, Global.MinorVersion, Global.MicroVersion);
Logger.LogInfo ("Environment", "GTK+ " + gtk_version);
application = new Application (APP_ID, GLib.ApplicationFlags.None);
application.Activated += ApplicationActivatedDelegate;
if (!application.IsRemote)
return;
application = new Application ("org.sparkleshare.SparkleShare", GLib.ApplicationFlags.None);
application.Register (null);
application.Activated += ApplicationActivatedDelegate;
if (IconTheme.Default != null)
IconTheme.Default.AppendSearchPath (Path.Combine (UserInterface.AssetsPath, "icons"));
var label = new Label ();
Gdk.Color color = UserInterfaceHelpers.RGBAToColor (label.StyleContext.GetColor (StateFlags.Insensitive));
SecondaryTextColor = UserInterfaceHelpers.ColorToHex (color);
var tree_view = new TreeView ();
color = UserInterfaceHelpers.MixColors (
UserInterfaceHelpers.RGBAToColor (tree_view.StyleContext.GetColor (StateFlags.Selected)),
UserInterfaceHelpers.RGBAToColor (tree_view.StyleContext.GetBackgroundColor (StateFlags.Selected)),
0.39);
SecondaryTextColorSelected = UserInterfaceHelpers.ColorToHex (color);
}
public void Run (string [] args)
{
ParseArgs (args);
MethodInfo [] methods = typeof (GLib.Application).GetMethods (BindingFlags.Instance | BindingFlags.Public);
ParameterInfo [] run_parameters = new ParameterInfo [0];
MethodInfo run_method = methods [0];
@ -83,39 +93,11 @@ namespace SparkleShare
run_method.Invoke ((application as GLib.Application), new object [] { 0, null });
} else {
run_method.Invoke ((application as GLib.Application), new object [] { APP_ID, new string [0] });
run_method.Invoke ((application as GLib.Application), new object [] { "org.sparkleshare.SparkleShare", new string [0] });
}
}
void ParseArgs (string [] args)
{
if (args.Length > 0)
Logger.LogInfo ("Environment", "Arguments: " + string.Join (" ", args));
if (Array.IndexOf (args, "--status-icon=gtk") > -1)
StatusIcon.use_appindicator = false;
#if HAVE_APP_INDICATOR
if (Array.IndexOf (args, "--status-icon=appindicator") > -1)
StatusIcon.use_appindicator = true;
#else
if (StatusIcon.use_appindicator) {
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine ("error: AppIndicator not found. Install AppIndicator or run with --status-icon=gtk");
Console.ResetColor ();
Environment.Exit (-1);
}
#endif
if (StatusIcon.use_appindicator)
Logger.LogInfo ("Environment", "Status Icon: AppIndicator");
else
Logger.LogInfo ("Environment", "Status Icon: GtkStatusIcon");
}
void ApplicationActivatedDelegate (object sender, EventArgs args)
{
if (application.Windows.Length > 0) {
@ -134,9 +116,6 @@ namespace SparkleShare
return;
}
if (IconTheme.Default != null)
IconTheme.Default.AppendSearchPath (Path.Combine (UserInterface.AssetsPath, "icons"));
Setup = new Setup ();
EventLog = new EventLog ();
About = new About ();
@ -149,24 +128,8 @@ namespace SparkleShare
About.Application = application;
Note.Application = application;
DetectTextColors ();
SparkleShare.Controller.UIHasLoaded ();
}
void DetectTextColors ()
{
Gdk.Color text_color = UserInterfaceHelpers.RGBAToColor (new Label ().StyleContext.GetColor (StateFlags.Insensitive));
var tree_view_style = new TreeView ().StyleContext;
Gdk.Color text_color_selected = UserInterfaceHelpers.MixColors (
UserInterfaceHelpers.RGBAToColor (tree_view_style.GetColor (StateFlags.Selected)),
UserInterfaceHelpers.RGBAToColor (tree_view_style.GetBackgroundColor (StateFlags.Selected)),
0.2);
SecondaryTextColor = UserInterfaceHelpers.ColorToHex (text_color);
SecondaryTextColorSelected = UserInterfaceHelpers.ColorToHex (text_color_selected);
}
}
}

View file

@ -18,8 +18,8 @@
using System;
using System.IO;
using Sparkles;
using Gtk;
using Sparkles;
namespace SparkleShare {
@ -66,7 +66,7 @@ namespace SparkleShare {
(int) Math.Truncate (color.Blue / 256.00));
}
public static Gdk.Color RGBAToColor (Gdk.RGBA rgba) {
return new Gdk.Color () {
Red = (ushort) (rgba.Red * 65535),
@ -85,11 +85,13 @@ namespace SparkleShare {
public static Gdk.Color MixColors (Gdk.Color first_color, Gdk.Color second_color, double ratio)
{
return new Gdk.Color (
Convert.ToByte ((255 * (Math.Min (65535, first_color.Red * (1.0 - ratio) + second_color.Red * ratio))) / 65535),
Convert.ToByte ((255 * (Math.Min (65535, first_color.Green * (1.0 - ratio) + second_color.Green * ratio))) / 65535),
Convert.ToByte ((255 * (Math.Min (65535, first_color.Blue * (1.0 - ratio) + second_color.Blue * ratio))) / 65535)
Convert.ToByte ((255 * (Math.Min (65535, first_color.Red * (1.0 - ratio) +
second_color.Red * ratio))) / 65535),
Convert.ToByte ((255 * (Math.Min (65535, first_color.Green * (1.0 - ratio) +
second_color.Green * ratio))) / 65535),
Convert.ToByte ((255 * (Math.Min (65535, first_color.Blue * (1.0 - ratio) +
second_color.Blue * ratio))) / 65535)
);
}
}
}

View file

@ -28,18 +28,10 @@ configure_file(
# .desktop and .appdata files
apps_dir = join_paths(get_option('prefix'), 'share', 'applications')
install_data(sources: 'org.sparkleshare.SparkleShare.desktop', install_dir: apps_dir)
install_data(sources: 'org.sparkleshare.SparkleShare.Invites.desktop', install_dir: apps_dir)
install_data(sources: 'SparkleShare.Autostart.desktop', install_dir: apps_dir)
install_data(sources: 'org.sparkleshare.SparkleShare.appdata.xml', install_dir: join_paths(get_option('prefix'), 'share', 'metainfo'))
if get_option('nightly')
install_data(sources: 'org.sparkleshare.SparkleShare.Nightly.desktop',
install_dir: apps_dir,
rename: 'org.sparkleshare.SparkleShare.desktop')
else
install_data(sources: 'org.sparkleshare.SparkleShare.desktop',
install_dir: apps_dir)
endif
install_data(sources: 'org.sparkleshare.SparkleShare.appdata.xml', install_dir: join_paths(get_option('prefix'), 'share', 'appdata'))
# Build SparkleShare
@ -54,7 +46,7 @@ appindicator = dependency('appindicator3-sharp-0.1', required: get_option('ubunt
args = '-r:Mono.Posix'
if appindicator.found()
args = [args, '-define:HAVE_APP_INDICATOR']
args = [args, '-define:HAVE_APP_INDICATOR']
endif
sparkleshare = executable('SparkleShare',
@ -68,4 +60,3 @@ sparkleshare = executable('SparkleShare',
subdir('Images')
subdir('Images/icons')

View file

@ -1,9 +0,0 @@
[Desktop Entry]
Type=Application
Name=SparkleShare (Nightly)
Exec=sparkleshare
Icon=org.sparkleshare.SparkleShare
Terminal=false
Categories=Network;FileTransfer;GNOME;GTK;
X-GNOME-UsesNotifications=true

View file

@ -1,30 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop-application">
<component type="desktop">
<name>SparkleShare</name>
<summary>Magic self hosted Git file sync</summary>
<developer_name>Hylke Bons</developer_name>
<project_license>GPL-3.0+</project_license>
<url type="homepage">https://www.sparkleshare.org/</url>
<url type="homepage">http://www.sparkleshare.org/</url>
<url type="bugtracker">https://www.github.com/hbons/SparkleShare/issues</url>
<url type="donation">https://www.patreon.com/SparkleShare</url>
<description>
<p>SparkleShare is a file sharing and collaboration app. It works just like Dropbox, and you can run it on your own server.</p>
<p>SparkleShare is based on the popular version control system Git. It even supports the popular extension Git LFS to deal well with large files. So if you are already using Git repositories in your company, SparkleShare will integrate seamlessly.</p>
<p>Note: if you're using GNOME Shell as your desktop environment on a distribution other than Ubuntu, install the AppIndicator Support extension to show the SparkleShare status icon. If for whatever reason you need the legacy status icon, start SparkleShare with --status-icon=gtk.</p>
<p>Note: on some Linux distributions you'll need the TopIcons extension for GNOME Shell to show the SparkleShare status icon.</p>
</description>
<releases>
<release version="3.28.0" date="2018-07-14" urgency="medium">
<description>
<p>Fixes and improvements:</p>
<ul>
<li>Use appindicator as the default status icon and supported by the flatpak</li>
<li>Fix recent changes window showing broken entries with newer versions of Git</li>
</ul>
</description>
</release>
<release version="2.0.1" date="2017-12-04" urgency="low">
<description>
<p>Fixes and improvements:</p>
@ -52,30 +41,20 @@
<screenshots>
<screenshot type="default">
<caption>Sync projects to your computer</caption>
<image type="source" width="1200" height="675">https://raw.githubusercontent.com/hbons/SparkleShare/master/SparkleShare/Linux/Images/gnome-software-screenshot-1.jpg</image>
</screenshot>
<screenshot>
<caption>Projects added to your SparkleShare folder sync automatically</caption>
<image type="source" width="1200" height="675">https://raw.githubusercontent.com/hbons/SparkleShare/master/SparkleShare/Linux/Images/gnome-software-screenshot-2.jpg</image>
<image type="source" width="1338" height="754">https://raw.githubusercontent.com/hbons/SparkleShare/master/SparkleShare/Linux/Images/gnome-software-screenshot-1.png</image>
</screenshot>
<screenshot>
<caption>View your team's file history</caption>
<image type="source" width="1200" height="675">https://raw.githubusercontent.com/hbons/SparkleShare/master/SparkleShare/Linux/Images/gnome-software-screenshot-3.jpg</image>
<image type="source" width="1338" height="754">https://raw.githubusercontent.com/hbons/SparkleShare/master/SparkleShare/Linux/Images/gnome-software-screenshot-2.png</image>
</screenshot>
</screenshots>
<id>org.sparkleshare.SparkleShare</id>
<launchable type="desktop-id">org.sparkleshare.SparkleShare.desktop</launchable>
<id type="desktop">org.sparkleshare.SparkleShare.desktop</id>
<launchable id="desktop-id">org.sparkleshare.SparkleShare.desktop</launchable>
<provides>
<binary>sparkleshare</binary>
</provides>
<metadata_license>CC0-1.0</metadata_license>
<metadata_licence>CC0-1.0</metadata_licence>
<update_contact>hi_AT_planetpeanut.uk</update_contact>
<content_rating type="oars-1.0">
<content_attribute id="social-chat">moderate</content_attribute>
<content_attribute id="social-info">mild</content_attribute>
<content_attribute id="social-contacts">intense</content_attribute>
</content_rating>
</component>

View file

@ -6,4 +6,3 @@ Icon=org.sparkleshare.SparkleShare
Terminal=false
Categories=Network;FileTransfer;GNOME;GTK;
X-GNOME-UsesNotifications=true

View file

@ -1,7 +1,7 @@
#!/usr/bin/env bash
if [[ $UID -eq 0 ]]; then
echo "SparkleShare can not be run as root. Things would go utterly wrong."
echo "Please don't run SparkleShare as root. Things would go utterly wrong."
exit 1
fi
@ -12,18 +12,10 @@ case $1 in
curl --insecure --output ~/SparkleShare/.$invite.xml $open
mono "@ABS_INSTALL_DIR@/SparkleShare.exe"
;;
version|--version)
echo @VERSION@
;;
help|--help)
echo "Usage:"
echo " sparkleshare [OPTION]"
echo
echo "Options:"
echo " --open sparkleshare://URL Open invite file at URL"
echo " --status-icon=[appindicator|gtk] Use a specific status icon implementation"
help|--help|version|--version)
mono "@ABS_INSTALL_DIR@/SparkleShare.exe" help
;;
*)
mono "@ABS_INSTALL_DIR@/SparkleShare.exe" $@
mono "@ABS_INSTALL_DIR@/SparkleShare.exe" $2
;;
esac

View file

@ -51,16 +51,6 @@ namespace SparkleShare {
Path.Combine (GitCommand.ExecPath, "git-lfs"),
Path.Combine (Config.BinPath, "git-lfs"),
overwite);
NSWorkspace.Notifications.ObserveDidWake((object sender, NSNotificationEventArgs e) => {
Console.Write ("Detected wake from sleep, checking for updates\n");
if (SparkleShare.Controller.RepositoriesLoaded) {
foreach (var repo in SparkleShare.Controller.Repositories) {
repo.SyncDown();
repo.SyncUp();
}
}
});
}

View file

@ -9,13 +9,13 @@
<key>CFBundleName</key>
<string>SparkleShare</string>
<key>CFBundleShortVersionString</key>
<string>3.38.0</string>
<string>3.28.0</string>
<key>CFBundleVersion</key>
<string>3.38.0</string>
<string>3.28.0</string>
<key>LSApplicationCategoryType</key>
<string>public.app-category.utilities</string>
<key>LSMinimumSystemVersion</key>
<string>10.9</string>
<string>10.7</string>
<key>LSUIElement</key>
<string>1</string>
<key>NSMainNibFile</key>

View file

@ -13,7 +13,6 @@
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<MonoMacResourcePrefix>Resources</MonoMacResourcePrefix>
<ReleaseVersion></ReleaseVersion>
<UseXamMacFullFramework>true</UseXamMacFullFramework>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>none</DebugType>
@ -41,8 +40,6 @@
<TlsProvider>Default</TlsProvider>
<LinkMode>None</LinkMode>
<UseMSBuildEngine>True</UseMSBuildEngine>
<AOTMode>None</AOTMode>
<LangVersion>latest</LangVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<Optimize>False</Optimize>
@ -70,10 +67,6 @@
<LinkMode>None</LinkMode>
<HttpClientHandler>HttpClientHandler</HttpClientHandler>
<TlsProvider>Default</TlsProvider>
<AOTMode>None</AOTMode>
<CodeSigningKey>Mac Developer</CodeSigningKey>
<PackageSigningKey>3rd Party Mac Developer Installer</PackageSigningKey>
<LangVersion>latest</LangVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseDist|AnyCPU' ">
<Optimize>false</Optimize>
@ -100,9 +93,7 @@
<Profiling>false</Profiling>
<HttpClientHandler>HttpClientHandler</HttpClientHandler>
<TlsProvider>Default</TlsProvider>
<LinkMode>Platform</LinkMode>
<AOTMode>None</AOTMode>
<LangVersion>latest</LangVersion>
<LinkMode>None</LinkMode>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseMac|AnyCPU' ">
<DebugType>none</DebugType>
@ -128,11 +119,9 @@
<Profiling>false</Profiling>
<HttpClientHandler>HttpClientHandler</HttpClientHandler>
<TlsProvider>Default</TlsProvider>
<LinkMode>Platform</LinkMode>
<LinkMode>None</LinkMode>
<CodeSigningKey>Mac Developer</CodeSigningKey>
<PackageSigningKey>3rd Party Mac Developer Installer</PackageSigningKey>
<AOTMode>None</AOTMode>
<LangVersion>latest</LangVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'DebugMac|AnyCPU' ">
<Optimize>False</Optimize>
@ -157,11 +146,9 @@
<UseSGen>false</UseSGen>
<UseRefCounting>false</UseRefCounting>
<Profiling>false</Profiling>
<LinkMode>Platform</LinkMode>
<LinkMode>None</LinkMode>
<HttpClientHandler>HttpClientHandler</HttpClientHandler>
<TlsProvider>Default</TlsProvider>
<AOTMode>None</AOTMode>
<LangVersion>latest</LangVersion>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
@ -281,6 +268,12 @@
<BundleResource Include="..\Common\Presets\own-server%402x.png">
<Link>Presets\own-server%402x.png</Link>
</BundleResource>
<BundleResource Include="..\Common\Presets\planio.png">
<Link>Presets\planio.png</Link>
</BundleResource>
<BundleResource Include="..\Common\Presets\planio%402x.png">
<Link>Presets\planio%402x.png</Link>
</BundleResource>
<BundleResource Include="..\Common\Presets\bitbucket.xml">
<Link>Presets\bitbucket.xml</Link>
</BundleResource>
@ -293,6 +286,9 @@
<BundleResource Include="..\Common\Presets\own-server.xml">
<Link>Presets\own-server.xml</Link>
</BundleResource>
<BundleResource Include="..\Common\Presets\planio.xml">
<Link>Presets\planio.xml</Link>
</BundleResource>
<BundleResource Include="..\Common\HTML\day-entry.html">
<Link>HTML\day-entry.html</Link>
</BundleResource>

2
SparkleShare/Mac/UserInterface/Bubbles.cs Normal file → Executable file
View file

@ -22,7 +22,7 @@ namespace SparkleShare {
public class Bubbles : NSObject {
public BubblesController Controller = new BubblesController (false);
public BubblesController Controller = new BubblesController ();
public Bubbles ()

View file

@ -27,7 +27,7 @@ namespace SparkleShare {
public class EventLog : NSWindow {
public EventLogController Controller = new EventLogController (false);
public EventLogController Controller = new EventLogController ();
public float TitlebarHeight;
WebView web_view;

4
SparkleShare/Mac/Watcher.cs Normal file → Executable file
View file

@ -149,10 +149,6 @@ namespace SparkleShare {
if (handler != null) {
List<string> filtered_paths = new List<string> ();
foreach (var path in paths) {
if (path.EndsWith(".git")
|| path.Contains ("/.git/"))
continue;
if (path.Length > BasePath.Length) {
var t = path.Substring (BasePath.Length);
t = t.Trim ("/".ToCharArray ());

View file

@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/sh
function abspath()
{
case "${1}" in
@ -11,8 +11,6 @@ function abspath()
esac
}
export projectFolder=$(dirname $0)
export projectFolder=$(abspath ${projectFolder})
LINE=$(cat ${projectFolder}/git.download)
TMP=()
@ -21,22 +19,23 @@ for val in $LINE ; do
TMP+=("$val")
done
export projectFolder=$(dirname $0)
export projectFolder=$(abspath ${projectFolder})
export gitDownload="${TMP[0]}"
export gitName=${gitDownload##*/}
export gitSHA256="${TMP[1]}"
set -e
if [[ ! -f ${projectFolder}/${gitName} ]];
if [ ! -f ${projectFolder}/git.tar.gz ]
then
curl --silent --location ${gitDownload} > ${projectFolder}/${gitName}
test -e ${projectFolder}/${gitName} || { echo "Failed to download git"; exit 1; }
curl --silent --location ${gitDownload} > git.tar.gz
test -e git.tar.gz || { echo "Failed to download git"; exit 1; }
printf "${gitSHA256} ${projectFolder}/${gitName}" | shasum --check --algorithm 256
printf "${gitSHA256} git.tar.gz" | shasum --check --algorithm 256
mkdir git/
tar xzf git.tar.gz --directory git/
tar czf git.tar.gz git/
rm -rf git/
fi
rm -f ${projectFolder}/git.tar.gz
ln -s ${projectFolder}/$gitName ${projectFolder}/git.tar.gz

2
SparkleShare/Mac/config Normal file
View file

@ -0,0 +1,2 @@
<configuration>
</configuration>

View file

@ -1 +1 @@
https://github.com/desktop/dugite-native/releases/download/v2.29.2-2/dugite-native-v2.29.2-f9ceb12-macOS.tar.gz ff16488ebbb3a0000fac34c8afc01bc4e839ad478717fbcbbe0c207642b5872c
https://github.com/desktop/dugite-native/releases/download/v2.16.2/dugite-native-v2.16.2-macOS-119.tar.gz 65d608eb16e0e262bae6bd7828b28cf640455e949003fec94c1233e084b9ccde

View file

@ -8,21 +8,12 @@ echo packing ${bundle} for release without Mono framework dependency
export MONO_PATH=`readlink /Library/Frameworks/Mono.framework/Versions/Current`
export PKG_CONFIG_PATH=/usr/lib/pkgconfig:${MONO_PATH}/lib/pkgconfig
export AS="as -arch i386"
export CC="cc -arch i386 -lobjc -liconv -framework Foundation"
export PATH=/usr/local/bin:/opt/local/bin:/Library/Frameworks/Mono.framework/Versions/Current/bin:/usr/bin:/bin
mkdir -p cd ${bundle}/Contents/MonoBundle/
cd ${bundle}/Contents/MonoBundle/
assemblyPath=$(dirname $(dirname $(dirname $(pwd))))
echo ${projectFolder}
pwd
echo "x"
echo ${assemblyPath}
# merge all Assemblies into one Mac binary
mkbundle \
--simple \
-v \
--config ./config \
-o ../MacOS/SparkleShare \
${assemblyPath}/SparkleShare.exe ${assemblyPath}/Sparkles.dll ${assemblyPath}/Sparkles.Git.dll
mkbundle --static --deps --config ./config -o ../MacOS/SparkleShare SparkleShare.exe Sparkles.dll Xamarin.Mac.dll Sparkles.Git.dll
rm *.dll *.exe

View file

@ -9,7 +9,6 @@ echo Postprocessing ${bundle}...
export PATH=/usr/local/bin:/opt/local/bin:/Library/Frameworks/Mono.framework/Versions/Current/bin:/usr/bin:/bin
${projectFolder}/checkGit.sh
rm -rf ${bundle}/Contents/Resources/git
mkdir -p ${bundle}/Contents/Resources/git
tar -x -f ${projectFolder}/git.tar.gz --directory ${bundle}/Contents/Resources/git
cp -R ${projectFolder}/SparkleShareInviteOpener.app ${bundle}/Contents/Resources
tar -x -f ${projectFolder}/git.tar.gz --directory ${bundle}/Contents/Resources
cp -R SparkleShareInviteOpener.app ${bundle}/Contents/Resources
cp config ${bundle}/Contents/MonoBundle

View file

@ -265,6 +265,10 @@
<Link>Presets\bitbucket.png</Link>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="..\Common\Presets\planio.png">
<Link>Presets\planio.png</Link>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="app.config" />
<None Include="packages.config" />
</ItemGroup>
@ -281,6 +285,10 @@
<Link>Presets\own-server.xml</Link>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="..\Common\Presets\planio.xml">
<Link>Presets\planio.xml</Link>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Images\folder.png">

View file

@ -2,7 +2,7 @@
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi' xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Product Name='SparkleShare' Id='184950D5-67F6-4D06-9717-7E2F1607A7B0' UpgradeCode='D3DF1D99-87F5-47A7-A349-863DD6E4B73A'
Language='1033' Codepage='1252' Version='3.38.0' Manufacturer='SparkleShare'>
Language='1033' Codepage='1252' Version='3.28.0' Manufacturer='SparkleShare'>
<Package Id='*' Keywords='Installer' Description="SparkleShare Setup" Manufacturer='SparkleShare'
InstallerVersion='100' Languages='1033' Compressed='yes' SummaryCodepage='1252' />

View file

@ -41,7 +41,6 @@ namespace Sparkles {
StartInfo.WorkingDirectory = Path.GetTempPath ();
StartInfo.CreateNoWindow = true;
StartInfo.RedirectStandardOutput = true;
StartInfo.StandardOutputEncoding = System.Text.Encoding.UTF8;
StartInfo.RedirectStandardError = true;
StartInfo.UseShellExecute = false;

View file

@ -2,8 +2,8 @@
// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// it under the terms of the GNU Lesser 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,
@ -32,10 +32,10 @@ namespace Sparkles {
app_data_path = Path.Combine (Environment.GetFolderPath (Environment.SpecialFolder.Personal), ".config");
string config_path = Path.Combine (app_data_path, "org.sparkleshare.SparkleShare");
return new Configuration (config_path, "projects.xml");
});
public static Configuration DefaultConfiguration { get { return ConfigLazy.Value; } }
public static bool DebugMode = true;
@ -43,7 +43,6 @@ namespace Sparkles {
public readonly string FilePath;
public readonly string TmpPath;
public readonly string BinPath;
public string AvatarProvider;
public readonly string LogFilePath;
@ -52,7 +51,7 @@ namespace Sparkles {
get {
if (InstallationInfo.OperatingSystem == OS.Windows)
return Environment.GetFolderPath (Environment.SpecialFolder.UserProfile);
return Environment.GetFolderPath (Environment.SpecialFolder.Personal);
}
}
@ -60,9 +59,9 @@ namespace Sparkles {
public string FoldersPath {
get {
if (GetConfigOption ("folders_path") != null)
if (GetConfigOption ("folders_path") != null)
return GetConfigOption ("folders_path");
return Path.Combine (HomePath, "SparkleShare");
}
}
@ -337,15 +336,15 @@ namespace Sparkles {
{
return SelectSingleNode (string.Format ("/sparkleshare/folder[name=\"{0}\"]", name));
}
string FolderValueByKey (string name, string key)
{
XmlNode folder = FolderByName(name);
if ((folder != null) && (folder [key] != null))
return folder [key].InnerText;
return null;
}

View file

@ -93,14 +93,7 @@ namespace Sparkles.Git {
SetEnvironmentVariable ("GIT_SSH_COMMAND", GIT_SSH_COMMAND);
SetEnvironmentVariable ("GIT_TERMINAL_PROMPT", "0");
// Don't let Git try to read the config options in PREFIX/etc or ~
SetEnvironmentVariable ("GIT_CONFIG_NOSYSTEM", "1");
SetEnvironmentVariable ("PREFIX", "");
SetEnvironmentVariable ("HOME", "");
SetEnvironmentVariable ("LANG", "en_US.UTF8");
SetEnvironmentVariable ("LC_ALL", "en_US.UTF8");
SetEnvironmentVariable ("LANG", "en_US");
}

Some files were not shown because too many files have changed in this diff Show more