summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrej Shadura <andrew.shadura@collabora.co.uk>2019-01-23 15:28:19 +0100
committerAndrej Shadura <andrew.shadura@collabora.co.uk>2019-01-23 15:28:19 +0100
commita1033375d47a5f2ce879f0a223788b74a2b7ed64 (patch)
tree1fc0b5df117de41d08488849e9eec1bd0b3e4a85
parent7b27eb3bc5a21a713cb73fe38479d3b170194dee (diff)
New upstream version 3.28+git20190117
-rw-r--r--.gitignore1
-rw-r--r--README.md22
-rw-r--r--SparkleShare/Common/AboutController.cs2
-rw-r--r--SparkleShare/Common/Images/Sources/ssnet.svg105
-rwxr-xr-xSparkleShare/Linux/About.cs2
-rwxr-xr-xSparkleShare/Linux/EventLog.cs2
-rw-r--r--SparkleShare/Linux/Images/icons/hicolor/16x16/apps/org.sparkleshare.SparkleShare.Nightly.pngbin0 -> 2296 bytes
-rw-r--r--SparkleShare/Linux/Images/icons/hicolor/24x24/apps/org.sparkleshare.SparkleShare.Nightly.pngbin0 -> 7260 bytes
-rw-r--r--SparkleShare/Linux/Images/icons/hicolor/256x256/apps/org.sparkleshare.SparkleShare.Nightly.pngbin0 -> 24412 bytes
-rw-r--r--SparkleShare/Linux/Images/icons/hicolor/48x48/apps/org.sparkleshare.SparkleShare.Nightly.pngbin0 -> 9028 bytes
-rw-r--r--SparkleShare/Linux/Images/icons/hicolor/512x512/apps/org.sparkleshare.SparkleShare.Nightly.pngbin0 -> 52813 bytes
-rw-r--r--SparkleShare/Linux/Images/icons/meson.build11
-rw-r--r--SparkleShare/Linux/Note.cs2
-rw-r--r--SparkleShare/Linux/README.md10
-rw-r--r--SparkleShare/Linux/SetupWindow.cs3
-rwxr-xr-xSparkleShare/Linux/SparkleShare.Autostart.desktop1
-rw-r--r--SparkleShare/Linux/StatusIcon.cs6
-rw-r--r--SparkleShare/Linux/UserInterface.cs5
-rw-r--r--SparkleShare/Linux/meson.build12
-rwxr-xr-xSparkleShare/Linux/org.sparkleshare.SparkleShare.Nightly.desktop9
-rw-r--r--SparkleShare/Linux/org.sparkleshare.SparkleShare.appdata.xml18
-rwxr-xr-xSparkleShare/Linux/org.sparkleshare.SparkleShare.desktop1
-rw-r--r--Sparkles/Git/Git.Repository.cs2
-rwxr-xr-xSparkles/InstallationInfo.Directory.cs.in1
-rw-r--r--Sparkles/Tests/Sparkles.Tests.csproj51
-rw-r--r--Sparkles/Tests/Test.cs113
-rw-r--r--Sparkles/Tests/packages.config4
-rw-r--r--meson_options.txt1
28 files changed, 248 insertions, 136 deletions
diff --git a/.gitignore b/.gitignore
index b8baef2..3c5d08c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -29,6 +29,7 @@ _ReSharper.*
*.wxs
*.dotCover
SparkleShare/Windows/build/
+.vs/
# NuGet Packages
*.nupkg
diff --git a/README.md b/README.md
index 2bea0f9..8c0a95f 100644
--- a/README.md
+++ b/README.md
@@ -9,6 +9,24 @@
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 +34,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)
diff --git a/SparkleShare/Common/AboutController.cs b/SparkleShare/Common/AboutController.cs
index bdf8c65..514d045 100644
--- a/SparkleShare/Common/AboutController.cs
+++ b/SparkleShare/Common/AboutController.cs
@@ -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;
diff --git a/SparkleShare/Common/Images/Sources/ssnet.svg b/SparkleShare/Common/Images/Sources/ssnet.svg
deleted file mode 100644
index 6971d98..0000000
--- a/SparkleShare/Common/Images/Sources/ssnet.svg
+++ /dev/null
@@ -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>
diff --git a/SparkleShare/Linux/About.cs b/SparkleShare/Linux/About.cs
index cb4e0cd..b4df76b 100755
--- a/SparkleShare/Linux/About.cs
+++ b/SparkleShare/Linux/About.cs
@@ -31,8 +31,6 @@ namespace SparkleShare {
public About () : base ("About SparkleShare")
{
- SetWmclass ("SparkleShare", "SparkleShare");
-
IconName = "org.sparkleshare.SparkleShare";
Resizable = false;
WindowPosition = WindowPosition.CenterAlways;
diff --git a/SparkleShare/Linux/EventLog.cs b/SparkleShare/Linux/EventLog.cs
index 28ee613..b6d1c53 100755
--- a/SparkleShare/Linux/EventLog.cs
+++ b/SparkleShare/Linux/EventLog.cs
@@ -40,8 +40,6 @@ namespace SparkleShare {
public EventLog () : base ("Recent Changes")
{
- SetWmclass ("SparkleShare", "SparkleShare");
-
TypeHint = Gdk.WindowTypeHint.Dialog;
IconName = "org.sparkleshare.SparkleShare";
diff --git a/SparkleShare/Linux/Images/icons/hicolor/16x16/apps/org.sparkleshare.SparkleShare.Nightly.png b/SparkleShare/Linux/Images/icons/hicolor/16x16/apps/org.sparkleshare.SparkleShare.Nightly.png
new file mode 100644
index 0000000..cd99297
--- /dev/null
+++ b/SparkleShare/Linux/Images/icons/hicolor/16x16/apps/org.sparkleshare.SparkleShare.Nightly.png
Binary files differ
diff --git a/SparkleShare/Linux/Images/icons/hicolor/24x24/apps/org.sparkleshare.SparkleShare.Nightly.png b/SparkleShare/Linux/Images/icons/hicolor/24x24/apps/org.sparkleshare.SparkleShare.Nightly.png
new file mode 100644
index 0000000..f59ae6a
--- /dev/null
+++ b/SparkleShare/Linux/Images/icons/hicolor/24x24/apps/org.sparkleshare.SparkleShare.Nightly.png
Binary files differ
diff --git a/SparkleShare/Linux/Images/icons/hicolor/256x256/apps/org.sparkleshare.SparkleShare.Nightly.png b/SparkleShare/Linux/Images/icons/hicolor/256x256/apps/org.sparkleshare.SparkleShare.Nightly.png
new file mode 100644
index 0000000..e035320
--- /dev/null
+++ b/SparkleShare/Linux/Images/icons/hicolor/256x256/apps/org.sparkleshare.SparkleShare.Nightly.png
Binary files differ
diff --git a/SparkleShare/Linux/Images/icons/hicolor/48x48/apps/org.sparkleshare.SparkleShare.Nightly.png b/SparkleShare/Linux/Images/icons/hicolor/48x48/apps/org.sparkleshare.SparkleShare.Nightly.png
new file mode 100644
index 0000000..109db4d
--- /dev/null
+++ b/SparkleShare/Linux/Images/icons/hicolor/48x48/apps/org.sparkleshare.SparkleShare.Nightly.png
Binary files differ
diff --git a/SparkleShare/Linux/Images/icons/hicolor/512x512/apps/org.sparkleshare.SparkleShare.Nightly.png b/SparkleShare/Linux/Images/icons/hicolor/512x512/apps/org.sparkleshare.SparkleShare.Nightly.png
new file mode 100644
index 0000000..11a9a14
--- /dev/null
+++ b/SparkleShare/Linux/Images/icons/hicolor/512x512/apps/org.sparkleshare.SparkleShare.Nightly.png
Binary files differ
diff --git a/SparkleShare/Linux/Images/icons/meson.build b/SparkleShare/Linux/Images/icons/meson.build
index 422bda5..61f4294 100644
--- a/SparkleShare/Linux/Images/icons/meson.build
+++ b/SparkleShare/Linux/Images/icons/meson.build
@@ -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']
+
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 + '.png'),
+ install_dir: join_paths(theme_dir, icon_dir),
+ rename: app_icon_name + '.png')
endforeach
install_data(
diff --git a/SparkleShare/Linux/Note.cs b/SparkleShare/Linux/Note.cs
index 6fe8187..e2e998b 100644
--- a/SparkleShare/Linux/Note.cs
+++ b/SparkleShare/Linux/Note.cs
@@ -27,8 +27,6 @@ namespace SparkleShare {
public Note () : base ("Add Note")
{
- SetWmclass ("SparkleShare", "SparkleShare");
-
IconName = "org.sparkleshare.SparkleShare";
Resizable = false;
WindowPosition = WindowPosition.CenterAlways;
diff --git a/SparkleShare/Linux/README.md b/SparkleShare/Linux/README.md
index 6b41075..9942afa 100644
--- a/SparkleShare/Linux/README.md
+++ b/SparkleShare/Linux/README.md
@@ -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
diff --git a/SparkleShare/Linux/SetupWindow.cs b/SparkleShare/Linux/SetupWindow.cs
index a1465d3..4d61a2c 100644
--- a/SparkleShare/Linux/SetupWindow.cs
+++ b/SparkleShare/Linux/SetupWindow.cs
@@ -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; };
diff --git a/SparkleShare/Linux/SparkleShare.Autostart.desktop b/SparkleShare/Linux/SparkleShare.Autostart.desktop
index 29ef7e0..6130357 100755
--- a/SparkleShare/Linux/SparkleShare.Autostart.desktop
+++ b/SparkleShare/Linux/SparkleShare.Autostart.desktop
@@ -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
diff --git a/SparkleShare/Linux/StatusIcon.cs b/SparkleShare/Linux/StatusIcon.cs
index b64f49e..824e081 100644
--- a/SparkleShare/Linux/StatusIcon.cs
+++ b/SparkleShare/Linux/StatusIcon.cs
@@ -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);
diff --git a/SparkleShare/Linux/UserInterface.cs b/SparkleShare/Linux/UserInterface.cs
index 74fd555..f05d543 100644
--- a/SparkleShare/Linux/UserInterface.cs
+++ b/SparkleShare/Linux/UserInterface.cs
@@ -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] });
}
}
diff --git a/SparkleShare/Linux/meson.build b/SparkleShare/Linux/meson.build
index d3e0233..c806719 100644
--- a/SparkleShare/Linux/meson.build
+++ b/SparkleShare/Linux/meson.build
@@ -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
diff --git a/SparkleShare/Linux/org.sparkleshare.SparkleShare.Nightly.desktop b/SparkleShare/Linux/org.sparkleshare.SparkleShare.Nightly.desktop
new file mode 100755
index 0000000..d1639f8
--- /dev/null
+++ b/SparkleShare/Linux/org.sparkleshare.SparkleShare.Nightly.desktop
@@ -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
+
diff --git a/SparkleShare/Linux/org.sparkleshare.SparkleShare.appdata.xml b/SparkleShare/Linux/org.sparkleshare.SparkleShare.appdata.xml
index 2742669..74c412e 100644
--- a/SparkleShare/Linux/org.sparkleshare.SparkleShare.appdata.xml
+++ b/SparkleShare/Linux/org.sparkleshare.SparkleShare.appdata.xml
@@ -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>
@@ -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>
diff --git a/SparkleShare/Linux/org.sparkleshare.SparkleShare.desktop b/SparkleShare/Linux/org.sparkleshare.SparkleShare.desktop
index e458729..03daf3e 100755
--- a/SparkleShare/Linux/org.sparkleshare.SparkleShare.desktop
+++ b/SparkleShare/Linux/org.sparkleshare.SparkleShare.desktop
@@ -6,3 +6,4 @@ Icon=org.sparkleshare.SparkleShare
Terminal=false
Categories=Network;FileTransfer;GNOME;GTK;
X-GNOME-UsesNotifications=true
+
diff --git a/Sparkles/Git/Git.Repository.cs b/Sparkles/Git/Git.Repository.cs
index 2588d82..b7136fc 100644
--- a/Sparkles/Git/Git.Repository.cs
+++ b/Sparkles/Git/Git.Repository.cs
@@ -434,7 +434,7 @@ 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.RedirectStandardOutput = false;
string error_output = git.StartAndReadStandardError ();
diff --git a/Sparkles/InstallationInfo.Directory.cs.in b/Sparkles/InstallationInfo.Directory.cs.in
index 82a50f5..8cbf76f 100755
--- a/Sparkles/InstallationInfo.Directory.cs.in
+++ b/Sparkles/InstallationInfo.Directory.cs.in
@@ -27,3 +27,4 @@ namespace Sparkles {
public const string Directory = "@ABS_INSTALL_DIR@";
}
}
+
diff --git a/Sparkles/Tests/Sparkles.Tests.csproj b/Sparkles/Tests/Sparkles.Tests.csproj
new file mode 100644
index 0000000..11aa209
--- /dev/null
+++ b/Sparkles/Tests/Sparkles.Tests.csproj
@@ -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> \ No newline at end of file
diff --git a/Sparkles/Tests/Test.cs b/Sparkles/Tests/Test.cs
new file mode 100644
index 0000000..3a22f7d
--- /dev/null
+++ b/Sparkles/Tests/Test.cs
@@ -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
+ }
+ }
+}
diff --git a/Sparkles/Tests/packages.config b/Sparkles/Tests/packages.config
new file mode 100644
index 0000000..ebeb58f
--- /dev/null
+++ b/Sparkles/Tests/packages.config
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packages>
+ <package id="NUnit" version="3.10.1" targetFramework="net461" />
+</packages> \ No newline at end of file
diff --git a/meson_options.txt b/meson_options.txt
index a00dc67..a28355c 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,2 +1,3 @@
option('ubuntu', type: 'boolean', value: false)
+option('nightly', type: 'boolean', value: false)