Compare commits
302 commits
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 | ||
![]() |
7f029b7a84 | ||
![]() |
e2e735afee | ||
![]() |
31b627032b | ||
![]() |
14b08809a4 | ||
![]() |
75cac6a570 | ||
![]() |
41208f88b6 | ||
![]() |
6379e31b3c | ||
![]() |
9c1e6d8f7a | ||
![]() |
14759b5fa9 | ||
![]() |
c42a820909 | ||
![]() |
31e5daf720 | ||
![]() |
da4f11d1f6 | ||
![]() |
ecf1d9df60 | ||
![]() |
507f9f8a4f | ||
![]() |
9463f3d7fe | ||
![]() |
ff4195681c | ||
![]() |
e9f324873c | ||
![]() |
95ab5a82a3 | ||
![]() |
5a4924e93b | ||
![]() |
75aee1c8ed | ||
![]() |
052181a4d0 | ||
![]() |
b5c3005a8b | ||
![]() |
32b46c27fd | ||
![]() |
5f6153e8b3 | ||
![]() |
1cf3d6a9f9 | ||
![]() |
4ccef836f4 | ||
![]() |
8191057748 | ||
![]() |
40bda9b126 | ||
![]() |
07c41546bf | ||
![]() |
a895f2a66c | ||
![]() |
38b377716f | ||
![]() |
72f00d38e9 | ||
![]() |
69b6aeaa1a | ||
![]() |
f34a33bcdf | ||
![]() |
e33a382707 | ||
![]() |
bd652ae4bc | ||
![]() |
9c7d0dcaa2 | ||
![]() |
ac06fa3967 | ||
![]() |
ae97418566 | ||
![]() |
84a149ad2a | ||
![]() |
b72608b3d1 | ||
![]() |
60e2f0b118 | ||
![]() |
03be4c471d | ||
![]() |
ce441a5a95 | ||
![]() |
f81d8cbded | ||
![]() |
584ba2ba51 | ||
![]() |
d4536dfd62 | ||
![]() |
0bcdaac563 | ||
![]() |
1b02a87463 | ||
![]() |
f4bfef1d08 | ||
![]() |
a264684885 | ||
![]() |
f17431a549 | ||
![]() |
ed9e89374f | ||
![]() |
7fb6b20994 | ||
![]() |
70b6b35fb2 | ||
![]() |
aa631cd482 | ||
![]() |
fc05a1c8c7 | ||
![]() |
4be5b21b16 | ||
![]() |
61c3962ac4 | ||
![]() |
a906be5d39 | ||
![]() |
07e9943f06 | ||
![]() |
2ecc9a8a6e | ||
![]() |
b39a5c94c5 | ||
![]() |
fc899399f1 | ||
![]() |
f36ff660b3 | ||
![]() |
bf7dba5e00 | ||
![]() |
a269729e23 | ||
![]() |
9f94ad12d3 | ||
![]() |
08845d165f | ||
![]() |
eb80b4e933 | ||
![]() |
df6cb3a77d | ||
![]() |
99e188db8f | ||
![]() |
bde443481f | ||
![]() |
e37032b533 | ||
![]() |
99b6761acf | ||
![]() |
214a383923 | ||
![]() |
23b5396130 | ||
![]() |
f48d43a75d | ||
![]() |
6f173be21b | ||
![]() |
0813af3494 | ||
![]() |
8ba4bfb5e7 | ||
![]() |
f6b413ca8e | ||
![]() |
545d274a8b | ||
![]() |
4e0dff6956 | ||
![]() |
f9c60cbd39 | ||
![]() |
307ed338c8 | ||
![]() |
e448362352 | ||
![]() |
453841d9da | ||
![]() |
69b0736fd5 | ||
![]() |
37c8921a89 | ||
![]() |
bc645e5768 | ||
![]() |
4753d62816 | ||
![]() |
036e5369f3 | ||
![]() |
0a847be8bb | ||
![]() |
e0a2e2a0b6 | ||
![]() |
33c506e8be | ||
![]() |
1369ac07b4 | ||
![]() |
62bcad5563 | ||
![]() |
f308216bbc | ||
![]() |
b341b84894 | ||
![]() |
5bf34b0db4 | ||
![]() |
dfa2cc4fff | ||
![]() |
30fce55d38 | ||
![]() |
05b5a3602d | ||
![]() |
45f91bbacd | ||
![]() |
dd0e3d36f7 | ||
![]() |
0783c794ac | ||
![]() |
02d64b1a15 | ||
![]() |
c18049309a | ||
![]() |
d1c9169c14 | ||
![]() |
fee2151054 | ||
![]() |
3212986ca7 | ||
![]() |
9b3064684a | ||
![]() |
2913e1142d | ||
![]() |
76719f5c36 | ||
![]() |
9c201803bc | ||
![]() |
f9db4bd7b3 | ||
![]() |
8dbc6af3ef | ||
![]() |
df48c86d98 | ||
![]() |
a905e9e155 | ||
![]() |
a32a8870ee | ||
![]() |
b244cfc7b2 | ||
![]() |
740bc9b262 | ||
![]() |
521e83e2a4 | ||
![]() |
dec2925343 | ||
![]() |
1da11c6d3c | ||
![]() |
4cd13d674f | ||
![]() |
21bca12e36 | ||
![]() |
dd97d564be | ||
![]() |
5fc2287150 | ||
![]() |
8eb4fdf28f | ||
![]() |
65edbd26a6 | ||
![]() |
c7cc2680aa | ||
![]() |
66d7920058 | ||
![]() |
89849b8014 | ||
![]() |
6c67b53241 | ||
![]() |
6554f9298b | ||
![]() |
0e1af867f3 | ||
![]() |
614b12fb83 | ||
![]() |
5adac2162a | ||
![]() |
183d9dab83 | ||
![]() |
dc44d99f82 | ||
![]() |
33a58eb09a | ||
![]() |
6b01821091 | ||
![]() |
ae7455c886 | ||
![]() |
6c8aaceb65 | ||
![]() |
646a7ef701 | ||
![]() |
ec5b70c9be | ||
![]() |
7108fae2cf | ||
![]() |
f3b8e74df4 | ||
![]() |
92dbc7e241 | ||
![]() |
2232d22259 | ||
![]() |
285de02411 | ||
![]() |
1852c6207c | ||
![]() |
1a920a6ac7 | ||
![]() |
e7f5d7fb7d | ||
![]() |
628c18e6d2 | ||
![]() |
73ac14df36 | ||
![]() |
fcb1275325 | ||
![]() |
1b20e8f31b | ||
![]() |
72f3b5b8f9 | ||
![]() |
0a144e3fde | ||
![]() |
2db852e202 | ||
![]() |
dad6b2dae0 | ||
![]() |
cddaa86dba | ||
![]() |
d5a7620683 | ||
![]() |
30c4d10967 | ||
![]() |
6bcc071f9e | ||
![]() |
2cdeae95c7 | ||
![]() |
19a7a63359 | ||
![]() |
adbb804164 | ||
![]() |
51f730416f | ||
![]() |
2521952812 | ||
![]() |
84b3fd1365 | ||
![]() |
6514d71190 | ||
![]() |
942441696b | ||
![]() |
0e348b3667 | ||
![]() |
f104de5138 | ||
![]() |
d004956894 | ||
![]() |
06a16ff44a | ||
![]() |
1e3e595044 | ||
![]() |
44727f31f6 | ||
![]() |
972a0a0add | ||
![]() |
140db317a7 | ||
![]() |
3e74b2cb6f | ||
![]() |
1e799c5ce7 | ||
![]() |
fc447cbdfd | ||
![]() |
dc1fe2d972 | ||
![]() |
32901de236 | ||
![]() |
7e519b793a | ||
![]() |
f46653ed9e | ||
![]() |
4426b8cd8f | ||
![]() |
a6d1663642 | ||
![]() |
e93b27d3e2 | ||
![]() |
e3ca5052f4 | ||
![]() |
a602ae7d49 | ||
![]() |
e35f7afbb8 | ||
![]() |
a3482c920e | ||
![]() |
ed1e63b603 | ||
![]() |
3625f752e7 | ||
![]() |
4a2e772112 | ||
![]() |
b3f33789f3 | ||
![]() |
aca6fc29e3 |
1
legal/Authors.txt → .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>
|
14
.github/CONTRIBUTING.md
vendored
Normal file
|
@ -0,0 +1,14 @@
|
|||
Hey there!
|
||||
|
||||
I'm Hylke, the creator of this project. It's about time I wrote something up about how to contribute to SparkleShare, so here goes...
|
||||
|
||||
Contributions to SparkleShare are always welcome! I'm not a great coder. I like to design icons and interfaces, so there are always bugs or things that can be done better. Take a look at the [list of open issues](https://github.com/hbons/SparkleShare/issues). Smaller issues or places where refactoring is needed are marked with `FIXME` or `TODO` in the source code. If you have a fix for SparkleShare, simply open a pull request against the master branch (keeping in mind the [[coding style]]) and if you think your change is significant enough to be copyrighted, feel free to add your name and email to the `AUTHORS` file. Releases are done at least once a month, so there won't be long waits for bug fixes.
|
||||
|
||||
SparkleShare tries to keep things simple and to stay out of people's way. Features are only added if they are essential and helpful to a majority of users. If you have a feature that you'd like to be added, please open an issue first, so there can be a discussion whether the feature is actually needed (or it may be it can be done in some other way); do not waste work on a feature that isn't actually desired. By limiting the amount of features, we can spend more time on making the core features solid in order to help people get things done.
|
||||
|
||||
Often requests come in to add preferences. I'm very pleased that we've been able to solve most problems reported and features requested without adding a "preference". Currently SparkleShare has only one preference: enabling/disabling notifications. Hopefully it will stay this way and we can withhold from adding a preference panel of some kind (but I can't rule it out). Figuring out how things can be done without burdening people with a preference is much more challenging and rewarding in my opinion. [Free Software UI](http://ometer.com/free-software-ui.html) is a great article about this topic and I recommend reading it.
|
||||
|
||||
Looking forward to your contributions! :)
|
||||
|
||||
Hylke
|
||||
|
1
.github/FUNDING.yml
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
github: hbons
|
20
.github/ISSUE_TEMPLATE.md
vendored
Normal file
|
@ -0,0 +1,20 @@
|
|||
You can find session logs by date and version information in:
|
||||
~/.config/org.sparkleshare.SparkleShare/logs/ on Linux and macOS
|
||||
C:\Users\YOUR_USERNAME\AppData\Roaming\org.sparkleshare.SparkleShare\logs\ on Windows
|
||||
|
||||
To help us help you, please include the logs from around the time the issue occurred, as well as the SparkleShare version and info about your OS (displayed at the top of the log files). Then, tell us roughly in these steps what went wrong:
|
||||
|
||||
|
||||
### What happened:
|
||||
…
|
||||
|
||||
### What I expected to happen:
|
||||
…
|
||||
|
||||
### This happens when:
|
||||
1. …
|
||||
2. …
|
||||
3. …
|
||||
|
||||
|
||||
Thanks for reporting your issue or feature request, it helps lots!
|
32
.gitignore
vendored
|
@ -12,35 +12,14 @@
|
|||
*.sln.cache
|
||||
*.user
|
||||
*.resources
|
||||
Makefile.in
|
||||
Makefile
|
||||
intltool-*
|
||||
compile
|
||||
configure
|
||||
config.guess
|
||||
config.h
|
||||
config.h.in
|
||||
config.log
|
||||
config.status
|
||||
config.sub
|
||||
aclocal.m4
|
||||
autom4te.cache/
|
||||
bin/
|
||||
build/
|
||||
obj/
|
||||
git-*
|
||||
install-sh
|
||||
libtool
|
||||
ltmain.sh
|
||||
lt*.m4
|
||||
missing
|
||||
build/m4/shave/shave
|
||||
build/m4/*.m4
|
||||
build/m4/shave/shave-libtool
|
||||
Sparkles/InstallationInfo.Directory.cs
|
||||
SparkleShare/Linux/sparkleshare
|
||||
SparkleShare/Mac/git/*
|
||||
SparkleShare/Mac/git*.gz
|
||||
gnome-doc-utils.make
|
||||
SparkleShare/Mac/git*
|
||||
SparkleShare/Mac/*.tar.gz
|
||||
/sparkleshare-*
|
||||
desktop.ini
|
||||
_ReSharper.*
|
||||
|
@ -49,12 +28,13 @@ _ReSharper.*
|
|||
*.wixpdb
|
||||
*.wxs
|
||||
*.dotCover
|
||||
|
||||
SparkleShare/Windows/build/
|
||||
|
||||
.vs/
|
||||
|
||||
# NuGet Packages
|
||||
*.nupkg
|
||||
# The packages folder can be ignored because of Package Restore
|
||||
**/packages/*
|
||||
# except build/, which is used as an MSBuild target.
|
||||
!**/packages/build/
|
||||
|
||||
|
|
10
.travis.yml
|
@ -14,7 +14,7 @@ before_install:
|
|||
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then sudo installer -pkg xamarin.mac*.pkg -target / ; fi
|
||||
|
||||
script:
|
||||
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then docker build --file build/ci/Dockerfile --tag sparkleshare:nightly . ; fi
|
||||
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then docker build --file scripts/ci/Dockerfile --tag sparkleshare:nightly . ; fi
|
||||
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then msbuild /p:Configuration=ReleaseMac SparkleShare.sln ; fi
|
||||
|
||||
before_deploy:
|
||||
|
@ -24,3 +24,11 @@ before_deploy:
|
|||
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then mv SparkleShare/Mac/bin/ReleaseMac/SparkleShare.app . ; fi
|
||||
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then zip --recurse-paths sparkleshare-mac-nightly-${TRAVIS_COMMIT}.zip SparkleShare.app ; fi
|
||||
|
||||
notifications:
|
||||
webhooks:
|
||||
urls:
|
||||
- https://webhooks.gitter.im/e/f1a1178baa78d1162385
|
||||
on_success: change
|
||||
on_failure: always
|
||||
on_start: never
|
||||
|
||||
|
|
25
Makefile.am
|
@ -1,25 +0,0 @@
|
|||
ACLOCAL_AMFLAGS = -I build/m4/sparkleshare -I build/m4/shamrock -I build/m4/shave
|
||||
|
||||
basedirs = build Sparkles Sparkles/Git
|
||||
|
||||
SUBDIRS = $(basedirs) $(GUISUBDIRS)
|
||||
DIST_SUBDIRS = $(basedirs) SparkleShare
|
||||
|
||||
EXTRA_DIST = \
|
||||
News.txt \
|
||||
README.md \
|
||||
legal/License_for_SparkleShare.txt \
|
||||
legal/License_for_Sparkles.txt \
|
||||
legal/Authors.txt \
|
||||
SparkleShare/Linux/README.md \
|
||||
SparkleShare/Linux/org.sparkleshare.SparkleShare.appdata.xml
|
||||
|
||||
DISTCLEANFILES = \
|
||||
intltool-extract \
|
||||
intltool-merge \
|
||||
intltool-update \
|
||||
gnome-doc-utils.make
|
||||
|
||||
clean-local:
|
||||
rm -rf $(top_builddir)/bin
|
||||
|
33
README.md
|
@ -1,29 +1,54 @@
|
|||
# [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
|
||||
|
||||
Under the hood SparkleShare uses the version control system [Git](https://git-scm.com/) and the large files extension [Git LFS](https://git-lfs.github.com), so setting up a host yourself is relatively easy. Using your own host gives you more privacy and control, as well as lots of cheap storage space and higher transfer speeds. We've made a simple [script](https://github.com/hbons/Dazzle) that does the hard work for you. If you need to manage a lot of projects and/or users we recommend hosting a [GitLab Community Edition](https://about.gitlab.com/installation/) instance.
|
||||
|
||||
|
||||
## Build from source
|
||||
`SparkleShare` is Free and Open Source software and licensed under the [GNU GPLv3 or later](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).
|
||||
|
||||
[](https://travis-ci.org/hbons/SparkleShare)
|
||||
|
||||
[](https://travis-ci.org/hbons/SparkleShare)
|
||||
[](https://gitter.im/hbons/SparkleShare?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||
|
||||
## Useful links
|
||||
[Official website](https://www.sparkleshare.org/), [Twitter](https://www.twitter.com/SparkleShare), [Wiki](https://www.github.com/hbons/SparkleShare/wiki), and [Source Code](https://www.github.com/hbons/SparkleShare).
|
||||
- [sparkleshare.org](https://www.sparkleshare.org/)
|
||||
- [@SparkleShare](https://www.twitter.com/SparkleShare), [@hbons](https://www.twitter.com/hbons)
|
||||
- Community chatroom on [Gitter](https://www.gitter.im/hbons/SparkleShare)
|
||||
- [Wiki](https://www.github.com/hbons/SparkleShare/wiki)
|
||||
|
||||
|
||||
Have fun, make awesome. :)
|
||||
|
||||
|
|
|
@ -1,3 +1,35 @@
|
|||
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 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
|
||||
- Use appindicator as the default status icon
|
||||
- Fix event log parsing for newer versions of Git
|
||||
- Flatpak improvements
|
||||
|
||||
macOS:
|
||||
- Fix the system font in eventlog and related crash
|
||||
- Fix hang when quitting the app
|
||||
|
||||
Special thanks to Thiago Santos and Renpytom for supporting the project on Patreon.
|
||||
|
||||
|
||||
2.0.1 (Tue 19 Dec, 2017):
|
||||
|
||||
- Fix files created by conflict resolution being moved to the root folder
|
|
@ -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,8 +61,10 @@ namespace SparkleShare {
|
|||
UpdateLabelEvent ("Checking for updates…");
|
||||
Thread.Sleep (500);
|
||||
|
||||
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
|
||||
|
||||
var web_client = new WebClient ();
|
||||
var uri = new Uri ("http://www.sparkleshare.org/version");
|
||||
var uri = new Uri ("https://www.sparkleshare.org/version");
|
||||
|
||||
try {
|
||||
string latest_version = web_client.DownloadString (uri);
|
||||
|
@ -73,7 +75,8 @@ namespace SparkleShare {
|
|||
else
|
||||
UpdateLabelEvent ("✓ You are running the latest version");
|
||||
|
||||
} catch {
|
||||
} catch (Exception e) {
|
||||
Logger.LogInfo ("UI", "Failed to download " + uri , e);
|
||||
UpdateLabelEvent ("Couldn’t check for updates\t");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -32,17 +32,18 @@ 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 ();
|
||||
|
||||
|
||||
if (skipped_avatars.Contains (email))
|
||||
return null;
|
||||
|
||||
|
||||
string avatars_path = Path.Combine (Path.GetDirectoryName (target_path), "avatars", size + "x" + size);
|
||||
|
||||
// Search avatars by file name, ignore extension
|
||||
|
@ -66,10 +67,15 @@ namespace SparkleShare
|
|||
Logger.LogInfo ("Avatars", "Error fetching avatar for " + email, e);
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
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);
|
||||
|
||||
|
@ -78,52 +84,53 @@ namespace SparkleShare
|
|||
|
||||
} else if (client.ResponseHeaders ["content-type"].Equals (MediaTypeNames.Image.Gif, StringComparison.InvariantCultureIgnoreCase)) {
|
||||
avatar_file_path += ".gif";
|
||||
|
||||
|
||||
} else {
|
||||
avatar_file_path += ".png";
|
||||
}
|
||||
|
||||
|
||||
if (buffer.Length > 255) {
|
||||
if (!Directory.Exists (avatars_path)) {
|
||||
Directory.CreateDirectory (avatars_path);
|
||||
Logger.LogInfo ("Avatars", "Created '" + avatars_path + "'");
|
||||
}
|
||||
|
||||
|
||||
File.WriteAllBytes (avatar_file_path, buffer);
|
||||
Logger.LogInfo ("Avatars", "Fetched " + size + "x" + size + " avatar for " + email);
|
||||
|
||||
|
||||
return avatar_file_path;
|
||||
|
||||
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
} catch (Exception e) {
|
||||
Logger.LogInfo ("Avatars", "Error fetching avatar for " + email, e);
|
||||
skipped_avatars.Add (email);
|
||||
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static bool GetAvatarValidationCallBack (Object sender,
|
||||
private static bool GetGravatarValidationCallBack (Object sender,
|
||||
X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
|
||||
{
|
||||
X509Certificate2 certificate2 = new X509Certificate2 (certificate.GetRawCertData ());
|
||||
|
||||
|
||||
// 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/");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,17 +24,17 @@ using System.Threading;
|
|||
using Sparkles;
|
||||
|
||||
namespace SparkleShare {
|
||||
|
||||
|
||||
public abstract class BaseController {
|
||||
|
||||
|
||||
public BaseRepository [] Repositories {
|
||||
get {
|
||||
lock (this.repo_lock)
|
||||
return this.repositories.GetRange (0, this.repositories.Count).ToArray ();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void AddRepository (BaseRepository repo)
|
||||
{
|
||||
lock (this.repo_lock) {
|
||||
|
@ -42,15 +42,15 @@ namespace SparkleShare {
|
|||
this.repositories.Sort ((x, y) => string.Compare (x.Name, y.Name));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void RemoveRepository (BaseRepository repo)
|
||||
{
|
||||
lock (this.repo_lock)
|
||||
this.repositories.Remove (repo);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public BaseRepository GetRepoByName (string name)
|
||||
{
|
||||
lock (this.repo_lock) {
|
||||
|
@ -58,15 +58,15 @@ namespace SparkleShare {
|
|||
if (repo.Name.Equals (name))
|
||||
return repo;
|
||||
}
|
||||
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public Configuration Config { get; private set; }
|
||||
public bool RepositoriesLoaded { get; private set; }
|
||||
public string FoldersPath { get; private set; }
|
||||
|
||||
|
||||
public double ProgressPercentage = 0.0;
|
||||
public double ProgressSpeedUp = 0.0;
|
||||
public double ProgressSpeedDown = 0.0;
|
||||
|
@ -81,37 +81,37 @@ namespace SparkleShare {
|
|||
|
||||
public event Action ShowAboutWindowEvent = delegate { };
|
||||
public event Action ShowEventLogWindowEvent = delegate { };
|
||||
|
||||
|
||||
public event FolderFetchedEventHandler FolderFetched = delegate { };
|
||||
public delegate void FolderFetchedEventHandler (string remote_url, string [] warnings);
|
||||
|
||||
|
||||
public event FolderFetchErrorHandler FolderFetchError = delegate { };
|
||||
public delegate void FolderFetchErrorHandler (string remote_url, string [] errors);
|
||||
|
||||
|
||||
public event FolderFetchingHandler FolderFetching = delegate { };
|
||||
public delegate void FolderFetchingHandler (double percentage, double speed, string information);
|
||||
|
||||
|
||||
|
||||
|
||||
public event Action FolderListChanged = delegate { };
|
||||
public event Action OnIdle = delegate { };
|
||||
public event Action OnSyncing = delegate { };
|
||||
public event Action OnError = delegate { };
|
||||
|
||||
|
||||
|
||||
|
||||
public event InviteReceivedHandler InviteReceived = delegate { };
|
||||
public delegate void InviteReceivedHandler (SparkleInvite invite);
|
||||
|
||||
|
||||
public event NotificationRaisedEventHandler NotificationRaised = delegate { };
|
||||
public delegate void NotificationRaisedEventHandler (ChangeSet change_set);
|
||||
|
||||
|
||||
public event AlertNotificationRaisedEventHandler AlertNotificationRaised = delegate { };
|
||||
public delegate void AlertNotificationRaisedEventHandler (string title, string message);
|
||||
|
||||
|
||||
|
||||
|
||||
public bool FirstRun {
|
||||
get { return Config.User.Email.Equals ("Unknown"); }
|
||||
}
|
||||
|
||||
|
||||
public List<string> Folders {
|
||||
get {
|
||||
List<string> folders = Config.Folders;
|
||||
|
@ -131,32 +131,42 @@ namespace SparkleShare {
|
|||
public bool NotificationsEnabled {
|
||||
get {
|
||||
string notifications_enabled = Config.GetConfigOption ("notifications");
|
||||
|
||||
|
||||
if (string.IsNullOrEmpty (notifications_enabled)) {
|
||||
Config.SetConfigOption ("notifications", bool.TrueString);
|
||||
return true;
|
||||
|
||||
|
||||
} else {
|
||||
return notifications_enabled.Equals (bool.TrueString);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public bool AvatarsEnabled {
|
||||
get {
|
||||
string fetch_avatars_option = Config.GetConfigOption ("fetch_avatars");
|
||||
|
||||
|
||||
if (fetch_avatars_option == null || fetch_avatars_option.Equals (bool.FalseString))
|
||||
return false;
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
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; }
|
||||
|
||||
|
||||
// Enables SparkleShare to start automatically at login
|
||||
public abstract void CreateStartupItem ();
|
||||
|
||||
|
@ -168,62 +178,60 @@ namespace SparkleShare {
|
|||
|
||||
// Creates the SparkleShare folder in the user's home folder
|
||||
public abstract void CreateSparkleShareFolder ();
|
||||
|
||||
|
||||
// Opens the SparkleShare folder or an (optional) subfolder
|
||||
public abstract void OpenFolder (string path);
|
||||
|
||||
|
||||
// Opens a file with the appropriate application
|
||||
public abstract void OpenFile (string path);
|
||||
|
||||
|
||||
// Opens a file with the appropriate application
|
||||
public virtual void OpenWebsite (string url) { }
|
||||
|
||||
|
||||
// Copies text to the clipboard
|
||||
public abstract void CopyToClipboard (string text);
|
||||
|
||||
|
||||
// Allows for platform-specific quit and cleanup methods to be called on exit
|
||||
public abstract void PlatformQuit ();
|
||||
|
||||
public abstract string EventLogHTML { get; }
|
||||
public abstract string DayEntryHTML { get; }
|
||||
public abstract string EventEntryHTML { get; }
|
||||
|
||||
|
||||
|
||||
|
||||
BaseFetcher fetcher;
|
||||
FileSystemWatcher watcher;
|
||||
object repo_lock = new object ();
|
||||
object check_repos_lock = new object ();
|
||||
List<BaseRepository> repositories = new List<BaseRepository> ();
|
||||
bool lost_folders_path = false;
|
||||
|
||||
|
||||
|
||||
|
||||
public BaseController (Configuration config)
|
||||
{
|
||||
Config = config;
|
||||
FoldersPath = Config.FoldersPath;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public virtual void Initialize ()
|
||||
{
|
||||
string version = InstallationInfo.Version;
|
||||
|
||||
if (InstallationInfo.Directory.StartsWith ("/app", StringComparison.InvariantCulture))
|
||||
if (InstallationInfo.IsFlatpak)
|
||||
version += " (Flatpak)";
|
||||
|
||||
Logger.LogInfo ("Environment", "SparkleShare " + version);
|
||||
Logger.LogInfo ("Environment", "Git LFS " + Sparkles.Git.GitCommand.GitLFSVersion);
|
||||
Logger.LogInfo ("Environment", "Git " + Sparkles.Git.GitCommand.GitVersion);
|
||||
|
||||
// TODO: Nice OS version names for Linux (Fedora 24, Ubuntu 16.04, etc.)
|
||||
if (InstallationInfo.OperatingSystem == OS.Mac)
|
||||
Logger.LogInfo ("Environment", InstallationInfo.MacOSVersion ());
|
||||
else
|
||||
Logger.LogInfo ("Environment", InstallationInfo.OperatingSystem + " (" + Environment.OSVersion + ")");
|
||||
Logger.LogInfo ("Environment", InstallationInfo.OperatingSystem + " " + InstallationInfo.OperatingSystemVersion);
|
||||
|
||||
UserAuthenticationInfo = new SSHAuthenticationInfo ();
|
||||
SSHAuthenticationInfo.DefaultAuthenticationInfo = UserAuthenticationInfo;
|
||||
|
||||
Preset.PresetsPath = PresetsPath;
|
||||
InstallProtocolHandler ();
|
||||
|
||||
|
||||
try {
|
||||
CreateSparkleShareFolder ();
|
||||
|
||||
|
@ -239,19 +247,19 @@ namespace SparkleShare {
|
|||
IncludeSubdirectories = false,
|
||||
Path = FoldersPath
|
||||
};
|
||||
|
||||
|
||||
watcher.Created += OnFolderActivity;
|
||||
watcher.EnableRaisingEvents = true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
int reopen_attempt_counts = 0;
|
||||
|
||||
|
||||
public void HandleReopen ()
|
||||
{
|
||||
if (Repositories.Length > 0) {
|
||||
ShowEventLogWindow ();
|
||||
|
||||
|
||||
} else if (reopen_attempt_counts > 1) {
|
||||
AlertNotificationRaised ("Hello!", "SparkleShare sits right here, as a status icon.");
|
||||
reopen_attempt_counts = 0;
|
||||
|
@ -267,31 +275,31 @@ namespace SparkleShare {
|
|||
if (this.lost_folders_path) {
|
||||
SparkleShare.UI.Bubbles.Controller.ShowBubble ("Where's your SparkleShare folder?",
|
||||
"Did you put it on a detached drive?", null);
|
||||
|
||||
|
||||
Environment.Exit (-1);
|
||||
}
|
||||
|
||||
|
||||
if (FirstRun) {
|
||||
ShowSetupWindow (PageType.Setup);
|
||||
|
||||
|
||||
} else {
|
||||
new Thread (() => {
|
||||
StartupInviteScan ();
|
||||
CheckRepositories ();
|
||||
RepositoriesLoaded = true;
|
||||
UpdateState ();
|
||||
|
||||
|
||||
}).Start ();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public void ShowSetupWindow (PageType page_type)
|
||||
{
|
||||
ShowSetupWindowEvent (page_type);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public void ShowAboutWindow ()
|
||||
{
|
||||
ShowAboutWindowEvent ();
|
||||
|
@ -302,33 +310,33 @@ namespace SparkleShare {
|
|||
{
|
||||
ShowNoteWindowEvent (project);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public void ShowEventLogWindow ()
|
||||
{
|
||||
ShowEventLogWindowEvent ();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public void OpenSparkleShareFolder ()
|
||||
{
|
||||
OpenFolder (Config.FoldersPath);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public void OpenSparkleShareFolder (string name)
|
||||
{
|
||||
OpenFolder (new SparkleFolder (name).FullPath);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public void ToggleNotifications ()
|
||||
{
|
||||
bool notifications_enabled = Config.GetConfigOption ("notifications").Equals (bool.TrueString);
|
||||
Config.SetConfigOption ("notifications", (!notifications_enabled).ToString ());
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void CheckRepositories ()
|
||||
{
|
||||
lock (this.check_repos_lock) {
|
||||
|
@ -395,21 +403,21 @@ namespace SparkleShare {
|
|||
BaseRepository repo = null;
|
||||
string folder_name = Path.GetFileName (folder_path);
|
||||
string backend = Config.BackendByName (folder_name);
|
||||
|
||||
|
||||
try {
|
||||
repo = (BaseRepository) Activator.CreateInstance (
|
||||
Type.GetType ("Sparkles." + backend + "." + backend + "Repository, Sparkles." + backend),
|
||||
new object [] { folder_path, Config, SSHAuthenticationInfo.DefaultAuthenticationInfo });
|
||||
|
||||
|
||||
} catch (Exception e) {
|
||||
Logger.LogInfo ("Controller", "Failed to load backend '" + backend + "' for '" + folder_name + "': ", e);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
repo.ChangesDetected += delegate {
|
||||
UpdateState ();
|
||||
};
|
||||
|
||||
|
||||
repo.SyncStatusChanged += delegate (SyncStatus status) {
|
||||
if (status == SyncStatus.Idle) {
|
||||
ProgressPercentage = 0.0;
|
||||
|
@ -417,54 +425,62 @@ namespace SparkleShare {
|
|||
ProgressSpeedDown = 0.0;
|
||||
ProgressInformation = "";
|
||||
}
|
||||
|
||||
|
||||
UpdateState ();
|
||||
};
|
||||
|
||||
|
||||
repo.ProgressChanged += delegate {
|
||||
ProgressPercentage = 0.0;
|
||||
ProgressSpeedUp = 0.0;
|
||||
ProgressSpeedDown = 0.0;
|
||||
ProgressInformation = "";
|
||||
|
||||
|
||||
double percentage = 0.0;
|
||||
int repo_count = 0;
|
||||
|
||||
|
||||
foreach (BaseRepository rep in Repositories) {
|
||||
if (rep.ProgressPercentage > 0) {
|
||||
percentage += rep.ProgressPercentage;
|
||||
repo_count++;
|
||||
}
|
||||
|
||||
|
||||
if (rep.Status == SyncStatus.SyncUp)
|
||||
ProgressSpeedUp += rep.ProgressSpeed;
|
||||
|
||||
|
||||
if (rep.Status == SyncStatus.SyncDown)
|
||||
ProgressSpeedDown += rep.ProgressSpeed;
|
||||
}
|
||||
|
||||
if (repo_count == 1)
|
||||
ProgressInformation = repo.ProgressInformation;
|
||||
|
||||
|
||||
if (repo_count > 0)
|
||||
ProgressPercentage = percentage / repo_count;
|
||||
|
||||
|
||||
UpdateState ();
|
||||
};
|
||||
|
||||
|
||||
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);
|
||||
};
|
||||
|
||||
|
||||
repo.ConflictResolved += delegate {
|
||||
AlertNotificationRaised ("Resolved a file collision", "Local and server versions were kept.");
|
||||
};
|
||||
|
||||
|
||||
AddRepository (repo);
|
||||
repo.Initialize ();
|
||||
repo.Initialize ();
|
||||
}
|
||||
|
||||
|
||||
|
@ -477,31 +493,31 @@ namespace SparkleShare {
|
|||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void StartupInviteScan ()
|
||||
{
|
||||
foreach (string invite in Directory.GetFiles (FoldersPath, "*.xml"))
|
||||
HandleInvite (invite);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void HandleInvite (FileSystemEventArgs args)
|
||||
{
|
||||
HandleInvite (args.FullPath);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void HandleInvite (string path)
|
||||
{
|
||||
if (this.fetcher != null &&
|
||||
this.fetcher.IsActive) {
|
||||
|
||||
|
||||
AlertNotificationRaised ("SparkleShare Setup seems busy", "Please wait for it to finish");
|
||||
|
||||
|
||||
} else {
|
||||
SparkleInvite invite = new SparkleInvite (path);
|
||||
|
||||
|
||||
// It may be that the invite we received a path to isn't
|
||||
// fully downloaded yet, so we try to read it several times
|
||||
int tries = 0;
|
||||
|
@ -509,37 +525,37 @@ namespace SparkleShare {
|
|||
Thread.Sleep (100);
|
||||
invite = new SparkleInvite (path);
|
||||
tries++;
|
||||
|
||||
|
||||
if (tries > 10) {
|
||||
AlertNotificationRaised ("Oh noes!", "This invite seems screwed up...");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (invite.IsValid)
|
||||
InviteReceived (invite);
|
||||
|
||||
|
||||
File.Delete (path);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// Fires events for the current syncing state
|
||||
void UpdateState ()
|
||||
{
|
||||
bool has_unsynced_repos = false;
|
||||
bool has_syncing_repos = false;
|
||||
|
||||
|
||||
foreach (BaseRepository repo in Repositories) {
|
||||
if (repo.Status == SyncStatus.SyncDown || repo.Status == SyncStatus.SyncUp || repo.IsBuffering) {
|
||||
has_syncing_repos = true;
|
||||
break;
|
||||
|
||||
|
||||
} else if (repo.Status == SyncStatus.Idle && repo.HasUnsyncedChanges) {
|
||||
has_unsynced_repos = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (has_syncing_repos)
|
||||
OnSyncing ();
|
||||
else if (has_unsynced_repos)
|
||||
|
@ -547,7 +563,7 @@ namespace SparkleShare {
|
|||
else
|
||||
OnIdle ();
|
||||
}
|
||||
|
||||
|
||||
|
||||
public List<StorageTypeInfo> FetcherAvailableStorageTypes {
|
||||
get {
|
||||
|
@ -559,31 +575,31 @@ namespace SparkleShare {
|
|||
public void StartFetcher (SparkleFetcherInfo info)
|
||||
{
|
||||
string canonical_name = Path.GetFileName (info.RemotePath);
|
||||
string backend = info.Backend;
|
||||
|
||||
string backend = info.Backend;
|
||||
|
||||
if (string.IsNullOrEmpty (backend))
|
||||
backend = BaseFetcher.GetBackend (info.Address);
|
||||
|
||||
|
||||
info.TargetDirectory = Path.Combine (Config.TmpPath, canonical_name);
|
||||
|
||||
if (Directory.Exists (info.TargetDirectory))
|
||||
Directory.Delete (info.TargetDirectory, true);
|
||||
|
||||
Directory.Delete (info.TargetDirectory, recursive: true);
|
||||
|
||||
try {
|
||||
this.fetcher = (BaseFetcher) Activator.CreateInstance (
|
||||
Type.GetType ("Sparkles." + backend + "." + backend + "Fetcher, Sparkles." + backend),
|
||||
new object [] { info, UserAuthenticationInfo});
|
||||
|
||||
|
||||
} catch (Exception e) {
|
||||
Logger.LogInfo ("Controller",
|
||||
"Failed to load '" + backend + "' backend for '" + canonical_name + "' " + e.Message);
|
||||
|
||||
|
||||
FolderFetchError (Path.Combine (info.Address, info.RemotePath).Replace (@"\", "/"),
|
||||
new string [] {"Failed to load \"" + backend + "\" backend for \"" + canonical_name + "\""});
|
||||
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
this.fetcher.Finished += FetcherFinishedDelegate;
|
||||
this.fetcher.Failed += FetcherFailedDelegate;
|
||||
this.fetcher.ProgressChanged += FetcherProgressChangedDelgate;
|
||||
|
@ -625,12 +641,12 @@ namespace SparkleShare {
|
|||
{
|
||||
this.fetcher.Stop ();
|
||||
this.fetcher.Dispose ();
|
||||
|
||||
|
||||
this.fetcher = null;
|
||||
this.watcher.EnableRaisingEvents = true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public bool CheckPassword (string password)
|
||||
{
|
||||
return this.fetcher.IsFetchedRepoPasswordCorrect (password);
|
||||
|
@ -641,10 +657,9 @@ namespace SparkleShare {
|
|||
{
|
||||
this.fetcher.EnableFetchedRepoCrypto (password);
|
||||
FinishFetcher (StorageType.Encrypted);
|
||||
} // TODO: make this the main method. password optional. need to know storage type before Complete to allow crypto in lfs
|
||||
// Make sure IsCryptoPasswordCorrect works with SparkleShare.txt checkout and LFS
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void FinishFetcher (StorageType selected_storage_type)
|
||||
{
|
||||
this.watcher.EnableRaisingEvents = false;
|
||||
|
@ -655,17 +670,17 @@ namespace SparkleShare {
|
|||
|
||||
try {
|
||||
Directory.Move (this.fetcher.TargetFolder, target_folder_path);
|
||||
|
||||
|
||||
} catch (Exception e) {
|
||||
Logger.LogInfo ("Controller", "Error moving directory, trying again...", e);
|
||||
|
||||
|
||||
try {
|
||||
ClearDirectoryAttributes (this.fetcher.TargetFolder);
|
||||
Directory.Move (this.fetcher.TargetFolder, target_folder_path);
|
||||
|
||||
|
||||
} catch (Exception x) {
|
||||
Logger.LogInfo ("Controller", "Error moving directory", x);
|
||||
|
||||
|
||||
this.fetcher.Dispose ();
|
||||
this.fetcher = null;
|
||||
this.watcher.EnableRaisingEvents = true;
|
||||
|
@ -674,7 +689,7 @@ namespace SparkleShare {
|
|||
}
|
||||
|
||||
string backend = BaseFetcher.GetBackend (this.fetcher.RemoteUrl.ToString ());
|
||||
|
||||
|
||||
Config.AddFolder (target_folder_name, identifier, this.fetcher.RemoteUrl.ToString (), backend);
|
||||
|
||||
if (this.fetcher.FetchedRepoStorageType != StorageType.Plain) {
|
||||
|
@ -692,10 +707,10 @@ namespace SparkleShare {
|
|||
|
||||
FolderListChanged ();
|
||||
FolderFetched (this.fetcher.RemoteUrl.ToString (), this.fetcher.Warnings.ToArray ());
|
||||
|
||||
|
||||
this.fetcher.Dispose ();
|
||||
this.fetcher = null;
|
||||
|
||||
|
||||
this.watcher.EnableRaisingEvents = true;
|
||||
}
|
||||
|
||||
|
@ -717,14 +732,14 @@ namespace SparkleShare {
|
|||
int suffix = 2 + Directory.GetDirectories (folder_group_path, folder_name + " (*").Length;
|
||||
return string.Format ("{0} ({1})", folder_path, suffix);
|
||||
}
|
||||
|
||||
|
||||
public virtual void Quit ()
|
||||
|
||||
|
||||
public void Quit ()
|
||||
{
|
||||
foreach (BaseRepository repo in Repositories)
|
||||
repo.Dispose ();
|
||||
|
||||
Environment.Exit (0);
|
||||
|
||||
PlatformQuit ();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -36,16 +36,16 @@ namespace SparkleShare {
|
|||
|
||||
public event UpdateContentEventEventHandler UpdateContentEvent = delegate { };
|
||||
public delegate void UpdateContentEventEventHandler (string html);
|
||||
|
||||
|
||||
public event UpdateChooserEventHandler UpdateChooserEvent = delegate { };
|
||||
public delegate void UpdateChooserEventHandler (string [] folders);
|
||||
|
||||
|
||||
public event UpdateChooserEnablementEventHandler UpdateChooserEnablementEvent = delegate { };
|
||||
public delegate void UpdateChooserEnablementEventHandler (bool enabled);
|
||||
|
||||
|
||||
public event UpdateSizeInfoEventHandler UpdateSizeInfoEvent = delegate { };
|
||||
public delegate void UpdateSizeInfoEventHandler (string size, string history_size);
|
||||
|
||||
|
||||
public event ShowSaveDialogEventHandler ShowSaveDialogEvent = delegate { };
|
||||
public delegate void ShowSaveDialogEventHandler (string file_name, string target_folder_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 ();
|
||||
|
@ -162,7 +168,7 @@ namespace SparkleShare {
|
|||
|
||||
if (!string.IsNullOrEmpty (html))
|
||||
UpdateContentEvent (html);
|
||||
|
||||
|
||||
UpdateSizeInfoEvent (Size, HistorySize);
|
||||
|
||||
}).Start ();
|
||||
|
@ -172,7 +178,7 @@ namespace SparkleShare {
|
|||
WindowIsOpen = true;
|
||||
ShowWindowEvent ();
|
||||
};
|
||||
|
||||
|
||||
SparkleShare.Controller.OnIdle += delegate {
|
||||
if (this.history_view_active)
|
||||
return;
|
||||
|
@ -189,7 +195,7 @@ namespace SparkleShare {
|
|||
|
||||
UpdateSizeInfoEvent (Size, HistorySize);
|
||||
};
|
||||
|
||||
|
||||
SparkleShare.Controller.FolderListChanged += delegate {
|
||||
if (this.selected_folder != null && !SparkleShare.Controller.Folders.Contains (this.selected_folder))
|
||||
this.selected_folder = null;
|
||||
|
@ -212,16 +218,16 @@ namespace SparkleShare {
|
|||
{
|
||||
if (string.IsNullOrEmpty (href) || href.StartsWith ("about:"))
|
||||
return;
|
||||
|
||||
|
||||
href = href.Replace ("%20", " ");
|
||||
|
||||
|
||||
if (href.StartsWith ("http")) {
|
||||
SparkleShare.Controller.OpenWebsite (href);
|
||||
|
||||
|
||||
} else if (href.StartsWith ("restore://") && this.restore_revision_info == null) {
|
||||
Regex regex = new Regex ("restore://(.+)/([a-f0-9]+)/(.+)/(.{3} [0-9]+ [0-9]+h[0-9]+)/(.+)");
|
||||
Match match = regex.Match (href);
|
||||
|
||||
|
||||
if (match.Success) {
|
||||
string author_name = match.Groups [3].Value;
|
||||
string timestamp = match.Groups [4].Value;
|
||||
|
@ -240,7 +246,7 @@ namespace SparkleShare {
|
|||
|
||||
ShowSaveDialogEvent (file_name, target_folder_path);
|
||||
}
|
||||
|
||||
|
||||
} else if (href.StartsWith ("back://")) {
|
||||
this.history_view_active = false;
|
||||
SelectedFolder = this.selected_folder; // TODO: Return to the same position on the page
|
||||
|
@ -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);
|
||||
|
||||
|
@ -283,9 +292,9 @@ namespace SparkleShare {
|
|||
} else {
|
||||
if (href.StartsWith ("file:///"))
|
||||
href = href.Substring (7);
|
||||
|
||||
|
||||
SparkleShare.Controller.OpenFile (href);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -374,13 +383,13 @@ namespace SparkleShare {
|
|||
html += "<tr>" +
|
||||
"<td class='avatar'><img src='" + GetAvatarFilePath (change_set.User) + "'></td>" +
|
||||
"<td class='name'>" + change_set.User.Name + "</td>" +
|
||||
"<td class='date'>" +
|
||||
change_set.Timestamp.ToString ("d MMM yyyy", CultureInfo.InvariantCulture) +
|
||||
"<td class='date'>" +
|
||||
change_set.Timestamp.ToString ("d MMM yyyy", CultureInfo.InvariantCulture) +
|
||||
"</td>" +
|
||||
"<td class='time'>" + change_set.Timestamp.ToString ("HH:mm") + "</td>" +
|
||||
"<td class='restore'>" +
|
||||
"<a href='restore://" + change_set.Folder.Name + "/" +
|
||||
change_set.Revision + "/" + change_set.User.Name + "/" +
|
||||
"<a href='restore://" + change_set.Folder.Name + "/" +
|
||||
change_set.Revision + "/" + change_set.User.Name + "/" +
|
||||
change_set.Timestamp.ToString ("MMM d H\\hmm", CultureInfo.InvariantCulture) + "/" +
|
||||
file_path + "'>Restore…</a>" +
|
||||
"</td>" +
|
||||
|
@ -407,7 +416,7 @@ namespace SparkleShare {
|
|||
|
||||
foreach (ChangeSet change_set in change_sets) {
|
||||
bool change_set_inserted = false;
|
||||
|
||||
|
||||
foreach (ActivityDay stored_activity_day in activity_days) {
|
||||
if (stored_activity_day.Date.Year == change_set.Timestamp.Year &&
|
||||
stored_activity_day.Date.Month == change_set.Timestamp.Month &&
|
||||
|
@ -443,7 +452,7 @@ namespace SparkleShare {
|
|||
event_entry += "<dd class='" + change.Type.ToString ().ToLower () + "'>";
|
||||
|
||||
if (!change.IsFolder) {
|
||||
event_entry += "<small><a href=\"history://" + change_set.Folder.Name + "/" +
|
||||
event_entry += "<small><a href=\"history://" + change_set.Folder.Name + "/" +
|
||||
change.Path + "\" title=\"View revisions\">" + change.Timestamp.ToString ("HH:mm") +
|
||||
" ▾</a></small> ";
|
||||
|
||||
|
@ -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 ());
|
||||
|
@ -582,7 +594,7 @@ namespace SparkleShare {
|
|||
private string SafeCombine (string path1, string path2)
|
||||
{
|
||||
string result = path1;
|
||||
|
||||
|
||||
if (!result.EndsWith (Path.DirectorySeparatorChar.ToString ()))
|
||||
result += Path.DirectorySeparatorChar;
|
||||
|
||||
|
@ -597,9 +609,9 @@ 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 ("\\", "/");
|
||||
else
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
dist_html_DATA = \
|
||||
day-entry.html \
|
||||
event-entry.html \
|
||||
event-log.html \
|
||||
jquery.js
|
||||
|
||||
htmldir = $(pkgdatadir)/html/
|
||||
|
||||
MAINTAINERCLEANFILES = \
|
||||
Makefile.in
|
10
SparkleShare/Common/HTML/meson.build
Normal file
|
@ -0,0 +1,10 @@
|
|||
html_files = ['event-log.html',
|
||||
'day-entry.html',
|
||||
'event-entry.html',
|
||||
'jquery.js'
|
||||
]
|
||||
|
||||
install_data(
|
||||
sources: html_files,
|
||||
install_dir: join_paths(install_dir, 'html'))
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
dist_pixmaps_DATA = \
|
||||
side-splash.png \
|
||||
user-icon-default.png \
|
||||
text-balloon.png \
|
||||
tutorial-slide-1.png\
|
||||
tutorial-slide-2.png \
|
||||
about.png
|
||||
|
||||
pixmapsdir = $(pkgdatadir)/pixmaps/
|
||||
|
||||
MAINTAINERCLEANFILES = \
|
||||
Makefile.in
|
Before Width: | Height: | Size: 99 KiB After Width: | Height: | Size: 122 KiB |
|
@ -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 |
Before Width: | Height: | Size: 143 KiB After Width: | Height: | Size: 186 KiB |
11
SparkleShare/Common/Images/meson.build
Normal file
|
@ -0,0 +1,11 @@
|
|||
image_files = ['tutorial-slide-1.png',
|
||||
'tutorial-slide-2.png',
|
||||
'side-splash.png',
|
||||
'about.png',
|
||||
'text-balloon.png',
|
||||
'user-icon-default.png']
|
||||
|
||||
install_data(
|
||||
sources: image_files,
|
||||
install_dir: join_paths(install_dir, 'pixmaps'))
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
SUBDIRS = HTML \
|
||||
Presets \
|
||||
Images
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -1,17 +0,0 @@
|
|||
dist_presets_DATA = \
|
||||
bitbucket.xml \
|
||||
github.xml \
|
||||
gitlab.xml \
|
||||
own-server.xml \
|
||||
planio.xml \
|
||||
github.png \
|
||||
gitlab.png \
|
||||
bitbucket.png \
|
||||
planio.png \
|
||||
own-server.png
|
||||
|
||||
presetsdir = $(pkgdatadir)/presets/
|
||||
|
||||
MAINTAINERCLEANFILES = \
|
||||
Makefile.in
|
||||
|
|
@ -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>
|
||||
|
|
10
SparkleShare/Common/Presets/meson.build
Normal file
|
@ -0,0 +1,10 @@
|
|||
preset_files = ['github.xml', 'github.png',
|
||||
'gitlab.xml', 'gitlab.png',
|
||||
'bitbucket.xml', 'bitbucket.png',
|
||||
'own-server.xml', 'own-server.png'
|
||||
]
|
||||
|
||||
install_data(
|
||||
sources: preset_files,
|
||||
install_dir: join_paths(install_dir, 'presets'))
|
||||
|
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 |
|
@ -346,8 +346,8 @@ namespace SparkleShare {
|
|||
Logger.LogInfo ("Controller", "Added preset for " + uri.Host);
|
||||
}
|
||||
|
||||
} catch {
|
||||
Logger.LogInfo ("Controller", "Failed adding preset for " + uri.Host);
|
||||
} catch (Exception e) {
|
||||
Logger.LogInfo ("Controller", "Failed adding preset for " + uri.Host, e);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -533,10 +533,9 @@ namespace SparkleShare {
|
|||
|
||||
public void ShowFilesClicked ()
|
||||
{
|
||||
string folder_name = Path.GetFileName (PreviousPath);
|
||||
string folder_name = Path.GetFileNameWithoutExtension (PreviousPath);
|
||||
folder_name = folder_name.ReplaceUnderscoreWithSpace ();
|
||||
|
||||
// TODO: Open SparkleShare/$HOST
|
||||
SparkleShare.Controller.OpenSparkleShareFolder (folder_name);
|
||||
FinishPageCompleted ();
|
||||
}
|
||||
|
@ -561,7 +560,7 @@ namespace SparkleShare {
|
|||
|
||||
private bool IsValidEmail (string email)
|
||||
{
|
||||
return new Regex (@"^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]+$", RegexOptions.IgnoreCase).IsMatch (email);
|
||||
return email.Contains ("@");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -35,27 +35,8 @@ namespace SparkleShare {
|
|||
#endif
|
||||
public static void Main (string [] args)
|
||||
{
|
||||
if (args.Length != 0 && (args [0].Equals ("help") || args [0].Equals ("version")) &&
|
||||
InstallationInfo.OperatingSystem != OS.Mac &&
|
||||
InstallationInfo.OperatingSystem != OS.Windows) {
|
||||
|
||||
string n = Environment.NewLine;
|
||||
|
||||
Console.WriteLine (n +
|
||||
"Share and collaborate by syncing with any Git repository instantly." + n +
|
||||
n +
|
||||
"Version: " + InstallationInfo.Version + n +
|
||||
"Copyright (C) 2010 Hylke Bons and others" + n +
|
||||
"This program comes with ABSOLUTELY NO WARRANTY." + n +
|
||||
n +
|
||||
"This is free software, and you are welcome to redistribute it" + n +
|
||||
"under certain conditions. Please read the GNU GPLv3 for details." + n);
|
||||
|
||||
Environment.Exit (0);
|
||||
}
|
||||
|
||||
// Only allow one instance of SparkleShare (on Windows)
|
||||
if (!program_mutex.WaitOne (0, false)) {
|
||||
if (!program_mutex.WaitOne (0, exitContext: false)) {
|
||||
Console.WriteLine ("SparkleShare is already running.");
|
||||
Environment.Exit (-1);
|
||||
}
|
||||
|
|
|
@ -66,7 +66,7 @@ namespace SparkleShare {
|
|||
}
|
||||
|
||||
if (IsPaused)
|
||||
return "Syncing Paused";
|
||||
return "Paused";
|
||||
|
||||
if (HasError) {
|
||||
switch (repo.Error) {
|
||||
|
|
|
@ -1,222 +0,0 @@
|
|||
# Makefile for program source directory in GNU NLS utilities package.
|
||||
# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
|
||||
# Copyright (C) 2004-2008 Rodney Dawes <dobey.pwns@gmail.com>
|
||||
#
|
||||
# This file may be copied and used freely without restrictions. It may
|
||||
# be used in projects which are not available under a GNU Public License,
|
||||
# but which still want to provide support for the GNU gettext functionality.
|
||||
#
|
||||
# - Modified by Owen Taylor <otaylor@redhat.com> to use GETTEXT_PACKAGE
|
||||
# instead of PACKAGE and to look for po2tbl in ./ not in intl/
|
||||
#
|
||||
# - Modified by jacob berkman <jacob@ximian.com> to install
|
||||
# Makefile.in.in and po2tbl.sed.in for use with glib-gettextize
|
||||
#
|
||||
# - Modified by Rodney Dawes <dobey.pwns@gmail.com> for use with intltool
|
||||
#
|
||||
# We have the following line for use by intltoolize:
|
||||
# INTLTOOL_MAKEFILE
|
||||
|
||||
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
|
||||
PACKAGE = @PACKAGE@
|
||||
VERSION = @VERSION@
|
||||
|
||||
SHELL = @SHELL@
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
top_builddir = @top_builddir@
|
||||
VPATH = @srcdir@
|
||||
|
||||
prefix = @prefix@
|
||||
exec_prefix = @exec_prefix@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
libdir = @libdir@
|
||||
DATADIRNAME = @DATADIRNAME@
|
||||
itlocaledir = $(prefix)/$(DATADIRNAME)/locale
|
||||
subdir = po
|
||||
install_sh = @install_sh@
|
||||
# Automake >= 1.8 provides @mkdir_p@.
|
||||
# Until it can be supposed, use the safe fallback:
|
||||
mkdir_p = $(install_sh) -d
|
||||
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
|
||||
GMSGFMT = @GMSGFMT@
|
||||
MSGFMT = @MSGFMT@
|
||||
XGETTEXT = @XGETTEXT@
|
||||
INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
|
||||
INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
|
||||
MSGMERGE = INTLTOOL_EXTRACT="$(INTLTOOL_EXTRACT)" XGETTEXT="$(XGETTEXT)" srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --dist
|
||||
GENPOT = INTLTOOL_EXTRACT="$(INTLTOOL_EXTRACT)" XGETTEXT="$(XGETTEXT)" srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --pot
|
||||
|
||||
ALL_LINGUAS = @ALL_LINGUAS@
|
||||
|
||||
PO_LINGUAS=$(shell if test -r $(srcdir)/LINGUAS; then grep -v "^\#" $(srcdir)/LINGUAS; else echo "$(ALL_LINGUAS)"; fi)
|
||||
|
||||
USER_LINGUAS=$(shell if test -n "$(LINGUAS)"; then LLINGUAS="$(LINGUAS)"; ALINGUAS="$(ALL_LINGUAS)"; for lang in $$LLINGUAS; do if test -n "`grep \^$$lang$$ $(srcdir)/LINGUAS 2>/dev/null`" -o -n "`echo $$ALINGUAS|tr ' ' '\n'|grep \^$$lang$$`"; then printf "$$lang "; fi; done; fi)
|
||||
|
||||
USE_LINGUAS=$(shell if test -n "$(USER_LINGUAS)" -o -n "$(LINGUAS)"; then LLINGUAS="$(USER_LINGUAS)"; else if test -n "$(PO_LINGUAS)"; then LLINGUAS="$(PO_LINGUAS)"; else LLINGUAS="$(ALL_LINGUAS)"; fi; fi; for lang in $$LLINGUAS; do printf "$$lang "; done)
|
||||
|
||||
POFILES=$(shell LINGUAS="$(PO_LINGUAS)"; for lang in $$LINGUAS; do printf "$$lang.po "; done)
|
||||
|
||||
DISTFILES = Makefile.in.in POTFILES.in $(POFILES)
|
||||
EXTRA_DISTFILES = ChangeLog POTFILES.skip Makevars LINGUAS
|
||||
|
||||
POTFILES = \
|
||||
# This comment gets stripped out
|
||||
|
||||
CATALOGS=$(shell LINGUAS="$(USE_LINGUAS)"; for lang in $$LINGUAS; do printf "$$lang.gmo "; done)
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .po .pox .gmo .mo .msg .cat
|
||||
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
INTLTOOL_V_MSGFMT = $(INTLTOOL__v_MSGFMT_$(V))
|
||||
INTLTOOL__v_MSGFMT_= $(INTLTOOL__v_MSGFMT_$(AM_DEFAULT_VERBOSITY))
|
||||
INTLTOOL__v_MSGFMT_0 = @echo " MSGFMT" $@;
|
||||
|
||||
.po.pox:
|
||||
$(MAKE) $(GETTEXT_PACKAGE).pot
|
||||
$(MSGMERGE) $< $(GETTEXT_PACKAGE).pot -o $*.pox
|
||||
|
||||
.po.mo:
|
||||
$(INTLTOOL_V_MSGFMT)$(MSGFMT) -o $@ $<
|
||||
|
||||
.po.gmo:
|
||||
$(INTLTOOL_V_MSGFMT)file=`echo $* | sed 's,.*/,,'`.gmo \
|
||||
&& rm -f $$file && $(GMSGFMT) -o $$file $<
|
||||
|
||||
.po.cat:
|
||||
sed -f ../intl/po2msg.sed < $< > $*.msg \
|
||||
&& rm -f $@ && gencat $@ $*.msg
|
||||
|
||||
|
||||
all: all-@USE_NLS@
|
||||
|
||||
all-yes: $(CATALOGS)
|
||||
all-no:
|
||||
|
||||
$(GETTEXT_PACKAGE).pot: $(POTFILES)
|
||||
$(GENPOT)
|
||||
|
||||
install: install-data
|
||||
install-data: install-data-@USE_NLS@
|
||||
install-data-no: all
|
||||
install-data-yes: all
|
||||
linguas="$(USE_LINGUAS)"; \
|
||||
for lang in $$linguas; do \
|
||||
dir=$(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES; \
|
||||
$(mkdir_p) $$dir; \
|
||||
if test -r $$lang.gmo; then \
|
||||
$(INSTALL_DATA) $$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \
|
||||
echo "installing $$lang.gmo as $$dir/$(GETTEXT_PACKAGE).mo"; \
|
||||
else \
|
||||
$(INSTALL_DATA) $(srcdir)/$$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \
|
||||
echo "installing $(srcdir)/$$lang.gmo as" \
|
||||
"$$dir/$(GETTEXT_PACKAGE).mo"; \
|
||||
fi; \
|
||||
if test -r $$lang.gmo.m; then \
|
||||
$(INSTALL_DATA) $$lang.gmo.m $$dir/$(GETTEXT_PACKAGE).mo.m; \
|
||||
echo "installing $$lang.gmo.m as $$dir/$(GETTEXT_PACKAGE).mo.m"; \
|
||||
else \
|
||||
if test -r $(srcdir)/$$lang.gmo.m ; then \
|
||||
$(INSTALL_DATA) $(srcdir)/$$lang.gmo.m \
|
||||
$$dir/$(GETTEXT_PACKAGE).mo.m; \
|
||||
echo "installing $(srcdir)/$$lang.gmo.m as" \
|
||||
"$$dir/$(GETTEXT_PACKAGE).mo.m"; \
|
||||
else \
|
||||
true; \
|
||||
fi; \
|
||||
fi; \
|
||||
done
|
||||
|
||||
# Empty stubs to satisfy archaic automake needs
|
||||
dvi info ctags tags CTAGS TAGS ID:
|
||||
|
||||
# Define this as empty until I found a useful application.
|
||||
install-exec installcheck:
|
||||
|
||||
uninstall:
|
||||
linguas="$(USE_LINGUAS)"; \
|
||||
for lang in $$linguas; do \
|
||||
rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo; \
|
||||
rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo.m; \
|
||||
done
|
||||
|
||||
check: all $(GETTEXT_PACKAGE).pot
|
||||
rm -f missing notexist
|
||||
srcdir=$(srcdir) $(INTLTOOL_UPDATE) -m
|
||||
if [ -r missing -o -r notexist ]; then \
|
||||
exit 1; \
|
||||
fi
|
||||
|
||||
mostlyclean:
|
||||
rm -f *.pox $(GETTEXT_PACKAGE).pot *.old.po cat-id-tbl.tmp
|
||||
rm -f .intltool-merge-cache
|
||||
|
||||
clean: mostlyclean
|
||||
|
||||
distclean: clean
|
||||
rm -f Makefile Makefile.in POTFILES stamp-it
|
||||
rm -f *.mo *.msg *.cat *.cat.m *.gmo
|
||||
|
||||
maintainer-clean: distclean
|
||||
@echo "This command is intended for maintainers to use;"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
rm -f Makefile.in.in
|
||||
|
||||
distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
|
||||
dist distdir: $(DISTFILES)
|
||||
dists="$(DISTFILES)"; \
|
||||
extra_dists="$(EXTRA_DISTFILES)"; \
|
||||
for file in $$extra_dists; do \
|
||||
test -f $(srcdir)/$$file && dists="$$dists $(srcdir)/$$file"; \
|
||||
done; \
|
||||
for file in $$dists; do \
|
||||
test -f $$file || file="$(srcdir)/$$file"; \
|
||||
ln $$file $(distdir) 2> /dev/null \
|
||||
|| cp -p $$file $(distdir); \
|
||||
done
|
||||
|
||||
update-po: Makefile
|
||||
$(MAKE) $(GETTEXT_PACKAGE).pot
|
||||
tmpdir=`pwd`; \
|
||||
linguas="$(USE_LINGUAS)"; \
|
||||
for lang in $$linguas; do \
|
||||
echo "$$lang:"; \
|
||||
result="`$(MSGMERGE) -o $$tmpdir/$$lang.new.po $$lang`"; \
|
||||
if $$result; then \
|
||||
if cmp $(srcdir)/$$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
|
||||
rm -f $$tmpdir/$$lang.new.po; \
|
||||
else \
|
||||
if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
|
||||
:; \
|
||||
else \
|
||||
echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
|
||||
rm -f $$tmpdir/$$lang.new.po; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
fi; \
|
||||
else \
|
||||
echo "msgmerge for $$lang.gmo failed!"; \
|
||||
rm -f $$tmpdir/$$lang.new.po; \
|
||||
fi; \
|
||||
done
|
||||
|
||||
Makefile POTFILES: stamp-it
|
||||
@if test ! -f $@; then \
|
||||
rm -f stamp-it; \
|
||||
$(MAKE) stamp-it; \
|
||||
fi
|
||||
|
||||
stamp-it: Makefile.in.in $(top_builddir)/config.status POTFILES.in
|
||||
cd $(top_builddir) \
|
||||
&& CONFIG_FILES=$(subdir)/Makefile.in CONFIG_HEADERS= CONFIG_LINKS= \
|
||||
$(SHELL) ./config.status
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make not to export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
|
@ -31,8 +31,6 @@ namespace SparkleShare {
|
|||
|
||||
public About () : base ("About SparkleShare")
|
||||
{
|
||||
SetWmclass ("SparkleShare", "SparkleShare");
|
||||
|
||||
IconName = "org.sparkleshare.SparkleShare";
|
||||
Resizable = false;
|
||||
WindowPosition = WindowPosition.CenterAlways;
|
||||
|
@ -45,11 +43,11 @@ namespace SparkleShare {
|
|||
Controller.WindowClosed ();
|
||||
args.RetVal = true;
|
||||
};
|
||||
|
||||
|
||||
KeyPressEvent += delegate (object o, KeyPressEventArgs args) {
|
||||
if (args.Event.Key == Gdk.Key.Escape ||
|
||||
(args.Event.State == Gdk.ModifierType.ControlMask && args.Event.Key == Gdk.Key.w)) {
|
||||
|
||||
|
||||
Controller.WindowClosed ();
|
||||
}
|
||||
};
|
||||
|
@ -80,10 +78,10 @@ namespace SparkleShare {
|
|||
void CreateAbout ()
|
||||
{
|
||||
CssProvider window_css_provider = new CssProvider ();
|
||||
Image image = UserInterfaceHelpers.GetImage ("about.png");
|
||||
string image_path = InstallationInfo.Directory + "/pixmaps/about.png";
|
||||
|
||||
window_css_provider.LoadFromData ("window, GtkWindow {" +
|
||||
" background-image: url(\"/app/share/sparkleshare/pixmaps/about.png\");" +
|
||||
" background-image: url('" + image_path + "');" +
|
||||
" background-repeat: no-repeat;" +
|
||||
" background-position: left bottom;" +
|
||||
"}");
|
||||
|
@ -104,7 +102,7 @@ namespace SparkleShare {
|
|||
Xalign = 0, Xpad = 0
|
||||
};
|
||||
|
||||
if (InstallationInfo.Directory.StartsWith ("/app", StringComparison.InvariantCulture))
|
||||
if (InstallationInfo.IsFlatpak)
|
||||
version.Text += " (Flatpak)";
|
||||
|
||||
updates = new Label ("Checking for updates…") {
|
||||
|
@ -116,8 +114,8 @@ namespace SparkleShare {
|
|||
Xalign = 0, Xpad = 0
|
||||
};
|
||||
|
||||
var license = new Label ("SparkleShare is Open Source and you’re free to use,\n" +
|
||||
"change, and share it under the GNU GPLv3") {
|
||||
var license = new Label ("SparkleShare is Open Source and you’re free to\n" +
|
||||
"use, change, and share it under the GNU GPLv3") {
|
||||
|
||||
Xalign = 0, Xpad = 0
|
||||
};
|
||||
|
@ -137,7 +135,7 @@ namespace SparkleShare {
|
|||
layout_vertical.PackStart (updates, false, false, 0);
|
||||
layout_vertical.PackStart (copyright, false, false, 6);
|
||||
layout_vertical.PackStart (license, false, false, 6);
|
||||
layout_vertical.PackStart (links_layout, false, false, 16);
|
||||
layout_vertical.PackStart (links_layout, false, false, 6);
|
||||
|
||||
links_layout.PackStart (website_link, false, false, 0);
|
||||
links_layout.PackStart (credits_link, false, false, 0);
|
||||
|
@ -151,13 +149,13 @@ namespace SparkleShare {
|
|||
Add (layout_horizontal);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
class Link : Label {
|
||||
|
||||
public Link (string label, string url)
|
||||
{
|
||||
Markup = string.Format ("<a href=\"{0}\">{1}</a>", url, label);
|
||||
Markup = string.Format ("<a href=\"{0}\">{1}</a>", url, label);
|
||||
CanFocus = false;
|
||||
|
||||
CssProvider css_provider = new CssProvider ();
|
||||
|
|
|
@ -23,14 +23,16 @@ using Gtk;
|
|||
using Mono.Unix.Native;
|
||||
|
||||
using Sparkles;
|
||||
using Sparkles.Git;
|
||||
|
||||
namespace SparkleShare {
|
||||
|
||||
public class Controller : BaseController {
|
||||
|
||||
public Controller (Configuration config)
|
||||
: base (config)
|
||||
public Controller (Configuration config) : base (config)
|
||||
{
|
||||
if (InstallationInfo.IsFlatpak)
|
||||
GitCommand.ExecPath = Path.Combine ("/app", "libexec", "git-core");
|
||||
}
|
||||
|
||||
|
||||
|
@ -45,13 +47,13 @@ namespace SparkleShare {
|
|||
|
||||
public override void SetFolderIcon ()
|
||||
{
|
||||
var gvfs_set_attribute = new Command ("gvfs-set-attribute", "\"" + Configuration.DefaultConfiguration.FoldersPath + "\" " +
|
||||
var gio_set = new Command ("gio", "set \"" + Configuration.DefaultConfiguration.FoldersPath + "\" " +
|
||||
"metadata::custom-icon-name org.sparkleshare.SparkleShare");
|
||||
|
||||
gvfs_set_attribute.StartInfo.EnvironmentVariables ["XDG_DATA_HOME"] =
|
||||
Path.Combine (Config.HomePath, ".local", "share");
|
||||
string XDG_DATA_HOME = Path.Combine (Config.HomePath, ".local", "share");
|
||||
gio_set.StartInfo.EnvironmentVariables ["XDG_DATA_HOME"] = XDG_DATA_HOME;
|
||||
|
||||
gvfs_set_attribute.StartAndWaitForExit ();
|
||||
gio_set.StartAndWaitForExit ();
|
||||
}
|
||||
|
||||
|
||||
|
@ -98,7 +100,10 @@ namespace SparkleShare {
|
|||
|
||||
public override void OpenFile (string path)
|
||||
{
|
||||
Global.ShowUri (Gdk.Screen.Default, path);
|
||||
if (InstallationInfo.IsFlatpak)
|
||||
Global.ShowUri (Gdk.Screen.Default, path);
|
||||
else
|
||||
new Command ("xdg-open", string.Format ("\"{0}\"", path)).Start ();
|
||||
}
|
||||
|
||||
|
||||
|
@ -136,5 +141,11 @@ namespace SparkleShare {
|
|||
return Path.Combine (InstallationInfo.Directory, "presets");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public override void PlatformQuit ()
|
||||
{
|
||||
Environment.Exit (0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -40,19 +40,18 @@ namespace SparkleShare {
|
|||
|
||||
public EventLog () : base ("Recent Changes")
|
||||
{
|
||||
SetWmclass ("SparkleShare", "SparkleShare");
|
||||
|
||||
TypeHint = Gdk.WindowTypeHint.Dialog;
|
||||
IconName = "org.sparkleshare.SparkleShare";
|
||||
|
||||
SetSizeRequest (480, 640);
|
||||
|
||||
Gdk.Rectangle monitor_0_rect = Gdk.Screen.Default.GetMonitorGeometry (0);
|
||||
pos_x = (int) (monitor_0_rect.Width * 0.61);
|
||||
pos_y = (int) (monitor_0_rect.Height * 0.5 - (HeightRequest * 0.5));
|
||||
|
||||
Resize (480, (int) (monitor_0_rect.Height * 0.8));
|
||||
|
||||
pos_x = (int) (monitor_0_rect.Width * 0.62);
|
||||
pos_y = (int) ((monitor_0_rect.Height - (monitor_0_rect.Height * 0.8)) / 2);
|
||||
|
||||
this.size_label = new Label () { Xalign = 0, Markup = "<b>Size:</b> …" };
|
||||
this.history_label = new Label () { Xalign = 0, Markup = "<b>History:</b> …" };
|
||||
|
||||
|
@ -167,44 +166,34 @@ namespace SparkleShare {
|
|||
|
||||
html = html.Replace ("<!-- $a-hover-color -->", "#009ff8");
|
||||
html = html.Replace ("<!-- $a-color -->", "#0085cf");
|
||||
|
||||
html = html.Replace ("<!-- $body-font-family -->", StyleContext.GetFont (StateFlags.Normal).Family);
|
||||
html = html.Replace ("<!-- $body-font-size -->", (double) (StyleContext.GetFont (StateFlags.Normal).Size / 1024 + 3) + "px");
|
||||
html = html.Replace ("<!-- $body-color -->", UserInterfaceHelpers.RGBAToHex (StyleContext.GetColor (StateFlags.Normal)));
|
||||
|
||||
// TODO
|
||||
// html = html.Replace ("<!-- $body-background-color -->",
|
||||
// UserInterfaceHelpers.RGBAToHex (new TreeView ().StyleContext.GetStyleProperty ("background-color")));
|
||||
|
||||
html = html.Replace ("<!-- $body-background-color -->",UserInterfaceHelpers.RGBAToHex (new TreeView ().StyleContext.GetBackgroundColor (StateFlags.Normal)));
|
||||
html = html.Replace ("<!-- $day-entry-header-font-size -->", (StyleContext.GetFont (StateFlags.Normal).Size / 1024 + 3) + "px");
|
||||
html = html.Replace ("<!-- $day-entry-header-background-color -->",
|
||||
UserInterfaceHelpers.RGBAToHex (StyleContext.GetBackgroundColor (StateFlags.Normal)));
|
||||
|
||||
html = html.Replace ("<!-- $day-entry-header-background-color -->", UserInterfaceHelpers.RGBAToHex (StyleContext.GetBackgroundColor (StateFlags.Normal)));
|
||||
html = html.Replace ("<!-- $secondary-font-color -->", UserInterfaceHelpers.RGBAToHex (StyleContext.GetColor (StateFlags.Insensitive)));
|
||||
|
||||
html = html.Replace ("<!-- $small-color -->", UserInterfaceHelpers.RGBAToHex (StyleContext.GetColor (StateFlags.Insensitive)));
|
||||
html = html.Replace ("<!-- $small-font-size -->", "90%");
|
||||
|
||||
html = html.Replace ("<!-- $pixmaps-path -->", pixmaps_path);
|
||||
html = html.Replace ("<!-- $document-added-background-image -->", "file://" + IO.Path.Combine (icons_path, "document-added.png"));
|
||||
html = html.Replace ("<!-- $document-edited-background-image -->", "file://" + IO.Path.Combine (icons_path, "document-edited.png"));
|
||||
html = html.Replace ("<!-- $document-deleted-background-image -->", "file://" + IO.Path.Combine (icons_path, "document-deleted.png"));
|
||||
html = html.Replace ("<!-- $document-moved-background-image -->", "file://" + IO.Path.Combine (icons_path, "document-moved.png"));
|
||||
|
||||
html = html.Replace ("<!-- $document-added-background-image -->", "file://" + IO.Path.Combine (icons_path, "document-added.png"));
|
||||
html = html.Replace ("<!-- $document-edited-background-image -->", "file://" + IO.Path.Combine (icons_path, "document-edited.png"));
|
||||
html = html.Replace ("<!-- $document-deleted-background-image -->", "file://" + IO.Path.Combine (icons_path, "document-deleted.png"));
|
||||
html = html.Replace ("<!-- $document-moved-background-image -->", "file://" + IO.Path.Combine (icons_path, "document-moved.png"));
|
||||
|
||||
this.spinner.Stop ();
|
||||
this.scrolled_window.Remove (this.scrolled_window.Child);
|
||||
this.web_view.Dispose ();
|
||||
|
||||
this.web_view = CreateWebView ();
|
||||
this.web_view.LoadHtml (html, "file:///");
|
||||
|
||||
|
||||
this.scrolled_window.Add (this.web_view);
|
||||
|
||||
this.content_wrapper.Remove (this.content_wrapper.Child);
|
||||
this.content_wrapper.Add (this.scrolled_window);
|
||||
|
||||
this.scrolled_window.ShowAll ();
|
||||
}
|
||||
|
||||
|
||||
|
||||
WebView CreateWebView ()
|
||||
{
|
||||
|
@ -212,7 +201,7 @@ namespace SparkleShare {
|
|||
web_view.Settings.EnablePlugins = false;
|
||||
|
||||
web_view.LinkClicked += Controller.LinkClicked;
|
||||
|
||||
|
||||
return web_view;
|
||||
}
|
||||
|
||||
|
@ -230,13 +219,14 @@ namespace SparkleShare {
|
|||
return false;
|
||||
}
|
||||
|
||||
#pragma warning disable 0612
|
||||
string uri = (decision as NavigationPolicyDecision).Request.Uri;
|
||||
|
||||
if (uri.Equals ("file:///")) {
|
||||
decision.Use ();
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
LinkClicked (uri);
|
||||
decision.Ignore ();
|
||||
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
SUBDIRS = icons
|
||||
|
||||
dist_pixmaps_DATA = \
|
||||
tutorial-slide-3.png
|
||||
|
||||
pixmapsdir = $(pkgdatadir)/pixmaps/
|
||||
|
||||
MAINTAINERCLEANFILES = \
|
||||
Makefile.in
|
||||
|
BIN
SparkleShare/Linux/Images/gnome-software-screenshot-1.jpg
Normal file
After Width: | Height: | Size: 232 KiB |
BIN
SparkleShare/Linux/Images/gnome-software-screenshot-2.jpg
Normal file
After Width: | Height: | Size: 197 KiB |
BIN
SparkleShare/Linux/Images/gnome-software-screenshot-3.jpg
Normal file
After Width: | Height: | Size: 215 KiB |
|
@ -1,4 +0,0 @@
|
|||
SUBDIRS = hicolor \
|
||||
ubuntu-mono-dark \
|
||||
ubuntu-mono-light
|
||||
|
Before Width: | Height: | Size: 193 B After Width: | Height: | Size: 193 B |
Before Width: | Height: | Size: 117 B After Width: | Height: | Size: 117 B |
Before Width: | Height: | Size: 428 B After Width: | Height: | Size: 428 B |
Before Width: | Height: | Size: 445 B After Width: | Height: | Size: 445 B |
Before Width: | Height: | Size: 4 KiB After Width: | Height: | Size: 4 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1 KiB |
After Width: | Height: | Size: 1 KiB |
|
@ -1,47 +0,0 @@
|
|||
theme = hicolor
|
||||
app_themedir = $(pkgdatadir)/icons/$(theme)
|
||||
system_themedir = $(datadir)/icons/$(theme)
|
||||
|
||||
system_theme_icons = \
|
||||
apps,org.sparkleshare.SparkleShare-16.png \
|
||||
apps,org.sparkleshare.SparkleShare-symbolic.svg \
|
||||
apps,org.sparkleshare.SparkleShare-22.png \
|
||||
apps,org.sparkleshare.SparkleShare-24.png \
|
||||
apps,org.sparkleshare.SparkleShare-32.png \
|
||||
apps,org.sparkleshare.SparkleShare-48.png \
|
||||
apps,org.sparkleshare.SparkleShare-256.png \
|
||||
apps,org.sparkleshare.SparkleShare-512.png
|
||||
|
||||
app_theme_icons = \
|
||||
status,document-added-12.png \
|
||||
status,document-edited-12.png \
|
||||
status,document-deleted-12.png \
|
||||
status,document-moved-12.png \
|
||||
status,list-point-16.png \
|
||||
status,process-syncing-up-24.png \
|
||||
status,process-syncing-down-24.png \
|
||||
status,process-syncing-24.png \
|
||||
status,process-syncing-error-24.png \
|
||||
status,process-syncing-up-48.png \
|
||||
status,process-syncing-down-48.png \
|
||||
status,process-syncing-48.png \
|
||||
status,process-syncing-error-48.png
|
||||
|
||||
install_icon_exec = $(top_srcdir)/build/icon-theme-installer \
|
||||
-t "$(theme)" \
|
||||
-s "$(srcdir)" \
|
||||
-d "x$(DESTDIR)" \
|
||||
-m "$(mkinstalldirs)" \
|
||||
-x "$(INSTALL_DATA)"
|
||||
|
||||
install-data-local:
|
||||
@-$(install_icon_exec) -i -b "$(system_themedir)" $(system_theme_icons)
|
||||
@-$(install_icon_exec) -i -b "$(app_themedir)" $(app_theme_icons)
|
||||
|
||||
uninstall-hook:
|
||||
@-$(install_icon_exec) -u -b "$(system_themedir)" $(system_theme_icons)
|
||||
@-$(install_icon_exec) -u -b "$(app_themedir)" $(app_theme_icons)
|
||||
|
||||
MAINTAINERCLEANFILES = Makefile.in
|
||||
EXTRA_DIST = $(wildcard *.png *.svg)
|
||||
|
Before Width: | Height: | Size: 575 B |
Before Width: | Height: | Size: 879 B |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 2 KiB |
Before Width: | Height: | Size: 44 KiB |
Before Width: | Height: | Size: 831 B |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 768 B |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 768 B |
Before Width: | Height: | Size: 1.6 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 |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
|
@ -0,0 +1,70 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="16px"
|
||||
height="16px"
|
||||
viewBox="0 0 16 16"
|
||||
version="1.1"
|
||||
id="SVGRoot"
|
||||
sodipodi:docname="process-syncing-down-symbolic.svg"
|
||||
inkscape:version="0.91+devel r14094">
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="32"
|
||||
inkscape:cx="3.531812"
|
||||
inkscape:cy="6.6741748"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="g4575"
|
||||
showgrid="false"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1396"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:grid-bbox="true">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid5794" />
|
||||
</sodipodi:namedview>
|
||||
<defs
|
||||
id="defs5218" />
|
||||
<metadata
|
||||
id="metadata5221">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:groupmode="layer"
|
||||
inkscape:label="Layer 1">
|
||||
<g
|
||||
transform="translate(19.99318,-4.4704621e-4)"
|
||||
id="g4575">
|
||||
<path
|
||||
style="color:#000000;text-indent:0;text-transform:none;fill:#bebebe;enable-background:new"
|
||||
d="M 7.7714844 0.99804688 L 7.7734375 1 C 7.0923875 1.18249 6.4982563 1.7146081 6.3476562 2.4238281 C 6.0411762 3.2857781 5.7868175 4.16535 5.4921875 5.03125 C 4.3730875 5.05615 3.2478125 4.9779719 2.1328125 5.0761719 C 0.9379125 5.3423119 0.3668975 7.1108219 1.3671875 7.9199219 C 2.1813575 8.6113319 3.0778875 9.19895 3.9296875 9.84375 C 3.6174175 10.94005 3.1764644 12.0057 2.9589844 13.125 C 2.8790844 14.418 4.6356781 15.417631 5.6425781 14.519531 C 6.4273681 13.952611 7.2083875 13.3807 7.9921875 12.8125 C 8.9258275 13.45599 9.7939435 14.200978 10.777344 14.767578 C 11.894344 15.257218 13.323941 14.125256 12.994141 12.916016 C 12.731511 11.878616 12.363097 10.86935 12.054688 9.84375 C 12.949936 9.15776 13.908259 8.5477344 14.755859 7.8027344 C 15.431419 7.0691644 15.180611 5.8674188 14.394531 5.3242188 C 13.689221 4.8604788 12.818391 5.08011 12.025391 5.03125 L 10.460938 5.03125 C 10.093227 3.9604499 9.7930125 2.8617937 9.3828125 1.8085938 C 9.2528125 1.3285938 8.4114844 0.99804687 7.7714844 0.99804688 z M 7 6 L 9 6 L 9 7 L 7 7 L 7 6 z M 5 8 L 11 8 L 8 11 L 5 8 z "
|
||||
transform="translate(-19.99318,4.4704621e-4)"
|
||||
id="path4553" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3 KiB |
|
@ -0,0 +1,66 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="16px"
|
||||
height="16px"
|
||||
viewBox="0 0 16 16"
|
||||
version="1.1"
|
||||
id="SVGRoot"
|
||||
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
|
||||
sodipodi:docname="process-syncing-error-symbolic.svg">
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="22.627417"
|
||||
inkscape:cx="8"
|
||||
inkscape:cy="8"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:window-width="2493"
|
||||
inkscape:window-height="1385"
|
||||
inkscape:window-x="67"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:grid-bbox="true">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid5794" />
|
||||
</sodipodi:namedview>
|
||||
<defs
|
||||
id="defs5218" />
|
||||
<metadata
|
||||
id="metadata5221">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:groupmode="layer"
|
||||
inkscape:label="Layer 1">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="color:#000000;text-indent:0;text-transform:none;fill:#bebebe;enable-background:new"
|
||||
d="m 7.779297,0.998047 v 0.00195 C 7.098247,1.182487 6.506069,1.7146051 6.355469,2.4238251 6.048989,3.2857751 5.792677,4.165347 5.498047,5.031247 4.378947,5.056147 3.253672,4.977969 2.138672,5.076169 0.94377201,5.342309 0.37275701,7.1108189 1.373047,7.919919 c 0.81417,0.69141 1.7107,1.2790281 2.5625,1.9238281 -0.31227,1.0962999 -0.753223,2.1619499 -0.970703,3.2812499 -0.0799,1.293 1.678647,2.292631 2.685547,1.394531 0.78479,-0.56692 1.563856,-1.138831 2.347656,-1.707031 0.93364,0.64349 1.803709,1.388478 2.787109,1.955078 1.117,0.48964 2.544644,-0.642322 2.214844,-1.851562 -0.26263,-1.0374 -0.62909,-2.046666 -0.9375,-3.0722659 0.89525,-0.68599 1.853572,-1.2960156 2.701172,-2.0410156 0.67556,-0.7335701 0.424752,-1.9353158 -0.361328,-2.4785156 -0.70531,-0.46374 -1.576141,-0.2441088 -2.369141,-0.2929688 H 10.46875 c -0.36771,-1.0708 -0.669878,-2.1694562 -1.080078,-3.2226562 -0.13,-0.48 -0.969375,-0.8105469 -1.609375,-0.810547 z M 7,6 H 9 V 9.0000001 H 7 Z m 0,4 h 2 v 1 H 7 Z"
|
||||
id="path4599" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.8 KiB |
|
@ -0,0 +1,71 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="16px"
|
||||
height="16px"
|
||||
viewBox="0 0 16 16"
|
||||
version="1.1"
|
||||
id="SVGRoot"
|
||||
sodipodi:docname="process-syncing-symbolic.svg"
|
||||
inkscape:version="0.91+devel r14094">
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="32"
|
||||
inkscape:cx="11.468044"
|
||||
inkscape:cy="7.7124685"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="g4575"
|
||||
showgrid="false"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1396"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:grid-bbox="true"
|
||||
showguides="true">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid5794" />
|
||||
</sodipodi:namedview>
|
||||
<defs
|
||||
id="defs5218" />
|
||||
<metadata
|
||||
id="metadata5221">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:groupmode="layer"
|
||||
inkscape:label="Layer 1">
|
||||
<g
|
||||
transform="translate(19.99318,-4.4704621e-4)"
|
||||
id="g4575">
|
||||
<path
|
||||
style="color:#000000;text-indent:0;text-transform:none;fill:#bebebe;enable-background:new"
|
||||
d="M 7.7714844 0.99804688 L 7.7734375 1 C 7.0923875 1.18249 6.4982563 1.7146081 6.3476562 2.4238281 C 6.0411762 3.2857781 5.7868175 4.16535 5.4921875 5.03125 C 4.3730875 5.05615 3.2478125 4.9779719 2.1328125 5.0761719 C 0.9379125 5.3423119 0.3668975 7.1108219 1.3671875 7.9199219 C 2.1813575 8.6113319 3.0778875 9.19895 3.9296875 9.84375 C 3.6174175 10.94005 3.1764644 12.0057 2.9589844 13.125 C 2.8790844 14.418 4.6356781 15.417631 5.6425781 14.519531 C 6.4273681 13.952611 7.2083875 13.3807 7.9921875 12.8125 C 8.9258275 13.45599 9.7939435 14.200978 10.777344 14.767578 C 11.894344 15.257218 13.323941 14.125256 12.994141 12.916016 C 12.731511 11.878616 12.363097 10.86935 12.054688 9.84375 C 12.949936 9.15776 13.908259 8.5477344 14.755859 7.8027344 C 15.431419 7.0691644 15.180611 5.8674188 14.394531 5.3242188 C 13.689221 4.8604788 12.818391 5.08011 12.025391 5.03125 L 10.460938 5.03125 C 10.093227 3.9604499 9.7930125 2.8617937 9.3828125 1.8085938 C 9.2528125 1.3285938 8.4114844 0.99804687 7.7714844 0.99804688 z M 8 6 L 10 8 L 6 8 L 8 6 z M 6 9 L 10 9 L 8 11 L 6 9 z "
|
||||
transform="translate(-19.99318,4.4704621e-4)"
|
||||
id="path4553" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3 KiB |
|
@ -0,0 +1,70 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="16px"
|
||||
height="16px"
|
||||
viewBox="0 0 16 16"
|
||||
version="1.1"
|
||||
id="SVGRoot"
|
||||
sodipodi:docname="process-syncing-up-symbolic.svg"
|
||||
inkscape:version="0.91+devel r14094">
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="32"
|
||||
inkscape:cx="3.531812"
|
||||
inkscape:cy="6.6741748"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="g4575"
|
||||
showgrid="false"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1396"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:grid-bbox="true">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid5794" />
|
||||
</sodipodi:namedview>
|
||||
<defs
|
||||
id="defs5218" />
|
||||
<metadata
|
||||
id="metadata5221">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:groupmode="layer"
|
||||
inkscape:label="Layer 1">
|
||||
<g
|
||||
transform="translate(19.99318,-4.4704621e-4)"
|
||||
id="g4575">
|
||||
<path
|
||||
style="color:#000000;text-indent:0;text-transform:none;fill:#bebebe;enable-background:new"
|
||||
d="M 7.7714844 0.99804688 L 7.7734375 1 C 7.0923875 1.18249 6.4982563 1.7146081 6.3476562 2.4238281 C 6.0411762 3.2857781 5.7868175 4.16535 5.4921875 5.03125 C 4.3730875 5.05615 3.2478125 4.9779719 2.1328125 5.0761719 C 0.9379125 5.3423119 0.3668975 7.1108219 1.3671875 7.9199219 C 2.1813575 8.6113319 3.0778875 9.19895 3.9296875 9.84375 C 3.6174175 10.94005 3.1764644 12.0057 2.9589844 13.125 C 2.8790844 14.418 4.6356781 15.417631 5.6425781 14.519531 C 6.4273681 13.952611 7.2083875 13.3807 7.9921875 12.8125 C 8.9258275 13.45599 9.7939435 14.200978 10.777344 14.767578 C 11.894344 15.257218 13.323941 14.125256 12.994141 12.916016 C 12.731511 11.878616 12.363097 10.86935 12.054688 9.84375 C 12.949936 9.15776 13.908259 8.5477344 14.755859 7.8027344 C 15.431419 7.0691644 15.180611 5.8674188 14.394531 5.3242188 C 13.689221 4.8604788 12.818391 5.08011 12.025391 5.03125 L 10.460938 5.03125 C 10.093227 3.9604499 9.7930125 2.8617937 9.3828125 1.8085938 C 9.2528125 1.3285938 8.4114844 0.99804687 7.7714844 0.99804688 z M 8 6 L 11 9 L 5 9 L 8 6 z M 7 10 L 9 10 L 9 11 L 7 11 L 7 10 z "
|
||||
transform="translate(-19.99318,4.4704621e-4)"
|
||||
id="path4553" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3 KiB |
74
SparkleShare/Linux/Images/icons/meson.build
Normal file
|
@ -0,0 +1,74 @@
|
|||
# Install app icons in system theme
|
||||
theme_dir = join_paths(get_option('prefix'), 'share', 'icons', 'hicolor')
|
||||
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, source_icon_name + '.svg'),
|
||||
install_dir: join_paths(theme_dir, icon_dir),
|
||||
rename: app_icon_name + '.svg')
|
||||
endforeach
|
||||
|
||||
install_data(
|
||||
sources: join_paths('hicolor', 'symbolic', 'apps', app_icon_name + '-symbolic.svg'),
|
||||
install_dir: join_paths(theme_dir, 'symbolic', 'apps'))
|
||||
|
||||
|
||||
# Install the status icons
|
||||
status_icons = ['syncing',
|
||||
'syncing-up',
|
||||
'syncing-down',
|
||||
'syncing-error']
|
||||
|
||||
foreach icon : status_icons
|
||||
install_data(
|
||||
sources: join_paths('hicolor', '24x24', 'status', app_icon_name + '-' + icon + '.png'),
|
||||
install_dir: join_paths(theme_dir, '24x24', 'apps'))
|
||||
|
||||
install_data(
|
||||
sources: join_paths('hicolor', '48x48', 'status', app_icon_name + '-' + icon + '.png'),
|
||||
install_dir: join_paths(theme_dir, '48x48', 'apps'))
|
||||
|
||||
install_data(
|
||||
sources: join_paths('hicolor', 'symbolic', 'status', app_icon_name + '-' + icon + '-symbolic.svg'),
|
||||
install_dir: join_paths(theme_dir, 'symbolic', 'apps'))
|
||||
endforeach
|
||||
|
||||
|
||||
# Install other icons in app theme
|
||||
app_theme_dir = join_paths(install_dir, 'icons', 'hicolor')
|
||||
category = 'status'
|
||||
|
||||
size = '12'
|
||||
|
||||
install_data(sources: join_paths('hicolor', size + 'x' + size, category, 'document-added.png'),
|
||||
install_dir: join_paths(app_theme_dir, size + 'x' + size, category))
|
||||
|
||||
install_data(sources: join_paths('hicolor', size + 'x' + size, category, 'document-edited.png'),
|
||||
install_dir: join_paths(app_theme_dir, size + 'x' + size, category))
|
||||
|
||||
install_data(sources: join_paths('hicolor', size + 'x' + size, category, 'document-deleted.png'),
|
||||
install_dir: join_paths(app_theme_dir, size + 'x' + size, category))
|
||||
|
||||
install_data(sources: join_paths('hicolor', size + 'x' + size, category, 'document-moved.png'),
|
||||
install_dir: join_paths(app_theme_dir, size + 'x' + size, category))
|
||||
|
||||
size = '16'
|
||||
|
||||
install_data(sources: join_paths('hicolor', size + 'x' + size, category, 'list-point.png'),
|
||||
install_dir: join_paths(app_theme_dir, size + 'x' + size, category))
|
||||
|
||||
size = '22'
|
||||
|
||||
install_data(sources: join_paths('hicolor', size + 'x' + size, category, 'process-working.png'),
|
||||
install_dir: join_paths(app_theme_dir, size + 'x' + size, category))
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
dark_theme = ubuntu-mono-dark
|
||||
dark_themedir = /usr/share/icons/$(dark_theme)
|
||||
|
||||
dark_theme_icons = \
|
||||
status,process-syncing-idle-24.png \
|
||||
status,process-syncing-up-24.png \
|
||||
status,process-syncing-down-24.png \
|
||||
status,process-syncing-24.png \
|
||||
status,process-syncing-error-24.png
|
||||
|
||||
install_icon_exec = $(top_srcdir)/build/icon-theme-installer \
|
||||
-t "$(dark_theme)" \
|
||||
-s "$(srcdir)" \
|
||||
-d "x$(DESTDIR)" \
|
||||
-m "$(mkinstalldirs)" \
|
||||
-x "$(INSTALL_DATA)"
|
||||
|
||||
install-data-local:
|
||||
@-$(install_icon_exec) -i -b "$(dark_themedir)" $(dark_theme_icons)
|
||||
|
||||
uninstall-hook:
|
||||
@-$(install_icon_exec) -u -b "$(dark_themedir)" $(dark_theme_icons)
|
||||
|
||||
MAINTAINERCLEANFILES = Makefile.in
|
||||
EXTRA_DIST = $(wildcard *.png *.svg)
|
||||
|
Before Width: | Height: | Size: 268 B |
Before Width: | Height: | Size: 271 B |
Before Width: | Height: | Size: 266 B |
Before Width: | Height: | Size: 361 B |
Before Width: | Height: | Size: 271 B |
|
@ -1,25 +0,0 @@
|
|||
light_theme = ubuntu-mono-light
|
||||
light_themedir = /usr/share/icons/$(light_theme)
|
||||
|
||||
light_theme_icons = \
|
||||
status,process-syncing-idle-24.png \
|
||||
status,process-syncing-up-24.png \
|
||||
status,process-syncing-down-24.png \
|
||||
status,process-syncing-24.png \
|
||||
status,process-syncing-error-24.png
|
||||
|
||||
install_icon_exec = $(top_srcdir)/build/icon-theme-installer \
|
||||
-t "$(light_theme)" \
|
||||
-s "$(srcdir)" \
|
||||
-d "x$(DESTDIR)" \
|
||||
-m "$(mkinstalldirs)" \
|
||||
-x "$(INSTALL_DATA)"
|
||||
|
||||
install-data-local:
|
||||
@-$(install_icon_exec) -i -b "$(light_themedir)" $(light_theme_icons)
|
||||
|
||||
uninstall-hook:
|
||||
@-$(install_icon_exec) -u -b "$(light_themedir)" $(light_theme_icons)
|
||||
|
||||
MAINTAINERCLEANFILES = Makefile.in
|
||||
EXTRA_DIST = $(wildcard *.png *.svg)
|
Before Width: | Height: | Size: 252 B |
Before Width: | Height: | Size: 258 B |
Before Width: | Height: | Size: 250 B |
Before Width: | Height: | Size: 337 B |
Before Width: | Height: | Size: 259 B |
6
SparkleShare/Linux/Images/meson.build
Normal file
|
@ -0,0 +1,6 @@
|
|||
image_files = ['tutorial-slide-3.png']
|
||||
|
||||
install_data(
|
||||
sources: image_files,
|
||||
install_dir: join_paths(install_dir, 'pixmaps'))
|
||||
|
|
@ -1,46 +0,0 @@
|
|||
SUBDIRS = Images
|
||||
|
||||
ASSEMBLY = SparkleShare
|
||||
TARGET = exe
|
||||
|
||||
LINK = $(REF_SPARKLESHARE) $(NOTIFY_SHARP_LIBS) $(WEBKITGTK_SHARP_LIBS)
|
||||
|
||||
if HAVE_APP_INDICATOR
|
||||
BUILD_DEFINES = "-define:HAVE_APP_INDICATOR"
|
||||
endif
|
||||
|
||||
SOURCES = \
|
||||
../Common/SparkleShare.cs \
|
||||
../Common/AboutController.cs \
|
||||
../Common/Avatars.cs \
|
||||
../Common/BubblesController.cs \
|
||||
../Common/BaseController.cs \
|
||||
../Common/EventLogController.cs \
|
||||
../Common/NoteController.cs \
|
||||
../Common/SetupController.cs \
|
||||
../Common/StatusIconController.cs \
|
||||
About.cs \
|
||||
Bubbles.cs \
|
||||
EventLog.cs \
|
||||
Note.cs \
|
||||
Setup.cs \
|
||||
SetupWindow.cs \
|
||||
StatusIcon.cs \
|
||||
UserInterface.cs \
|
||||
UserInterfaceHelpers.cs \
|
||||
Controller.cs
|
||||
|
||||
include $(top_srcdir)/build/build.mk
|
||||
|
||||
bin_SCRIPTS = sparkleshare
|
||||
|
||||
Applicationsdir = $(datadir)/applications
|
||||
dist_Applications_DATA = \
|
||||
org.sparkleshare.SparkleShare.desktop \
|
||||
org.sparkleshare.SparkleShare.Invites.desktop \
|
||||
SparkleShare.Autostart.desktop
|
||||
|
||||
install-data-hook:
|
||||
test -f $(datadir)/applications/defaults.list && \
|
||||
test -z $(DESTDIR) && update-desktop-database $(datadir)/applications || :
|
||||
|
|
@ -15,6 +15,7 @@
|
|||
// along with this program. If not, see (http://www.gnu.org/licenses/).
|
||||
|
||||
|
||||
using System.IO;
|
||||
using Gtk;
|
||||
|
||||
namespace SparkleShare {
|
||||
|
@ -26,8 +27,6 @@ namespace SparkleShare {
|
|||
|
||||
public Note () : base ("Add Note")
|
||||
{
|
||||
SetWmclass ("SparkleShare", "SparkleShare");
|
||||
|
||||
IconName = "org.sparkleshare.SparkleShare";
|
||||
Resizable = false;
|
||||
WindowPosition = WindowPosition.CenterAlways;
|
||||
|
@ -40,11 +39,11 @@ namespace SparkleShare {
|
|||
Controller.WindowClosed ();
|
||||
args.RetVal = true;
|
||||
};
|
||||
|
||||
|
||||
KeyPressEvent += delegate (object o, KeyPressEventArgs args) {
|
||||
if (args.Event.Key == Gdk.Key.Escape ||
|
||||
(args.Event.State == Gdk.ModifierType.ControlMask && args.Event.Key == Gdk.Key.w)) {
|
||||
|
||||
|
||||
Controller.WindowClosed ();
|
||||
}
|
||||
};
|
||||
|
@ -55,6 +54,9 @@ namespace SparkleShare {
|
|||
|
||||
Controller.ShowWindowEvent += delegate {
|
||||
Application.Invoke (delegate {
|
||||
if (Child != null)
|
||||
Remove (Child);
|
||||
|
||||
CreateNote ();
|
||||
ShowAll ();
|
||||
Present ();
|
||||
|
@ -64,14 +66,17 @@ namespace SparkleShare {
|
|||
Controller.UpdateTitleEvent += delegate (string title) {
|
||||
Application.Invoke (delegate { Title = title; });
|
||||
};
|
||||
|
||||
CreateNote ();
|
||||
}
|
||||
|
||||
|
||||
private void CreateNote ()
|
||||
{
|
||||
var user_image = new Image (Controller.AvatarFilePath);
|
||||
Image user_image;
|
||||
|
||||
if (File.Exists (Controller.AvatarFilePath))
|
||||
user_image = new Image (Controller.AvatarFilePath);
|
||||
else
|
||||
user_image = UserInterfaceHelpers.GetImage ("user-icon-default.png");
|
||||
|
||||
/* TODO: Style the entry neatly, multiple lines, and add placeholder text
|
||||
string balloon_image_path = new string [] { UserInterface.AssetsPath, "pixmaps", "text-balloon.png" }.Combine ();
|
||||
|
@ -96,8 +101,9 @@ namespace SparkleShare {
|
|||
|
||||
|
||||
var cancel_button = new Button ("Cancel");
|
||||
var sync_button = new Button ("Sync"); // TODO: Make default button
|
||||
sync_button.CanDefault = true;
|
||||
var sync_button = new Button ("Sync") { CanDefault = true };
|
||||
|
||||
sync_button.StyleContext.AddClass ("suggested-action");
|
||||
|
||||
cancel_button.Clicked += delegate { Controller.CancelClicked (); };
|
||||
sync_button.Clicked += delegate { Controller.SyncClicked (balloon.Buffer.Text); };
|
||||
|
@ -136,4 +142,3 @@ namespace SparkleShare {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,96 +1,123 @@
|
|||
# SparkleShare for Linux
|
||||
|
||||
To run SparkleShare, you'll need these packages:
|
||||
## Building with Flatpak
|
||||
|
||||
```
|
||||
curl
|
||||
git >= 2.3
|
||||
git-lfs >= 1.3.0
|
||||
gtk-sharp3
|
||||
gvfs
|
||||
mono-core >= 4.0
|
||||
notify-sharp
|
||||
webkit2gtk-sharp
|
||||
```
|
||||
|
||||
On Ubuntu you'll also need:
|
||||
|
||||
```
|
||||
libappindicator-sharp
|
||||
```
|
||||
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
|
||||
|
||||
Make sure to have the `git` package installed when you're building on Linux.
|
||||
You will need the packages listed below for the most used Linux distributions:
|
||||
You will need the packages listed below for the most used Linux distributions:
|
||||
|
||||
```shell
|
||||
# On Ubuntu 16.04:
|
||||
|
||||
# Run requirements
|
||||
sudo apt-get install \
|
||||
curl \
|
||||
git \
|
||||
git-lfs \
|
||||
gvfs
|
||||
|
||||
# Build requirements
|
||||
sudo apt-get install \
|
||||
desktop-file-utils \
|
||||
git \
|
||||
gtk-sharp3-gapi \
|
||||
intltool \
|
||||
libappindicator3-0.1-cil-dev \
|
||||
libdbus-glib2.0-cil-dev \
|
||||
libgtk3.0-cil-dev \
|
||||
libnotify3.0-cil-dev \
|
||||
libsoup2.4-dev \
|
||||
libtool-bin \
|
||||
libwebkit2gtk-4.0 \
|
||||
meson \
|
||||
mono-devel \
|
||||
mono-mcs \
|
||||
nant \
|
||||
xsltproc
|
||||
|
||||
# On Fedora 25:
|
||||
sudo dnf install # TODO
|
||||
|
||||
# On Fedora 27:
|
||||
|
||||
# Run requirements
|
||||
sudo dnf install \
|
||||
curl \
|
||||
git \
|
||||
git-lfs \
|
||||
gvfs
|
||||
|
||||
# Build requirements
|
||||
sudo dnf install \
|
||||
gtk-sharp3-devel \
|
||||
gtk-sharp3-gapi \
|
||||
libtool \
|
||||
meson \
|
||||
notify-sharp3-devel \
|
||||
webkitgtk4-devel \
|
||||
webkit2-sharp
|
||||
```
|
||||
|
||||
|
||||
### Additional source build requirements
|
||||
|
||||
Install the `gtk-sharp3` bindings from:
|
||||
https://github.com/mono/gtk-sharp
|
||||
Or on Ubuntu, get it from this PPA:
|
||||
https://launchpad.net/~meebey/+archive/mono-preview
|
||||
|
||||
Install the `notify-sharp` bindings from:
|
||||
https://download.gnome.org/sources/notify-sharp/3.0/
|
||||
|
||||
Install the `soup-sharp` and `webkit2gtk-sharp` bindings from:
|
||||
https://github.com/hbons/soup-sharp
|
||||
https://github.com/hbons/webkit2gtk-sharp
|
||||
|
||||
All with the usual:
|
||||
Install these `soup-sharp` and `webkit2gtk-sharp` bindings:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/hbons/soup-sharp
|
||||
cd soup-sharp/
|
||||
./autogen.sh
|
||||
make
|
||||
sudo make install
|
||||
```
|
||||
|
||||
If you're using Ubuntu, also install the `appindicator-sharp` bindings from:
|
||||
https://github.com/hbons/appindicator-sharp
|
||||
```bash
|
||||
git clone https://github.com/hbons/webkit2-sharp
|
||||
cd webkit2-sharp/
|
||||
./autogen.sh
|
||||
make
|
||||
sudo make install
|
||||
```
|
||||
|
||||
On Ubuntu, also install these `appindicator-sharp` bindings:
|
||||
|
||||
```bash
|
||||
sudo apt-get install libappindicator3-dev
|
||||
git clone https://github.com/hbons/appindicator-sharp
|
||||
cd appindicator-sharp/
|
||||
./autogen.sh
|
||||
make
|
||||
sudo make install
|
||||
```
|
||||
|
||||
|
||||
### Start the build
|
||||
|
||||
You can build and install SparkleShare like this:
|
||||
You can build and install SparkleShare with `meson` like this:
|
||||
|
||||
```bash
|
||||
$ ./configure (or ./autogen.sh if you build from the repository)
|
||||
$ make
|
||||
$ sudo make install
|
||||
meson build/
|
||||
ninja -C build/
|
||||
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:
|
||||
|
||||
```bash
|
||||
# Install pip using your system's package manager
|
||||
sudo apt-get install python3-pip # Ubuntu
|
||||
sudo dnf install python3-pip # Fedora
|
||||
|
||||
pip3 install meson
|
||||
```
|
||||
|
||||
|
||||
### Uninstall
|
||||
|
||||
```bash
|
||||
sudo make uninstall
|
||||
sudo ninja uninstall
|
||||
```
|
||||
|
||||
|
||||
|
|
|
@ -152,22 +152,22 @@ namespace SparkleShare {
|
|||
|
||||
// Padding column
|
||||
tree_view.AppendColumn ("Padding", new Gtk.CellRendererText (), "text", 0);
|
||||
tree_view.Columns [0].Cells [0].Xpad = 4;
|
||||
tree_view.Columns [0].Cells [0].Xpad = 8;
|
||||
|
||||
// Icon column
|
||||
tree_view.AppendColumn ("Icon", new Gtk.CellRendererPixbuf (), "pixbuf", 1);
|
||||
tree_view.Columns [1].Cells [0].Xpad = 4;
|
||||
tree_view.Columns [1].Cells [0].Xpad = 6;
|
||||
|
||||
// Service column
|
||||
TreeViewColumn service_column = new TreeViewColumn () { Title = "Service" };
|
||||
CellRendererText service_cell = new CellRendererText () { Ypad = 8 };
|
||||
CellRendererText service_cell = new CellRendererText () { Ypad = 12 };
|
||||
service_column.PackStart (service_cell, true);
|
||||
service_column.SetCellDataFunc (service_cell, new TreeCellDataFunc (RenderServiceColumn));
|
||||
|
||||
foreach (Preset preset in Controller.Presets) {
|
||||
store.AppendValues ("", new Gdk.Pixbuf (preset.ImagePath),
|
||||
"<span size=\"small\"><b>" + preset.Name + "</b>\n" +
|
||||
"<span fgcolor=\"" + SparkleShare.UI.SecondaryTextColor + "\">" + preset.Description + "</span>" +
|
||||
"<span><b>" + preset.Name + "</b>\n" +
|
||||
"<span size=\"small\" fgcolor=\"" + SparkleShare.UI.SecondaryTextColor + "\">" + preset.Description + "</span>" +
|
||||
"</span>", preset);
|
||||
}
|
||||
|
||||
|
|
|
@ -32,22 +32,19 @@ 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 (400, 400);
|
||||
SetSizeRequest (720, 540);
|
||||
DeleteEvent += delegate (object sender, DeleteEventArgs args) { args.RetVal = true; };
|
||||
|
||||
VBox layout_vertical = new VBox (false, 16);
|
||||
layout_vertical.BorderWidth = 16;
|
||||
|
||||
this.content_area = new EventBox ();
|
||||
this.content_area = new EventBox ();
|
||||
this.option_area = new EventBox ();
|
||||
|
||||
this.buttons = CreateButtonBox ();
|
||||
|
@ -82,7 +79,7 @@ namespace SparkleShare {
|
|||
|
||||
|
||||
public void AddOption (Widget widget)
|
||||
{
|
||||
{
|
||||
this.option_area.Add (widget);
|
||||
}
|
||||
|
||||
|
@ -99,7 +96,7 @@ namespace SparkleShare {
|
|||
LineWrap = true,
|
||||
LineWrapMode = Pango.WrapMode.WordChar
|
||||
};
|
||||
|
||||
|
||||
layout_vertical.PackStart (description, false, false, 0);
|
||||
}
|
||||
|
||||
|
@ -109,7 +106,7 @@ namespace SparkleShare {
|
|||
this.content_area.Add (layout_vertical);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void Reset ()
|
||||
{
|
||||
Header = "";
|
||||
|
@ -124,13 +121,13 @@ namespace SparkleShare {
|
|||
foreach (Button button in this.buttons)
|
||||
this.buttons.Remove (button);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
new public void ShowAll ()
|
||||
{
|
||||
if (this.buttons.Children.Length > 0) {
|
||||
Button default_button = (Button) this.buttons.Children [this.buttons.Children.Length - 1];
|
||||
|
||||
|
||||
default_button.CanDefault = true;
|
||||
Default = default_button;
|
||||
default_button.StyleContext.AddClass ("suggested-action");
|
||||
|
@ -141,4 +138,3 @@ namespace SparkleShare {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -51,7 +51,6 @@
|
|||
<Reference Include="System" />
|
||||
<Reference Include="System.Net" />
|
||||
<Reference Include="Mono.Posix" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="atk-sharp, Version=3.0.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
|
||||
<Reference Include="gdk-sharp, Version=3.0.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
|
||||
<Reference Include="gio-sharp, Version=3.0.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
|
||||
|
@ -60,6 +59,7 @@
|
|||
<Reference Include="pango-sharp, Version=3.0.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
|
||||
<Reference Include="notify-sharp, Version=3.0.0.0, Culture=neutral, PublicKeyToken=2df29c54e245917a" />
|
||||
<Reference Include="webkit2-sharp, Version=2.10.9.0, Culture=neutral, PublicKeyToken=bac11f94b446c2eb" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\Sparkles\Git\Sparkles.Git.csproj">
|
||||
|
@ -125,15 +125,11 @@
|
|||
<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" />
|
||||
<None Include="SparkleShare.Autostart.desktop" />
|
||||
<None Include="sparkleshare.in" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Controller.cs" />
|
||||
|
@ -170,4 +166,4 @@
|
|||
</ItemGroup>
|
||||
<Import Project="..\Common\SparkleShare.projitems" Label="Shared" Condition="Exists('..\Common\SparkleShare.projitems')" />
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
</Project>
|
||||
|
|