Compare commits
99 commits
fix/appind
...
master
Author | SHA1 | Date | |
---|---|---|---|
![]() |
86b8ca020a | ||
![]() |
37ce57e12a | ||
![]() |
e2618f793e | ||
![]() |
63fe3710e5 | ||
![]() |
6cfd602259 | ||
![]() |
be9e12e0fe | ||
![]() |
01c180d588 | ||
![]() |
54eff3bee1 | ||
![]() |
1fb943b815 | ||
![]() |
35951f0805 | ||
![]() |
6ebda3a1d6 | ||
![]() |
b65e0fed53 | ||
![]() |
903382fd29 | ||
![]() |
1cdbe02e3d | ||
![]() |
347ce97ea7 | ||
![]() |
7c118ee1b0 | ||
![]() |
1c789aba1e | ||
![]() |
02ded513a7 | ||
![]() |
3f1b02fe0c | ||
![]() |
ebc489bcc7 | ||
![]() |
85a65da878 | ||
![]() |
85f3d449be | ||
![]() |
5ee0fe016f | ||
![]() |
631f56386c | ||
![]() |
07f954cc72 | ||
![]() |
af8a521aec | ||
![]() |
fbd3c79674 | ||
![]() |
cb08a35bf9 | ||
![]() |
ba49f81af6 | ||
![]() |
dac6783a0e | ||
![]() |
c2fd750ad5 | ||
![]() |
948e14fe5e | ||
![]() |
954f1e6b1b | ||
![]() |
07bb84318d | ||
![]() |
72603c5bef | ||
![]() |
741ea0612a | ||
![]() |
613625c5bf | ||
![]() |
37d49a990c | ||
![]() |
6ca60c074c | ||
![]() |
ecd84c6b87 | ||
![]() |
672442b8ab | ||
![]() |
23d7166012 | ||
![]() |
1a31bc2a5a | ||
![]() |
5f8c858658 | ||
![]() |
b0c2c48dd3 | ||
![]() |
c93ec2447c | ||
![]() |
38a7400536 | ||
![]() |
73b849da84 | ||
![]() |
e9c9cf3f82 | ||
![]() |
8e0b5e4b58 | ||
![]() |
c8e398bba2 | ||
![]() |
55c4e5e32e | ||
![]() |
c1b62da1c5 | ||
![]() |
959a235799 | ||
![]() |
a22152e1ab | ||
![]() |
9b3e95eff3 | ||
![]() |
3970c634a6 | ||
![]() |
13ed737818 | ||
![]() |
21c668491e | ||
![]() |
a30b223180 | ||
![]() |
f1df983b87 | ||
![]() |
8d8fb10397 | ||
![]() |
cf446c00f1 | ||
![]() |
7ae9219fc7 | ||
![]() |
2be2063a36 | ||
![]() |
c50b1bad25 | ||
![]() |
d9a709ffff | ||
![]() |
4619f9fbd8 | ||
![]() |
c0ed43ff9b | ||
![]() |
31d47a7926 | ||
![]() |
9dac3a27c2 | ||
![]() |
2207328611 | ||
![]() |
e6775a462a | ||
![]() |
e0c4e972d0 | ||
![]() |
cf313dce4d | ||
![]() |
feb4e3d850 | ||
![]() |
3b4fccd6a2 | ||
![]() |
a82644e263 | ||
![]() |
76f3326b58 | ||
![]() |
3e93fe428c | ||
![]() |
21e20afc05 | ||
![]() |
446b38ba30 | ||
![]() |
26c89feaea | ||
![]() |
eda316eb3c | ||
![]() |
b944e9d0af | ||
![]() |
a7c182f640 | ||
![]() |
d90e7c9cdd | ||
![]() |
d9a62bb066 | ||
![]() |
264135ab92 | ||
![]() |
c316a7839e | ||
![]() |
c8e4a2b63f | ||
![]() |
3653ab0f05 | ||
![]() |
60fa414d9b | ||
![]() |
ef0ed38639 | ||
![]() |
b09a69e51d | ||
![]() |
2ec258e664 | ||
![]() |
3176efc8c3 | ||
![]() |
e2ed80ba92 | ||
![]() |
3e3f351c71 |
1
.github/AUTHORS.md
vendored
|
@ -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
|
@ -0,0 +1 @@
|
|||
github: hbons
|
3
.gitignore
vendored
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
25
README.md
|
@ -1,14 +1,33 @@
|
|||
# [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.
|
||||
|
||||

