Compare commits

...

79 commits

Author SHA1 Message Date
Hylke Bons 86b8ca020a
Update Dockerfile 2023-08-14 13:25:45 +02:00
Hylke Bons 37ce57e12a
Update .travis.yml 2023-08-14 13:04:48 +02:00
Hylke Bons e2618f793e
Update Dockerfile 2023-08-14 13:04:22 +02:00
Hylke Bons 63fe3710e5
Update SHA-256 for Bitbucket preset 2023-08-14 10:33:30 +02:00
Hylke Bons 6cfd602259
Update SHA-256 for GitHub preset 2023-08-14 10:29:10 +02:00
Hylke Bons be9e12e0fe
Merge pull request #1959 from jimmac/master
update app icon
2023-01-24 15:01:00 +01:00
Hylke Bons 01c180d588
Merge pull request #1994 from uenz/fix/BuildMacOS
Fixed link errors and pack release
2023-01-24 14:59:39 +01:00
Hylke Bons 54eff3bee1
Merge pull request #1992 from uenz/fix/MacOSAddVentura
Update InstallationInfo.cs
2023-01-24 14:57:58 +01:00
uenz 1fb943b815 Fixed link errors and pack release 2022-11-05 13:05:22 +01:00
uenz 35951f0805 Update InstallationInfo.cs
Added Ventura
2022-11-02 16:46:16 +01:00
Hylke Bons 6ebda3a1d6
Merge pull request #1985 from uenz/fix/AboutController
Define security protocol
2021-11-01 22:22:26 +01:00
Hylke Bons b65e0fed53
Merge pull request #1980 from uenz/fix/CryptoRepo
Fix for issue #1958
2021-11-01 22:20:23 +01:00
uenz 903382fd29 Undone changes in spaces 2021-11-01 20:37:32 +01:00
uenz 1cdbe02e3d Define security protocol 2021-11-01 20:33:42 +01:00
uenz 347ce97ea7
Update Git.Fetcher.cs
Added comment
2021-11-01 13:32:47 +01:00
Hylke Bons 7c118ee1b0
Merge pull request #1981 from uenz/fix/MacOSSystemVersion
Updated macOS version names
2021-10-31 17:33:35 +01:00
Andre Spahlinger 1c789aba1e Merge branch 'fix/MacOSSystemVersion' of https://github.com/uenz/SparkleShare into fix/MacOSSystemVersion 2021-10-28 12:03:23 +02:00
Andre Spahlinger 02ded513a7 Cleanup 2021-10-28 06:32:13 +02:00
uenz 3f1b02fe0c Create directory if parts of path not exists 2021-10-27 22:21:50 +02:00
uenz ebc489bcc7 Updated macOS version names 2021-10-25 14:13:18 +02:00
Andre Spahlinger 85a65da878 Fix for issue #1958 2021-10-22 23:22:53 +02:00
Hylke Bons 85f3d449be
Merge pull request #1978 from kjyv/master
Poll for updates when waking up from sleep state (macOS)
2021-09-18 20:37:50 +02:00
Stefan Bethge 5ee0fe016f mac: poll for updates when waking up from sleep state 2021-09-12 18:47:36 +02:00
Hylke Bons 631f56386c
Merge pull request #1975 from uenz/fix/SetupDialogShowFiles
Fix crash when pressing show files
2021-08-03 13:47:56 +02:00
uenz 07f954cc72 Fix crash when pressing show files 2021-07-22 16:37:20 +02:00
Hylke Bons af8a521aec
Merge pull request #1970 from markusstoll/bugfixes/mac-improve-fswatcher
Mac FileWatcher - reduce load
2021-02-15 19:55:56 +01:00
Markus Stoll fbd3c79674 Drop changes in .git folder immediately, reduces load 2021-02-15 14:27:40 +01:00
Hylke Bons cb08a35bf9
Merge pull request #1969 from markusstoll/bugfixes/mac-fix-encodingproblems
Bugfixes/mac fix encodingproblems
2021-02-15 14:10:00 +01:00
Hylke Bons ba49f81af6
Merge branch 'master' into bugfixes/mac-fix-encodingproblems 2021-02-15 11:59:38 +01:00
Hylke Bons dac6783a0e
Merge pull request #1967 from markusstoll/bugfixes/macos-increase-gitversion
macOS: increase git version to 29.2-2 and improve handling of download
2021-02-15 10:55:00 +01:00
Hylke Bons c2fd750ad5
Merge branch 'master' into bugfixes/macos-increase-gitversion 2021-02-15 10:35:06 +01:00
Hylke Bons 948e14fe5e
Merge pull request #1965 from markusstoll/master
Fix problem on renaming HEAD file
2021-02-15 10:33:06 +01:00
Hylke Bons 954f1e6b1b
Merge pull request #1964 from markusstoll/bugfixes/osx_compile
Compile under OSX
2021-02-15 10:29:22 +01:00
Markus Stoll 07bb84318d Set UTF8 encoding for git commands, fixes 2021-02-14 20:16:34 +01:00
Markus Stoll 72603c5bef Improve git update handling 2021-02-14 20:03:21 +01:00
Markus Stoll 741ea0612a Remove conversion for utf8 encoded strings on macOS - with proper settings on git command things are already and would get worse if default encoding is ASCII (which seems to be the case for current VisualStudio 2019) 2021-02-14 19:27:22 +01:00
Markus Stoll 613625c5bf Set UTF8 encoding for git commands 2021-02-14 19:13:17 +01:00
Markus Stoll 37d49a990c Update git to version 2.29.2 2021-02-14 18:58:28 +01:00
Markus Stoll 6ca60c074c Fix to make SparkleShare compile under current OSX and current VisualStudio
Configuration ReleaseMac now works fine again for creating Standalone Release
2021-02-14 10:08:28 +01:00
Markus Stoll ecd84c6b87 GIT Repostory, dealing with git modules - avoid File conflict on renaming HEAD file 2021-02-04 15:02:30 +01:00
Jakub Steiner 672442b8ab update app icon
- use a single size SVG
- use a commonly used nightly variant
2020-11-30 18:38:14 +01:00
Hylke Bons 23d7166012 Update release notes 2020-11-28 18:17:54 +01:00
Hylke Bons 1a31bc2a5a Update release notes 2020-11-28 18:10:54 +01:00
Hylke Bons 5f8c858658 Add micro bit of version number 2020-11-28 18:10:54 +01:00
Hylke Bons b0c2c48dd3 ui: More helpful error message when missing AppIndicator 2020-11-28 18:10:54 +01:00
Hylke Bons c93ec2447c Bump version to 3.38 2020-11-28 18:10:54 +01:00
Hylke Bons 38a7400536
Merge pull request #1955 from MalteKiefer/update-gravatar-cert-fingerprint
updated gravatar cert fingerprint
2020-11-28 18:09:42 +01:00
Hylke Bons 73b849da84
Merge branch 'master' into update-gravatar-cert-fingerprint 2020-11-28 17:37:21 +01:00
Hylke Bons e9c9cf3f82
Merge pull request #1954 from MalteKiefer/feature-remove-planio
removed planio
2020-10-31 12:26:36 +01:00
Malte Kiefer 8e0b5e4b58 updated gravatar cert fingerprint 2020-10-23 06:04:52 +02:00
Malte Kiefer c8e398bba2 removed planio 2020-10-23 05:31:34 +02:00
Hylke Bons 55c4e5e32e sparkles git: Replace hardcoded 'master' string 2020-06-23 17:18:11 +02:00
Hylke Bons c1b62da1c5
Merge pull request #1928 from MalteKiefer/master
added LibRAavatar
2020-02-15 22:41:19 +01:00
Malte Kiefer 959a235799 added myself as Author 2020-02-15 10:14:02 +01:00
Malte Kiefer a22152e1ab removed fingerprint check for libravatar 2020-02-15 04:31:44 +01:00
Malte Kiefer 9b3e95eff3 added support for libRAvatar 2020-02-14 21:17:56 +01:00
Malte Kiefer 3970c634a6 added libravatar 2020-02-14 20:37:45 +01:00
Malte Kiefer 13ed737818 update Gravatar Fingerprint 2020-02-14 20:04:44 +01:00
Hylke Bons 21c668491e build: Bump minimum macOS version to 10.9 2020-01-25 12:55:07 +01:00
Hylke Bons a30b223180
Update README.md 2020-01-25 12:51:34 +01:00
Hylke Bons f1df983b87 build: Bump minimum macOS version to 10.9 2020-01-25 12:42:32 +01:00
Hylke Bons 8d8fb10397
Create FUNDING.yml 2020-01-24 22:42:25 +01:00
Hylke Bons cf446c00f1
travis: Force non-interactive environment 2019-05-25 11:18:00 +01:00
Hylke Bons 7ae9219fc7
build: Also bump Ubuntu in build script 2019-05-25 10:30:14 +01:00
Hylke Bons 2be2063a36
travis: Always use latest Ubuntu LTS to build 2019-05-25 10:17:36 +01:00
Hylke Bons c50b1bad25
Merge pull request #1889 from jack1142/master
Update of license links in README.md
2019-01-17 11:53:10 +01:00
jack1142 d9a709ffff
Update AboutController.cs 2019-01-16 15:36:42 +01:00
jack1142 4619f9fbd8
Update README.md 2019-01-16 15:31:11 +01:00
Hylke Bons c0ed43ff9b
Merge pull request #1884 from City-busz/patch-3
Add X-AppStream-Ignore property to autostart file
2018-12-26 15:22:56 +01:00
Balló György 31d47a7926
Add X-AppStream-Ignore property to autostart file
This makes appstream-generator to ignore this desktop entry.
2018-12-26 15:08:22 +01:00
Hylke Bons 9dac3a27c2
Merge pull request #1883 from City-busz/patch-2
Don't use legacy path for AppStream metainfo file
2018-12-26 12:45:11 +01:00
Hylke Bons 2207328611
Merge pull request #1882 from City-busz/patch-1
Fix AppStream metadata validation
2018-12-25 10:44:48 +01:00
Balló György e6775a462a
Don't use legacy path for AppStream metainfo file
Metainfo files should be installed into /usr/share/metainfo.
2018-12-25 10:01:04 +01:00
Balló György e0c4e972d0
Fix AppStream metadata validation 2018-12-25 09:53:41 +01:00
Hylke Bons cf313dce4d
Merge pull request #1875 from Ppjet6/prevent-interactive-editor
Prevent blocking on interactive $EDITOR
2018-10-05 18:15:39 +01:00
Maxime “pep” Buquet feb4e3d850
Prevent blocking on interactive $EDITOR
It happens that when merging, git calls out an interactive $EDITOR and
waits for user input. This causes SparkleShare to block as well.

Signed-off-by: Maxime “pep” Buquet <pep@collabora.com>
2018-10-05 17:41:20 +01:00
Hylke Bons 3b4fccd6a2
Update README.md 2018-09-29 20:53:16 +01:00
Hylke Bons a82644e263 tests: Add simple unit tests 2018-09-01 11:06:54 +01:00
Hylke Bons 76f3326b58
Merge pull request #1867 from hbons/feature/nightly
Prepare for nightly builds
2018-08-05 22:33:12 +01:00
68 changed files with 462 additions and 342 deletions

1
.github/AUTHORS.md vendored
View file

@ -20,6 +20,7 @@ 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 Normal file
View file

@ -0,0 +1 @@
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,6 +29,7 @@ _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:17.10 ; fi
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then docker pull ubuntu:xenial ; 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,9 +1,10 @@
# [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. [Support the project on Patreon](https://www.patreon.com/SparkleShare).
[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.
![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?
@ -20,6 +21,7 @@ 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
@ -33,12 +35,10 @@ Under the hood SparkleShare uses the version control system [Git](https://git-sc
## Build from source
`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).
`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).
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:** 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`.
[![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,3 +1,12 @@
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):
Fixed a bunch of crashes and lots of under-the-hood improvements.

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/legal/Authors.txt";
public readonly string CreditsLinkAddress = "https://github.com/hbons/SparkleShare/blob/master/.github/AUTHORS.md";
public readonly string ReportProblemLinkAddress = "https://www.github.com/hbons/SparkleShare/issues";
public readonly string DebugLogLinkAddress = "file://" + SparkleShare.Controller.Config.LogFilePath;
@ -61,6 +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");

View file

@ -32,10 +32,11 @@ namespace SparkleShare
static List<string> skipped_avatars = new List<string> ();
public static string GetAvatar (string email, int size, string target_path)
public static string GetAvatar (string email, int size, string target_path, string provider)
{
#if __MonoCS__
ServicePointManager.ServerCertificateValidationCallback = GetAvatarValidationCallBack;
if (provider == "gravatar")
ServicePointManager.ServerCertificateValidationCallback = GetGravatarValidationCallBack;
#endif
email = email.ToLower ();
@ -68,7 +69,12 @@ namespace SparkleShare
}
var client = new WebClient ();
string url = "https://gravatar.com/avatar/" + email.MD5 () + ".png?s=" + size + "&d=404";
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";
try {
byte [] buffer = client.DownloadData (url);
@ -107,7 +113,7 @@ namespace SparkleShare
}
private static bool GetAvatarValidationCallBack (Object sender,
private static bool GetGravatarValidationCallBack (Object sender,
X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
{
X509Certificate2 certificate2 = new X509Certificate2 (certificate.GetRawCertData ());
@ -115,9 +121,10 @@ 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 16 2015
// Set to expire on Oct 14 2018
string gravatar_cert_fingerprint = "1264B3F00814C6077D3853238771EE67FB6321C9";
// SHA1 fingerprinter obtained from https://www.gravatar.com/ on Oct 23 2020
// Set to expire on Nov 16 2022
string gravatar_cert_fingerprint = "846963703FD297724E91BDF47FFE4BC19E93EA15";
if (!certificate2.Thumbprint.Equals (gravatar_cert_fingerprint)) {
Logger.LogInfo ("Avatars", "Invalid certificate for https://www.gravatar.com/");

View file

@ -153,6 +153,16 @@ 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; }
@ -451,8 +461,16 @@ namespace SparkleShare {
};
repo.NewChangeSet += delegate (ChangeSet change_set) {
if (AvatarsEnabled)
change_set.User.AvatarFilePath = Avatars.GetAvatar (change_set.User.Email, 48, Config.DirectoryPath);
if (AvatarsEnabled) {
string provider = "gravatar";
if (AvatarsProvider == "libravatar")
provider = AvatarsProvider;
change_set.User.AvatarFilePath = Avatars.GetAvatar (change_set.User.Email, 48, Config.DirectoryPath, provider);
}
NotificationRaised (change_set);
};

View file

@ -21,13 +21,20 @@ 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 ()
public BubblesController () : this(true)
{
}
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);
};
@ -40,10 +47,13 @@ namespace SparkleShare {
public void ShowBubble (string title, string subtext, string image_path)
{
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);
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);
}
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,8 +144,14 @@ namespace SparkleShare {
}
public EventLogController ()
public EventLogController () : this (true)
{
}
public EventLogController (bool fix_utf_encoding)
{
this.fix_utf_encoding = fix_utf_encoding;
SparkleShare.Controller.ShowEventLogWindowEvent += delegate {
if (!WindowIsOpen) {
ContentLoadingEvent ();
@ -257,8 +263,11 @@ namespace SparkleShare {
string folder = href.Replace ("history://", "").Split ("/".ToCharArray ()) [0];
string file_path = href.Replace ("history://" + folder + "/", "");
byte [] file_path_bytes = Encoding.Default.GetBytes (file_path);
file_path = Encoding.UTF8.GetString (file_path_bytes);
if(fix_utf_encoding)
{
byte [] file_path_bytes = Encoding.Default.GetBytes (file_path);
file_path = Encoding.UTF8.GetString (file_path_bytes);
}
file_path = Uri.UnescapeDataString (file_path);
@ -536,10 +545,13 @@ namespace SparkleShare {
private string FormatBreadCrumbs (string path_root, string path)
{
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);
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);
}
path_root = path_root.Replace ("/", Path.DirectorySeparatorChar.ToString ());
path = path.Replace ("/", Path.DirectorySeparatorChar.ToString ());
@ -598,7 +610,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);
string fetched_avatar = Avatars.GetAvatar (user.Email, 48, SparkleShare.Controller.Config.DirectoryPath, SparkleShare.Controller.AvatarsProvider);
if (!string.IsNullOrEmpty (fetched_avatar))
return "file://" + fetched_avatar.Replace ("\\", "/");

View file

@ -1,182 +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: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>

Before

Width:  |  Height:  |  Size: 10 KiB

View file

@ -39,8 +39,7 @@ 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);
AvatarFilePath = Avatars.GetAvatar (SparkleShare.Controller.CurrentUser.Email, 48, SparkleShare.Controller.Config.DirectoryPath, SparkleShare.Controller.AvatarsProvider);
}
@ -73,7 +72,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>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>
<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>
</info>
<address>
<value>ssh://git@bitbucket.org/</value>
@ -19,4 +19,3 @@
</path>
</preset>
</sparkleshare>

View file

@ -7,7 +7,7 @@
<icon>github.png</icon>
<backend>Git</backend>
<storage_type>LargeFiles</storage_type>
<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>
<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>
</info>
<address>
<value>ssh://git@github.com/</value>

View file

@ -1,7 +1,6 @@
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.

Before

Width:  |  Height:  |  Size: 1.5 KiB

View file

@ -1,22 +0,0 @@
<?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.

Before

Width:  |  Height:  |  Size: 3.6 KiB

View file

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 879 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 575 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

View file

@ -0,0 +1,47 @@
<?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>

After

Width:  |  Height:  |  Size: 5.8 KiB

View file

@ -0,0 +1,7 @@
<?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>

After

Width:  |  Height:  |  Size: 2.4 KiB

View file

@ -1,6 +1,6 @@
# Install app icons in system theme
theme_dir = join_paths(get_option('prefix'), 'share', 'icons', 'hicolor')
icon_sizes = ['16', '24', '48', '256', '512']
icon_sizes = ['scalable']
app_icon_name = 'org.sparkleshare.SparkleShare'
source_icon_name = app_icon_name
@ -13,9 +13,9 @@ foreach size : icon_sizes
icon_dir = join_paths(size + 'x' + size, 'apps')
install_data(
sources: join_paths('hicolor', icon_dir, source_icon_name + '.png'),
sources: join_paths('hicolor', icon_dir, source_icon_name + '.svg'),
install_dir: join_paths(theme_dir, icon_dir),
rename: app_icon_name + '.png')
rename: app_icon_name + '.svg')
endforeach
install_data(

View file

@ -5,4 +5,4 @@ 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,15 +125,6 @@
<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" />

View file

@ -101,7 +101,10 @@ namespace SparkleShare
StatusIcon.use_appindicator = true;
#else
if (StatusIcon.use_appindicator) {
Console.WriteLine ("AppIndicator not installed.");
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine ("error: AppIndicator not found. Install AppIndicator or run with --status-icon=gtk");
Console.ResetColor ();
Environment.Exit (-1);
}
#endif

View file

@ -30,7 +30,7 @@ configure_file(
apps_dir = join_paths(get_option('prefix'), 'share', 'applications')
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', 'appdata'))
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',

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop">
<component type="desktop-application">
<name>SparkleShare</name>
<summary>Magic self hosted Git file sync</summary>
<developer_name>Hylke Bons</developer_name>
@ -64,13 +64,13 @@
</screenshot>
</screenshots>
<id type="desktop">org.sparkleshare.SparkleShare.desktop</id>
<launchable id="desktop-id">org.sparkleshare.SparkleShare.desktop</launchable>
<id>org.sparkleshare.SparkleShare</id>
<launchable type="desktop-id">org.sparkleshare.SparkleShare.desktop</launchable>
<provides>
<binary>sparkleshare</binary>
</provides>
<metadata_licence>CC0-1.0</metadata_licence>
<metadata_license>CC0-1.0</metadata_license>
<update_contact>hi_AT_planetpeanut.uk</update_contact>
<content_rating type="oars-1.0">

View file

@ -51,6 +51,16 @@ 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.28.0</string>
<string>3.38.0</string>
<key>CFBundleVersion</key>
<string>3.28.0</string>
<string>3.38.0</string>
<key>LSApplicationCategoryType</key>
<string>public.app-category.utilities</string>
<key>LSMinimumSystemVersion</key>
<string>10.7</string>
<string>10.9</string>
<key>LSUIElement</key>
<string>1</string>
<key>NSMainNibFile</key>

View file

@ -13,6 +13,7 @@
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<MonoMacResourcePrefix>Resources</MonoMacResourcePrefix>
<ReleaseVersion></ReleaseVersion>
<UseXamMacFullFramework>true</UseXamMacFullFramework>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>none</DebugType>
@ -40,6 +41,8 @@
<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>
@ -67,6 +70,10 @@
<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>
@ -93,7 +100,9 @@
<Profiling>false</Profiling>
<HttpClientHandler>HttpClientHandler</HttpClientHandler>
<TlsProvider>Default</TlsProvider>
<LinkMode>None</LinkMode>
<LinkMode>Platform</LinkMode>
<AOTMode>None</AOTMode>
<LangVersion>latest</LangVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseMac|AnyCPU' ">
<DebugType>none</DebugType>
@ -119,9 +128,11 @@
<Profiling>false</Profiling>
<HttpClientHandler>HttpClientHandler</HttpClientHandler>
<TlsProvider>Default</TlsProvider>
<LinkMode>None</LinkMode>
<LinkMode>Platform</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>
@ -146,9 +157,11 @@
<UseSGen>false</UseSGen>
<UseRefCounting>false</UseRefCounting>
<Profiling>false</Profiling>
<LinkMode>None</LinkMode>
<LinkMode>Platform</LinkMode>
<HttpClientHandler>HttpClientHandler</HttpClientHandler>
<TlsProvider>Default</TlsProvider>
<AOTMode>None</AOTMode>
<LangVersion>latest</LangVersion>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
@ -268,12 +281,6 @@
<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>
@ -286,9 +293,6 @@
<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 Executable file → Normal file
View file

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

View file

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

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

@ -149,6 +149,10 @@ 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,6 +11,8 @@ function abspath()
esac
}
export projectFolder=$(dirname $0)
export projectFolder=$(abspath ${projectFolder})
LINE=$(cat ${projectFolder}/git.download)
TMP=()
@ -19,23 +21,22 @@ 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}/git.tar.gz ]
if [[ ! -f ${projectFolder}/${gitName} ]];
then
curl --silent --location ${gitDownload} > git.tar.gz
test -e git.tar.gz || { echo "Failed to download git"; exit 1; }
curl --silent --location ${gitDownload} > ${projectFolder}/${gitName}
test -e ${projectFolder}/${gitName} || { echo "Failed to download git"; exit 1; }
printf "${gitSHA256} git.tar.gz" | shasum --check --algorithm 256
printf "${gitSHA256} ${projectFolder}/${gitName}" | 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

View file

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

View file

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

View file

@ -8,12 +8,21 @@ 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 --static --deps --config ./config -o ../MacOS/SparkleShare SparkleShare.exe Sparkles.dll Xamarin.Mac.dll Sparkles.Git.dll
mkbundle \
--simple \
-v \
--config ./config \
-o ../MacOS/SparkleShare \
${assemblyPath}/SparkleShare.exe ${assemblyPath}/Sparkles.dll ${assemblyPath}/Sparkles.Git.dll
rm *.dll *.exe

View file

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

View file

@ -265,10 +265,6 @@
<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>
@ -285,10 +281,6 @@
<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.28.0' Manufacturer='SparkleShare'>
Language='1033' Codepage='1252' Version='3.38.0' Manufacturer='SparkleShare'>
<Package Id='*' Keywords='Installer' Description="SparkleShare Setup" Manufacturer='SparkleShare'
InstallerVersion='100' Languages='1033' Compressed='yes' SummaryCodepage='1252' />

View file

@ -41,6 +41,7 @@ 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,6 +43,7 @@ namespace Sparkles {
public readonly string FilePath;
public readonly string TmpPath;
public readonly string BinPath;
public string AvatarProvider;
public readonly string LogFilePath;
@ -51,7 +52,7 @@ namespace Sparkles {
get {
if (InstallationInfo.OperatingSystem == OS.Windows)
return Environment.GetFolderPath (Environment.SpecialFolder.UserProfile);
return Environment.GetFolderPath (Environment.SpecialFolder.Personal);
}
}
@ -59,9 +60,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");
}
}
@ -336,15 +337,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

@ -99,7 +99,8 @@ namespace Sparkles.Git {
SetEnvironmentVariable ("PREFIX", "");
SetEnvironmentVariable ("HOME", "");
SetEnvironmentVariable ("LANG", "en_US");
SetEnvironmentVariable ("LANG", "en_US.UTF8");
SetEnvironmentVariable ("LC_ALL", "en_US.UTF8");
}

View file

@ -176,6 +176,13 @@ namespace Sparkles.Git {
File.WriteAllText (identifier_path, identifier);
File.SetAttributes (identifier_path, FileAttributes.Hidden);
// The repo is freshly cloned and no config user.name is set yet, so temporary use SparkleShare
// to avoid error 'TELL ME WHO YOU ARE', later on this will be handled in Commit of Git.Repository
var git_config = new GitCommand(TargetFolder, "config user.name \"SparkleShare\"");
git_config.StartAndWaitForExit();
git_config = new GitCommand(TargetFolder, "config user.email \"info@sparkleshare.org\"");
git_config.StartAndWaitForExit();
// We can't do the "commit --all" shortcut because it doesn't add untracked files
var git_add = new GitCommand (TargetFolder, "add .sparkleshare");
var git_commit = new GitCommand (TargetFolder,

View file

@ -178,7 +178,7 @@ namespace Sparkles.Git {
string remote_revision = "" + output.Substring (0, 40);
if (!remote_revision.Equals (current_revision)) {
git = new GitCommand (LocalPath, "merge-base " + remote_revision + " master");
git = new GitCommand (LocalPath, "merge-base " + remote_revision + " " + this.branch);
git.StartAndWaitForExit ();
if (git.ExitCode != 0) {
@ -434,7 +434,8 @@ namespace Sparkles.Git {
git = new GitCommand (LocalPath, "config core.ignorecase true");
git.StartAndWaitForExit ();
git = new GitCommand (LocalPath, "merge FETCH_HEAD");
git = new GitCommand (LocalPath, "merge --no-edit FETCH_HEAD");
git.StartInfo.StandardOutputEncoding = null;
git.StartInfo.RedirectStandardOutput = false;
string error_output = git.StartAndReadStandardError ();
@ -616,6 +617,7 @@ namespace Sparkles.Git {
var git = new GitCommand (LocalPath,
"commit --message=\"Conflict resolution\" --author=\"SparkleShare <info@sparkleshare.org>\"");
git.StartInfo.StandardOutputEncoding = null;
git.StartInfo.RedirectStandardOutput = false;
git.StartAndWaitForExit ();
@ -934,7 +936,12 @@ namespace Sparkles.Git {
string HEAD_file_path = Path.Combine (child_path, "HEAD");
if (File.Exists (HEAD_file_path)) {
File.Move (HEAD_file_path, HEAD_file_path + ".backup");
string HEAD_file_path_backup = Path.Combine (child_path, "HEAD.backup");
if (File.Exists (HEAD_file_path_backup)) {
File.Delete (HEAD_file_path_backup);
}
File.Move (HEAD_file_path, HEAD_file_path_backup);
Logger.LogInfo ("Git", Name + " | Renamed " + HEAD_file_path);
}

View file

@ -18,7 +18,7 @@
using System.Reflection;
[assembly:AssemblyTitle ("Sparkles")]
[assembly:AssemblyVersion ("3.28.0")]
[assembly:AssemblyVersion ("3.38.0")]
[assembly:AssemblyCopyright ("Copyright (c) 2010 Hylke Bons and others")]
namespace Sparkles {

View file

@ -67,25 +67,37 @@ namespace Sparkles {
get {
if (OperatingSystem == OS.macOS) {
var uname = new Command ("sw_vers", "-productVersion", write_output: false);
string output = uname.StartAndReadStandardOutput ();
string version = output;
string version = uname.StartAndReadStandardOutput ();
//
string[] version_elements= version.Split('.');
// Parse the version number between the periods (e.g. "10.12.1" -> 12)
output = output.Substring (output.IndexOf (".") + 1);
if (output.LastIndexOf (".") != -1) {
output = output.Substring (0, output.LastIndexOf ("."));
}
string release = "Unreleased Version";
switch (int.Parse (output)) {
case 7: release = "Lion"; break;
case 8: release = "Mountain Lion"; break;
case 9: release = "Mavericks"; break;
case 10: release = "Yosemite"; break;
case 11: release = "El Capitan"; break;
case 12: release = "Sierra"; break;
case 13: release = "High Sierra"; break;
case 14: release = "Mojave"; break;
if ((version_elements.Length) >= 2) {
switch (int.Parse (version_elements [0])) {
case 10:
// Parse the version number between the periods (e.g. "10.12.1" -> 12)
switch (int.Parse (version_elements [0])) {
case 7: release = "Lion"; break;
case 8: release = "Mountain Lion"; break;
case 9: release = "Mavericks"; break;
case 10: release = "Yosemite"; break;
case 11: release = "El Capitan"; break;
case 12: release = "Sierra"; break;
case 13: release = "High Sierra"; break;
case 14: release = "Mojave"; break;
case 15: release = "Catalina"; break;
}
break;
case 11:
release = "BigSur"; break;
case 12:
release = "Monterey"; break;
case 13:
release = "Ventura"; break;
}
}
return string.Format ("{0} ({1})", version, release);

View file

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\..\packages\NUnit.3.10.1\build\NUnit.props" Condition="Exists('..\..\packages\NUnit.3.10.1\build\NUnit.props')" />
<Import Project="..\..\..\packages\NUnit.3.10.1\build\NUnit.props" Condition="Exists('..\..\..\packages\NUnit.3.10.1\build\NUnit.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{8AB2969A-951F-4146-A0DD-C46D7526AC20}</ProjectGuid>
<OutputType>Library</OutputType>
<RootNamespace>Sparkles.Tests</RootNamespace>
<AssemblyName>Sparkles.Tests</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<ReleaseVersion></ReleaseVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug</OutputPath>
<DefineConstants>DEBUG;</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<Optimize>true</Optimize>
<OutputPath>bin\Release</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="nunit.framework">
<HintPath>..\..\packages\NUnit.3.10.1\lib\net45\nunit.framework.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Test.cs" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Sparkles.csproj">
<Project>{2C914413-B31C-4362-93C7-1AE34F09112A}</Project>
<Name>Sparkles</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
</Project>

113
Sparkles/Tests/Test.cs Normal file
View file

@ -0,0 +1,113 @@
// Copyright (C) 2018 Hylke Bons <hi@planetpeanut.uk>
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
using NUnit.Framework;
using System;
using Sparkles;
namespace Sparkles.Tests {
[TestFixture ()]
public class TestExtensions {
[Test ()]
public void ReturnSHA256 ()
{
string result = "hello".SHA256 ();
Assert.IsTrue (result == "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824");
}
[Test ()]
public void ReturnSHA256WithSalt ()
{
string salt = "salt";
string result = "hello".SHA256 (salt);
Assert.IsTrue (result == "87daba3fe263b34c335a0ee3b28ffec4d159aad6542502eaf551dc7b9128c267");
}
[Test ()]
public void ReturnMD5 ()
{
string result = "hello".MD5 ();
Assert.IsTrue (result == "5d41402abc4b2a76b9719d911017c592");
}
string cipher_text;
string plain_text = "secret";
string password = "password";
[Test (), Order (1)]
public void ReturnAESEncrypt ()
{
string result = plain_text.AESEncrypt (password);
cipher_text = result;
Assert.That (result, Is.Not.Null.And.Not.Empty);
}
[Test (), Order (2)]
public void ReturnAESDecrypt ()
{
string result = cipher_text.AESDecrypt (password);
Assert.IsTrue (result == plain_text);
}
[Test ()]
public void ReturnReplaceUnderScoreWithSpace ()
{
string result = "good_morning_to_you".ReplaceUnderscoreWithSpace ();
Assert.IsTrue (result == "good morning to you");
}
[Test ()]
public void ReturnToSize ()
{
Assert.IsTrue (1099511627776.0.ToSize () == "1 ᴛʙ");
Assert.IsTrue (1073741824.0.ToSize () == "1 ɢʙ");
Assert.IsTrue (1048576.0.ToSize () == "1 ᴍʙ");
Assert.IsTrue (1024.0.ToSize () == "1 ᴋʙ");
Assert.IsTrue (0.0.ToSize () == "0 ʙ");
}
[Test ()]
public void ReturnToPrettyDate ()
{
// TODO
}
[Test ()]
public void ReturnIsSymlink ()
{
// TODO
}
}
}

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="NUnit" version="3.10.1" targetFramework="net461" />
</packages>

View file

@ -6,7 +6,7 @@ configuration = configuration_data()
configuration.set('ABS_INSTALL_DIR', join_paths(get_option('prefix'), install_dir))
# This line is changed by scripts/bump-version.sh, so keep it intact
configuration.set('VERSION', '3.28.0')
configuration.set('VERSION', '3.38.0')
subdir('Sparkles')
subdir('Sparkles/Git')

View file

@ -1,4 +1,6 @@
FROM ubuntu:17.10
FROM ubuntu:xenial
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update
RUN apt-get install -y \
@ -20,7 +22,7 @@ RUN apt-get install -y \
python3-pip \
xsltproc
RUN pip3 install meson
RUN pip3 install meson==0.36.0
RUN git clone https://github.com/hbons/notify-sharp && \
cd notify-sharp/ && \