|
||||
|
||||
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
|
||||
|
||||
|
@ -16,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`.
|
||||
|
||||
|
||||
[](https://travis-ci.org/hbons/SparkleShare)
|
||||
[](https://gitter.im/hbons/SparkleShare?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||
|
|
|
@ -1,12 +1,21 @@
|
|||
3.28.0 (Sun Mar 18, 2018):
|
||||
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.
|
||||
SparkleShare will now follow the GNOME release schedule and version
|
||||
number scheme as much as possible.
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
Linux:
|
||||
- Use the Meson build system
|
||||
|
@ -18,7 +27,7 @@
|
|||
- Fix the system font in eventlog and related crash
|
||||
- Fix hang when quitting the app
|
||||
|
||||
Special thanks to Renpytom for supporting the project on Patreon.
|
||||
Special thanks to Thiago Santos and Renpytom for supporting the project on Patreon.
|
||||
|
||||
|
||||
2.0.1 (Tue 19 Dec, 2017):
|
||||
|
|
|
@ -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");
|
||||
|
||||
|
|
|
@ -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/");
|
||||
|
|
|
@ -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);
|
||||
};
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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 ("\\", "/");
|
||||
|
|
|
@ -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 |
|
@ -1,105 +0,0 @@
|
|||
<?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>
|
Before Width: | Height: | Size: 12 KiB |
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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'
|
||||
]
|
||||
|
||||
|
|
Before Width: | Height: | Size: 1.5 KiB |
|
@ -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>
|
||||
|
Before Width: | Height: | Size: 3.6 KiB |
|
@ -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);
|
||||
|
|
|
@ -31,8 +31,6 @@ namespace SparkleShare {
|
|||
|
||||
public About () : base ("About SparkleShare")
|
||||
{
|
||||
SetWmclass ("SparkleShare", "SparkleShare");
|
||||
|
||||
IconName = "org.sparkleshare.SparkleShare";
|
||||
Resizable = false;
|
||||
WindowPosition = WindowPosition.CenterAlways;
|
||||
|
|
|
@ -40,8 +40,6 @@ namespace SparkleShare {
|
|||
|
||||
public EventLog () : base ("Recent Changes")
|
||||
{
|
||||
SetWmclass ("SparkleShare", "SparkleShare");
|
||||
|
||||
TypeHint = Gdk.WindowTypeHint.Dialog;
|
||||
IconName = "org.sparkleshare.SparkleShare";
|
||||
|
||||
|
|
Before Width: | Height: | Size: 879 B |
Before Width: | Height: | Size: 575 B |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 2 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 44 KiB |
|
@ -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 |
|
@ -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 |
|
@ -1,14 +1,21 @@
|
|||
# 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
|
||||
|
||||
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, app_icon_name + '.png'),
|
||||
install_dir: join_paths(theme_dir, icon_dir))
|
||||
sources: join_paths('hicolor', icon_dir, source_icon_name + '.svg'),
|
||||
install_dir: join_paths(theme_dir, icon_dir),
|
||||
rename: app_icon_name + '.svg')
|
||||
endforeach
|
||||
|
||||
install_data(
|
||||
|
|
|
@ -27,8 +27,6 @@ namespace SparkleShare {
|
|||
|
||||
public Note () : base ("Add Note")
|
||||
{
|
||||
SetWmclass ("SparkleShare", "SparkleShare");
|
||||
|
||||
IconName = "org.sparkleshare.SparkleShare";
|
||||
Resizable = false;
|
||||
WindowPosition = WindowPosition.CenterAlways;
|
||||
|
|
|
@ -1,5 +1,11 @@
|
|||
# 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
|
||||
|
@ -56,8 +62,6 @@ sudo dnf install \
|
|||
|
||||
### Additional source build requirements
|
||||
|
||||
Install mono-complete, [see instructions](https://www.mono-project.com/download/stable/#download-lin-ubuntu)
|
||||
|
||||
Install these `soup-sharp` and `webkit2gtk-sharp` bindings:
|
||||
|
||||
```bash
|
||||
|
@ -99,7 +103,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
|
||||
|
|
|
@ -32,15 +32,12 @@ 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);
|
||||
DeleteEvent += delegate (object sender, DeleteEventArgs args) { args.RetVal = true; };
|
||||
|
||||
|
|
|
@ -5,3 +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
|
||||
|
|
|
@ -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" />
|
||||
|
|
|
@ -51,13 +51,13 @@ namespace SparkleShare {
|
|||
if (use_appindicator) {
|
||||
#if HAVE_APP_INDICATOR
|
||||
indicator = new Indicator ("sparkleshare", "sparkleshare", (int) IndicatorCategory.ApplicationStatus) {
|
||||
IconName = "org.sparkleshare.SparkleShare-symbolic",
|
||||
IconName = UserInterface.APP_ID + "-symbolic",
|
||||
Status = (int) IndicatorStatus.Active
|
||||
};
|
||||
#endif
|
||||
|
||||
} else {
|
||||
this.status_icon = new Gtk.StatusIcon { IconName = "org.sparkleshare.SparkleShare" };
|
||||
this.status_icon = new Gtk.StatusIcon { IconName = UserInterface.APP_ID };
|
||||
this.status_icon.Activate += ShowMenu; // Primary mouse button click
|
||||
this.status_icon.PopupMenu += ShowMenu; // Secondary mouse button click
|
||||
}
|
||||
|
@ -127,7 +127,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 ("org.sparkleshare.SparkleShare", 16));
|
||||
folder_item.Image = new Image (UserInterfaceHelpers.GetIcon (UserInterface.APP_ID, 16));
|
||||
folder_item.Submenu = new Menu ();
|
||||
|
||||
this.menu.Add (this.state_item);
|
||||
|
|
|
@ -38,6 +38,7 @@ namespace SparkleShare
|
|||
public string SecondaryTextColor;
|
||||
public string SecondaryTextColorSelected;
|
||||
|
||||
public static readonly string APP_ID = "org.sparkleshare.SparkleShare";
|
||||
Application application;
|
||||
|
||||
|
||||
|
@ -46,7 +47,7 @@ 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 ("org.sparkleshare.SparkleShare", GLib.ApplicationFlags.None);
|
||||
application = new Application (APP_ID, GLib.ApplicationFlags.None);
|
||||
application.Activated += ApplicationActivatedDelegate;
|
||||
|
||||
if (!application.IsRemote)
|
||||
|
@ -82,7 +83,7 @@ namespace SparkleShare
|
|||
run_method.Invoke ((application as GLib.Application), new object [] { 0, null });
|
||||
|
||||
} else {
|
||||
run_method.Invoke ((application as GLib.Application), new object [] { "org.sparkleshare.SparkleShare", new string [0] });
|
||||
run_method.Invoke ((application as GLib.Application), new object [] { APP_ID, new string [0] });
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -100,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
|
||||
|
|
|
@ -28,10 +28,18 @@ 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', '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',
|
||||
install_dir: apps_dir,
|
||||
rename: 'org.sparkleshare.SparkleShare.desktop')
|
||||
else
|
||||
install_data(sources: 'org.sparkleshare.SparkleShare.desktop',
|
||||
install_dir: apps_dir)
|
||||
endif
|
||||
|
||||
|
||||
# Build SparkleShare
|
||||
|
|
9
SparkleShare/Linux/org.sparkleshare.SparkleShare.Nightly.desktop
Executable file
|
@ -0,0 +1,9 @@
|
|||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=SparkleShare (Nightly)
|
||||
Exec=sparkleshare
|
||||
Icon=org.sparkleshare.SparkleShare
|
||||
Terminal=false
|
||||
Categories=Network;FileTransfer;GNOME;GTK;
|
||||
X-GNOME-UsesNotifications=true
|
||||
|
|
@ -1,11 +1,13 @@
|
|||
<?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>
|
||||
<project_license>GPL-3.0+</project_license>
|
||||
<url type="homepage">http://www.sparkleshare.org/</url>
|
||||
|
||||
<url type="homepage">https://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>
|
||||
|
@ -14,7 +16,7 @@
|
|||
</description>
|
||||
|
||||
<releases>
|
||||
<release version="3.28.0" date="2018-03-18" urgency="medium">
|
||||
<release version="3.28.0" date="2018-07-14" urgency="medium">
|
||||
<description>
|
||||
<p>Fixes and improvements:</p>
|
||||
<ul>
|
||||
|
@ -62,12 +64,18 @@
|
|||
</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">
|
||||
<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>
|
||||
|
|
|
@ -6,3 +6,4 @@ Icon=org.sparkleshare.SparkleShare
|
|||
Terminal=false
|
||||
Categories=Network;FileTransfer;GNOME;GTK;
|
||||
X-GNOME-UsesNotifications=true
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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
|
@ -22,7 +22,7 @@ namespace SparkleShare {
|
|||
|
||||
public class Bubbles : NSObject {
|
||||
|
||||
public BubblesController Controller = new BubblesController ();
|
||||
public BubblesController Controller = new BubblesController (false);
|
||||
|
||||
|
||||
public Bubbles ()
|
||||
|
|
|
@ -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
|
@ -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 ());
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
<configuration>
|
||||
</configuration>
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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' />
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -27,3 +27,4 @@ namespace Sparkles {
|
|||
public const string Directory = "@ABS_INSTALL_DIR@";
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
51
Sparkles/Tests/Sparkles.Tests.csproj
Normal 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
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
4
Sparkles/Tests/packages.config
Normal file
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="NUnit" version="3.10.1" targetFramework="net461" />
|
||||
</packages>
|
|
@ -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')
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
option('ubuntu', type: 'boolean', value: false)
|
||||
option('nightly', type: 'boolean', value: false)
|
||||
|
||||
|
|
|
@ -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/ && \
|
||||
|
|