diff options
Diffstat (limited to 'SparkleShare')
-rw-r--r--[-rwxr-xr-x] | SparkleShare/Common/AboutController.cs (renamed from SparkleShare/SparkleAboutController.cs) | 39 | ||||
-rw-r--r-- | SparkleShare/Common/Avatars.cs (renamed from SparkleShare/SparkleAvatars.cs) | 23 | ||||
-rw-r--r-- | SparkleShare/Common/BaseController.cs (renamed from SparkleShare/SparkleControllerBase.cs) | 576 | ||||
-rw-r--r--[-rwxr-xr-x] | SparkleShare/Common/BubblesController.cs (renamed from SparkleShare/SparkleBubblesController.cs) | 16 | ||||
-rw-r--r--[-rwxr-xr-x] | SparkleShare/Common/EventLogController.cs (renamed from SparkleShare/SparkleEventLogController.cs) | 109 | ||||
-rwxr-xr-x | SparkleShare/Common/HTML/event-log.html | 2 | ||||
-rw-r--r-- | SparkleShare/Common/Images/Makefile.am (renamed from SparkleShare/Common/Pixmaps/Makefile.am) | 0 | ||||
-rw-r--r-- | SparkleShare/Common/Images/Sources/about-dialog.svg (renamed from SparkleShare/Common/Pixmaps/Sources/about-dialog.svg) | 2 | ||||
-rw-r--r-- | SparkleShare/Common/Images/Sources/actions.svg (renamed from SparkleShare/Common/Pixmaps/Sources/actions.svg) | 0 | ||||
-rw-r--r-- | SparkleShare/Common/Images/Sources/app-icons.svg | 1550 | ||||
-rw-r--r-- | SparkleShare/Common/Images/Sources/bitbucket.svg (renamed from SparkleShare/Common/Pixmaps/Sources/bitbucket.svg) | 0 | ||||
-rw-r--r-- | SparkleShare/Common/Images/Sources/folder-icons-mac-yosemite.svg (renamed from SparkleShare/Common/Pixmaps/Sources/folder-icons-mac-yosemite.svg) | 0 | ||||
-rw-r--r-- | SparkleShare/Common/Images/Sources/folder-icons-mac.svg (renamed from SparkleShare/Common/Pixmaps/Sources/folder-icons-mac.svg) | 0 | ||||
-rw-r--r-- | SparkleShare/Common/Images/Sources/folder-icons-windows.svg (renamed from SparkleShare/Common/Pixmaps/Sources/folder-icons-windows.svg) | 0 | ||||
-rw-r--r-- | SparkleShare/Common/Images/Sources/github.svg (renamed from SparkleShare/Common/Pixmaps/Sources/github.svg) | 0 | ||||
-rw-r--r-- | SparkleShare/Common/Images/Sources/gitlab.svg | 195 | ||||
-rw-r--r-- | SparkleShare/Common/Images/Sources/planio.svg | 182 | ||||
-rw-r--r-- | SparkleShare/Common/Images/Sources/side-splash.svg (renamed from SparkleShare/Common/Pixmaps/Sources/side-splash.svg) | 2 | ||||
-rw-r--r-- | SparkleShare/Common/Images/Sources/ssnet.svg (renamed from SparkleShare/Common/Pixmaps/Sources/ssnet.svg) | 0 | ||||
-rw-r--r-- | SparkleShare/Common/Images/Sources/status-icons.svg (renamed from SparkleShare/Common/Pixmaps/Sources/status-icons.svg) | 64 | ||||
-rw-r--r-- | SparkleShare/Common/Images/Sources/tutorial-slides.svg (renamed from SparkleShare/Common/Pixmaps/Sources/tutorial-slides.svg) | 2 | ||||
-rw-r--r-- | SparkleShare/Common/Images/Sources/user-icon-default.svg (renamed from SparkleShare/Common/Pixmaps/Sources/user-icon-default.svg) | 0 | ||||
-rwxr-xr-x | SparkleShare/Common/Images/about.png (renamed from SparkleShare/Common/Pixmaps/about.png) | bin | 66572 -> 66572 bytes | |||
-rw-r--r-- | SparkleShare/Common/Images/about@2x.png (renamed from SparkleShare/Common/Pixmaps/about@2x.png) | bin | 197165 -> 197165 bytes | |||
-rw-r--r-- | SparkleShare/Common/Images/readme-banner.png | bin | 0 -> 137626 bytes | |||
-rwxr-xr-x | SparkleShare/Common/Images/side-splash.png (renamed from SparkleShare/Common/Pixmaps/side-splash.png) | bin | 64937 -> 64937 bytes | |||
-rw-r--r-- | SparkleShare/Common/Images/side-splash@2x.png (renamed from SparkleShare/Common/Pixmaps/side-splash@2x.png) | bin | 189579 -> 189579 bytes | |||
-rw-r--r-- | SparkleShare/Common/Images/text-balloon.png (renamed from SparkleShare/Common/Pixmaps/text-balloon.png) | bin | 1118 -> 1118 bytes | |||
-rw-r--r-- | SparkleShare/Common/Images/text-balloon@2x.png (renamed from SparkleShare/Common/Pixmaps/text-balloon@2x.png) | bin | 2632 -> 2632 bytes | |||
-rw-r--r-- | SparkleShare/Common/Images/tutorial-slide-1.png (renamed from SparkleShare/Common/Pixmaps/tutorial-slide-1.png) | bin | 27962 -> 27962 bytes | |||
-rw-r--r-- | SparkleShare/Common/Images/tutorial-slide-1@2x.png (renamed from SparkleShare/Common/Pixmaps/tutorial-slide-1@2x.png) | bin | 71140 -> 71140 bytes | |||
-rw-r--r-- | SparkleShare/Common/Images/tutorial-slide-2.png (renamed from SparkleShare/Common/Pixmaps/tutorial-slide-2.png) | bin | 23261 -> 23261 bytes | |||
-rw-r--r-- | SparkleShare/Common/Images/tutorial-slide-2@2x.png (renamed from SparkleShare/Common/Pixmaps/tutorial-slide-2@2x.png) | bin | 63666 -> 63666 bytes | |||
-rw-r--r-- | SparkleShare/Common/Images/user-icon-default.png (renamed from SparkleShare/Common/Pixmaps/user-icon-default.png) | bin | 558 -> 558 bytes | |||
-rw-r--r-- | SparkleShare/Common/Makefile.am | 4 | ||||
-rw-r--r--[-rwxr-xr-x] | SparkleShare/Common/NoteController.cs (renamed from SparkleShare/SparkleNoteController.cs) | 42 | ||||
-rw-r--r-- | SparkleShare/Common/Pixmaps/Sources/app-icons.svg | 2009 | ||||
-rw-r--r-- | SparkleShare/Common/Pixmaps/Sources/gitorious.svg | 63 | ||||
-rw-r--r-- | SparkleShare/Common/Plugins/gitorious.png | bin | 1238 -> 0 bytes | |||
-rw-r--r-- | SparkleShare/Common/Plugins/gitorious.xml | 20 | ||||
-rw-r--r-- | SparkleShare/Common/Plugins/gitorious@2x.png | bin | 2751 -> 0 bytes | |||
-rw-r--r-- | SparkleShare/Common/Plugins/planio.png | bin | 3232 -> 0 bytes | |||
-rw-r--r-- | SparkleShare/Common/Plugins/planio@2x.png | bin | 4609 -> 0 bytes | |||
-rw-r--r-- | SparkleShare/Common/Plugins/ssnet.png | bin | 1438 -> 0 bytes | |||
-rw-r--r-- | SparkleShare/Common/Plugins/ssnet.xml | 19 | ||||
-rw-r--r-- | SparkleShare/Common/Plugins/ssnet@2x.png | bin | 3701 -> 0 bytes | |||
-rw-r--r-- | SparkleShare/Common/Presets/Makefile.am (renamed from SparkleShare/Common/Plugins/Makefile.am) | 11 | ||||
-rw-r--r-- | SparkleShare/Common/Presets/bitbucket.png (renamed from SparkleShare/Common/Plugins/bitbucket.png) | bin | 1202 -> 1202 bytes | |||
-rw-r--r-- | SparkleShare/Common/Presets/bitbucket.xml (renamed from SparkleShare/Common/Plugins/bitbucket.xml) | 7 | ||||
-rw-r--r-- | SparkleShare/Common/Presets/bitbucket@2x.png (renamed from SparkleShare/Common/Plugins/bitbucket@2x.png) | bin | 2599 -> 2599 bytes | |||
-rw-r--r-- | SparkleShare/Common/Presets/github.png (renamed from SparkleShare/Common/Plugins/github.png) | bin | 1578 -> 1578 bytes | |||
-rw-r--r-- | SparkleShare/Common/Presets/github.xml (renamed from SparkleShare/Common/Plugins/github.xml) | 9 | ||||
-rw-r--r-- | SparkleShare/Common/Presets/github@2x.png (renamed from SparkleShare/Common/Plugins/github@2x.png) | bin | 3633 -> 3633 bytes | |||
-rw-r--r-- | SparkleShare/Common/Presets/gitlab.png | bin | 0 -> 1236 bytes | |||
-rw-r--r-- | SparkleShare/Common/Presets/gitlab.xml | 21 | ||||
-rw-r--r-- | SparkleShare/Common/Presets/gitlab@2x.png | bin | 0 -> 2966 bytes | |||
-rw-r--r-- | SparkleShare/Common/Presets/own-server.png (renamed from SparkleShare/Common/Plugins/own-server.png) | bin | 1161 -> 1161 bytes | |||
-rw-r--r-- | SparkleShare/Common/Presets/own-server.xml (renamed from SparkleShare/Common/Plugins/own-server.xml) | 7 | ||||
-rw-r--r-- | SparkleShare/Common/Presets/own-server@2x.png (renamed from SparkleShare/Common/Plugins/own-server@2x.png) | bin | 2409 -> 2409 bytes | |||
-rw-r--r-- | SparkleShare/Common/Presets/parse_plugins.xsl (renamed from SparkleShare/Common/Plugins/parse_plugins.xsl) | 0 | ||||
-rw-r--r-- | SparkleShare/Common/Presets/planio.png | bin | 0 -> 1499 bytes | |||
-rw-r--r-- | SparkleShare/Common/Presets/planio.xml (renamed from SparkleShare/Common/Plugins/planio.xml) | 9 | ||||
-rw-r--r-- | SparkleShare/Common/Presets/planio@2x.png | bin | 0 -> 3737 bytes | |||
-rw-r--r--[-rwxr-xr-x] | SparkleShare/Common/SetupController.cs (renamed from SparkleShare/SparkleSetupController.cs) | 259 | ||||
-rw-r--r-- | SparkleShare/Common/SparkleShare.cs (renamed from SparkleShare/Program.cs) | 51 | ||||
-rw-r--r-- | SparkleShare/Common/SparkleShare.projitems | 22 | ||||
-rw-r--r-- | SparkleShare/Common/SparkleShare.shproj | 14 | ||||
-rw-r--r--[-rwxr-xr-x] | SparkleShare/Common/StatusIconController.cs (renamed from SparkleShare/SparkleStatusIconController.cs) | 220 | ||||
-rwxr-xr-x | SparkleShare/Common/Translations/nl.po | 2 | ||||
-rwxr-xr-x | SparkleShare/Linux/About.cs | 168 | ||||
-rwxr-xr-x | SparkleShare/Linux/Bubbles.cs (renamed from SparkleShare/Linux/SparkleBubbles.cs) | 22 | ||||
-rw-r--r-- | SparkleShare/Linux/Controller.cs | 140 | ||||
-rwxr-xr-x | SparkleShare/Linux/EventLog.cs (renamed from SparkleShare/Linux/SparkleEventLog.cs) | 190 | ||||
-rwxr-xr-x | SparkleShare/Linux/Images/Makefile.am (renamed from SparkleShare/Linux/Pixmaps/Makefile.am) | 1 | ||||
-rwxr-xr-x | SparkleShare/Linux/Images/icons/Makefile.am | 4 | ||||
-rw-r--r--[-rwxr-xr-x] | SparkleShare/Linux/Images/icons/hicolor/Makefile.am (renamed from SparkleShare/Linux/Pixmaps/icons/Makefile.am) | 39 | ||||
-rwxr-xr-x | SparkleShare/Linux/Images/icons/hicolor/document-added-12.png (renamed from SparkleShare/Linux/Pixmaps/icons/document-added-12.png) | bin | 193 -> 193 bytes | |||
-rwxr-xr-x | SparkleShare/Linux/Images/icons/hicolor/document-deleted-12.png (renamed from SparkleShare/Linux/Pixmaps/icons/document-deleted-12.png) | bin | 117 -> 117 bytes | |||
-rwxr-xr-x | SparkleShare/Linux/Images/icons/hicolor/document-edited-12.png (renamed from SparkleShare/Linux/Pixmaps/icons/document-edited-12.png) | bin | 428 -> 428 bytes | |||
-rwxr-xr-x | SparkleShare/Linux/Images/icons/hicolor/document-moved-12.png (renamed from SparkleShare/Linux/Pixmaps/icons/document-moved-12.png) | bin | 445 -> 445 bytes | |||
-rwxr-xr-x | SparkleShare/Linux/Images/icons/hicolor/list-point-16.png (renamed from SparkleShare/Linux/Pixmaps/icons/list-point-16.png) | bin | 575 -> 575 bytes | |||
-rw-r--r-- | SparkleShare/Linux/Images/icons/hicolor/org.sparkleshare.SparkleShare-16.png | bin | 0 -> 879 bytes | |||
-rw-r--r-- | SparkleShare/Linux/Images/icons/hicolor/org.sparkleshare.SparkleShare-22.png | bin | 0 -> 1154 bytes | |||
-rw-r--r-- | SparkleShare/Linux/Images/icons/hicolor/org.sparkleshare.SparkleShare-24.png | bin | 0 -> 1168 bytes | |||
-rwxr-xr-x | SparkleShare/Linux/Images/icons/hicolor/org.sparkleshare.SparkleShare-256.png | bin | 0 -> 17730 bytes | |||
-rw-r--r-- | SparkleShare/Linux/Images/icons/hicolor/org.sparkleshare.SparkleShare-32.png | bin | 0 -> 1168 bytes | |||
-rw-r--r-- | SparkleShare/Linux/Images/icons/hicolor/org.sparkleshare.SparkleShare-48.png | bin | 0 -> 2083 bytes | |||
-rw-r--r-- | SparkleShare/Linux/Images/icons/hicolor/org.sparkleshare.SparkleShare-512.png | bin | 0 -> 44891 bytes | |||
-rw-r--r-- | SparkleShare/Linux/Images/icons/hicolor/org.sparkleshare.SparkleShare-symbolic.svg (renamed from SparkleShare/Linux/Pixmaps/icons/gnome/sparkleshare-symbolic.svg) | 0 | ||||
-rw-r--r-- | SparkleShare/Linux/Images/icons/hicolor/process-syncing-24.png (renamed from SparkleShare/Linux/Pixmaps/icons/process-syncing-24.png) | bin | 831 -> 831 bytes | |||
-rw-r--r-- | SparkleShare/Linux/Images/icons/hicolor/process-syncing-48.png (renamed from SparkleShare/Linux/Pixmaps/icons/process-syncing-48.png) | bin | 1679 -> 1679 bytes | |||
-rw-r--r-- | SparkleShare/Linux/Images/icons/hicolor/process-syncing-down-24.png (renamed from SparkleShare/Linux/Pixmaps/icons/process-syncing-down-24.png) | bin | 768 -> 768 bytes | |||
-rw-r--r-- | SparkleShare/Linux/Images/icons/hicolor/process-syncing-down-48.png (renamed from SparkleShare/Linux/Pixmaps/icons/process-syncing-down-48.png) | bin | 1620 -> 1620 bytes | |||
-rwxr-xr-x | SparkleShare/Linux/Images/icons/hicolor/process-syncing-error-24.png | bin | 0 -> 1333 bytes | |||
-rw-r--r-- | SparkleShare/Linux/Images/icons/hicolor/process-syncing-error-48.png (renamed from SparkleShare/Linux/Pixmaps/icons/process-syncing-error-48.png) | bin | 2699 -> 2699 bytes | |||
-rw-r--r-- | SparkleShare/Linux/Images/icons/hicolor/process-syncing-up-24.png (renamed from SparkleShare/Linux/Pixmaps/icons/process-syncing-up-24.png) | bin | 768 -> 768 bytes | |||
-rw-r--r-- | SparkleShare/Linux/Images/icons/hicolor/process-syncing-up-48.png (renamed from SparkleShare/Linux/Pixmaps/icons/process-syncing-up-48.png) | bin | 1588 -> 1588 bytes | |||
-rw-r--r-- | SparkleShare/Linux/Images/icons/hicolor/process-working-22.png (renamed from SparkleShare/Linux/Pixmaps/icons/process-working-22.png) | bin | 4104 -> 4104 bytes | |||
-rw-r--r-- | SparkleShare/Linux/Images/icons/ubuntu-mono-dark/Makefile.am (renamed from SparkleShare/Linux/Pixmaps/icons/ubuntu-mono-dark/Makefile.am) | 1 | ||||
-rw-r--r-- | SparkleShare/Linux/Images/icons/ubuntu-mono-dark/process-syncing-24.png (renamed from SparkleShare/Linux/Pixmaps/icons/ubuntu-mono-dark/process-syncing-24.png) | bin | 268 -> 268 bytes | |||
-rw-r--r-- | SparkleShare/Linux/Images/icons/ubuntu-mono-dark/process-syncing-down-24.png (renamed from SparkleShare/Linux/Pixmaps/icons/ubuntu-mono-dark/process-syncing-down-24.png) | bin | 271 -> 271 bytes | |||
-rw-r--r-- | SparkleShare/Linux/Images/icons/ubuntu-mono-dark/process-syncing-error-24.png (renamed from SparkleShare/Linux/Pixmaps/icons/ubuntu-mono-dark/process-syncing-error-24.png) | bin | 266 -> 266 bytes | |||
-rw-r--r-- | SparkleShare/Linux/Images/icons/ubuntu-mono-dark/process-syncing-idle-24.png (renamed from SparkleShare/Linux/Pixmaps/icons/ubuntu-mono-dark/process-syncing-idle-24.png) | bin | 361 -> 361 bytes | |||
-rw-r--r-- | SparkleShare/Linux/Images/icons/ubuntu-mono-dark/process-syncing-up-24.png (renamed from SparkleShare/Linux/Pixmaps/icons/ubuntu-mono-dark/process-syncing-up-24.png) | bin | 271 -> 271 bytes | |||
-rw-r--r-- | SparkleShare/Linux/Images/icons/ubuntu-mono-light/Makefile.am (renamed from SparkleShare/Linux/Pixmaps/icons/ubuntu-mono-light/Makefile.am) | 0 | ||||
-rw-r--r-- | SparkleShare/Linux/Images/icons/ubuntu-mono-light/process-syncing-24.png (renamed from SparkleShare/Linux/Pixmaps/icons/ubuntu-mono-light/process-syncing-24.png) | bin | 252 -> 252 bytes | |||
-rw-r--r-- | SparkleShare/Linux/Images/icons/ubuntu-mono-light/process-syncing-down-24.png (renamed from SparkleShare/Linux/Pixmaps/icons/ubuntu-mono-light/process-syncing-down-24.png) | bin | 258 -> 258 bytes | |||
-rw-r--r-- | SparkleShare/Linux/Images/icons/ubuntu-mono-light/process-syncing-error-24.png (renamed from SparkleShare/Linux/Pixmaps/icons/ubuntu-mono-light/process-syncing-error-24.png) | bin | 250 -> 250 bytes | |||
-rw-r--r-- | SparkleShare/Linux/Images/icons/ubuntu-mono-light/process-syncing-idle-24.png (renamed from SparkleShare/Linux/Pixmaps/icons/ubuntu-mono-light/process-syncing-idle-24.png) | bin | 337 -> 337 bytes | |||
-rw-r--r-- | SparkleShare/Linux/Images/icons/ubuntu-mono-light/process-syncing-up-24.png (renamed from SparkleShare/Linux/Pixmaps/icons/ubuntu-mono-light/process-syncing-up-24.png) | bin | 259 -> 259 bytes | |||
-rwxr-xr-x | SparkleShare/Linux/Images/tutorial-slide-3.png (renamed from SparkleShare/Linux/Pixmaps/tutorial-slide-3.png) | bin | 36876 -> 36876 bytes | |||
-rw-r--r-- | SparkleShare/Linux/Makefile.am | 53 | ||||
-rw-r--r--[-rwxr-xr-x] | SparkleShare/Linux/Note.cs (renamed from SparkleShare/Linux/SparkleNote.cs) | 40 | ||||
-rw-r--r-- | SparkleShare/Linux/Pixmaps/icons/gnome/Makefile.am | 20 | ||||
-rwxr-xr-x | SparkleShare/Linux/Pixmaps/icons/process-syncing-error-24.png | bin | 1017 -> 0 bytes | |||
-rwxr-xr-x | SparkleShare/Linux/Pixmaps/icons/sparkleshare-16.png | bin | 689 -> 0 bytes | |||
-rwxr-xr-x | SparkleShare/Linux/Pixmaps/icons/sparkleshare-22.png | bin | 926 -> 0 bytes | |||
-rwxr-xr-x | SparkleShare/Linux/Pixmaps/icons/sparkleshare-24.png | bin | 1196 -> 0 bytes | |||
-rwxr-xr-x | SparkleShare/Linux/Pixmaps/icons/sparkleshare-256.png | bin | 47701 -> 0 bytes | |||
-rwxr-xr-x | SparkleShare/Linux/Pixmaps/icons/sparkleshare-32.png | bin | 1270 -> 0 bytes | |||
-rwxr-xr-x | SparkleShare/Linux/Pixmaps/icons/sparkleshare-48.png | bin | 2182 -> 0 bytes | |||
-rw-r--r-- | SparkleShare/Linux/README.md | 88 | ||||
-rwxr-xr-x | SparkleShare/Linux/Setup.cs (renamed from SparkleShare/Linux/SparkleSetup.cs) | 234 | ||||
-rw-r--r--[-rwxr-xr-x] | SparkleShare/Linux/SetupWindow.cs (renamed from SparkleShare/Linux/SparkleSetupWindow.cs) | 55 | ||||
-rwxr-xr-x | SparkleShare/Linux/SparkleAbout.cs | 182 | ||||
-rwxr-xr-x | SparkleShare/Linux/SparkleController.cs | 205 | ||||
-rwxr-xr-x | SparkleShare/Linux/SparkleShare.Autostart.desktop | 7 | ||||
-rw-r--r-- | SparkleShare/Linux/SparkleShare.Linux.csproj | 173 | ||||
-rw-r--r-- | SparkleShare/Linux/SparkleUI.cs | 99 | ||||
-rw-r--r-- | SparkleShare/Linux/StatusIcon.cs (renamed from SparkleShare/Linux/SparkleStatusIcon.cs) | 173 | ||||
-rw-r--r-- | SparkleShare/Linux/UserInterface.cs | 114 | ||||
-rwxr-xr-x | SparkleShare/Linux/UserInterfaceHelpers.cs (renamed from SparkleShare/Linux/SparkleUIHelpers.cs) | 13 | ||||
-rw-r--r-- | SparkleShare/Linux/org.sparkleshare.SparkleShare.Invites.desktop (renamed from SparkleShare/Linux/sparkleshare-invite-opener.desktop) | 3 | ||||
-rw-r--r-- | SparkleShare/Linux/org.sparkleshare.SparkleShare.appdata.xml (renamed from SparkleShare/Linux/sparkleshare.appdata.xml) | 10 | ||||
-rwxr-xr-x | SparkleShare/Linux/org.sparkleshare.SparkleShare.desktop | 8 | ||||
-rwxr-xr-x | SparkleShare/Linux/sparkleshare.desktop | 9 | ||||
-rwxr-xr-x | SparkleShare/Linux/sparkleshare.in | 20 | ||||
-rwxr-xr-x | SparkleShare/Mac/AppDelegate.cs | 12 | ||||
-rw-r--r-- | SparkleShare/Mac/Assets.xcassets/Contents.json | 6 | ||||
-rw-r--r--[-rwxr-xr-x] | SparkleShare/Mac/Controller.cs (renamed from SparkleShare/Mac/SparkleController.cs) | 193 | ||||
-rwxr-xr-x | SparkleShare/Mac/Info.plist | 10 | ||||
-rwxr-xr-x | SparkleShare/Mac/MainMenu.xib.designer.cs | 4 | ||||
-rw-r--r-- | SparkleShare/Mac/README.md | 19 | ||||
-rw-r--r--[-rwxr-xr-x] | SparkleShare/Mac/Resources/sparkleshare-app.icns | bin | 143098 -> 370614 bytes | |||
-rw-r--r-- | SparkleShare/Mac/SparkleShare.Mac.csproj | 340 | ||||
-rw-r--r-- | SparkleShare/Mac/SparkleShare.csproj | 296 | ||||
-rw-r--r-- | SparkleShare/Mac/SparkleShare.sln | 56 | ||||
-rwxr-xr-x | SparkleShare/Mac/SparkleUI.cs | 97 | ||||
-rw-r--r--[-rwxr-xr-x] | SparkleShare/Mac/UserInterface/About.cs (renamed from SparkleShare/Mac/SparkleAbout.cs) | 97 | ||||
-rwxr-xr-x | SparkleShare/Mac/UserInterface/Bubbles.cs (renamed from SparkleShare/Mac/SparkleBubbles.cs) | 22 | ||||
-rw-r--r--[-rwxr-xr-x] | SparkleShare/Mac/UserInterface/EventLog.cs (renamed from SparkleShare/Mac/SparkleEventLog.cs) | 224 | ||||
-rw-r--r--[-rwxr-xr-x] | SparkleShare/Mac/UserInterface/Note.cs (renamed from SparkleShare/Mac/SparkleNote.cs) | 88 | ||||
-rw-r--r--[-rwxr-xr-x] | SparkleShare/Mac/UserInterface/Setup.cs (renamed from SparkleShare/Mac/SparkleSetup.cs) | 395 | ||||
-rw-r--r--[-rwxr-xr-x] | SparkleShare/Mac/UserInterface/SetupWindow.cs (renamed from SparkleShare/Mac/SparkleSetupWindow.cs) | 57 | ||||
-rw-r--r--[-rwxr-xr-x] | SparkleShare/Mac/UserInterface/StatusIcon.cs (renamed from SparkleShare/Mac/SparkleStatusIcon.cs) | 40 | ||||
-rwxr-xr-x | SparkleShare/Mac/UserInterface/UserInterface.cs | 89 | ||||
-rwxr-xr-x | SparkleShare/Mac/Watcher.cs (renamed from SparkleShare/Mac/SparkleMacWatcher.cs) | 10 | ||||
-rwxr-xr-x | SparkleShare/Mac/checkGit.sh | 24 | ||||
-rw-r--r-- | SparkleShare/Mac/config | 28 | ||||
-rw-r--r-- | SparkleShare/Mac/git.download | 1 | ||||
-rw-r--r-- | SparkleShare/Mac/git.version | 1 | ||||
-rwxr-xr-x | SparkleShare/Mac/packReleaseDist.sh | 7 | ||||
-rwxr-xr-x | SparkleShare/Mac/postBuild.sh | 7 | ||||
-rw-r--r-- | SparkleShare/SparkleExtensions.cs | 35 | ||||
-rw-r--r-- | SparkleShare/SparkleInvite.cs | 120 | ||||
-rw-r--r-- | SparkleShare/SparkleKeys.cs | 105 | ||||
-rw-r--r-- | SparkleShare/SparklePlugin.cs | 123 | ||||
-rw-r--r-- | SparkleShare/Windows/Images/folder.png (renamed from SparkleShare/Windows/Pixmaps/folder.png) | bin | 639 -> 639 bytes | |||
-rw-r--r-- | SparkleShare/Windows/Images/process-syncing-down.png (renamed from SparkleShare/Windows/Pixmaps/process-syncing-down.png) | bin | 352 -> 352 bytes | |||
-rw-r--r-- | SparkleShare/Windows/Images/process-syncing-error.png (renamed from SparkleShare/Windows/Pixmaps/process-syncing-error.png) | bin | 300 -> 300 bytes | |||
-rw-r--r-- | SparkleShare/Windows/Images/process-syncing-idle.png (renamed from SparkleShare/Windows/Pixmaps/process-syncing-idle.png) | bin | 433 -> 433 bytes | |||
-rw-r--r-- | SparkleShare/Windows/Images/process-syncing-up.png (renamed from SparkleShare/Windows/Pixmaps/process-syncing-up.png) | bin | 357 -> 357 bytes | |||
-rw-r--r-- | SparkleShare/Windows/Images/process-syncing.png (renamed from SparkleShare/Windows/Pixmaps/process-syncing.png) | bin | 288 -> 288 bytes | |||
-rw-r--r-- | SparkleShare/Windows/Images/sparkleshare-app.ico (renamed from SparkleShare/Windows/Pixmaps/sparkleshare-app.ico) | bin | 68092 -> 68092 bytes | |||
-rw-r--r-- | SparkleShare/Windows/Images/sparkleshare-folder.ico (renamed from SparkleShare/Windows/Pixmaps/sparkleshare-folder.ico) | bin | 38403 -> 38403 bytes | |||
-rw-r--r-- | SparkleShare/Windows/Images/sparkleshare-folder.png (renamed from SparkleShare/Windows/Pixmaps/sparkleshare-folder.png) | bin | 633 -> 633 bytes | |||
-rw-r--r-- | SparkleShare/Windows/Images/tutorial-slide-3.png (renamed from SparkleShare/Windows/Pixmaps/tutorial-slide-3.png) | bin | 24292 -> 24292 bytes | |||
-rw-r--r-- | SparkleShare/Windows/README.md | 4 | ||||
-rw-r--r-- | SparkleShare/Windows/SparkleController.cs | 270 | ||||
-rw-r--r-- | SparkleShare/Windows/SparkleEventLog.cs | 372 | ||||
-rw-r--r-- | SparkleShare/Windows/SparkleEventLogWindow.xaml | 38 | ||||
-rw-r--r-- | SparkleShare/Windows/SparkleEventLogWindow.xaml.cs | 262 | ||||
-rw-r--r-- | SparkleShare/Windows/SparkleLib/Git/SparkleLib.Git.csproj | 71 | ||||
-rw-r--r-- | SparkleShare/Windows/SparkleLib/SparkleLib.csproj | 97 | ||||
-rw-r--r-- | SparkleShare/Windows/SparkleShare.Windows.csproj | 337 | ||||
-rw-r--r-- | SparkleShare/Windows/SparkleShare.csproj | 294 | ||||
-rw-r--r-- | SparkleShare/Windows/SparkleShare.sln | 49 | ||||
-rw-r--r-- | SparkleShare/Windows/SparkleShare.vssettings | 2 | ||||
-rw-r--r-- | SparkleShare/Windows/SparkleShare.wxs | 8 | ||||
-rw-r--r-- | SparkleShare/Windows/SparkleShareInviteOpener/SparkleShareInviteOpener.csproj | 20 | ||||
-rw-r--r-- | SparkleShare/Windows/SparkleShareInviteOpener/sparkleshare-invite-opener.cs | 2 | ||||
-rw-r--r-- | SparkleShare/Windows/UserInterface/About.cs (renamed from SparkleShare/Windows/SparkleAbout.cs) | 17 | ||||
-rw-r--r-- | SparkleShare/Windows/UserInterface/Bubbles.cs (renamed from SparkleShare/Windows/SparkleBubbles.cs) | 14 | ||||
-rw-r--r-- | SparkleShare/Windows/UserInterface/Controller.cs | 199 | ||||
-rw-r--r-- | SparkleShare/Windows/UserInterface/EventLog.cs | 347 | ||||
-rw-r--r-- | SparkleShare/Windows/UserInterface/Note.xaml (renamed from SparkleShare/Windows/SparkleNote.xaml) | 4 | ||||
-rw-r--r-- | SparkleShare/Windows/UserInterface/Note.xaml.cs (renamed from SparkleShare/Windows/SparkleNote.xaml.cs) | 22 | ||||
-rw-r--r-- | SparkleShare/Windows/UserInterface/NotifyIcon.cs (renamed from SparkleShare/Windows/SparkleNotifyIcon.cs) | 376 | ||||
-rw-r--r-- | SparkleShare/Windows/UserInterface/ProtocolHandler.cs | 74 | ||||
-rw-r--r-- | SparkleShare/Windows/UserInterface/Setup.cs (renamed from SparkleShare/Windows/SparkleSetup.cs) | 199 | ||||
-rw-r--r-- | SparkleShare/Windows/UserInterface/SetupWindow.cs (renamed from SparkleShare/Windows/SparkleSetupWindow.cs) | 386 | ||||
-rw-r--r-- | SparkleShare/Windows/UserInterface/Shortcut.cs (renamed from SparkleShare/Windows/SparkleShortcut.cs) | 5 | ||||
-rw-r--r-- | SparkleShare/Windows/UserInterface/Spinner.cs (renamed from SparkleShare/Windows/SparkleSpinner.cs) | 182 | ||||
-rw-r--r-- | SparkleShare/Windows/UserInterface/StatusIcon.cs (renamed from SparkleShare/Windows/SparkleStatusIcon.cs) | 40 | ||||
-rw-r--r-- | SparkleShare/Windows/UserInterface/UserInterface.cs (renamed from SparkleShare/Windows/SparkleUI.cs) | 40 | ||||
-rw-r--r-- | SparkleShare/Windows/UserInterface/UserInterfaceHelpers.cs (renamed from SparkleShare/Windows/SparkleUIHelpers.cs) | 12 | ||||
-rw-r--r-- | SparkleShare/Windows/app.config | 3 | ||||
-rw-r--r-- | SparkleShare/Windows/build.cmd | 2 | ||||
-rw-r--r-- | SparkleShare/Windows/packages.config | 7 |
209 files changed, 6252 insertions, 7631 deletions
diff --git a/SparkleShare/SparkleAboutController.cs b/SparkleShare/Common/AboutController.cs index 58a4c8d..9f7436e 100755..100644 --- a/SparkleShare/SparkleAboutController.cs +++ b/SparkleShare/Common/AboutController.cs @@ -1,5 +1,5 @@ // SparkleShare, a collaboration and sharing tool.
-// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com>
+// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -19,9 +19,11 @@ using System; using System.Net;
using System.Threading;
+using Sparkles;
+
namespace SparkleShare {
- public class SparkleAboutController {
+ public class AboutController {
public event Action ShowWindowEvent = delegate { };
public event Action HideWindowEvent = delegate { };
@@ -29,21 +31,21 @@ namespace SparkleShare { public event UpdateLabelEventDelegate UpdateLabelEvent = delegate { };
public delegate void UpdateLabelEventDelegate (string text);
- public readonly string WebsiteLinkAddress = "http://www.sparkleshare.org/";
- public readonly string CreditsLinkAddress = "http://github.com/hbons/SparkleShare/blob/master/legal/Authors.txt";
- public readonly string ReportProblemLinkAddress = "http://www.github.com/hbons/SparkleShare/issues";
- public readonly string DebugLogLinkAddress = "file://" + Program.Controller.Config.LogFilePath;
+ 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 ReportProblemLinkAddress = "https://www.github.com/hbons/SparkleShare/issues";
+ public readonly string DebugLogLinkAddress = "file://" + SparkleShare.Controller.Config.LogFilePath;
public string RunningVersion;
- public SparkleAboutController ()
+ public AboutController ()
{
- RunningVersion = SparkleLib.SparkleBackend.Version;
+ RunningVersion = InstallationInfo.Version;
- Program.Controller.ShowAboutWindowEvent += delegate {
+ SparkleShare.Controller.ShowAboutWindowEvent += delegate {
ShowWindowEvent ();
- new Thread (() => CheckForNewVersion ()).Start ();
+ new Thread (CheckForNewVersion).Start ();
};
}
@@ -54,24 +56,25 @@ namespace SparkleShare { }
- private void CheckForNewVersion ()
+ void CheckForNewVersion ()
{
- UpdateLabelEvent ("Checking for updates...");
+ UpdateLabelEvent ("Checking for updates…");
Thread.Sleep (500);
- WebClient web_client = new WebClient ();
- Uri uri = new Uri ("http://www.sparkleshare.org/version");
+ var web_client = new WebClient ();
+ var uri = new Uri ("http://www.sparkleshare.org/version");
try {
- string latest_version = web_client.DownloadString (uri).Trim ();
+ string latest_version = web_client.DownloadString (uri);
+ latest_version = latest_version.Trim ();
if (new Version (latest_version) > new Version (RunningVersion))
- UpdateLabelEvent ("A newer version (" + latest_version + ") is available!");
+ UpdateLabelEvent ("An update (version " + latest_version + ") is available!");
else
- UpdateLabelEvent ("You are running the latest version.");
+ UpdateLabelEvent ("✓ You are running the latest version");
} catch {
- UpdateLabelEvent ("Version check failed.");
+ UpdateLabelEvent ("Couldn’t check for updates\t");
}
}
}
diff --git a/SparkleShare/SparkleAvatars.cs b/SparkleShare/Common/Avatars.cs index 2562e9f..058dbc4 100644 --- a/SparkleShare/SparkleAvatars.cs +++ b/SparkleShare/Common/Avatars.cs @@ -1,5 +1,5 @@ // SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com> +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -23,13 +23,13 @@ using System.Net.Mime; using System.Net.Security; using System.Security.Cryptography.X509Certificates; -using SparkleLib; +using Sparkles; namespace SparkleShare { - public static class SparkleAvatars + public static class Avatars { - private static List<string> skipped_avatars = new List<string> (); + static List<string> skipped_avatars = new List<string> (); public static string GetAvatar (string email, int size, string target_path) @@ -43,8 +43,7 @@ namespace SparkleShare if (skipped_avatars.Contains (email)) return null; - string avatars_path = new string [] { Path.GetDirectoryName (target_path), - "avatars", size + "x" + size }.Combine (); + string avatars_path = Path.Combine (Path.GetDirectoryName (target_path), "avatars", size + "x" + size); // Search avatars by file name, ignore extension // Delete files over a day old @@ -64,11 +63,11 @@ namespace SparkleShare avatar_file_path = Path.Combine (avatars_path, email.MD5 ()); } catch (InvalidOperationException e) { - SparkleLogger.LogInfo ("Avatars", "Error fetching avatar for " + email, e); + Logger.LogInfo ("Avatars", "Error fetching avatar for " + email, e); return null; } - WebClient client = new WebClient (); + var client = new WebClient (); string url = "https://gravatar.com/avatar/" + email.MD5 () + ".png?s=" + size + "&d=404"; try { @@ -87,11 +86,11 @@ namespace SparkleShare if (buffer.Length > 255) { if (!Directory.Exists (avatars_path)) { Directory.CreateDirectory (avatars_path); - SparkleLogger.LogInfo ("Avatars", "Created '" + avatars_path + "'"); + Logger.LogInfo ("Avatars", "Created '" + avatars_path + "'"); } File.WriteAllBytes (avatar_file_path, buffer); - SparkleLogger.LogInfo ("Avatars", "Fetched " + size + "x" + size + " avatar for " + email); + Logger.LogInfo ("Avatars", "Fetched " + size + "x" + size + " avatar for " + email); return avatar_file_path; @@ -100,7 +99,7 @@ namespace SparkleShare } } catch (Exception e) { - SparkleLogger.LogInfo ("Avatars", "Error fetching avatar for " + email, e); + Logger.LogInfo ("Avatars", "Error fetching avatar for " + email, e); skipped_avatars.Add (email); return null; @@ -121,7 +120,7 @@ namespace SparkleShare string gravatar_cert_fingerprint = "1264B3F00814C6077D3853238771EE67FB6321C9"; if (!certificate2.Thumbprint.Equals (gravatar_cert_fingerprint)) { - SparkleLogger.LogInfo ("Avatars", "Invalid certificate for https://www.gravatar.com/"); + Logger.LogInfo ("Avatars", "Invalid certificate for https://www.gravatar.com/"); return false; } diff --git a/SparkleShare/SparkleControllerBase.cs b/SparkleShare/Common/BaseController.cs index 2f7e95f..ddca2c2 100644 --- a/SparkleShare/SparkleControllerBase.cs +++ b/SparkleShare/Common/BaseController.cs @@ -1,5 +1,5 @@ // SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com> +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -21,13 +21,13 @@ using System.IO; using System.Linq; using System.Threading; -using SparkleLib; +using Sparkles; namespace SparkleShare { - public abstract class SparkleControllerBase { + public abstract class BaseController { - public SparkleRepoBase [] Repositories { + public BaseRepository [] Repositories { get { lock (this.repo_lock) return this.repositories.GetRange (0, this.repositories.Count).ToArray (); @@ -35,7 +35,7 @@ namespace SparkleShare { } - private void AddRepository (SparkleRepoBase repo) + void AddRepository (BaseRepository repo) { lock (this.repo_lock) { this.repositories.Add (repo); @@ -44,17 +44,17 @@ namespace SparkleShare { } - private void RemoveRepository (SparkleRepoBase repo) + void RemoveRepository (BaseRepository repo) { lock (this.repo_lock) this.repositories.Remove (repo); } - public SparkleRepoBase GetRepoByName (string name) + public BaseRepository GetRepoByName (string name) { lock (this.repo_lock) { - foreach (SparkleRepoBase repo in this.repositories) + foreach (BaseRepository repo in this.repositories) if (repo.Name.Equals (name)) return repo; } @@ -63,15 +63,16 @@ namespace SparkleShare { } - public SparkleConfig Config { get; private set; } + 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; - - + public double ProgressPercentage = 0.0; + public double ProgressSpeedUp = 0.0; + public double ProgressSpeedDown = 0.0; + public string ProgressInformation = ""; + + public event ShowSetupWindowEventHandler ShowSetupWindowEvent = delegate { }; public delegate void ShowSetupWindowEventHandler (PageType page_type); @@ -88,7 +89,7 @@ namespace SparkleShare { public delegate void FolderFetchErrorHandler (string remote_url, string [] errors); public event FolderFetchingHandler FolderFetching = delegate { }; - public delegate void FolderFetchingHandler (double percentage, double speed); + public delegate void FolderFetchingHandler (double percentage, double speed, string information); public event Action FolderListChanged = delegate { }; @@ -101,7 +102,7 @@ namespace SparkleShare { public delegate void InviteReceivedHandler (SparkleInvite invite); public event NotificationRaisedEventHandler NotificationRaised = delegate { }; - public delegate void NotificationRaisedEventHandler (SparkleChangeSet change_set); + public delegate void NotificationRaisedEventHandler (ChangeSet change_set); public event AlertNotificationRaisedEventHandler AlertNotificationRaised = delegate { }; public delegate void AlertNotificationRaisedEventHandler (string title, string message); @@ -117,12 +118,16 @@ namespace SparkleShare { return folders; } } - - public SparkleUser CurrentUser { + + + public User CurrentUser { get { return Config.User; } set { Config.User = value; } } - + + public SSHAuthenticationInfo UserAuthenticationInfo; + + public bool NotificationsEnabled { get { string notifications_enabled = Config.GetConfigOption ("notifications"); @@ -150,20 +155,19 @@ namespace SparkleShare { // Path where the plugins are kept - public abstract string PluginsPath { get; } + public abstract string PresetsPath { get; } // Enables SparkleShare to start automatically at login public abstract void CreateStartupItem (); - + // Installs the sparkleshare:// protocol handler public abstract void InstallProtocolHandler (); - - // Adds the SparkleShare folder to the user's - // list of bookmarked places - public abstract void AddToBookmarks (); - + + // Installs the sparkleshare:// protocol handler + public abstract void SetFolderIcon (); + // Creates the SparkleShare folder in the user's home folder - public abstract bool CreateSparkleShareFolder (); + public abstract void CreateSparkleShareFolder (); // Opens the SparkleShare folder or an (optional) subfolder public abstract void OpenFolder (string path); @@ -182,85 +186,53 @@ namespace SparkleShare { public abstract string EventEntryHTML { get; } - private SparkleFetcherBase fetcher; - private FileSystemWatcher watcher; - private Object repo_lock = new Object (); - private Object check_repos_lock = new Object (); - private List<SparkleRepoBase> repositories = new List<SparkleRepoBase> (); - private bool lost_folders_path = false; + 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 SparkleControllerBase () + public BaseController (Configuration config) { - - string app_data_path = Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData); - string config_path = Path.Combine (app_data_path, "sparkleshare"); - - Config = new SparkleConfig (config_path, "config.xml"); - SparkleConfig.DefaultConfig = Config; - FoldersPath = Config.FoldersPath; + Config = config; + FoldersPath = Config.FoldersPath; } public virtual void Initialize () { - SparkleLogger.LogInfo ("Environment", "SparkleShare version: " + SparkleLib.SparkleBackend.Version + - ", Operating system: " + SparkleLib.SparkleBackend.Platform + " (" + Environment.OSVersion + ")"); - - SparklePlugin.PluginsPath = PluginsPath; + string version = InstallationInfo.Version; + + if (InstallationInfo.Directory.StartsWith ("/app", StringComparison.InvariantCulture)) + 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 + ")"); + + UserAuthenticationInfo = new SSHAuthenticationInfo (); + SSHAuthenticationInfo.DefaultAuthenticationInfo = UserAuthenticationInfo; + + Preset.PresetsPath = PresetsPath; InstallProtocolHandler (); try { - if (CreateSparkleShareFolder ()) - AddToBookmarks (); - + CreateSparkleShareFolder (); + } catch (DirectoryNotFoundException) { this.lost_folders_path = true; } - - bool keys_imported = false; - - if (FirstRun) { - Config.SetConfigOption ("notifications", bool.TrueString); - } else { - string keys_path = Path.GetDirectoryName (Config.FullPath); - string key_file_path = ""; - - foreach (string file_path in Directory.GetFiles (keys_path)) { - string file_name = Path.GetFileName(file_path); - if (file_name.EndsWith (".key")) { - key_file_path = Path.Combine (keys_path, file_name); - - // Replace spaces with underscores in old keys - if (file_name.Contains (" ")) { - string new_file_name = file_name.Replace (" ", "_"); - File.Move (key_file_path, Path.Combine (keys_path, new_file_name)); - File.Move (key_file_path + ".pub", Path.Combine (keys_path, new_file_name + ".pub")); - key_file_path = Path.Combine (keys_path, new_file_name); - } - - SparkleKeys.ImportPrivateKey (key_file_path); - keys_imported = true; - - break; - } - } - - if (keys_imported) { - CurrentUser.PublicKey = File.ReadAllText (key_file_path + ".pub"); - - } else { - string [] key_pair = CreateKeys (); - - SparkleKeys.ImportPrivateKey (key_pair [0]); - CurrentUser.PublicKey = File.ReadAllText (key_pair [1]); - } - - SparkleKeys.ListPrivateKeys (); - FolderListChanged (); // FIXME: Hacky way to update status icon menu to show the key - } - + SetFolderIcon (); + // Watch the SparkleShare folder this.watcher = new FileSystemWatcher () { Filter = "*", @@ -269,14 +241,11 @@ namespace SparkleShare { }; watcher.Created += OnFolderActivity; - // FIXME watcher.Deleted += OnFolderActivity; - // FIXME watcher.Renamed += OnFolderActivity; - watcher.EnableRaisingEvents = true; } - private int reopen_attempt_counts = 0; + int reopen_attempt_counts = 0; public void HandleReopen () { @@ -286,17 +255,17 @@ namespace SparkleShare { } else if (reopen_attempt_counts > 1) { AlertNotificationRaised ("Hello!", "SparkleShare sits right here, as a status icon."); reopen_attempt_counts = 0; - + } else { reopen_attempt_counts++; } } - - + + public void UIHasLoaded () { if (this.lost_folders_path) { - Program.UI.Bubbles.Controller.ShowBubble ("Where's your SparkleShare folder?", + SparkleShare.UI.Bubbles.Controller.ShowBubble ("Where's your SparkleShare folder?", "Did you put it on a detached drive?", null); Environment.Exit (-1); @@ -305,16 +274,6 @@ namespace SparkleShare { if (FirstRun) { ShowSetupWindow (PageType.Setup); - new Thread (() => { - string [] key_pair = CreateKeys (); - - SparkleKeys.ImportPrivateKey (key_pair [0]); - CurrentUser.PublicKey = File.ReadAllText (key_pair [1]); - - FolderListChanged (); // FIXME: Hacky way to update status icon menu to show the key - - }).Start (); - } else { new Thread (() => { StartupInviteScan (); @@ -370,81 +329,80 @@ namespace SparkleShare { } - private void CheckRepositories () + void CheckRepositories () { lock (this.check_repos_lock) { - string path = Config.FoldersPath; - - // Detect any renames - foreach (string folder_path in Directory.GetDirectories (path)) { + DetectRepositoryRenames (); + RemoveDeletedRepositories (); + } + + FolderListChanged (); + } + + + void DetectRepositoryRenames () + { + foreach (string group_path in Directory.GetDirectories (Config.FoldersPath)) { + foreach (string folder_path in Directory.GetDirectories (group_path)) { string folder_name = Path.GetFileName (folder_path); - - if (folder_name.Equals (".tmp")) + + if (Config.IdentifierByName (folder_name) != null) continue; - - if (Config.GetIdentifierForFolder (folder_name) == null) { - string identifier_file_path = Path.Combine (folder_path, ".sparkleshare"); - - if (!File.Exists (identifier_file_path)) - continue; - - string identifier = File.ReadAllText (identifier_file_path).Trim (); - - if (Config.IdentifierExists (identifier)) { - RemoveRepository (GetRepoByName (folder_name)); - Config.RenameFolder (identifier, folder_name); - - string new_folder_path = Path.Combine (path, folder_name); - AddRepository (new_folder_path); - - SparkleLogger.LogInfo ("Controller", - "Renamed folder with identifier " + identifier + " to '" + folder_name + "'"); - } - } - } - - // Remove any deleted folders - foreach (string folder_name in Config.Folders) { - string folder_path = new SparkleFolder (folder_name).FullPath; - - if (!Directory.Exists (folder_path)) { - Config.RemoveFolder (folder_name); - RemoveRepository (GetRepoByName (folder_name)); - - SparkleLogger.LogInfo ("Controller", "Removed folder '" + folder_name + "' from config"); - - } else { - AddRepository (folder_path); - } + + string identifier_file_path = Path.Combine (folder_path, ".sparkleshare"); + + if (!File.Exists (identifier_file_path)) + continue; + + string identifier = File.ReadAllText (identifier_file_path).Trim (); + + if (!Config.IdentifierExists (identifier)) + continue; + + RemoveRepository (GetRepoByName (folder_name)); + Config.RenameFolder (identifier, folder_name); + + string new_folder_path = Path.Combine (group_path, folder_name); + AddRepository (new_folder_path); + + Logger.LogInfo ("Controller", + "Renamed folder with identifier " + identifier + " to '" + folder_name + "'"); } - - // Remove any duplicate folders - string previous_name = ""; - foreach (string folder_name in Config.Folders) { - if (!string.IsNullOrEmpty (previous_name) && folder_name.Equals (previous_name)) - Config.RemoveFolder (folder_name); - else - previous_name = folder_name; + } + } + + + void RemoveDeletedRepositories () + { + foreach (string folder_name in Config.Folders) { + string folder_path = new SparkleFolder (folder_name).FullPath; + + if (!Directory.Exists (folder_path)) { + Config.RemoveFolder (folder_name); + RemoveRepository (GetRepoByName (folder_name)); + + Logger.LogInfo ("Controller", "Removed folder '" + folder_name + "' from config"); + + } else { + AddRepository (folder_path); } - - FolderListChanged (); } } - - - private void AddRepository (string folder_path) + + + void AddRepository (string folder_path) { - SparkleRepoBase repo = null; - string folder_name = Path.GetFileName (folder_path); - string backend = Config.GetBackendForFolder (folder_name); + BaseRepository repo = null; + string folder_name = Path.GetFileName (folder_path); + string backend = Config.BackendByName (folder_name); try { - repo = (SparkleRepoBase) Activator.CreateInstance ( - Type.GetType ("SparkleLib." + backend + ".SparkleRepo, SparkleLib." + backend), - new object [] { folder_path, Config }); + repo = (BaseRepository) Activator.CreateInstance ( + Type.GetType ("Sparkles." + backend + "." + backend + "Repository, Sparkles." + backend), + new object [] { folder_path, Config, SSHAuthenticationInfo.DefaultAuthenticationInfo }); } catch (Exception e) { - SparkleLogger.LogInfo ("Controller", "Failed to load backend '" + backend + "' for '" + folder_name + "': ", e); + Logger.LogInfo ("Controller", "Failed to load backend '" + backend + "' for '" + folder_name + "': ", e); return; } @@ -454,23 +412,25 @@ namespace SparkleShare { repo.SyncStatusChanged += delegate (SyncStatus status) { if (status == SyncStatus.Idle) { - ProgressPercentage = 0.0; - ProgressSpeedUp = 0.0; - ProgressSpeedDown = 0.0; + ProgressPercentage = 0.0; + ProgressSpeedUp = 0.0; + ProgressSpeedDown = 0.0; + ProgressInformation = ""; } UpdateState (); }; repo.ProgressChanged += delegate { - ProgressPercentage = 0.0; - ProgressSpeedUp = 0.0; - ProgressSpeedDown = 0.0; + ProgressPercentage = 0.0; + ProgressSpeedUp = 0.0; + ProgressSpeedDown = 0.0; + ProgressInformation = ""; double percentage = 0.0; int repo_count = 0; - foreach (SparkleRepoBase rep in Repositories) { + foreach (BaseRepository rep in Repositories) { if (rep.ProgressPercentage > 0) { percentage += rep.ProgressPercentage; repo_count++; @@ -482,6 +442,9 @@ namespace SparkleShare { if (rep.Status == SyncStatus.SyncDown) ProgressSpeedDown += rep.ProgressSpeed; } + + if (repo_count == 1) + ProgressInformation = repo.ProgressInformation; if (repo_count > 0) ProgressPercentage = percentage / repo_count; @@ -489,57 +452,47 @@ namespace SparkleShare { UpdateState (); }; - repo.NewChangeSet += delegate (SparkleChangeSet change_set) { + repo.NewChangeSet += delegate (ChangeSet change_set) { if (AvatarsEnabled) - change_set.User.AvatarFilePath = SparkleAvatars.GetAvatar (change_set.User.Email, 48, Config.FullPath); + change_set.User.AvatarFilePath = Avatars.GetAvatar (change_set.User.Email, 48, Config.DirectoryPath); NotificationRaised (change_set); }; repo.ConflictResolved += delegate { - AlertNotificationRaised ("Resolved a file collision", - "Local and server versions were kept."); + AlertNotificationRaised ("Resolved a file collision", "Local and server versions were kept."); }; AddRepository (repo); repo.Initialize (); } - - private void OnFolderActivity (object o, FileSystemEventArgs args) + + void OnFolderActivity (object o, FileSystemEventArgs args) { if (args != null && args.FullPath.EndsWith (".xml") && args.ChangeType == WatcherChangeTypes.Created) { - + HandleInvite (args); return; - - }/* else { FIXME: on the fly folder removal doesn't always work. disabling for now - Thread.Sleep (1000); - - if (Directory.Exists (args.FullPath) && args.ChangeType == WatcherChangeTypes.Created) - return; - - CheckRepositories (); - }*/ + } } - private void StartupInviteScan () + void StartupInviteScan () { - foreach (string invite in Directory.GetFiles (FoldersPath, "*.xml")) { + foreach (string invite in Directory.GetFiles (FoldersPath, "*.xml")) HandleInvite (invite); - } } - private void HandleInvite (FileSystemEventArgs args) + void HandleInvite (FileSystemEventArgs args) { HandleInvite (args.FullPath); } - private void HandleInvite (string path) + void HandleInvite (string path) { if (this.fetcher != null && this.fetcher.IsActive) { @@ -572,12 +525,12 @@ namespace SparkleShare { // Fires events for the current syncing state - private void UpdateState () + void UpdateState () { bool has_unsynced_repos = false; bool has_syncing_repos = false; - foreach (SparkleRepoBase repo in Repositories) { + foreach (BaseRepository repo in Repositories) { if (repo.Status == SyncStatus.SyncDown || repo.Status == SyncStatus.SyncUp || repo.IsBuffering) { has_syncing_repos = true; break; @@ -595,31 +548,35 @@ namespace SparkleShare { OnIdle (); } - + + public List<StorageTypeInfo> FetcherAvailableStorageTypes { + get { + return this.fetcher.AvailableStorageTypes; + } + } + + public void StartFetcher (SparkleFetcherInfo info) { - string tmp_path = Config.TmpPath; - - if (!Directory.Exists (tmp_path)) { - Directory.CreateDirectory (tmp_path); - File.SetAttributes (tmp_path, File.GetAttributes (tmp_path) | FileAttributes.Hidden); - } - string canonical_name = Path.GetFileName (info.RemotePath); string backend = info.Backend; if (string.IsNullOrEmpty (backend)) - backend = SparkleFetcherBase.GetBackend (info.Address); + backend = BaseFetcher.GetBackend (info.Address); - info.TargetDirectory = Path.Combine (tmp_path, canonical_name); + info.TargetDirectory = Path.Combine (Config.TmpPath, canonical_name); + + if (Directory.Exists (info.TargetDirectory)) + Directory.Delete (info.TargetDirectory, true); try { - this.fetcher = (SparkleFetcherBase) Activator.CreateInstance ( - Type.GetType ("SparkleLib." + backend + ".SparkleFetcher, SparkleLib." + backend), info); + this.fetcher = (BaseFetcher) Activator.CreateInstance ( + Type.GetType ("Sparkles." + backend + "." + backend + "Fetcher, Sparkles." + backend), + new object [] { info, UserAuthenticationInfo}); } catch (Exception e) { - SparkleLogger.LogInfo ("Controller", - "Failed to load '" + backend + "' backend for '" + canonical_name + "' " + e.Message); + 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 + "\""}); @@ -627,31 +584,43 @@ namespace SparkleShare { return; } - this.fetcher.Finished += delegate (bool repo_is_encrypted, bool repo_is_empty, string [] warnings) { - if (repo_is_encrypted && repo_is_empty) { - ShowSetupWindowEvent (PageType.CryptoSetup); - - } else if (repo_is_encrypted) { - ShowSetupWindowEvent (PageType.CryptoPassword); - - } else { - FinishFetcher (); - } - }; - - this.fetcher.Failed += delegate { - FolderFetchError (this.fetcher.RemoteUrl.ToString (), this.fetcher.Errors); - StopFetcher (); - }; - - this.fetcher.ProgressChanged += delegate (double percentage, double speed) { - FolderFetching (percentage, speed); - }; - + this.fetcher.Finished += FetcherFinishedDelegate; + this.fetcher.Failed += FetcherFailedDelegate; + this.fetcher.ProgressChanged += FetcherProgressChangedDelgate; + this.fetcher.Start (); } - - + + + void FetcherFinishedDelegate (StorageType storage_type, string [] warnings) + { + if (storage_type == StorageType.Unknown) { + ShowSetupWindow (PageType.StorageSetup); + return; + } + + if (storage_type == StorageType.Encrypted) { + ShowSetupWindowEvent (PageType.CryptoPassword); + return; + } + + FinishFetcher (storage_type); + } + + + void FetcherFailedDelegate () + { + FolderFetchError (this.fetcher.RemoteUrl.ToString (), this.fetcher.Errors); + StopFetcher (); + } + + + void FetcherProgressChangedDelgate (double percentage, double speed, string information) + { + FolderFetching (percentage, speed, information); + } + + public void StopFetcher () { this.fetcher.Stop (); @@ -666,60 +635,36 @@ namespace SparkleShare { { return this.fetcher.IsFetchedRepoPasswordCorrect (password); } - - - public void FinishFetcher (string password) + + + public void FinishFetcher (StorageType selected_storage_type, string password) { this.fetcher.EnableFetchedRepoCrypto (password); - FinishFetcher (); - } + 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 () + public void FinishFetcher (StorageType selected_storage_type) { this.watcher.EnableRaisingEvents = false; - - this.fetcher.Complete (); - string canonical_name = Path.GetFileName (this.fetcher.RemoteUrl.AbsolutePath); - - if (canonical_name.EndsWith (".git")) - canonical_name = canonical_name.Replace (".git", ""); - - canonical_name = canonical_name.Replace ("-crypto", ""); - canonical_name = canonical_name.ReplaceUnderscoreWithSpace (); - canonical_name = canonical_name.Replace ("%20", " "); - - bool target_folder_exists = Directory.Exists ( - Path.Combine (Config.FoldersPath, canonical_name)); - - // Add a numbered suffix to the name if a folder with the same name - // already exists. Example: "Folder (2)" - int suffix = 1; - while (target_folder_exists) { - suffix++; - target_folder_exists = Directory.Exists ( - Path.Combine (Config.FoldersPath, canonical_name + " (" + suffix + ")")); - } - - string target_folder_name = canonical_name; - - if (suffix > 1) - target_folder_name += " (" + suffix + ")"; - - string target_folder_path = Path.Combine (Config.FoldersPath, target_folder_name); - + string identifier = this.fetcher.Complete (selected_storage_type); + + string target_folder_path = DetermineFolderPath (); + string target_folder_name = Path.GetFileName (target_folder_path); + try { Directory.Move (this.fetcher.TargetFolder, target_folder_path); } catch (Exception e) { - SparkleLogger.LogInfo ("Controller", "Error moving directory, trying again...", 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) { - SparkleLogger.LogInfo ("Controller", "Error moving directory", x); + Logger.LogInfo ("Controller", "Error moving directory", x); this.fetcher.Dispose (); this.fetcher = null; @@ -727,70 +672,77 @@ namespace SparkleShare { return; } } + + string backend = BaseFetcher.GetBackend (this.fetcher.RemoteUrl.ToString ()); - string backend = SparkleFetcherBase.GetBackend (this.fetcher.RemoteUrl.ToString ()); - - Config.AddFolder (target_folder_name, this.fetcher.Identifier, - this.fetcher.RemoteUrl.ToString (), backend); - + Config.AddFolder (target_folder_name, identifier, this.fetcher.RemoteUrl.ToString (), backend); + + if (this.fetcher.FetchedRepoStorageType != StorageType.Plain) { + Config.SetFolderOptionalAttribute (target_folder_name, + "storage_type", this.fetcher.FetchedRepoStorageType.ToString ()); + } + if (this.fetcher.OriginalFetcherInfo.AnnouncementsUrl != null) { Config.SetFolderOptionalAttribute (target_folder_name, "announcements_url", - this.fetcher.OriginalFetcherInfo.AnnouncementsUrl); + this.fetcher.OriginalFetcherInfo.AnnouncementsUrl); } - - RepositoriesLoaded = true; - FolderFetched (this.fetcher.RemoteUrl.ToString (), this.fetcher.Warnings.ToArray ()); - + AddRepository (target_folder_path); + RepositoriesLoaded = true; + FolderListChanged (); + FolderFetched (this.fetcher.RemoteUrl.ToString (), this.fetcher.Warnings.ToArray ()); this.fetcher.Dispose (); this.fetcher = null; this.watcher.EnableRaisingEvents = true; } + + + string DetermineFolderPath () + { + string folder_name = this.fetcher.FormatName (); + string folder_group_path = Path.Combine (Config.FoldersPath, this.fetcher.RemoteUrl.Host); + string folder_path = Path.Combine (Config.FoldersPath, folder_group_path, folder_name); + + if (!Directory.Exists (folder_path)) { + if (!Directory.Exists (folder_group_path)) + Directory.CreateDirectory (folder_group_path); + + return folder_path; + } + + // Add a number suffix when needed, e.g. "Folder (3)" + int suffix = 2 + Directory.GetDirectories (folder_group_path, folder_name + " (*").Length; + return string.Format ("{0} ({1})", folder_path, suffix); + } public virtual void Quit () { - foreach (SparkleRepoBase repo in Repositories) + foreach (BaseRepository repo in Repositories) repo.Dispose (); Environment.Exit (0); } - - - private void ClearDirectoryAttributes (string path) + + + void ClearDirectoryAttributes (string path) { if (!Directory.Exists (path)) return; - + string [] folders = Directory.GetDirectories (path); - + foreach (string folder in folders) ClearDirectoryAttributes (folder); - - string [] files = Directory.GetFiles(path); - + + string [] files = Directory.GetFiles (path); + foreach (string file in files) - if (!IsSymlink (file)) + if (file.IsSymlink ()) File.SetAttributes (file, FileAttributes.Normal); } - - - private string [] CreateKeys () - { - string keys_path = Path.GetDirectoryName (SparkleConfig.DefaultConfig.FullPath); - string key_file_name = DateTime.Now.ToString ("yyyy-MM-dd_HH\\hmm"); - - return SparkleKeys.GenerateKeyPair (keys_path, key_file_name); - } - - - private bool IsSymlink (string file) - { - FileAttributes attributes = File.GetAttributes (file); - return ((attributes & FileAttributes.ReparsePoint) == FileAttributes.ReparsePoint); - } } } diff --git a/SparkleShare/SparkleBubblesController.cs b/SparkleShare/Common/BubblesController.cs index b3eca17..8fba4a4 100755..100644 --- a/SparkleShare/SparkleBubblesController.cs +++ b/SparkleShare/Common/BubblesController.cs @@ -1,5 +1,5 @@ // SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com> +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -15,26 +15,24 @@ // along with this program. If not, see <http://www.gnu.org/licenses/>. -using System; using System.Text; - -using SparkleLib; +using Sparkles; namespace SparkleShare { - public class SparkleBubblesController { + public class BubblesController { public event ShowBubbleEventHandler ShowBubbleEvent = delegate { }; public delegate void ShowBubbleEventHandler (string title, string subtext, string image_path); - public SparkleBubblesController () + public BubblesController () { - Program.Controller.AlertNotificationRaised += delegate (string title, string message) { + SparkleShare.Controller.AlertNotificationRaised += delegate (string title, string message) { ShowBubble (title, message, null); }; - Program.Controller.NotificationRaised += delegate (SparkleChangeSet change_set) { + SparkleShare.Controller.NotificationRaised += delegate (ChangeSet change_set) { ShowBubble (change_set.User.Name, change_set.ToMessage (), change_set.User.AvatarFilePath); }; } @@ -53,7 +51,7 @@ namespace SparkleShare { public void BubbleClicked () { - Program.Controller.ShowEventLogWindow (); + SparkleShare.Controller.ShowEventLogWindow (); } } } diff --git a/SparkleShare/SparkleEventLogController.cs b/SparkleShare/Common/EventLogController.cs index fea2e65..78831af 100755..100644 --- a/SparkleShare/SparkleEventLogController.cs +++ b/SparkleShare/Common/EventLogController.cs @@ -1,5 +1,5 @@ // SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com> +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -24,11 +24,11 @@ using System.Text; using System.Text.RegularExpressions; using System.Threading; -using SparkleLib; +using Sparkles; namespace SparkleShare { - public class SparkleEventLogController { + public class EventLogController { public event Action ShowWindowEvent = delegate { }; public event Action HideWindowEvent = delegate { }; @@ -84,7 +84,7 @@ namespace SparkleShare { public string HTML { get { - List<SparkleChangeSet> change_sets = GetLog (this.selected_folder); + List<ChangeSet> change_sets = GetLog (this.selected_folder); string html = GetHTMLLog (change_sets); return html; @@ -93,7 +93,7 @@ namespace SparkleShare { public string [] Folders { get { - return Program.Controller.Folders.ToArray (); + return SparkleShare.Controller.Folders.ToArray (); } } @@ -101,7 +101,7 @@ namespace SparkleShare { get { double size = 0; - foreach (SparkleRepoBase repo in Program.Controller.Repositories) { + foreach (BaseRepository repo in SparkleShare.Controller.Repositories) { if (this.selected_folder == null) { size += repo.Size; @@ -124,7 +124,7 @@ namespace SparkleShare { get { double size = 0; - foreach (SparkleRepoBase repo in Program.Controller.Repositories) { + foreach (BaseRepository repo in SparkleShare.Controller.Repositories) { if (this.selected_folder == null) { size += repo.HistorySize; @@ -144,9 +144,9 @@ namespace SparkleShare { } - public SparkleEventLogController () + public EventLogController () { - Program.Controller.ShowEventLogWindowEvent += delegate { + SparkleShare.Controller.ShowEventLogWindowEvent += delegate { if (!WindowIsOpen) { ContentLoadingEvent (); UpdateSizeInfoEvent ("…", "…"); @@ -173,7 +173,7 @@ namespace SparkleShare { ShowWindowEvent (); }; - Program.Controller.OnIdle += delegate { + SparkleShare.Controller.OnIdle += delegate { if (this.history_view_active) return; @@ -190,8 +190,8 @@ namespace SparkleShare { UpdateSizeInfoEvent (Size, HistorySize); }; - Program.Controller.FolderListChanged += delegate { - if (this.selected_folder != null && !Program.Controller.Folders.Contains (this.selected_folder)) + SparkleShare.Controller.FolderListChanged += delegate { + if (this.selected_folder != null && !SparkleShare.Controller.Folders.Contains (this.selected_folder)) this.selected_folder = null; UpdateChooserEvent (Folders); @@ -208,19 +208,19 @@ namespace SparkleShare { } - public void LinkClicked (string url) + public void LinkClicked (string href) { - if (url.StartsWith ("about:") || string.IsNullOrEmpty (url)) + if (string.IsNullOrEmpty (href) || href.StartsWith ("about:")) return; - url = url.Replace ("%20", " "); + href = href.Replace ("%20", " "); - if (url.StartsWith ("http")) { - Program.Controller.OpenWebsite (url); + if (href.StartsWith ("http")) { + SparkleShare.Controller.OpenWebsite (href); - } else if (url.StartsWith ("restore://") && this.restore_revision_info == null) { + } 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 (url); + Match match = regex.Match (href); if (match.Success) { string author_name = match.Groups [3].Value; @@ -241,34 +241,34 @@ namespace SparkleShare { ShowSaveDialogEvent (file_name, target_folder_path); } - } else if (url.StartsWith ("back://")) { + } else if (href.StartsWith ("back://")) { this.history_view_active = false; SelectedFolder = this.selected_folder; // TODO: Return to the same position on the page UpdateChooserEnablementEvent (true); - } else if (url.StartsWith ("history://")) { + } else if (href.StartsWith ("history://")) { this.history_view_active = true; ContentLoadingEvent (); UpdateSizeInfoEvent ("…", "…"); UpdateChooserEnablementEvent (false); - string folder = url.Replace ("history://", "").Split ("/".ToCharArray ()) [0]; - string file_path = url.Replace ("history://" + folder + "/", ""); + 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); file_path = Uri.UnescapeDataString (file_path); - foreach (SparkleRepoBase repo in Program.Controller.Repositories) { + foreach (BaseRepository repo in SparkleShare.Controller.Repositories) { if (!repo.Name.Equals (folder)) continue; new Thread (() => { SparkleDelay delay = new SparkleDelay (); - List<SparkleChangeSet> change_sets = repo.GetChangeSets (file_path); + List<ChangeSet> change_sets = repo.GetChangeSets (file_path); string html = GetHistoryHTMLLog (change_sets, file_path); delay.Stop (); @@ -281,14 +281,17 @@ namespace SparkleShare { } } else { - Program.Controller.OpenFile (url); + if (href.StartsWith ("file:///")) + href = href.Substring (7); + + SparkleShare.Controller.OpenFile (href); } } public void SaveDialogCompleted (string target_file_path) { - foreach (SparkleRepoBase repo in Program.Controller.Repositories) { + foreach (BaseRepository repo in SparkleShare.Controller.Repositories) { if (repo.Name.Equals (this.restore_revision_info.Folder.Name)) { repo.RestoreFile (this.restore_revision_info.FilePath, this.restore_revision_info.Revision, target_file_path); @@ -298,7 +301,7 @@ namespace SparkleShare { } this.restore_revision_info = null; - Program.Controller.OpenFolder (Path.GetDirectoryName (target_file_path)); + SparkleShare.Controller.OpenFolder (Path.GetDirectoryName (target_file_path)); } @@ -308,17 +311,17 @@ namespace SparkleShare { } - private List<SparkleChangeSet> GetLog () + private List<ChangeSet> GetLog () { - List<SparkleChangeSet> list = new List<SparkleChangeSet> (); + List<ChangeSet> list = new List<ChangeSet> (); - foreach (SparkleRepoBase repo in Program.Controller.Repositories) { - List<SparkleChangeSet> change_sets = repo.ChangeSets; + foreach (BaseRepository repo in SparkleShare.Controller.Repositories) { + List<ChangeSet> change_sets = repo.ChangeSets; if (change_sets != null) list.AddRange (change_sets); else - SparkleLogger.LogInfo ("Log", "Could not create log for " + repo.Name); + Logger.LogInfo ("Log", "Could not create log for " + repo.Name); } list.Sort ((x, y) => (x.Timestamp.CompareTo (y.Timestamp))); @@ -331,14 +334,14 @@ namespace SparkleShare { } - private List<SparkleChangeSet> GetLog (string name) + private List<ChangeSet> GetLog (string name) { if (name == null) return GetLog (); - foreach (SparkleRepoBase repo in Program.Controller.Repositories) { + foreach (BaseRepository repo in SparkleShare.Controller.Repositories) { if (repo.Name.Equals (name)) { - List<SparkleChangeSet> change_sets = repo.ChangeSets; + List<ChangeSet> change_sets = repo.ChangeSets; if (change_sets != null) return change_sets; @@ -347,11 +350,11 @@ namespace SparkleShare { } } - return new List<SparkleChangeSet> (); + return new List<ChangeSet> (); } - public string GetHistoryHTMLLog (List<SparkleChangeSet> change_sets, string file_path) + public string GetHistoryHTMLLog (List<ChangeSet> change_sets, string file_path) { string html = "<div class='history-header'>" + "<a class='windows' href='back://'>« Back</a> | "; @@ -367,7 +370,7 @@ namespace SparkleShare { if (change_sets.Count > 0) change_sets.RemoveAt (0); - foreach (SparkleChangeSet change_set in change_sets) { + foreach (ChangeSet change_set in change_sets) { html += "<tr>" + "<td class='avatar'><img src='" + GetAvatarFilePath (change_set.User) + "'></td>" + "<td class='name'>" + change_set.User.Name + "</td>" + @@ -385,16 +388,16 @@ namespace SparkleShare { } html += "</table></div>"; - html = Program.Controller.EventLogHTML.Replace ("<!-- $event-log-content -->", html); + html = SparkleShare.Controller.EventLogHTML.Replace ("<!-- $event-log-content -->", html); return html.Replace ("<!-- $midnight -->", "100000000"); } - public string GetHTMLLog (List<SparkleChangeSet> change_sets) + public string GetHTMLLog (List<ChangeSet> change_sets) { if (change_sets == null || change_sets.Count == 0) - return Program.Controller.EventLogHTML.Replace ("<!-- $event-log-content -->", + return SparkleShare.Controller.EventLogHTML.Replace ("<!-- $event-log-content -->", "<div class='day-entry'><div class='day-entry-header'>This project does not keep a history.</div></div>"); List <ActivityDay> activity_days = new List <ActivityDay> (); @@ -402,7 +405,7 @@ namespace SparkleShare { change_sets.Sort ((x, y) => (x.Timestamp.CompareTo (y.Timestamp))); change_sets.Reverse (); - foreach (SparkleChangeSet change_set in change_sets) { + foreach (ChangeSet change_set in change_sets) { bool change_set_inserted = false; foreach (ActivityDay stored_activity_day in activity_days) { @@ -424,19 +427,19 @@ namespace SparkleShare { } } - string event_log_html = Program.Controller.EventLogHTML; - string day_entry_html = Program.Controller.DayEntryHTML; - string event_entry_html = Program.Controller.EventEntryHTML; + string event_log_html = SparkleShare.Controller.EventLogHTML; + string day_entry_html = SparkleShare.Controller.DayEntryHTML; + string event_entry_html = SparkleShare.Controller.EventEntryHTML; string event_log = ""; foreach (ActivityDay activity_day in activity_days) { string event_entries = ""; - foreach (SparkleChangeSet change_set in activity_day) { + foreach (ChangeSet change_set in activity_day) { string event_entry = "<dl>"; - foreach (SparkleChange change in change_set.Changes) { - if (change.Type != SparkleChangeType.Moved) { + foreach (Change change in change_set.Changes) { + if (change.Type != ChangeType.Moved) { event_entry += "<dd class='" + change.Type.ToString ().ToLower () + "'>"; if (!change.IsFolder) { @@ -590,12 +593,12 @@ namespace SparkleShare { } - private string GetAvatarFilePath (SparkleUser user) + private string GetAvatarFilePath (User user) { - if (!Program.Controller.AvatarsEnabled) + if (!SparkleShare.Controller.AvatarsEnabled) return "<!-- $pixmaps-path -->/user-icon-default.png"; - string fetched_avatar = SparkleAvatars.GetAvatar (user.Email, 48, Program.Controller.Config.FullPath); + string fetched_avatar = Avatars.GetAvatar (user.Email, 48, SparkleShare.Controller.Config.DirectoryPath); if (!string.IsNullOrEmpty (fetched_avatar)) return "file://" + fetched_avatar.Replace ("\\", "/"); @@ -605,7 +608,7 @@ namespace SparkleShare { // All change sets that happened on a day - private class ActivityDay : List<SparkleChangeSet> + private class ActivityDay : List<ChangeSet> { public DateTime Date; diff --git a/SparkleShare/Common/HTML/event-log.html b/SparkleShare/Common/HTML/event-log.html index cbc5b3a..3e6d9f5 100755 --- a/SparkleShare/Common/HTML/event-log.html +++ b/SparkleShare/Common/HTML/event-log.html @@ -55,7 +55,7 @@ background-color: #fefefe; color: <!-- $body-color -->; font-size: <!-- $body-font-size -->; - font-family: "<!-- $body-font-family -->"; + font-family: -apple-system, "<!-- $body-font-family -->"; margin: 0; -webkit-user-select: none; overflow-x: hidden; diff --git a/SparkleShare/Common/Pixmaps/Makefile.am b/SparkleShare/Common/Images/Makefile.am index 825b196..825b196 100644 --- a/SparkleShare/Common/Pixmaps/Makefile.am +++ b/SparkleShare/Common/Images/Makefile.am diff --git a/SparkleShare/Common/Pixmaps/Sources/about-dialog.svg b/SparkleShare/Common/Images/Sources/about-dialog.svg index c07d454..2a86205 100644 --- a/SparkleShare/Common/Pixmaps/Sources/about-dialog.svg +++ b/SparkleShare/Common/Images/Sources/about-dialog.svg @@ -2114,7 +2114,7 @@ id="g101011" transform="translate(-65.909,-78.641)" clip-path="url(#clipPath4254)" - inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Common/Pixmaps/about@2x.png" + inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Common/Images/about@2x.png" inkscape:export-xdpi="180" inkscape:export-ydpi="180"> <rect diff --git a/SparkleShare/Common/Pixmaps/Sources/actions.svg b/SparkleShare/Common/Images/Sources/actions.svg index c3d028d..c3d028d 100644 --- a/SparkleShare/Common/Pixmaps/Sources/actions.svg +++ b/SparkleShare/Common/Images/Sources/actions.svg diff --git a/SparkleShare/Common/Images/Sources/app-icons.svg b/SparkleShare/Common/Images/Sources/app-icons.svg new file mode 100644 index 0000000..2dcc19e --- /dev/null +++ b/SparkleShare/Common/Images/Sources/app-icons.svg @@ -0,0 +1,1550 @@ +<?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" + inkscape:export-ydpi="96" + inkscape:export-xdpi="96" + inkscape:export-filename="Template.png" + width="680" + height="560" + id="svg11300" + sodipodi:version="0.32" + inkscape:version="0.92pre2 r" + sodipodi:docname="app-icons.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + version="1.0" + style="display:inline;enable-background:new" + viewBox="0 0 680 560"> + <title + id="title4162">Sparkleshare Linux Icon</title> + <defs + id="defs3"> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath7991"> + <path + d="m 76,-180 c -12,0 -12,12 -12,12 v 276 h 416 v -228 c 0,0 0,-12 -12,-12 H 280 c -3.5093,0 -9.09146,-0.51692 -13.46022,-5.3383 l -33.91554,-37.42936 C 228.8957,-178.88249 223.86532,-180 220,-180 Z" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.03651488;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="path7993" + sodipodi:nodetypes="cccccccsscc" + inkscape:connector-curvature="0" /> + </clipPath> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4908" + id="linearGradient6985" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(11.124296,0,0,10.602774,83.30186,-98.32982)" + x1="17.68185" + y1="-1.666562" + x2="17.68185" + y2="24.295708" /> + <linearGradient + id="linearGradient10374"> + <stop + style="stop-color:#c3b08d;stop-opacity:1" + offset="0" + id="stop10376" /> + <stop + style="stop-color:#9f8865;stop-opacity:1;" + offset="1" + id="stop10378" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6123" + id="radialGradient6987" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(3.3548387,0,0,0.5,-543.96775,-426.5)" + cx="243.81731" + cy="537.00006" + fx="243.81731" + fy="537.00006" + r="208" /> + <linearGradient + inkscape:collect="always" + id="linearGradient6123"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop6125" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop6127" /> + </linearGradient> + <filter + inkscape:collect="always" + style="color-interpolation-filters:sRGB" + id="filter10257" + x="-0.0081230765" + width="1.0162462" + y="-0.011733333" + height="1.0234667"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="1.408" + id="feGaussianBlur10259" /> + </filter> + <filter + inkscape:collect="always" + style="color-interpolation-filters:sRGB" + id="filter8182" + x="-0.07674107" + width="1.1534821" + y="-0.10879747" + height="1.2175949"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="14.325" + id="feGaussianBlur8184" /> + </filter> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6123" + id="radialGradient8695" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.2645115,0,0,0.63225606,-723.01371,-20.409786)" + cx="571.18335" + cy="-56.290825" + fx="571.18335" + fy="-56.290825" + r="8.0071211" /> + <filter + inkscape:collect="always" + style="color-interpolation-filters:sRGB" + id="filter5792" + x="-0.033333331" + width="1.0666667" + y="-0.30000001" + height="1.6"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="0.25" + id="feGaussianBlur5794" /> + </filter> + <filter + inkscape:collect="always" + style="color-interpolation-filters:sRGB" + id="filter5788" + x="-0.071999997" + width="1.1440001" + y="-0.36000001" + height="1.72"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="0.6" + id="feGaussianBlur5790" /> + </filter> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4989" + id="linearGradient8478" + gradientUnits="userSpaceOnUse" + x1="571.99951" + y1="-52.967789" + x2="572" + y2="-41.002605" + gradientTransform="rotate(180,571.99977,-46.00031)" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6123" + id="linearGradient8474" + gradientUnits="userSpaceOnUse" + x1="571.99585" + y1="-41.306217" + x2="571.99585" + y2="-48.6875" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6123" + id="radialGradient8472" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.9166362,0,0,0.49961033,-524.31592,-25.101494)" + cx="570.82074" + cy="-51.432213" + fx="570.82074" + fy="-51.432213" + r="9.0071211" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4989" + id="linearGradient8424" + gradientUnits="userSpaceOnUse" + x1="572" + y1="-7.9671698" + x2="572" + y2="2.1187184" + gradientTransform="rotate(180,568,-2.5)" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6123" + id="linearGradient8368" + gradientUnits="userSpaceOnUse" + x1="568.01355" + y1="2.2283287" + x2="568.01355" + y2="-4.9999499" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6123" + id="radialGradient8496" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.8345188,0,0,0.64220385,-1042.8817,-2.3256749)" + cx="566.83136" + cy="-6.5" + fx="566.83136" + fy="-6.5" + r="7.0071211" /> + <filter + inkscape:collect="always" + style="color-interpolation-filters:sRGB" + id="filter6151" + x="-0.064168461" + width="1.1283369" + y="-0.92362803" + height="2.8472559"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="1.1229481" + id="feGaussianBlur6153" /> + </filter> + <filter + inkscape:collect="always" + style="color-interpolation-filters:sRGB" + id="filter6145" + x="-0.03208423" + width="1.0641685" + y="-0.46181399" + height="1.923628"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="0.56147404" + id="feGaussianBlur6147" /> + </filter> + <filter + inkscape:collect="always" + style="color-interpolation-filters:sRGB" + id="filter10890-6" + x="-0.044054188" + width="1.0881084" + y="-3.1619647" + height="7.3239293"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="3.6804669" + id="feGaussianBlur10892-2" /> + </filter> + <filter + inkscape:collect="always" + style="color-interpolation-filters:sRGB" + id="filter10886-3" + x="-0.030818185" + width="1.0616364" + y="-1.1299965" + height="3.2599931"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="5.6500005" + id="feGaussianBlur10888-5" /> + </filter> + <filter + inkscape:collect="always" + style="color-interpolation-filters:sRGB" + id="filter8424" + x="-0.012330275" + width="1.0246606" + y="-0.44800001" + height="1.896"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="2.24" + id="feGaussianBlur8426" /> + </filter> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath6228"> + <path + inkscape:connector-curvature="0" + inkscape:r_cy="true" + inkscape:r_cx="true" + sodipodi:nodetypes="czzszcccccccc" + id="path6230" + d="m 60,-20 h 109.44278 c 8.64132,-0.004 11.2047,-2.65758 15.16748,-8.5786 l 15.2868,-23.63318 C 203.16772,-57.26818 208.28276,-68 214.91244,-68 H 484 c 12,0 12,12 12,12 l -4,292 c 0,0 0,12 -12,12 H 64 C 52,248 52,236 52,236 L 48,-8 c 0,0 0,-12 12,-12 z" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#3c3222;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new" /> + </clipPath> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4989" + id="linearGradient6977" + gradientUnits="userSpaceOnUse" + x1="280" + y1="-71.967171" + x2="279.83273" + y2="247" + gradientTransform="rotate(180,272,90)" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6123" + id="radialGradient6979" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.0535714,0,0,0.47651455,-217.03571,57.541517)" + cx="206" + cy="-229.88074" + fx="206" + fy="-229.88074" + r="224" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6123" + id="radialGradient6981" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.5241546,0,0,0.01570048,-142.04589,238.13889)" + cx="271" + cy="230" + fx="271" + fy="230" + r="207" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7187" + id="linearGradient6983" + gradientUnits="userSpaceOnUse" + x1="272" + y1="241.88329" + x2="272" + y2="129.81732" /> + <linearGradient + inkscape:collect="always" + id="linearGradient7187"> + <stop + style="stop-color:#3c3222;stop-opacity:1;" + offset="0" + id="stop7189" /> + <stop + style="stop-color:#3c3222;stop-opacity:0.42" + offset="1" + id="stop7191" /> + </linearGradient> + <filter + inkscape:collect="always" + style="color-interpolation-filters:sRGB" + id="filter8589" + x="-0.0061392859" + width="1.0122786" + y="-0.0087037971" + height="1.0174077"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="1.146" + id="feGaussianBlur8591" /> + </filter> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4989" + id="linearGradient8642" + gradientUnits="userSpaceOnUse" + x1="584.00269" + y1="-182.95795" + x2="584" + y2="-153.58839" + gradientTransform="rotate(180,584.00135,-167.49539)" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6123" + id="radialGradient10236" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.468749,-8.0634377e-6,1.0479505e-6,0.32084663,-853.81494,-121.58576)" + cx="580.32037" + cy="-180.78497" + fx="580.32037" + fy="-180.78497" + r="21.00712" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6123" + id="linearGradient10532" + gradientUnits="userSpaceOnUse" + x1="584.00134" + y1="-154.06042" + x2="584.00134" + y2="-166.61157" /> + <filter + inkscape:collect="always" + style="color-interpolation-filters:sRGB" + id="filter5976" + x="-0.036806535" + width="1.073613" + y="-0.3929815" + height="1.7859631"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="3.5206773" + id="feGaussianBlur5978" /> + </filter> + <filter + inkscape:collect="always" + style="color-interpolation-filters:sRGB" + id="filter5970" + x="-0.07361307" + width="1.1472261" + y="-0.785963" + height="2.5719261"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="7.0413547" + id="feGaussianBlur5972" /> + </filter> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6123" + id="radialGradient8666" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.6615112,0,0,0.55258593,-958.7489,-50.110375)" + cx="574.15649" + cy="-111.88689" + fx="574.15649" + fy="-111.88689" + r="13.007121" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4989" + id="linearGradient8668" + gradientUnits="userSpaceOnUse" + x1="583.99243" + y1="-106.97181" + x2="584" + y2="-87.771248" + gradientTransform="rotate(180,575.99621,-97.002319)" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6123" + id="linearGradient8670" + gradientUnits="userSpaceOnUse" + x1="575.99933" + y1="-88.556061" + x2="575.99933" + y2="-103.51257" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6123" + id="radialGradient8672" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.2052612,0,0,0.31488063,-694.25534,-71.937552)" + cx="574.1369" + cy="-105.28072" + fx="574.1369" + fy="-105.28072" + r="14.007121" /> + <linearGradient + id="linearGradient8666"> + <stop + id="stop8662" + offset="0" + style="stop-color:#c3ac8b;stop-opacity:1" /> + <stop + id="stop8664" + offset="1" + style="stop-color:#c8b294;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient11723" + y2="18.848" + xlink:href="#linearGradient4908" + gradientUnits="userSpaceOnUse" + y1="30.385" + gradientTransform="matrix(-0.3089,0,0,-0.27375,638.05886,-3.4813)" + x2="24.865999" + x1="24.865999" /> + <linearGradient + id="linearGradient4908"> + <stop + offset="0" + stop-color="#f57900" + id="stop4912" /> + <stop + offset="1" + stop-color="#ce5c00" + id="stop4910" /> + </linearGradient> + <linearGradient + id="linearGradient11725" + y2="221.38" + xlink:href="#linearGradient11481" + gradientUnits="userSpaceOnUse" + y1="232.34" + gradientTransform="rotate(-180,469.99942,106.99934)" + x2="315.29001" + x1="315.04999" /> + <linearGradient + id="linearGradient11481"> + <stop + offset="0" + stop-color="#ce5c00" + id="stop11485" /> + <stop + offset="1" + stop-color="#a04600" + id="stop11483" /> + </linearGradient> + <radialGradient + id="radialGradient11727" + gradientUnits="userSpaceOnUse" + xlink:href="#linearGradient6123" + cx="306.10001" + cy="179.00999" + r="8.6093998" + gradientTransform="matrix(-2.5489,0,0,-0.5173,1416.4088,85.9487)" /> + <linearGradient + id="linearGradient11729" + y2="-3.1078067" + xlink:href="#linearGradient4989" + gradientUnits="userSpaceOnUse" + y1="50.896999" + gradientTransform="matrix(-0.28968,0,0,-0.1769,638.12886,-9.0413)" + x2="25.188" + x1="25.188" /> + <linearGradient + id="linearGradient4989"> + <stop + id="stop4991" + stop-color="#f57900" + offset="0" /> + <stop + id="stop4993" + stop-color="#fcaf3e" + offset="0.06758628" /> + <stop + id="stop4995" + stop-color="#fcaf3e" + offset="0.19854175" /> + <stop + id="stop4997" + stop-color="#f57900" + offset="1" /> + </linearGradient> + <linearGradient + id="linearGradient11731" + y2="223.67999" + xlink:href="#linearGradient11481" + gradientUnits="userSpaceOnUse" + y1="233.24001" + x2="314.47" + x1="314.48999" + gradientTransform="rotate(-180,469.99942,107.49934)" /> + <linearGradient + id="linearGradient11733" + y2="208.75" + gradientUnits="userSpaceOnUse" + y1="184.62" + x2="320.56" + x1="312.44" + gradientTransform="rotate(-180,470.49942,87.499345)"> + <stop + id="stop4631" + stop-color="#fff" + offset="0" /> + <stop + id="stop4633" + stop-color="#fff" + stop-opacity="0" + offset="1" /> + </linearGradient> + <radialGradient + id="radialGradient11735" + gradientUnits="userSpaceOnUse" + cx="147.02" + cy="525.85999" + r="103.05" + gradientTransform="matrix(-1.5869,-1.2599e-7,5.9772999e-8,-0.75289999,387.79396,846.03475)"> + <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> + <filter + id="filter4375-3-0" + height="1.7122" + width="1.0247999" + y="-0.35609001" + x="-0.012418" + style="color-interpolation-filters:sRGB"> + <feGaussianBlur + id="feGaussianBlur4377-0-0" + stdDeviation="1.0664062" /> + </filter> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient11481" + id="linearGradient5059" + x1="572" + y1="-9.0328302" + x2="572" + y2="3.96717" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient11481" + id="linearGradient5067" + x1="578" + y1="-53.032829" + x2="578" + y2="-38.032829" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient11481" + id="linearGradient5077" + x1="581" + y1="-108.03283" + x2="581" + y2="-86.032829" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient11481" + id="linearGradient5085" + x1="596" + y1="-181.99542" + x2="596" + y2="-152.03284" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4908" + id="linearGradient5126" + x1="589" + y1="-187.08308" + x2="589" + y2="-160.03284" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4908" + id="linearGradient5128" + x1="578" + y1="-112.03283" + x2="578" + y2="-101.03283" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4908" + id="linearGradient5130" + x1="573" + y1="-55.032829" + x2="573" + y2="-45.032829" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4908" + id="linearGradient5132" + x1="569" + y1="-10.03283" + x2="569.17102" + y2="-1.2868409" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient11481" + id="linearGradient5140" + x1="596.82324" + y1="-200.78328" + x2="597" + y2="-160.03284" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient11481" + id="linearGradient5142" + x1="584" + y1="-109.03283" + x2="584" + y2="-97.032829" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient11481" + id="linearGradient5144" + x1="577" + y1="-54.032829" + x2="577" + y2="-48.032829" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient11481" + id="linearGradient5146" + x1="572" + y1="-9.0328302" + x2="572" + y2="-2.03283" + gradientUnits="userSpaceOnUse" /> + <radialGradient + id="radialGradient7894-2" + gradientUnits="userSpaceOnUse" + cx="179.52" + cy="178.16" + r="68.867996" + gradientTransform="matrix(1.3088,0.77845,-0.34302,0.57647,-3.4812,-69.984)"> + <stop + id="stop15764-4" + stop-color="#fff" + offset="0" /> + <stop + id="stop15766-7" + stop-color="#fff" + stop-opacity="0" + offset="1" /> + </radialGradient> + <filter + id="filter15758-4" + height="1.2122" + width="1.2028" + y="-0.10611" + x="-0.1014" + style="color-interpolation-filters:sRGB"> + <feGaussianBlur + id="feGaussianBlur15760-4" + stdDeviation="4.6353635" /> + </filter> + <radialGradient + id="radialGradient7892-7" + cx="239" + xlink:href="#linearGradient6123" + gradientUnits="userSpaceOnUse" + cy="51" + r="5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6123" + id="radialGradient6918" + gradientUnits="userSpaceOnUse" + cx="239" + cy="51" + r="5" + gradientTransform="matrix(2.7092,0,0,2.7092,-423.307,-238.293)" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6123" + id="radialGradient6920" + gradientUnits="userSpaceOnUse" + cx="239" + cy="51" + r="5" + gradientTransform="matrix(3.8092,0,0,3.8092,-681.587,-297.393)" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6123" + id="radialGradient5268" + cx="224.86823" + cy="-99.445023" + fx="224.86823" + fy="-99.445023" + r="2.5399001" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6123" + id="radialGradient5240" + cx="229.76659" + cy="-102.16778" + fx="229.76659" + fy="-102.16778" + r="3.5711" + gradientUnits="userSpaceOnUse" /> + <radialGradient + id="radialGradient7892-7-7" + cx="239" + xlink:href="#linearGradient6123" + gradientUnits="userSpaceOnUse" + cy="51" + r="5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6123" + id="radialGradient6922" + gradientUnits="userSpaceOnUse" + cx="239" + cy="51" + r="5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6123" + id="radialGradient5260" + cx="239" + cy="51" + fx="239" + fy="51" + r="5" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6123" + id="radialGradient5258" + cx="239" + cy="51" + fx="239" + fy="51" + r="5" + gradientUnits="userSpaceOnUse" /> + <radialGradient + id="radialGradient7894-2-5" + gradientUnits="userSpaceOnUse" + cx="179.52" + cy="178.16" + r="68.867996" + gradientTransform="matrix(1.3088,0.77845,-0.34302,0.57647,-3.4812,-69.984)"> + <stop + id="stop15764-4-3" + stop-color="#fff" + offset="0" /> + <stop + id="stop15766-7-5" + stop-color="#fff" + stop-opacity="0" + offset="1" /> + </radialGradient> + <filter + id="filter15758-4-6" + height="1.2122" + width="1.2028" + y="-0.10611" + x="-0.1014" + style="color-interpolation-filters:sRGB"> + <feGaussianBlur + id="feGaussianBlur15760-4-2" + stdDeviation="4.6353635" /> + </filter> + </defs> + <sodipodi:namedview + stroke="#ef2929" + fill="#f57900" + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="0.25490196" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="322.57412" + inkscape:cy="177.12079" + inkscape:current-layer="layer8" + showgrid="false" + inkscape:grid-bbox="true" + inkscape:document-units="px" + inkscape:showpageshadow="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + width="400px" + height="300px" + inkscape:snap-nodes="true" + inkscape:snap-bbox="true" + objecttolerance="7" + gridtolerance="12" + guidetolerance="13" + inkscape:window-maximized="1" + inkscape:pagecheckerboard="false" + showguides="false" + inkscape:guide-bbox="true" + inkscape:locked="false" + inkscape:measure-start="0,0" + inkscape:measure-end="0,0" + inkscape:object-nodes="true" + inkscape:bbox-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid5883" + spacingx="1px" + spacingy="1px" + enabled="true" + visible="true" + empspacing="4" /> + </sodipodi:namedview> + <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:creator> + <cc:Agent> + <dc:title>Sam Hewitt</dc:title> + </cc:Agent> + </dc:creator> + <dc:source /> + <cc:license + rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" /> + <dc:title>Sparkleshare Linux Icon</dc:title> + <dc:subject> + <rdf:Bag /> + </dc:subject> + <dc:date /> + <dc:rights> + <cc:Agent> + <dc:title /> + </cc:Agent> + </dc:rights> + <dc:publisher> + <cc:Agent> + <dc:title /> + </cc:Agent> + </dc:publisher> + <dc:identifier /> + <dc:relation /> + <dc:language /> + <dc:coverage /> + <dc:description /> + <dc:contributor> + <cc:Agent> + <dc:title /> + </cc:Agent> + </dc:contributor> + </cc:Work> + <cc:License + rdf:about="http://creativecommons.org/licenses/by-sa/4.0/"> + <cc:permits + rdf:resource="http://creativecommons.org/ns#Reproduction" /> + <cc:permits + rdf:resource="http://creativecommons.org/ns#Distribution" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#Notice" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#Attribution" /> + <cc:permits + rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#ShareAlike" /> + </cc:License> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="artwork:icon-name" + inkscape:groupmode="layer" + style="display:inline" + transform="translate(0,260)"> + <g + inkscape:groupmode="layer" + id="layer7" + inkscape:label="baseplate" + style="display:none"> + <rect + inkscape:label="48x48" + y="-196" + x="568" + height="48" + width="48" + id="rect6284" + style="display:inline;overflow:visible;visibility:visible;fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;enable-background:accumulate" /> + <rect + style="display:inline;overflow:visible;visibility:visible;fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;enable-background:accumulate" + id="rect6592" + width="32" + height="32" + x="568" + y="-116" + inkscape:label="32x32" /> + <rect + inkscape:label="22x22" + y="-58.941162" + x="569" + height="22" + width="22" + id="rect6749" + style="display:inline;overflow:visible;visibility:visible;fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;enable-background:accumulate" /> + <rect + style="display:inline;overflow:visible;visibility:visible;fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;enable-background:accumulate" + id="rect6833" + width="16" + height="16" + x="568" + y="-12" + inkscape:label="16x16" /> + <rect + style="display:inline;overflow:visible;visibility:visible;fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;enable-background:accumulate" + id="rect8104" + width="24" + height="24" + x="568" + y="-60" + inkscape:label="24x24" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.30133247px;line-height:125%;font-family:Cantarell;-inkscape-font-specification:'Cantarell, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;enable-background:new" + x="31.855944" + y="-303.69958" + id="context" + inkscape:label="context"><tspan + sodipodi:role="line" + id="tspan2716" + x="31.855944" + y="-303.69958">apps</tspan></text> + <text + inkscape:label="icon-name" + id="text3021" + y="-277.90063" + x="31.264769" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:18.30133247px;line-height:125%;font-family:Cantarell;-inkscape-font-specification:'Cantarell, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;enable-background:new" + xml:space="preserve"><tspan + y="-277.90063" + x="31.264769" + id="tspan3023" + sodipodi:role="line">org.sparkleshare.SparkleShare</tspan></text> + <rect + style="display:inline;overflow:visible;visibility:visible;fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;enable-background:accumulate" + id="rect13805" + width="512" + height="512" + x="24" + y="-236" + inkscape:label="512x512" /> + <path + inkscape:connector-curvature="0" + id="path13807" + d="m 24,-236 v 512 h 511.875 v -512 h -36 V 240 H 60 v -476 z" + style="display:inline;overflow:visible;visibility:visible;opacity:0.4;fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;enable-background:accumulate" + sodipodi:nodetypes="ccccccccc" /> + </g> + <g + inkscape:groupmode="layer" + id="layer8" + inkscape:label="icons" + style="display:inline"> + <g + transform="translate(8,0.03283)" + style="display:inline;enable-background:new" + id="g11603"> + <g + id="g7988" + clip-path="url(#clipPath7991)"> + <path + d="m 76,-180 c -12,0 -12,12 -12,12 v 276 h 416 v -228 c 0,0 0,-12 -12,-12 H 280 c -3.5093,0 -9.09146,-0.51692 -13.46022,-5.3383 l -33.91554,-37.42936 C 228.8957,-178.88249 223.86532,-180 220,-180 Z" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient6985);fill-opacity:1.0;fill-rule:evenodd;stroke:none;stroke-width:1.03651488;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="path11591" + sodipodi:nodetypes="cccccccsscc" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.47099998;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#radialGradient6987);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.03651488;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="m 76,-178 c -12,0 -12,12 -12,12 v 2 c 0,0 0,-12 12,-12 h 144 c 3.86532,0 8.89646,1.11759 12.625,5.23242 l 33.91406,37.42969 C 270.90782,-128.51651 276.4907,-128 280,-128 h 188 c 12,0 12,12 12,12 v -2 c 0,0 0,-12 -12,-12 H 280 c -3.5093,0 -9.09218,-0.51651 -13.46094,-5.33789 L 232.625,-172.76758 C 228.89646,-176.88241 223.86532,-178 220,-178 Z" + id="path11591-6" /> + <path + clip-path="none" + d="m 76,-180 c -12,0 -12,12 -12,12 V 92 h 416 v -212 c 0,0 0,-12 -12,-12 H 280 c -3.5093,0 -9.09146,-0.51692 -13.46022,-5.3383 l -33.91554,-37.42936 C 228.8957,-178.88249 223.86532,-180 220,-180 Z" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.5;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter10257);color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="path11593" + sodipodi:nodetypes="cccccccsscc" + inkscape:connector-curvature="0" /> + <path + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.25700001;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#301e01;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.3510741;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;filter:url(#filter8182);color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new" + d="m 60,-28 h 109.44278 c 8.64132,-0.004 11.2047,-2.65758 15.16748,-8.5786 l 15.2868,-15.63318 C 204.10729,-56.517404 208.28276,-68 214.91244,-68 H 484 c 12,0 12,12 12,12 l -4,292 c 0,0 0,12 -12,12 H 64 C 52,248 52,236 52,236 L 48,-16 c 0,0 0,-12 12,-12 z" + id="path11597-1" + sodipodi:nodetypes="czzszcccccccc" + inkscape:r_cx="true" + inkscape:r_cy="true" + inkscape:connector-curvature="0" /> + </g> + <g + id="g8701"> + <path + clip-path="none" + d="m 564.46875,-57.49151 c -0.5201,0.01563 -0.9484,0.459393 -0.9484,1.02276 L 563.49995,-41.5 h 17 l -0.0117,-13.05679 c 0,-0.49196 -0.40182,-0.96654 -0.93473,-0.96654 l -7.28464,0.0551 -1.68699,-2.02332 z" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient5130);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient5144);stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="path11549" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <path + d="m 564.5,-56.476562 c 0.0415,-0.0012 0.0352,-0.0394 0.0352,0.0078 a 1.0165672,1.0165672 0 0 1 0,0.002 l -0.0176,13.951172 h 14.9668 l -0.0117,-11.992187 -7.19532,0.05469 a 1.0165672,1.0165672 0 0 1 -0.78906,-0.365234 l -1.38281,-1.658203 z" + id="path7147" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.06000001;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + inkscape:original="M 564.46875 -57.492188 C 563.94865 -57.476588 563.51953 -57.03212 563.51953 -56.46875 L 563.5 -41.5 L 580.5 -41.5 L 580.48828 -54.556641 C 580.48828 -55.048601 580.08564 -55.523437 579.55273 -55.523438 L 572.26953 -55.46875 L 570.58203 -57.492188 L 564.46875 -57.492188 z " + inkscape:radius="-1.0164655" + sodipodi:type="inkscape:offset" + transform="translate(1.6e-6,-2.3766313e-6)" /> + <path + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + id="path11555" + d="m 564.5,-56.5 h 5.61981 l 1.6748,2 H 579.5" + style="opacity:0.26300001;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#radialGradient8695);stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /> + </g> + <g + id="g11537" + transform="translate(256,-224)" + style="opacity:0.572"> + <rect + rx="1" + ry="1" + y="184" + x="307" + height="2" + width="18" + id="rect11533" + style="opacity:0.2;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter5792)" /> + <rect + rx="2" + style="opacity:0.3;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter5788)" + id="rect11535" + width="20" + height="4" + x="306" + y="183" + ry="2" /> + </g> + <g + id="g8715"> + <path + sodipodi:nodetypes="ccccccccccc" + id="path11539" + d="M 560.5,-9.375 V 0.5 h 15 v -7.84375 c -6e-5,-0.62129 -0.50371,-1.12494 -1.125,-1.125 h -5.84375 c -0.3334,0 -0.20853,0.0527 -0.40625,-0.21875 l -0.96875,-1.34375 c -0.2098,-0.29211 -0.54661,-0.46632 -0.90625,-0.46875 h -4.75 c -0.99615,0.0162 -1,1.125 -1,1.125 z" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient5132);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient5146);stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccsssccccc" + id="path11541" + d="m 561.5,1 h 13 v -8.5 l -5.96875,-0.0312 c -0.0587,0 -0.0805,-10e-4 -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.0937 l -0.96875,-1.28057 c -0.0355,-0.0494 -0.0954,-0.0933 -0.15625,-0.0937 L 561.5,-9.5 Z" + style="display:inline;opacity:0.072;fill:none;fill-opacity:0;stroke:#ffffff;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;enable-background:new" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path8086" + d="m 561.49288,-9.49995 h 5" + style="opacity:0.17300002;fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" /> + </g> + <g + id="g8706"> + <path + sodipodi:nodetypes="cccccccccccc" + inkscape:connector-curvature="0" + id="path11553" + d="M 562.5,-39.99987 V -50 c -0.0111,-0.50823 0.5,-0.50056 0.5,-0.50056 l 4.5,-0.006 2,-1.99371 H 581 c 0,0 0.48895,-0.0188 0.5,0.50044 v 11.99969 c -0.0937,1.50001 -1.5,1.49987 -1.5,1.49987 h -16 c 0,0 -1.53125,-0.0311 -1.5,-1.49987 z" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient8478);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient5067);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new" /> + <path + d="m 569.91602,-51.5 -1.70899,1.703125 a 1.0001,1.0001 0 0 1 -0.70508,0.291016 L 563.5,-49.5 v 8.5 a 1.0001,1.0001 0 0 1 0,0.02148 c -0.008,0.386958 0.0427,0.312601 0.18945,0.386719 0.14673,0.07412 0.33008,0.0918 0.33008,0.0918 H 580 c 0,0 0.12623,-0.0093 0.25586,-0.07617 0.12859,-0.06637 0.21595,-0.05389 0.24414,-0.482422 V -51.5 Z" + id="path7002" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.23999999;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient8474);stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new" + inkscape:original="M 569.5 -52.5 L 567.5 -50.505859 L 563 -50.5 C 563 -50.5 562.4889 -50.50823 562.5 -50 L 562.5 -41 C 562.46875 -39.53123 564 -39.5 564 -39.5 L 580 -39.5 C 580 -39.5 581.4063 -39.49999 581.5 -41 L 581.5 -52 C 581.48895 -52.51924 581 -52.5 581 -52.5 L 569.5 -52.5 z " + inkscape:radius="-1" + sodipodi:type="inkscape:offset" + transform="translate(-1.9624896e-6,1)" /> + <path + style="opacity:0.68199978;fill:none;fill-rule:evenodd;stroke:url(#radialGradient8472);stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" + d="m 580.5,-51.5 h -10.52072 l -2.00555,2 H 563.5" + id="path11557" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" /> + </g> + <g + id="g8720"> + <path + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient8424);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient5059);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new" + d="m 566.92188,-8.5 c -0.34915,0 -0.55954,0.20959 -0.73438,0.34375 l -1.45228,1.47457 C 564.60566,-6.55013 564.49257,-6.5 564.1875,-6.5 h -2.5625 c -0.65057,0 -1.12499,0.43342 -1.125,1.07813 V 1 c 0,1.33755 0.68182,2.5 1.5,2.5 h 12 c 0.81819,0 1.5,-1.16245 1.5,-2.5 v -8.5 c -0.0156,-0.96881 -1,-1 -1,-1 z" + id="path11543" + sodipodi:nodetypes="ccscccccccccc" + inkscape:connector-curvature="0" /> + <path + d="m 566.92188,-7.5 c 0.051,0 0.14153,-0.067801 -0.125,0.1367188 l 0.10351,-0.091797 -1.45312,1.4746093 c -0.12156,0.1234147 -0.34139,0.2961474 -0.58789,0.3828126 C 564.61287,-5.5109911 564.39477,-5.5 564.1875,-5.5 h -2.5625 c -0.20642,0 -0.125,-0.075997 -0.125,0.078125 V 1 c 0,0.4988574 0.14105,0.9688306 0.30273,1.2402344 C 561.96442,2.5116381 562.0645,2.5 562,2.5 h 12 c -0.0645,0 0.0356,0.011637 0.19727,-0.2597656 C 574.35895,1.968832 574.5,1.4988599 574.5,1 v -8.484375 c -0.002,-0.1460121 0.0557,0.019531 0.0332,0.00781 -0.0116,-0.00602 -0.0196,-0.007 -0.0332,-0.011719 -0.0128,-0.00447 -0.0312,-0.011719 -0.0312,-0.011719 z" + id="path8314" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.32400004;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient8368);stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new" + inkscape:original="M 566.92188 -8.5 C 566.57272 -8.5 566.36234 -8.29041 566.1875 -8.15625 L 564.73438 -6.6816406 C 564.60481 -6.5500906 564.49257 -6.5 564.1875 -6.5 L 561.625 -6.5 C 560.97443 -6.5 560.50001 -6.066575 560.5 -5.421875 L 560.5 1 C 560.5 2.33755 561.18182 3.5 562 3.5 L 574 3.5 C 574.81819 3.5 575.5 2.33755 575.5 1 L 575.5 -7.5 C 575.4844 -8.46881 574.5 -8.5 574.5 -8.5 L 566.92188 -8.5 z " + inkscape:radius="-1" + sodipodi:type="inkscape:offset" /> + <path + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + id="path11571" + d="m 574.5,-7.5 h -7.52072 l -2.00555,2 H 561.5" + style="opacity:0.67099998;fill:none;fill-rule:evenodd;stroke:url(#radialGradient8496);stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /> + </g> + <g + id="g8649"> + <path + clip-path="none" + d="m 565.5,-193.49151 c -1.09462,0.0156 -0.97965,0.99151 -0.97965,0.99151 l -0.0204,32 h 39 l -0.0117,-28 c 0.0287,-0.90113 -0.9883,-1.02333 -0.9883,-1.02333 l -19.62495,0.0534 c 0,0 -0.65625,-0.0459 -1.12211,-0.56141 l -2.31769,-2.52911 c -0.4538,-0.53068 -1.02895,-0.91095 -1.65395,-0.93115 z" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient5126);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient5140);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="path11573" + sodipodi:nodetypes="ccccccccccc" + inkscape:connector-curvature="0" /> + <path + d="m 565.58008,-192.43164 -0.0195,30.87109 h 36.8789 l -0.0117,-26.88867 c -0.0139,-0.005 -0.0259,-0.0114 -0.0332,-0.0137 l -19.51758,0.0527 a 1.0607637,1.0607637 0 0 1 -0.0742,-0.002 c 0,0 -1.0581,-0.0488 -1.83593,-0.9082 h -0.002 l -2.31054,-2.52344 a 1.0607637,1.0607637 0 0 1 -0.0254,-0.0273 c -0.3288,-0.38451 -0.66691,-0.55357 -0.88282,-0.56055 z" + id="path10568" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.081;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + inkscape:original="M 565.5 -193.49219 C 564.40538 -193.47659 564.51953 -192.5 564.51953 -192.5 L 564.5 -160.5 L 603.5 -160.5 L 603.48828 -188.5 C 603.51698 -189.40113 602.5 -189.52344 602.5 -189.52344 L 582.875 -189.4707 C 582.875 -189.4707 582.21781 -189.51574 581.75195 -190.03125 L 579.43555 -192.56055 C 578.98175 -193.09123 578.40625 -193.47199 577.78125 -193.49219 L 565.5 -193.49219 z " + inkscape:radius="-1.0606576" + sodipodi:type="inkscape:offset" /> + <path + sodipodi:nodetypes="cccccc" + inkscape:connector-curvature="0" + id="path11577" + d="m 565.5,-192.5 h 12.09375 c 0.40625,-0.022 0.91331,0.42813 0.91331,0.42813 l 2.6938,2.97812 C 581.98211,-188.375 583,-188.5 583,-188.5 h 19.5" + style="opacity:0.22000002;fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /> + </g> + <g + id="g6439" + style="opacity:0.60399996" + transform="matrix(1.0595238,0,0,1,-34.761905,0)"> + <rect + style="display:inline;opacity:0.3;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.16706455;filter:url(#filter6151);enable-background:new" + id="rect11531" + width="42" + height="2.917923" + x="563" + y="-153.91792" + rx="1.5597881" + ry="1.4277115" /> + <rect + ry="1.4277115" + rx="1.5597881" + y="-153.91792" + x="563" + height="2.917923" + width="42" + id="rect11579" + style="display:inline;opacity:0.2;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.16706455;filter:url(#filter6145);enable-background:new" /> + </g> + <g + id="g6823"> + <rect + transform="matrix(2.1944501,0,0,4.2956156,400.75696,-1922.6296)" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.3;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.10225201;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;filter:url(#filter10890-6);color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new" + id="rect11527" + width="200.50581" + height="2.7935545" + x="-158.92682" + y="502.98486" + ry="1.3864861" + rx="2.7341692" /> + <rect + rx="5.9999981" + ry="5.9116116" + y="237.99997" + x="53.999996" + height="12" + width="436" + id="rect11529" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.3;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.38420343;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;filter:url(#filter10886-3);color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new" /> + <rect + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.2;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.38420343;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;filter:url(#filter8424);color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new" + id="rect8422" + width="436" + height="12" + x="53.999996" + y="237.99997" + ry="5.9116116" + rx="5.9999981" /> + </g> + <g + id="g6075" + clip-path="url(#clipPath6228)"> + <path + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient6977);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.3510741;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new" + d="m 60,-20 h 109.44278 c 8.64132,-0.004 11.2047,-2.65758 15.16748,-8.5786 l 15.2868,-23.63318 C 203.16772,-57.26818 208.28276,-68 214.91244,-68 H 484 c 12,0 12,12 12,12 l -4,292 c 0,0 0,12 -12,12 H 64 C 52,248 52,236 52,236 L 48,-8 c 0,0 0,-12 12,-12 z" + id="path11597" + sodipodi:nodetypes="czzszcccccccc" + inkscape:r_cx="true" + inkscape:r_cy="true" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#radialGradient6979);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.3510741;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new" + d="m 214.91211,-66 c -6.62968,0 -11.74497,10.73266 -15.01563,15.78906 l -15.2871,23.63282 c -3.96279,5.92101 -6.5247,8.57412 -15.16602,8.57812 H 60 C 48,-18 48,-6 48,-6 l 0.02344,1.47852 C 48.188797,-6.82532 49.506373,-16 60,-16 h 109.44336 c 8.64132,-0.004 11.20323,-2.65711 15.16602,-8.57812 l 15.2871,-23.63282 C 203.16714,-53.26734 208.28243,-64 214.91211,-64 H 484 c 10.65335,0 11.84435,9.41438 11.97852,11.53711 L 496,-54 c 0,0 0,-12 -12,-12 z" + id="path11597-3" /> + <rect + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.23699999;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#radialGradient6981);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="rect5882" + width="631" + height="6.5" + x="-44.5" + y="238.5" + rx="9.144928" + ry="3.25" /> + <path + clip-path="none" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient6983);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;filter:url(#filter8589);color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new" + d="m 60,-20 h 109.44278 c 8.64132,-0.004 11.2047,-2.65758 15.16748,-8.5786 l 15.2868,-23.63318 C 203.16772,-57.268176 208.28276,-68 214.91244,-68 H 483.75 c 13.5,0 12.25,7.25 12.25,12 l -4,292 c 0,0 0,12 -12,12 H 64 C 52,248 52,236 52,236 L 48,-8 c 0,-7.75 -2.75,-12 12,-12 z" + id="path8549" + sodipodi:nodetypes="czzszcccccccc" + inkscape:r_cx="true" + inkscape:r_cy="true" + inkscape:connector-curvature="0" /> + </g> + <g + id="g8644"> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccccccc" + id="path11581" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient8642);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient5085);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new" + d="m 604.49975,-182.49147 c 1.09462,0.0156 0.97965,0.99151 0.97965,0.99151 l 0.0206,25.5 c 0.0139,2 0.0308,3.53965 -1.5,3.5 h -40.00016 c -1.28109,-0.0625 -1.46951,-1.5052 -1.49984,-3.5 l 0.0115,-21.5 c -0.0287,-0.90113 0.9883,-1.02333 0.9883,-1.02333 l 11.40398,0.0534 c 0,0 0.65625,-0.0459 1.12211,-0.56141 l 1.53866,-2.52911 c 0.4538,-0.53068 1.02895,-0.91095 1.65395,-0.93115 z" + clip-path="none" /> + <path + style="opacity:0.75;fill:none;fill-rule:evenodd;stroke:url(#radialGradient10236);stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" + d="M 604.52072,-181.5 H 579.5 c 0,0 -0.66026,0.018 -1.18442,0.58483 l -1.46221,2.42376 c -0.41838,0.51442 -1.07151,0.99136 -2.19934,0.99136 h -11.13331" + id="path11583" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccc" /> + <path + d="m 579.25195,-181.4375 c -0.2116,0.007 -0.53957,0.18431 -0.85937,0.54492 l -1.4668,2.41016 a 1.054403,1.054403 0 0 1 -0.11914,0.1582 c -0.77509,0.8577 -1.83008,0.90625 -1.83008,0.90625 a 1.054403,1.054403 0 0 1 -0.0762,0.002 l -11.29687,-0.0527 c -0.008,0.002 -0.0213,0.01 -0.0371,0.0156 l -0.0117,21.4375 c 0.0147,0.96805 0.0922,1.76086 0.22461,2.14843 0.0662,0.19379 0.13025,0.2691 0.14843,0.28516 0.017,0.015 0.0152,0.0215 0.11524,0.0273 H 604 a 1.054403,1.054403 0 0 1 0.0273,0 c 0.2062,0.005 0.2028,-0.0239 0.19727,-0.0195 -0.006,0.004 0.0399,-0.0261 0.0937,-0.20898 0.10766,-0.36585 0.13391,-1.2079 0.12695,-2.20899 a 1.054403,1.054403 0 0 1 0,-0.008 l -0.0215,-25.4375 z" + id="path10472" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.25400002;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient10532);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new" + inkscape:original="M 579.21875 -182.49219 C 578.59375 -182.47199 578.01825 -182.09123 577.56445 -181.56055 L 576.02539 -179.03125 C 575.55953 -178.51574 574.9043 -178.4707 574.9043 -178.4707 L 563.5 -178.52344 C 563.5 -178.52344 562.48302 -178.40113 562.51172 -177.5 L 562.5 -156 C 562.53033 -154.0052 562.71891 -152.5625 564 -152.5 L 604 -152.5 C 605.5308 -152.46035 605.5139 -154 605.5 -156 L 605.47852 -181.5 C 605.47852 -181.5 605.59462 -182.47659 604.5 -182.49219 L 579.21875 -182.49219 z " + inkscape:radius="-1.0542976" + sodipodi:type="inkscape:offset" /> + </g> + <g + id="g7517" + style="opacity:0.70800003" + transform="matrix(1,0,0,1.0871046,0,7.603314)"> + <rect + transform="matrix(0.12196789,0,0,0.09301748,560.64417,-105.19862)" + ry="10.750666" + rx="8.1988802" + y="189.49869" + x="11.116286" + height="21.501331" + width="229.56862" + id="rect11559" + style="opacity:0.2;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;filter:url(#filter5976)" /> + <rect + style="opacity:0.35;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;filter:url(#filter5970)" + id="rect11561" + width="229.56862" + height="21.501331" + x="11.116286" + y="189.49869" + rx="8.1988802" + ry="10.750666" + transform="matrix(0.12945128,0,0,0.09301748,559.70201,-105.19862)" /> + </g> + <g + id="g8528"> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + id="path11563" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient5128);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient5142);stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="m 563.5,-114.49151 c -1.09462,0.0156 -0.97965,0.99151 -0.97965,0.99151 l -0.0204,16 h 27 l -0.0117,-13 c 0.0287,-0.90113 -0.9883,-1.02333 -0.9883,-1.02333 l -13.23107,0.0551 -2.68699,-3.02332 z" + clip-path="none" /> + <path + d="M 563.51758,-113.49414 563.5,-98.498047 h 25.00195 l -0.0117,-11.992183 c -0.0389,-0.018 -0.0723,-0.0308 -0.0879,-0.0352 l -13.1289,0.0547 a 0.9982575,0.9982575 0 0 1 -0.75,-0.33399 l -2.38867,-2.68945 z" + id="path7856" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.07000002;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + inkscape:original="M 563.5 -114.49219 C 562.40538 -114.47659 562.51953 -113.5 562.51953 -113.5 L 562.5 -97.5 L 589.5 -97.5 L 589.48828 -110.5 C 589.51698 -111.40113 588.5 -111.52344 588.5 -111.52344 L 575.26953 -111.46875 L 572.58203 -114.49219 L 563.5 -114.49219 z " + inkscape:radius="-0.99815768" + sodipodi:type="inkscape:offset" /> + <path + style="opacity:0.26600001;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#radialGradient8666);stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" + d="m 563.5,-113.5 h 8.61981 l 2.6748,3 H 588.5" + id="path11567" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" /> + </g> + <g + style="display:inline;enable-background:new" + id="g8498"> + <path + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient8668);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient5077);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new" + d="m 561.74999,-87.499997 c -0.15012,-0.56026 -0.25,-1.48333 -0.25,-2.5 v -13.000013 c -0.0111,-0.50823 -0.12297,-1.5 1,-1.5 h 6.5 c 0,0 0.45412,0.0494 0.8609,-0.27711 l 2.19133,-2.38848 c 0.51129,-0.39482 0.96341,-0.33512 0.96341,-0.33512 h 16.48436 c 0,0 1.02676,0.0273 1,1.00027 v 16.500453 c 0,1.04873 -0.0883,1.8958 -0.25,2.49929 -0.13944,0.52039 -0.51562,1 -1,1 h -26.5 c -0.33001,-0.0435 -0.84005,-0.40234 -1,-0.99929 z" + id="path11565" + inkscape:connector-curvature="0" + sodipodi:nodetypes="sccccccccccsccs" /> + <path + d="m 572.88281,-106.50977 c 0,0 0.0779,0.001 0.0332,0.01 -0.0385,0.007 -0.12029,0.0424 -0.2168,0.10742 l -2.10156,2.29102 a 1.0001,1.0001 0 0 1 -0.11133,0.10351 c -0.7286,0.58483 -1.59375,0.49219 -1.59375,0.49219 L 569,-103.5 h -6.48633 c -0.007,0.0791 -0.0193,0.22186 -0.0137,0.47852 a 1.0001,1.0001 0 0 1 0,0.0215 v 13 c 0,0.951186 0.10905,1.838099 0.2168,2.240234 0.0242,0.09029 0.0779,0.169945 0.13867,0.22461 0.0501,0.04512 0.0682,0.04152 0.0215,0.03516 h 26.27539 c 0.0369,-0.04358 0.10098,-0.148231 0.13086,-0.259766 C 589.40786,-88.225 589.5,-89.007391 589.5,-90 v -16.49219 c -0.008,-0.002 -0.0254,-0.008 -0.0254,-0.008 h -16.45899 a 1.0001,1.0001 0 0 1 -0.13281,-0.01 z" + id="path7557" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.225;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient8670);stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new" + inkscape:original="M 573.01562 -107.5 C 573.01563 -107.5 572.56402 -107.56084 572.05273 -107.16602 L 569.86133 -104.77734 C 569.45455 -104.45083 569 -104.5 569 -104.5 L 562.5 -104.5 C 561.37703 -104.5 561.4889 -103.50823 561.5 -103 L 561.5 -90 C 561.5 -88.98332 561.59988 -88.06026 561.75 -87.5 C 561.90995 -86.90304 562.41999 -86.5435 562.75 -86.5 L 589.25 -86.5 C 589.73438 -86.5 590.11056 -86.9796 590.25 -87.5 C 590.4117 -88.10348 590.5 -88.95126 590.5 -90 L 590.5 -106.5 C 590.52676 -107.47297 589.5 -107.5 589.5 -107.5 L 573.01562 -107.5 z " + inkscape:radius="-1" + sodipodi:type="inkscape:offset" + transform="translate(4.2651516e-6)" /> + <path + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + id="path11569" + d="m 589.52072,-106.5 h -16.66435 l -3.10499,2.99995 h -7.23066" + style="opacity:0.772;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#radialGradient8672);stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /> + </g> + </g> + <path + inkscape:connector-curvature="0" + d="m 583.97168,-102.091 c -0.2567,0.0331 -0.4832,0.23499 -0.5466,0.48632 l -1.0927,3.282701 c 0,0 -0.1467,0.0739 -0.2423,0.12249 h -3.3395 c -0.1867,0 -0.3689,0.0973 -0.4859,0.24315 -0.2462,0.27585 -0.1844,0.76528 0.1207,0.97266 l 2.7325,2.0062 0.058,0.2918 -1.032,3.2218 c -0.1435,0.50286 0.5294,1.0082 0.9715,0.72947 l 2.7322,-2.006 h 0.3497 l 2.7325,2.006 c 0.2376,0.15564 0.5781,0.12845 0.7891,-0.0603 0.1789,-0.16536 0.2534,-0.43555 0.1827,-0.66879 l -1.0323,-3.2218 c -0.098,-0.0194 0.038,-0.19453 0.058,-0.29178 l 2.7321,-2.0062 c 0.3061,-0.20736 0.3667,-0.6968 0.1207,-0.97264 -0.1161,-0.14585 -0.2991,-0.23713 -0.4857,-0.24316 h -3.4004 c 0,0 -0.153,-0.0774 -0.2422,-0.12249 l -1.0323,-3.282601 c -0.031,-0.11485 -0.095,-0.22216 -0.1826,-0.30405 -0.1283,-0.12447 -0.3079,-0.19259 -0.4857,-0.18286 l 0.021,2e-4 -9e-4,1e-5 4e-4,-3e-5 z" + style="fill:none;stroke:#bb660b;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;enable-background:new" + id="path5717-0-9-4-5" /> + <g + transform="matrix(1.5273,0,0,1.5273,-2334.6183,-1362.081)" + style="stroke:#fde8d0;stroke-width:0.98214;enable-background:new" + id="g5833-3-4-9"> + <path + inkscape:connector-curvature="0" + d="m 1911,824.3 c -0.1681,0.0217 -0.3164,0.15386 -0.3579,0.31842 l -0.7155,2.1494 c 0,0 -0.096,0.0484 -0.1586,0.0802 h -2.1866 c -0.1222,0 -0.2415,0.0637 -0.3181,0.15921 -0.1612,0.18061 -0.1208,0.50107 0.079,0.63685 l 1.7891,1.3136 0.038,0.19106 -0.6757,2.1095 c -0.094,0.32925 0.3466,0.66015 0.6361,0.47763 l 1.7889,-1.3134 h 0.229 l 1.7891,1.3134 c 0.1556,0.1019 0.3785,0.0841 0.5167,-0.0395 0.1171,-0.10827 0.1659,-0.28518 0.1196,-0.4379 l -0.6759,-2.1095 c -0.064,-0.0127 0.025,-0.12737 0.038,-0.19105 l 1.7889,-1.3136 c 0.2004,-0.13577 0.2401,-0.45623 0.079,-0.63684 -0.076,-0.0955 -0.1958,-0.15526 -0.318,-0.15921 h -2.2264 c 0,0 -0.1002,-0.0507 -0.1586,-0.0802 l -0.6759,-2.1493 c -0.02,-0.0752 -0.062,-0.14546 -0.1196,-0.19908 -0.084,-0.0815 -0.2016,-0.1261 -0.318,-0.11973 l 0.014,1.3e-4 -6e-4,1e-5 v 0 z" + style="fill:none;stroke:#fde8d0;stroke-width:0.98214;stroke-linecap:round;stroke-linejoin:round;enable-background:new" + id="path5717-0-9-4" /> + </g> + <g + transform="translate(-0.09003553,0.01997387)" + style="display:inline;enable-background:new" + id="g4814"> + <g + transform="matrix(2,0,0,2,-108.1692,270.37793)" + id="g6954" + style="display:inline;enable-background:new"> + <g + style="fill:none;stroke-width:8;stroke-linecap:round;stroke-linejoin:round" + transform="translate(-377,-265.9)" + id="g7670"> + <path + id="path4683" + style="stroke:#fbc98d;enable-background:new" + d="m 569.63,135.6 c -1.8678,0.24167 -3.5157,1.7145 -3.9769,3.5482 l -7.9492,23.95 -1.7625,0.89368 h -24.294 c -1.3579,0 -2.6831,0.70979 -3.5342,1.7741 -1.7911,2.0126 -1.342,5.5835 0.8777,7.0965 l 19.878,14.637 0.4228,2.129 -7.5075,23.506 c -1.044,3.6688 3.8509,7.3561 7.0675,5.3223 l 19.876,-14.636 h 2.5444 l 19.878,14.636 c 1.7284,1.1354 4.2055,0.93713 5.7406,-0.43994 1.3013,-1.2065 1.8432,-3.1778 1.3288,-4.8796 l -7.5094,-23.506 c -0.7113,-0.14154 0.2801,-1.4192 0.4228,-2.1289 l 19.875,-14.637 c 2.2268,-1.5129 2.6678,-5.0838 0.8779,-7.0964 -0.8444,-1.0642 -2.1756,-1.7301 -3.5328,-1.7741 h -24.737 l -1.7619,-0.89367 -7.5096,-23.95 c -0.2213,-0.83794 -0.689,-1.6208 -1.3288,-2.2184 -0.9333,-0.90818 -2.2399,-1.4052 -3.5332,-1.3341 l 0.1573,8.6e-4 v 1.1e-4 l -0.009,3.4e-4 z" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + d="m 569.63,136.6 c -1.8678,0.24167 -3.5157,1.7145 -3.9769,3.5482 l -7.9492,23.95 -1.7625,0.89368 h -24.294 c -1.3579,0 -2.6831,0.70979 -3.5342,1.7741 -1.7911,2.0126 -1.342,5.5835 0.8777,7.0965 l 19.878,14.637 0.4228,2.129 -7.5075,23.506 c -1.044,3.6688 3.8509,7.3561 7.0675,5.3223 l 19.876,-14.636 h 2.5444 l 19.878,14.636 c 1.7284,1.1354 4.2055,0.93713 5.7406,-0.43994 1.3013,-1.2065 1.8432,-3.1778 1.3288,-4.8796 l -7.5094,-23.506 c -0.7113,-0.14154 0.2801,-1.4192 0.4228,-2.1289 l 19.875,-14.637 c 2.2268,-1.5129 2.6678,-5.0838 0.8779,-7.0964 -0.8444,-1.0642 -2.1756,-1.7301 -3.5328,-1.7741 h -24.737 l -1.7619,-0.89367 -7.5096,-23.95 c -0.2213,-0.83794 -0.689,-1.6208 -1.3288,-2.2184 -0.9333,-0.90818 -2.2399,-1.4052 -3.5332,-1.3341 l 0.1573,8.6e-4 v 1.1e-4 l -0.009,3.4e-4 z" + style="stroke:#d77711;enable-background:new" + id="path5717-0-9-5-0" /> + <path + inkscape:connector-curvature="0" + d="m 569.63,135.6 c -1.8678,0.24167 -3.5157,1.7145 -3.9769,3.5482 l -7.9492,23.95 -1.7625,0.89368 h -24.294 c -1.3579,0 -2.6831,0.70979 -3.5342,1.7741 -1.7911,2.0126 -1.342,5.5835 0.8777,7.0965 l 19.878,14.637 0.4228,2.129 -7.5075,23.506 c -1.044,3.6688 3.8509,7.3561 7.0675,5.3223 l 19.876,-14.636 h 2.5444 l 19.878,14.636 c 1.7284,1.1354 4.2055,0.93713 5.7406,-0.43994 1.3013,-1.2065 1.8432,-3.1778 1.3288,-4.8796 l -7.5094,-23.506 c -0.7113,-0.14154 0.2801,-1.4192 0.4228,-2.1289 l 19.875,-14.637 c 2.2268,-1.5129 2.6678,-5.0838 0.8779,-7.0964 -0.8444,-1.0642 -2.1756,-1.7301 -3.5328,-1.7741 h -24.737 l -1.7619,-0.89367 -7.5096,-23.95 c -0.2213,-0.83794 -0.689,-1.6208 -1.3288,-2.2184 -0.9333,-0.90818 -2.2399,-1.4052 -3.5332,-1.3341 l 0.1573,8.6e-4 v 1.1e-4 l -0.009,3.4e-4 z" + style="stroke:#fbc98d;enable-background:new" + id="path5717-0-9-5-3" /> + </g> + <path + style="opacity:0.45783003;fill:url(#radialGradient6918);fill-rule:evenodd;stroke-width:2.70919991" + inkscape:connector-curvature="0" + d="m 237.7378,-100.1238 c 0,7.481185 -6.06482,13.546 -13.546,13.546 -7.48118,0 -13.546,-6.064815 -13.546,-13.546 0,-7.48118 6.06482,-13.546 13.546,-13.546 7.48118,0 13.546,6.06482 13.546,13.546 z" + id="path14841-3" /> + <path + style="opacity:0.45783003;fill:url(#radialGradient6920);fill-rule:evenodd;stroke-width:3.80920005" + inkscape:connector-curvature="0" + d="m 247.8578,-103.1238 c 0,10.518725 -8.52728,19.046 -19.046,19.046 -10.51872,0 -19.046,-8.527275 -19.046,-19.046 0,-10.51872 8.52728,-19.046 19.046,-19.046 10.51872,0 19.046,8.52728 19.046,19.046 z" + id="path14849-7" /> + <path + style="fill:url(#radialGradient5268);fill-opacity:1;fill-rule:evenodd;stroke-width:0.50797999" + inkscape:connector-curvature="0" + d="m 227.40812,-99.44502 c 0,1.402736 -1.13716,2.5399 -2.5399,2.5399 -1.40274,0 -2.5399,-1.137164 -2.5399,-2.5399 0,-1.40274 1.13716,-2.5399 2.5399,-2.5399 1.40274,0 2.5399,1.13716 2.5399,2.5399 z" + id="path14843-0" /> + <path + style="fill:url(#radialGradient5240);fill-opacity:1;fill-rule:evenodd;stroke-width:0.71421999" + inkscape:connector-curvature="0" + d="m 233.33768,-102.16778 c 0,1.97225 -1.59885,3.5711 -3.5711,3.5711 -1.97225,0 -3.5711,-1.59885 -3.5711,-3.5711 0,-1.97225 1.59885,-3.5711 3.5711,-3.5711 1.97225,0 3.5711,1.59885 3.5711,3.5711 z" + id="path14851-8" /> + <path + inkscape:connector-curvature="0" + d="m 180.32656,-58.581108 c 0,0 6.625,-3.125 12.625,0.125 l 21,15.25 c 3.875,2.125 9.5,-1.25 10.375,-4.875 0,0 -6.25,0.75 -8.5,-2.75 l -19.5,-14.75 c -1.625,-1.25 -4.25,-1.25 -6.25,-0.25 z" + style="color:#000000;opacity:0.56223001;fill:#fdeddd" + id="path11982-8" /> + <path + inkscape:connector-curvature="0" + d="m 171.49622,-42.841 c -3.125,-1 -4.4428,-3.0273 -2.8894,-8.8172 l 3.9266,-12.827 c 0.46212,-4.3952 0.2966,-7.8518 -5.2599,-11.008 0,0 -0.75133,6.0816 -2.2258,10.04 l -4.3167,13.436 c -0.30418,5.8002 4.7754,9.8299 10.765,9.176 z" + style="color:#000000;opacity:0.56223001;fill:#fde6cf" + id="path11986-8" /> + <path + inkscape:connector-curvature="0" + d="m 188.003,-112.918 c 0,0 -3.5993,6.3798 -10.374,7.1964 l -23.701,0.19632 c -5.8903,0.006 -9.4041,7.3868 -7.2725,12.851 0,0 0.66626,-4.725 7.7755,-4.7948 l 24.563,-0.48717 c 2.0486,0.0806 4.1905,-1.4369 5.2444,-3.4091 z" + style="color:#000000;opacity:0.56223001;fill:#ffffff" + id="path12005-4" /> + <path + inkscape:connector-curvature="0" + d="m 187.913,-132.97246 c 0,0 2.26,1.3429 5.6317,7.2754 l 3.7079,12.163 c 2.1637,3.8535 4.1,7.2989 10.458,6.6619 0,0 -4.8166,-15.45 -7.5324,-23.085 -3.1048,-4.9086 -7.9683,-4.7165 -12.265,-3.0153 z" + style="color:#000000;opacity:0.56223001;fill:#ffffff" + id="path12007-3" /> + <g + style="fill-rule:evenodd" + transform="translate(352.053,-245.983)" + id="g12056-1"> + <path + style="opacity:0.45783003;fill:url(#radialGradient7892-7-7)" + inkscape:connector-curvature="0" + transform="matrix(1.8092,0,0,1.8092,-568.58,103.68)" + d="m 244,51 c 0,2.7614 -2.2386,5 -5,5 -2.7614,0 -5,-2.2386 -5,-5 0,-2.7614 2.2386,-5 5,-5 2.7614,0 5,2.2386 5,5 z" + id="path12062-2" /> + <path + style="opacity:0.45783003;fill:url(#radialGradient6922)" + inkscape:connector-curvature="0" + transform="matrix(3.8092,0,0,3.8092,-1042.5,0.95285)" + d="m 244,51 c 0,2.7614 -2.2386,5 -5,5 -2.7614,0 -5,-2.2386 -5,-5 0,-2.7614 2.2386,-5 5,-5 2.7614,0 5,2.2386 5,5 z" + id="path12058-4" /> + <path + style="fill:url(#radialGradient5260);fill-opacity:1" + inkscape:connector-curvature="0" + transform="matrix(0.71422,0,0,0.71422,-301.85,159.75)" + d="m 244,51 c 0,2.7614 -2.2386,5 -5,5 -2.7614,0 -5,-2.2386 -5,-5 0,-2.7614 2.2386,-5 5,-5 2.7614,0 5,2.2386 5,5 z" + id="path12060-9" /> + <path + style="fill:url(#radialGradient5258);fill-opacity:1" + inkscape:connector-curvature="0" + transform="matrix(0.33922,0,0,0.33922,-216.81,179.1)" + d="m 244,51 c 0,2.7614 -2.2386,5 -5,5 -2.7614,0 -5,-2.2386 -5,-5 0,-2.7614 2.2386,-5 5,-5 2.7614,0 5,2.2386 5,5 z" + id="path12064-0" /> + </g> + </g> + <path + id="path14984-6" + transform="matrix(1.59104,0.7026,-0.70276,1.5914,158.4148,-308.70807)" + d="m 206.67,217.35 -40.254,-8.0108 -22.183,34.465 -4.8204,-40.759 -39.633,-10.447 37.275,-17.18 -2.3117,-40.921 27.858,30.142 38.204,-14.844 -20.058,35.808 z" + inkscape:connector-curvature="0" + style="display:inline;fill:none;stroke:url(#radialGradient7894-2-5);stroke-width:11.49800014;stroke-linecap:round;stroke-linejoin:round;filter:url(#filter15758-4-6);enable-background:new" /> + </g> + </g> + <g + inkscape:groupmode="layer" + id="layer9" + inkscape:label="symbols" + style="display:inline"> + <path + inkscape:connector-curvature="0" + id="path5899" + d="m 591.8782,-175.86534 v 0.002 a 1.0000999,1.0000999 0 0 0 -0.057,0.002 c 0,1.1e-4 0,-0.002 -0.01,-0.002 a 1.0000999,1.0000999 0 0 0 -0.627,0.26953 1.0000999,1.0000999 0 0 0 0,0.002 c -0.511,0.25042 -0.9347,0.63689 -1.082,1.2207 l 0.02,-0.0723 -1.4902,4.48243 h -4.6504 c -0.6202,0 -1.1339,0.29559 -1.4922,0.73046 -0.7959,0.91835 -0.6322,2.25491 0.375,2.93946 l -0.029,-0.0195 3.752,2.7539 -1.4453,4.50782 a 1.0000999,1.0000999 0 0 0 -0.01,0.0293 c -0.2464,0.86305 0.2006,1.64798 0.7656,2.07227 0.565,0.42429 1.4436,0.63516 2.2031,0.15625 a 1.0000999,1.0000999 0 0 0 0.059,-0.041 l 3.8184,-2.80273 3.8184,2.80273 a 1.0000999,1.0000999 0 0 0 0.045,0.0312 c 0.7713,0.50513 1.7273,0.42709 2.4101,-0.18359 a 1.0000999,1.0000999 0 0 0 0.014,-0.01 c 0.5683,-0.52542 0.7809,-1.29324 0.5547,-2.03906 a 1.0000999,1.0000999 0 0 0 -0.01,-0.0156 l -1.4433,-4.50782 3.7187,-2.73242 c 1.0089,-0.68352 1.1716,-2.02204 0.3789,-2.93945 -0.3674,-0.44717 -0.8841,-0.7138 -1.4609,-0.73242 a 1.0000999,1.0000999 0 0 0 -0.031,0 h -4.7343 l -1.3907,-4.42188 c -0.094,-0.35824 -0.2866,-0.67041 -0.5546,-0.92383 -0.1859,-0.17924 -0.4594,-0.16535 -0.6914,-0.25976 a 1.0000999,1.0000999 0 0 0 -0.6934,-0.29883 h -0.014 z m 0.098,2.18945 1.5196,4.82813 a 1.0000999,1.0000999 0 0 0 0.023,0.0664 c 0,0 0.1364,0.30397 0.3594,0.49219 0.223,0.18822 0.5819,0.32813 0.9394,0.32813 h 5.1172 a 1.0000999,1.0000999 0 0 0 0.021,0.0234 1.0000999,1.0000999 0 0 0 -0.02,0.0156 l -4.1445,3.04297 a 1.0000999,1.0000999 0 0 0 -0.2676,0.29297 1.0000999,1.0000999 0 0 0 0,0.002 c -0.027,0.0291 -0.01,0.003 -0.053,0.0586 -0.124,0.1621 -0.2493,0.49216 -0.2363,0.75781 0.013,0.26566 0.097,0.44876 0.1796,0.60547 l -0.068,-0.16406 1.541,4.81445 -4.0508,-2.9746 a 1.0000999,1.0000999 0 0 0 -0.035,-0.0234 c 0,0 -0.2057,-0.14681 -0.5,-0.21875 -0.2943,-0.0719 -0.8543,-0.056 -1.2559,0.30469 l 0.076,-0.0625 -4.0332,2.96093 c -0.013,-0.007 -0.01,-0.0175 -0.031,0.0566 l 0.014,-0.043 -0.018,0.0137 c 0.018,-0.006 0.015,-0.0176 0.02,-0.0195 l 1.541,-4.80859 -0.1211,0.25 c 0.1288,-0.19319 0.2381,-0.43838 0.25,-0.72656 0.012,-0.28818 -0.099,-0.58545 -0.2364,-0.77149 -0.2745,-0.37206 -0.623,-0.45117 -0.623,-0.45117 l 0.2812,0.14453 -4.1445,-3.04296 a 1.0000999,1.0000999 0 0 0 -0.02,-0.0137 1.0000999,1.0000999 0 0 0 0.02,-0.0234 h 5.0274 c 0.7427,2.4e-4 1.2207,-0.66602 1.2207,-0.66602 a 1.0000999,1.0000999 0 0 0 0.096,-0.20508 z" + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#c66f11;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.99999988;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new" /> + <path + inkscape:connector-curvature="0" + id="path5901" + d="m 579.9016,-49.683699 a 0.50005,0.50005 0 0 0 -0.01,0.002 0.50005,0.50005 0 0 0 -0.4531,0.390626 c -0.1198,0.119007 -0.3208,0.147869 -0.3652,0.324218 l -0.6639,1.996047 h -2.1093 c -0.2985,0 -0.5429,0.143479 -0.7149,0.351562 -0.3829,0.442206 -0.3052,1.080436 0.1797,1.410157 l -0.016,-0.0098 1.7031,1.25 -0.6562,2.042969 a 0.50005,0.50005 0 0 0 0,0.01563 c -0.1188,0.416168 0.095,0.793371 0.3652,0.996094 0.27,0.202722 0.6923,0.305072 1.0586,0.07422 a 0.50005,0.50005 0 0 0 0.029,-0.02148 l 1.7324,-1.271484 1.7324,1.271484 a 0.50005,0.50005 0 0 0 0.021,0.01563 c 0.3712,0.243327 0.8296,0.205796 1.1582,-0.08789 a 0.50005,0.50005 0 0 0 0.01,-0.0059 c 0.2728,-0.252577 0.3743,-0.61969 0.2656,-0.978516 a 0.50005,0.50005 0 0 0 0,-0.0078 l -0.6562,-2.042969 1.7031,-1.25 -0.016,0.0098 c 0.4862,-0.32933 0.5624,-0.968479 0.1797,-1.410157 -0.1765,-0.21343 -0.423,-0.342641 -0.6992,-0.351562 a 0.50005,0.50005 0 0 0 -0.016,0 h -2.1484 l -0.6348,-2.023438 v 0.01758 c -0.045,-0.164363 -0.132,-0.316265 -0.2617,-0.439453 -4e-4,-4.42e-4 0,4.4e-4 0,0 -0.086,-0.08255 -0.2134,-0.07584 -0.3203,-0.121094 a 0.50005,0.50005 0 0 0 -0.3438,-0.146485 v 0 h -0.012 a 0.50005,0.50005 0 0 0 -0.027,0.002 c 0,7.7e-5 0,-0.002 0,-0.002 z m 0.074,1.173829 0.6622,2.103515 a 0.50005,0.50005 0 0 0 0.012,0.0332 c 0,0 0.066,0.149815 0.1758,0.242188 0.1093,0.09237 0.2861,0.160156 0.4589,0.160156 h 2.2559 l -1.832,1.345703 a 0.50005,0.50005 0 0 0 -0.127,0.136719 c -0.014,0.01436 -0.01,0.0019 -0.029,0.0332 -0.011,0.01414 -0.01,0.04767 -0.02,0.06641 -0.049,0.08765 -0.103,0.200511 -0.098,0.308594 0.01,0.131193 0.048,0.219897 0.088,0.294922 l -0.035,-0.08203 0.6718,2.095703 -1.7636,-1.294922 a 0.50005,0.50005 0 0 0 -0.018,-0.01172 c 0,0 -0.099,-0.0705 -0.2422,-0.105469 -0.143,-0.03497 -0.4171,-0.02768 -0.6133,0.148438 l 0.037,-0.03125 -1.7617,1.294922 0.6699,-2.095703 -0.059,0.123046 c 0.062,-0.09339 0.1137,-0.211833 0.1192,-0.353515 0.01,-0.141682 -0.048,-0.287582 -0.1153,-0.378906 -0.1351,-0.182649 -0.3066,-0.222657 -0.3066,-0.222657 l 0.1406,0.07227 -1.832,-1.34375 h 2.2148 c 0.3598,-0.0011 0.5957,-0.326172 0.5957,-0.326172 a 0.50005,0.50005 0 0 0 0.047,-0.101562 z m 2.2286,6.880859 v 0.0098 -0.0078 c -5e-4,-0.0014 3e-4,-7.29e-4 0,-0.002 z" + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#c66f11;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new" /> + <path + inkscape:connector-curvature="0" + id="path5905" + d="m 575.9407,-5.2696361 a 0.50005,0.50005 0 0 0 -0.033,0.00195 0.50005,0.50005 0 0 0 -0.023,0.00195 0.50005,0.50005 0 0 0 -0.4335,0.3867188 c -0.096,0.1054119 -0.2709,0.1237527 -0.3086,0.2734375 l 0.01,-0.035156 -0.5547,1.6640625 h -1.7246 c -0.2782,0 -0.5047,0.1317579 -0.664,0.3242188 -0.3553,0.4108805 -0.2844,0.9948116 0.164,1.3027344 0,9.237e-4 6e-4,0.00299 0,0.00391 l 1.3769,1.0117188 -0.5351,1.6738281 a 0.50005,0.50005 0 0 0 0,0.015625 c -0.1117,0.3891075 0.088,0.7378254 0.3359,0.9238281 0.2478,0.1860027 0.64,0.2822567 0.9824,0.066406 a 0.50005,0.50005 0 0 0 0.029,-0.019531 l 1.4154,-1.0410135 1.418,1.0410156 a 0.50005,0.50005 0 0 0 0.022,0.013672 c 0.3454,0.2262629 0.7665,0.1929902 1.0722,-0.080078 a 0.50005,0.50005 0 0 0 0.01,-0.00586 c 0.2536,-0.2346783 0.3473,-0.572636 0.2461,-0.90625 a 0.50005,0.50005 0 0 0 0,-0.00781 l -0.5351,-1.6738281 1.375,-1.0117188 c 0.453,-0.3068044 0.5241,-0.8949907 0.1679,-1.3066406 -0.1631,-0.1963607 -0.3895,-0.3159199 -0.6465,-0.3242188 a 0.50005,0.50005 0 0 0 -0.017,0 h -1.7559 l -0.5156,-1.6347656 c -0.043,-0.1602909 -0.1264,-0.2991013 -0.2461,-0.4121094 -0.073,-0.069482 -0.1826,-0.058759 -0.2715,-0.099609 a 0.50005,0.50005 0 0 0 -0.3359,-0.1464843 0.50005,0.50005 0 0 0 -0.01,0 z m 0.033,1.3242187 0.4863,1.546875 a 0.50005,0.50005 0 0 0 0.012,0.033203 c 0,0 0.066,0.145286 0.1719,0.234375 0.1054,0.089089 0.2752,0.1542968 0.4375,0.1542968 h 1.6699 l -1.3574,0.9960938 a 0.50005,0.50005 0 0 0 -0.1289,0.1386718 0.50005,0.50005 0 0 0 -0.01,0.00781 c -0.01,0.010503 0,-7.147e-4 -0.014,0.013672 -0.01,0.00664 0,0.02347 -0.01,0.03125 a 0.50005,0.50005 0 0 0 -0.035,0.109375 c 8e-4,-0.00389 0,-0.00398 0,-0.00781 -0.033,0.079121 -0.077,0.154375 -0.072,0.2363281 0.01,0.1280487 0.045,0.2119777 0.082,0.28125 l -0.035,-0.083984 0.4961,1.5429687 -1.2989,-0.95117188 a 0.50005,0.50005 0 0 0 -0.017,-0.0117188 c 0,0 -0.093,-0.0684594 -0.2286,-0.1015625 -0.1354,-0.0331031 -0.4016,-0.0248163 -0.5898,0.14453125 l 0.039,-0.03125 -1.2969,0.95117193 0.4941,-1.5429688 -0.06,0.1269531 c 0.058,-0.087035 0.1094,-0.2021235 0.1152,-0.3398438 0.01,-0.1377202 -0.047,-0.281773 -0.1133,-0.3710937 -0.1316,-0.1786413 -0.2968,-0.2148437 -0.2968,-0.2148436 l 0.1406,0.072266 -1.3574,-0.9960939 h 1.6347 c 0.3432,5.529e-4 0.5703,-0.3125 0.5703,-0.3125 a 0.50005,0.50005 0 0 0 0.047,-0.1015625 z m 2.0664,3.7324219 c -0.045,0.058226 -0.056,0.061826 -0.018,0.023437 0,-0.00258 0.01,-0.016345 0.01,-0.019531 z m -0.2559,1.8476563 v 0.00977 -0.00586 c -5e-4,-0.0018 5e-4,-0.00218 0,-0.00391 z" + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#c66f11;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#fde8d0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.92400002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new" + d="m 590.1022,-175.37111 0.02,-0.0723 -1.4902,4.48243 h -4.6504 c -0.6202,0 -1.1339,0.29559 -1.4922,0.73046 -0.7959,0.91835 -0.6322,2.25491 0.375,2.93946 l -0.029,-0.0195 3.752,2.7539 -1.4453,4.50782 c 0,0.01 -0.01,0.0195 -0.01,0.0293 -0.2464,0.86305 0.2006,1.64798 0.7656,2.07227 0.565,0.42429 1.4436,0.63516 2.2031,0.15625 0.02,-0.013 0.04,-0.0266 0.059,-0.041 l 3.8184,-2.80273 3.8184,2.80273 c 0.015,0.0108 0.03,0.0212 0.045,0.0312 0.7713,0.50513 1.7273,0.42709 2.4101,-0.18359 0,-0.003 0.01,-0.007 0.014,-0.01 0.5683,-0.52542 0.7809,-1.29324 0.5547,-2.03906 0,-0.005 -0.01,-0.0104 -0.01,-0.0156 l -1.4433,-4.50782 3.7187,-2.73242 c 1.0089,-0.68352 1.1716,-2.02204 0.3789,-2.93945 -0.3674,-0.44717 -0.8841,-0.7138 -1.4609,-0.73242 -0.01,-1.6e-4 -0.021,-1.6e-4 -0.031,0 h -4.7343 l -1.3907,-4.42188 c -0.094,-0.35824 -0.2866,-0.67041 -0.5546,-0.92383 -1.6271,-0.77006 -2.0804,-0.69724 -3.191,0.93578 z m 1.874,0.69522 1.5196,4.82813 c 0.01,0.0224 0.015,0.0445 0.023,0.0664 0,0 0.1364,0.30397 0.3594,0.49219 0.223,0.18822 0.5819,0.32813 0.9394,0.32813 h 5.1172 c 0.01,0.008 0.014,0.0157 0.021,0.0234 -0.01,0.005 -0.013,0.0103 -0.02,0.0156 l -4.1445,3.04297 c -0.1079,0.0788 -0.1989,0.17842 -0.2676,0.29297 v 0.002 c -0.027,0.0291 -0.01,0.003 -0.053,0.0586 -0.124,0.1621 -0.2493,0.49216 -0.2363,0.75781 0.013,0.26566 0.097,0.44876 0.1796,0.60547 l -0.068,-0.16406 1.541,4.81445 -4.0508,-2.9746 c -0.012,-0.008 -0.023,-0.0159 -0.035,-0.0234 0,0 -0.2057,-0.14681 -0.5,-0.21875 -0.2943,-0.0719 -0.8543,-0.056 -1.2559,0.30469 l 0.076,-0.0625 -4.0332,2.96093 c -0.013,-0.007 -0.01,-0.0175 -0.031,0.0566 l 0.014,-0.043 -0.018,0.0137 c 0.018,-0.006 0.015,-0.0176 0.02,-0.0195 l 1.541,-4.80859 -0.1211,0.25 c 0.1288,-0.19319 0.2381,-0.43838 0.25,-0.72656 0.012,-0.28818 -0.099,-0.58545 -0.2364,-0.77149 -0.2745,-0.37206 -0.623,-0.45117 -0.623,-0.45117 l 0.2812,0.14453 -4.1445,-3.04296 c -0.01,-0.005 -0.013,-0.009 -0.02,-0.0137 0.01,-0.008 0.014,-0.0155 0.02,-0.0234 h 5.0274 c 0.7427,2.4e-4 1.2207,-0.66602 1.2207,-0.66602 0.04,-0.0645 0.072,-0.13331 0.096,-0.20508 z" + id="path5717-0-9" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccsccccccscccccccccccccccccccccsscccccccccccccccccccccccccccccccccc" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#fde8d0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.92400002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new" + d="m 579.9016,-50.683699 a 0.50005,0.50005 0 0 0 -0.01,0.002 0.50005,0.50005 0 0 0 -0.4531,0.390626 c -0.1198,0.119007 -0.3208,0.147869 -0.3652,0.324218 l -0.6639,1.996047 h -2.1093 c -0.2985,0 -0.5429,0.143479 -0.7149,0.351562 -0.3829,0.442206 -0.3052,1.080436 0.1797,1.410157 l -0.016,-0.0098 1.7031,1.25 -0.6562,2.042969 a 0.50005,0.50005 0 0 0 0,0.01563 c -0.1188,0.416168 0.095,0.793371 0.3652,0.996094 0.27,0.202722 0.6923,0.305072 1.0586,0.07422 a 0.50005,0.50005 0 0 0 0.029,-0.02148 l 1.7324,-1.271484 1.7324,1.271484 a 0.50005,0.50005 0 0 0 0.021,0.01563 c 0.3712,0.243327 0.8296,0.205796 1.1582,-0.08789 a 0.50005,0.50005 0 0 0 0.01,-0.0059 c 0.2728,-0.252577 0.3743,-0.61969 0.2656,-0.978516 a 0.50005,0.50005 0 0 0 0,-0.0078 l -0.6562,-2.042969 1.7031,-1.25 -0.016,0.0098 c 0.4862,-0.32933 0.5624,-0.968479 0.1797,-1.410157 -0.1765,-0.21343 -0.423,-0.342641 -0.6992,-0.351562 a 0.50005,0.50005 0 0 0 -0.016,0 h -2.1484 l -0.6348,-2.023438 v 0.01758 c -0.045,-0.164363 -0.132,-0.316265 -0.2617,-0.439453 -4e-4,-4.42e-4 0,4.4e-4 0,0 -0.086,-0.08255 -0.2134,-0.07584 -0.3203,-0.121094 a 0.50005,0.50005 0 0 0 -0.3438,-0.146485 v 0 h -0.012 a 0.50005,0.50005 0 0 0 -0.027,0.002 c 0,7.7e-5 0,-0.002 0,-0.002 z m 0.074,1.173829 0.6622,2.103515 a 0.50005,0.50005 0 0 0 0.012,0.0332 c 0,0 0.066,0.149815 0.1758,0.242188 0.1093,0.09237 0.2861,0.160156 0.4589,0.160156 h 2.2559 l -1.832,1.345703 a 0.50005,0.50005 0 0 0 -0.127,0.136719 c -0.014,0.01436 -0.01,0.0019 -0.029,0.0332 -0.011,0.01414 -0.01,0.04767 -0.02,0.06641 -0.049,0.08765 -0.103,0.200511 -0.098,0.308594 0.01,0.131193 0.048,0.219897 0.088,0.294922 l -0.035,-0.08203 0.6718,2.095703 -1.7636,-1.294922 a 0.50005,0.50005 0 0 0 -0.018,-0.01172 c 0,0 -0.099,-0.0705 -0.2422,-0.105469 -0.143,-0.03497 -0.4171,-0.02768 -0.6133,0.148438 l 0.037,-0.03125 -1.7617,1.294922 0.6699,-2.095703 -0.059,0.123046 c 0.062,-0.09339 0.1137,-0.211833 0.1192,-0.353515 0.01,-0.141682 -0.048,-0.287582 -0.1153,-0.378906 -0.1351,-0.182649 -0.3066,-0.222657 -0.3066,-0.222657 l 0.1406,0.07227 -1.832,-1.34375 h 2.2148 c 0.3598,-0.0011 0.5957,-0.326172 0.5957,-0.326172 a 0.50005,0.50005 0 0 0 0.047,-0.101562 z m 2.2286,6.880859 v 0.0098 -0.0078 c -5e-4,-0.0014 3e-4,-7.29e-4 0,-0.002 z" + id="path5862" + inkscape:connector-curvature="0" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#fde8d0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.92400002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new" + d="m 575.9407,-6.2696361 a 0.50005,0.50005 0 0 0 -0.033,0.00195 0.50005,0.50005 0 0 0 -0.023,0.00195 0.50005,0.50005 0 0 0 -0.4335,0.3867188 c -0.096,0.1054119 -0.2709,0.1237527 -0.3086,0.2734375 l 0.01,-0.035156 -0.5547,1.6640625 h -1.7246 c -0.2782,0 -0.5047,0.1317579 -0.664,0.3242188 -0.3553,0.4108805 -0.2844,0.9948116 0.164,1.3027344 0,9.237e-4 6e-4,0.00299 0,0.00391 l 1.3769,1.0117188 -0.5351,1.67382805 a 0.50005,0.50005 0 0 0 0,0.015625 c -0.1117,0.3891075 0.088,0.73782545 0.3359,0.92382815 0.2478,0.1860027 0.64,0.2822567 0.9824,0.066406 a 0.50005,0.50005 0 0 0 0.029,-0.019531 l 1.4154,-1.04101355 1.418,1.04101565 a 0.50005,0.50005 0 0 0 0.022,0.013672 c 0.3454,0.2262629 0.7665,0.1929902 1.0722,-0.080078 a 0.50005,0.50005 0 0 0 0.01,-0.00586 c 0.2536,-0.2346783 0.3473,-0.57263599 0.2461,-0.90625005 a 0.50005,0.50005 0 0 0 0,-0.007813 l -0.5351,-1.67382805 1.375,-1.0117188 c 0.453,-0.3068044 0.5241,-0.8949907 0.1679,-1.3066406 -0.1631,-0.1963607 -0.3895,-0.3159199 -0.6465,-0.3242188 a 0.50005,0.50005 0 0 0 -0.017,0 h -1.7559 l -0.5156,-1.6347656 c -0.043,-0.1602909 -0.1264,-0.2991013 -0.2461,-0.4121094 -0.073,-0.069482 -0.1826,-0.058759 -0.2715,-0.099609 a 0.50005,0.50005 0 0 0 -0.3359,-0.1464843 0.50005,0.50005 0 0 0 -0.01,0 z m 0.033,1.3242187 0.4863,1.546875 a 0.50005,0.50005 0 0 0 0.012,0.033203 c 0,0 0.066,0.145286 0.1719,0.234375 0.1054,0.089089 0.2752,0.1542968 0.4375,0.1542968 h 1.6699 l -1.3574,0.9960938 a 0.50005,0.50005 0 0 0 -0.1289,0.1386718 0.50005,0.50005 0 0 0 -0.01,0.00781 c -0.01,0.010503 0,-7.147e-4 -0.014,0.013672 -0.01,0.00664 0,0.02347 -0.01,0.03125 a 0.50005,0.50005 0 0 0 -0.035,0.109375 c 8e-4,-0.00389 0,-0.00398 0,-0.00781 -0.033,0.079121 -0.077,0.154375 -0.072,0.2363281 0.01,0.1280487 0.045,0.2119777 0.082,0.28125 l -0.035,-0.083984 0.4961,1.54296869 -1.2989,-0.95117189 a 0.50005,0.50005 0 0 0 -0.017,-0.011719 c 0,0 -0.093,-0.068459 -0.2286,-0.1015625 -0.1354,-0.033103 -0.4016,-0.024816 -0.5898,0.1445313 l 0.039,-0.03125 -1.2969,0.95117184 0.4941,-1.54296864 -0.06,0.1269531 c 0.058,-0.087035 0.1094,-0.2021235 0.1152,-0.3398438 0.01,-0.1377202 -0.047,-0.281773 -0.1133,-0.3710937 -0.1316,-0.1786414 -0.2968,-0.2148438 -0.2968,-0.2148438 l 0.1406,0.072266 -1.3574,-0.9960938 h 1.6347 c 0.3432,5.529e-4 0.5703,-0.3125 0.5703,-0.3125 a 0.50005,0.50005 0 0 0 0.047,-0.1015625 z m 2.0664,3.7324219 c -0.045,0.058226 -0.056,0.061826 -0.018,0.023437 0,-0.00258 0.01,-0.016345 0.01,-0.019531 z m -0.2559,1.84765622 v 0.009766 -0.005859 c -5e-4,-0.001803 5e-4,-0.002176 0,-0.003907 z" + id="path5879" + inkscape:connector-curvature="0" /> + </g> + </g> +</svg> diff --git a/SparkleShare/Common/Pixmaps/Sources/bitbucket.svg b/SparkleShare/Common/Images/Sources/bitbucket.svg index 5f3a754..5f3a754 100644 --- a/SparkleShare/Common/Pixmaps/Sources/bitbucket.svg +++ b/SparkleShare/Common/Images/Sources/bitbucket.svg diff --git a/SparkleShare/Common/Pixmaps/Sources/folder-icons-mac-yosemite.svg b/SparkleShare/Common/Images/Sources/folder-icons-mac-yosemite.svg index 5b5bfb6..5b5bfb6 100644 --- a/SparkleShare/Common/Pixmaps/Sources/folder-icons-mac-yosemite.svg +++ b/SparkleShare/Common/Images/Sources/folder-icons-mac-yosemite.svg diff --git a/SparkleShare/Common/Pixmaps/Sources/folder-icons-mac.svg b/SparkleShare/Common/Images/Sources/folder-icons-mac.svg index 5ae65da..5ae65da 100644 --- a/SparkleShare/Common/Pixmaps/Sources/folder-icons-mac.svg +++ b/SparkleShare/Common/Images/Sources/folder-icons-mac.svg diff --git a/SparkleShare/Common/Pixmaps/Sources/folder-icons-windows.svg b/SparkleShare/Common/Images/Sources/folder-icons-windows.svg index 14e3173..14e3173 100644 --- a/SparkleShare/Common/Pixmaps/Sources/folder-icons-windows.svg +++ b/SparkleShare/Common/Images/Sources/folder-icons-windows.svg diff --git a/SparkleShare/Common/Pixmaps/Sources/github.svg b/SparkleShare/Common/Images/Sources/github.svg index ccc55a4..ccc55a4 100644 --- a/SparkleShare/Common/Pixmaps/Sources/github.svg +++ b/SparkleShare/Common/Images/Sources/github.svg diff --git a/SparkleShare/Common/Images/Sources/gitlab.svg b/SparkleShare/Common/Images/Sources/gitlab.svg new file mode 100644 index 0000000..377971b --- /dev/null +++ b/SparkleShare/Common/Images/Sources/gitlab.svg @@ -0,0 +1,195 @@ +<?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="gitlab.svg" + viewBox="0 0 24 24" + inkscape:export-filename="/Users/hbons/Personal/Projects/SparkleShare/SparkleShare/Common/Presets/gitlab@2x.png" + inkscape:export-xdpi="192" + inkscape:export-ydpi="192"> + <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="11.313708" + inkscape:cx="8.5858812" + inkscape:cy="8.8928334" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="0" + inkscape:current-layer="g4326" + inkscape:snap-global="false"> + <inkscape:grid + type="xygrid" + id="grid4341" /> + </sodipodi:namedview> + <defs + id="defs3"> + <linearGradient + id="linearGradient4343" + inkscape:collect="always"> + <stop + id="stop4345" + offset="0" + style="stop-color:#df2000;stop-opacity:1" /> + <stop + id="stop4347" + offset="1" + style="stop-color:#881805;stop-opacity:1" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient4318"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop4320" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop4322" /> + </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="#linearGradient4343" + id="linearGradient4339" + gradientUnits="userSpaceOnUse" + x1="26.80905" + y1="3.7043378" + x2="31.521933" + y2="19.203804" + gradientTransform="translate(0,0.98994346)" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4318" + id="radialGradient4349" + cx="27.992599" + cy="13.000279" + fx="27.992599" + fy="13.000279" + r="10.832553" + gradientTransform="matrix(2.7510713,0,0,2.3899162,-49.67941,-17.015106)" + 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 + style="fill:#e24329;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.9892233;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 28.012539,10.206244 8.200627,0 L 38.959248,2.1937049 43.510972,14.607498 32.075235,22.996213 20.639498,14.56988 24.965517,2.0432347 Z" + id="path4268" + inkscape:connector-curvature="0" /> + <g + transform="matrix(-1,0,0,1,64.092707,0.98994346)" + id="g4278" + style="stroke-width:0.9892233"> + <g + id="g4284" + style="stroke-width:0.9892233"> + <path + style="fill:#fc6d26;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.9892233px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 28.012539,9.2163007 -5.818181,0 -1.55486,4.3636363 11.435737,8.426333 z" + id="path4280" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#fca326;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.9892233px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 22.694403,9.207369 32.028121,21.951963 20.639498,13.579937 Z" + id="path4282" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" /> + </g> + </g> + <g + id="g4288" + transform="translate(0.01747244,0.98994346)" + style="stroke-width:0.9892233"> + <g + id="g4290" + style="stroke-width:0.9892233"> + <path + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" + id="path4292" + d="m 28.012539,9.2163007 -5.818181,0 -1.55486,4.3636363 11.435737,8.426333 z" + style="fill:#fc6d26;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.9892233px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + id="path4294" + d="M 22.694403,9.207369 32.028121,21.951963 20.639498,13.579937 Z" + style="fill:#fca326;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.9892233px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + </g> + </g> + <path + inkscape:connector-curvature="0" + id="path4266" + d="m 28.012539,10.206244 8.200627,0 L 38.959248,2.1937049 43.510972,14.607498 32.075235,22.996213 20.639498,14.56988 24.965517,2.0432347 Z" + style="fill:none;fill-rule:evenodd;stroke:url(#linearGradient4339);stroke-width:0.9892233;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + d="M 25.001953,4.0175781 21.826172,13.210938 32.078125,20.761719 42.3125,13.253906 38.990234,4.1992188 37.160156,9.5410156 A 1.0021178,1.0021178 0 0 1 36.212891,10.21875 l -8.201172,0 A 1.0021178,1.0021178 0 0 1 27.072266,9.5664062 L 25.001953,4.0175781 Z" + id="path4312" + style="opacity:0.4;fill:none;fill-rule:evenodd;stroke:url(#radialGradient4349);stroke-width:0.9892233;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:original="M 24.964844 1.0527344 L 20.638672 13.580078 L 32.076172 22.005859 L 43.511719 13.617188 L 38.958984 1.203125 L 36.212891 9.2167969 L 28.011719 9.2167969 L 24.964844 1.0527344 z " + inkscape:radius="-1.0020176" + sodipodi:type="inkscape:offset" + transform="translate(0,0.98994346)" /> + </g> +</svg> diff --git a/SparkleShare/Common/Images/Sources/planio.svg b/SparkleShare/Common/Images/Sources/planio.svg new file mode 100644 index 0000000..75aedb5 --- /dev/null +++ b/SparkleShare/Common/Images/Sources/planio.svg @@ -0,0 +1,182 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg9662" + height="24" + width="24" + version="1.1" + inkscape:version="0.91+devel r14094" + sodipodi:docname="planio.svg" + viewBox="0 0 24 24" + inkscape:export-filename="/Users/hbons/Personal/Projects/SparkleShare/SparkleShare/Common/Presets/planio.png" + inkscape:export-xdpi="96" + inkscape:export-ydpi="96"> + <sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1280" + inkscape:window-height="755" + id="namedview4365" + inkscape:document-units="px" + showgrid="false" + inkscape:zoom="16" + inkscape:cx="11.663307" + inkscape:cy="11.258003" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="0" + inkscape:current-layer="g4326" + inkscape:snap-global="true" + inkscape:snap-smooth-nodes="false" + inkscape:object-nodes="false" + inkscape:snap-bbox="true" + inkscape:snap-nodes="false" + inkscape:bbox-paths="false" + inkscape:bbox-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid4341" /> + </sodipodi:namedview> + <defs + id="defs3"> + <linearGradient + inkscape:collect="always" + id="linearGradient4455"> + <stop + style="stop-color:#74caea;stop-opacity:1" + offset="0" + id="stop4457" /> + <stop + style="stop-color:#34a1ca;stop-opacity:1" + offset="1" + id="stop4459" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient4447"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop4449" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop4451" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient4428"> + <stop + style="stop-color:#005474;stop-opacity:1" + offset="0" + id="stop4430" /> + <stop + style="stop-color:#37a9d4;stop-opacity:1" + offset="1" + id="stop4432" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient4304"> + <stop + style="stop-color:#ce2509;stop-opacity:1" + offset="0" + id="stop4306" /> + <stop + style="stop-color:#a9210a;stop-opacity:1" + offset="1" + id="stop4308" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4304" + id="linearGradient4310" + x1="28.415369" + y1="9.2727699" + x2="31.521933" + y2="19.203804" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4428" + id="linearGradient4434" + x1="39.367229" + y1="23.90914" + x2="34.828079" + y2="3.3593886" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9885037,0,0,0.98994346,20.217703,1.7271878)" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4447" + id="radialGradient4453" + cx="52.259827" + cy="9.6745958" + fx="52.259827" + fy="9.6745958" + r="9.5658912" + gradientTransform="matrix(2.1628252,0,0,2.9778165,-60.887608,-20.066985)" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4455" + id="linearGradient4526" + x1="53.775932" + y1="11.068961" + x2="56.46653" + y2="23.231386" + gradientUnits="userSpaceOnUse" /> + </defs> + <metadata + id="metadata4"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="g4326" + transform="matrix(1.01163,0,0,1.0101587,-20.452835,-1.7447338)" + style="stroke-width:0.9892233"> + <path + sodipodi:type="inkscape:offset" + inkscape:radius="0.46403605" + inkscape:original="M 54.814453 3.7070312 C 53.729581 3.7104612 52.652708 3.8923279 51.626953 4.2460938 L 52.835938 10.195312 L 48.294922 6.1738281 C 48.133924 6.3131014 47.977862 6.4580369 47.826172 6.6074219 C 46.443434 7.9940104 45.502551 9.7611672 45.123047 11.683594 L 50.873047 13.607422 L 45.123047 15.53125 C 45.502551 17.453676 46.443434 19.218881 47.826172 20.605469 C 47.977861 20.754855 48.133925 20.89979 48.294922 21.039062 L 52.833984 17.017578 L 51.626953 22.966797 C 52.652675 23.320563 53.729581 23.502434 54.814453 23.505859 C 55.899326 23.502359 56.976198 23.320563 58.001953 22.966797 L 56.794922 17.017578 L 61.335938 21.039062 C 61.496935 20.89979 61.652997 20.754855 61.804688 20.605469 C 63.187426 19.218881 64.128308 17.453676 64.507812 15.53125 L 58.757812 13.605469 L 64.507812 11.683594 C 64.128343 9.7611672 63.187425 7.9940104 61.804688 6.6074219 C 61.652998 6.4580369 61.496935 6.3131014 61.335938 6.1738281 L 56.796875 10.195312 L 58.001953 4.2460938 C 56.976198 3.892328 55.899326 3.7104568 54.814453 3.7070312 z " + xlink:href="#path4468" + style="opacity:1;fill:url(#linearGradient4526);fill-opacity:1;stroke:url(#linearGradient4434);stroke-width:0.9892233;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path4443" + d="m 54.8125,3.2421875 c -1.135761,0.00359 -2.26189,0.1940319 -3.335938,0.5644531 a 0.46408245,0.46408245 0 0 0 -0.304687,0.53125 l 0.931641,4.5878906 -3.5,-3.0996093 a 0.46408245,0.46408245 0 0 0 -0.611328,-0.00391 C 47.822934,5.9686805 47.658148,6.1215986 47.5,6.2773438 a 0.46408245,0.46408245 0 0 0 -0.002,0.00195 C 46.05043,7.7309453 45.065232,9.581363 44.667969,11.59375 a 0.46408245,0.46408245 0 0 0 0.308593,0.529297 l 4.4375,1.484375 -4.4375,1.484375 a 0.46408245,0.46408245 0 0 0 -0.308593,0.529297 c 0.397274,2.012444 1.382614,3.861006 2.830078,5.3125 a 0.46408245,0.46408245 0 0 0 0.002,0.002 c 0.158151,0.155749 0.322936,0.308666 0.492188,0.455078 a 0.46408245,0.46408245 0 0 0 0.611328,-0.0039 l 3.5,-3.09961 -0.931641,4.587891 a 0.46408245,0.46408245 0 0 0 0.304687,0.53125 c 1.074021,0.370424 2.200175,0.560867 3.335938,0.564453 a 0.46408245,0.46408245 0 0 0 0.0039,0 c 1.135722,-0.0037 2.261872,-0.194026 3.335938,-0.564453 A 0.46408245,0.46408245 0 0 0 58.457031,22.875 l -0.93164,-4.589844 3.501953,3.101563 a 0.46408245,0.46408245 0 0 0 0.611328,0.0039 c 0.169252,-0.146414 0.334038,-0.299332 0.492187,-0.455078 a 0.46408245,0.46408245 0 0 0 0.002,-0.002 c 1.447464,-1.451494 2.432804,-3.300056 2.830079,-5.3125 a 0.46408245,0.46408245 0 0 0 -0.308594,-0.529297 l -4.4375,-1.486328 4.4375,-1.482422 A 0.46408245,0.46408245 0 0 0 64.962891,11.59375 C 64.565662,9.5813519 63.580426,7.7309425 62.132812,6.2792969 a 0.46408245,0.46408245 0 0 0 -0.002,-0.00195 C 61.97271,6.1215979 61.807923,5.9686793 61.638672,5.8222656 a 0.46408245,0.46408245 0 0 0 -0.611328,0.00391 l -3.5,3.1015625 0.929687,-4.5898438 a 0.46408245,0.46408245 0 0 0 -0.304687,-0.53125 C 57.078298,3.43622 55.95217,3.2457738 54.816406,3.2421875 a 0.46408245,0.46408245 0 0 0 -0.0039,0 z" + inkscape:href="#path4468" + transform="translate(-22.735586)" /> + <path + inkscape:href="#path4468" + d="m 54.8125,4.1933594 c -0.888505,0.00318 -1.766397,0.1572767 -2.617188,0.4082031 L 53.3125,10.097656 a 0.4869683,0.4869683 0 0 1 -0.798828,0.462891 L 48.302734,6.8300781 c -0.04455,0.042299 -0.09086,0.081766 -0.134765,0.125 -1.211927,1.2167288 -2.016154,2.7596114 -2.423828,4.4238279 l 5.283203,1.767578 a 0.4869683,0.4869683 0 0 1 0,0.921875 l -5.283203,1.767579 c 0.407646,1.663899 1.211754,3.205001 2.423828,4.421874 0.0439,0.04323 0.09021,0.0827 0.134765,0.125 l 4.208985,-3.730468 a 0.4869683,0.4869683 0 0 1 0.798828,0.46289 l -1.115235,5.496094 c 0.852018,0.251293 1.731274,0.405394 2.621094,0.408203 0.888542,-0.0032 1.766407,-0.157292 2.617188,-0.408203 l -1.115235,-5.496094 a 0.4869683,0.4869683 0 0 1 0.798829,-0.46289 l 4.210937,3.730468 c 0.04322,-0.04103 0.08826,-0.07918 0.130859,-0.121093 1.21414,-1.217521 2.019652,-2.760098 2.427735,-4.425781 l -5.283203,-1.769532 a 0.4869683,0.4869683 0 0 1 0,-0.921875 l 5.283203,-1.765625 C 63.479068,9.7146987 62.674819,8.1718096 61.462891,6.9550781 l -0.0039,-0.00391 c -0.0426,-0.041909 -0.08764,-0.080065 -0.130859,-0.1210938 L 57.119141,10.560547 A 0.4869683,0.4869683 0 0 1 56.320312,10.099609 L 57.433594,4.6015625 C 56.582803,4.3506351 55.70491,4.1965336 54.816406,4.1933594 l -0.0039,0 z" + id="path4445" + style="opacity:0.3;fill:#34a1ca;fill-opacity:1;stroke:url(#radialGradient4453);stroke-width:0.9892233;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + xlink:href="#path4468" + inkscape:original="M 54.814453 3.7070312 C 53.729581 3.7104612 52.652708 3.8923279 51.626953 4.2460938 L 52.835938 10.195312 L 48.294922 6.1738281 C 48.133924 6.3131014 47.977862 6.4580369 47.826172 6.6074219 C 46.443434 7.9940104 45.502551 9.7611672 45.123047 11.683594 L 50.873047 13.607422 L 45.123047 15.53125 C 45.502551 17.453676 46.443434 19.218881 47.826172 20.605469 C 47.977861 20.754855 48.133925 20.89979 48.294922 21.039062 L 52.833984 17.017578 L 51.626953 22.966797 C 52.652675 23.320563 53.729581 23.502434 54.814453 23.505859 C 55.899326 23.502359 56.976198 23.320563 58.001953 22.966797 L 56.794922 17.017578 L 61.335938 21.039062 C 61.496935 20.89979 61.652997 20.754855 61.804688 20.605469 C 63.187426 19.218881 64.128308 17.453676 64.507812 15.53125 L 58.757812 13.605469 L 64.507812 11.683594 C 64.128343 9.7611672 63.187425 7.9940104 61.804688 6.6074219 C 61.652998 6.4580369 61.496935 6.3131014 61.335938 6.1738281 L 56.796875 10.195312 L 58.001953 4.2460938 C 56.976198 3.892328 55.899326 3.7104568 54.814453 3.7070312 z " + inkscape:radius="-0.48691961" + sodipodi:type="inkscape:offset" + transform="translate(-22.735586)" /> + </g> +</svg> diff --git a/SparkleShare/Common/Pixmaps/Sources/side-splash.svg b/SparkleShare/Common/Images/Sources/side-splash.svg index 2602f5b..5559510 100644 --- a/SparkleShare/Common/Pixmaps/Sources/side-splash.svg +++ b/SparkleShare/Common/Images/Sources/side-splash.svg @@ -16,7 +16,7 @@ version="1.1" inkscape:version="0.48.2 r9819" sodipodi:docname="side-splash.svg" - inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Common/Pixmaps/side-splash.png" + inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Common/Images/side-splash.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90"> <sodipodi:namedview diff --git a/SparkleShare/Common/Pixmaps/Sources/ssnet.svg b/SparkleShare/Common/Images/Sources/ssnet.svg index 6971d98..6971d98 100644 --- a/SparkleShare/Common/Pixmaps/Sources/ssnet.svg +++ b/SparkleShare/Common/Images/Sources/ssnet.svg diff --git a/SparkleShare/Common/Pixmaps/Sources/status-icons.svg b/SparkleShare/Common/Images/Sources/status-icons.svg index 207cd11..b361de6 100644 --- a/SparkleShare/Common/Pixmaps/Sources/status-icons.svg +++ b/SparkleShare/Common/Images/Sources/status-icons.svg @@ -1209,7 +1209,7 @@ width="16" y="-135" x="42" - inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Mac/Pixmaps/process-syncing-idle@2x.png" + inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Mac/Images/process-syncing-idle@2x.png" inkscape:export-xdpi="180" inkscape:export-ydpi="180" /> <rect @@ -1219,7 +1219,7 @@ width="16" y="-135" x="72" - inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Mac/Pixmaps/process-syncing-error@2x.png" + inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Mac/Images/process-syncing-error@2x.png" inkscape:export-xdpi="180" inkscape:export-ydpi="180" /> <rect @@ -1229,7 +1229,7 @@ width="16" y="-135" x="102" - inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Mac/Pixmaps/process-syncing-up@2x.png" + inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Mac/Images/process-syncing-up@2x.png" inkscape:export-xdpi="180" inkscape:export-ydpi="180" /> <rect @@ -1239,7 +1239,7 @@ width="16" y="-135" x="132" - inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Mac/Pixmaps/process-syncing-down@2x.png" + inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Mac/Images/process-syncing-down@2x.png" inkscape:export-xdpi="180" inkscape:export-ydpi="180" /> <rect @@ -1249,7 +1249,7 @@ width="16" y="-135" x="162" - inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Mac/Pixmaps/process-syncing@2x.png" + inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Mac/Images/process-syncing@2x.png" inkscape:export-xdpi="180" inkscape:export-ydpi="180" /> <rect @@ -2170,7 +2170,7 @@ width="16" y="-115" x="102" - inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Mac/Pixmaps/process-syncing-up-active@2x.png" + inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Mac/Images/process-syncing-up-active@2x.png" inkscape:export-xdpi="180" inkscape:export-ydpi="180" /> <rect @@ -2180,7 +2180,7 @@ width="16" y="-115" x="132" - inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Mac/Pixmaps/process-syncing-down-active@2x.png" + inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Mac/Images/process-syncing-down-active@2x.png" inkscape:export-xdpi="180" inkscape:export-ydpi="180" /> <rect @@ -2190,7 +2190,7 @@ width="16" y="-115" x="162" - inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Mac/Pixmaps/process-syncing-active@2x.png" + inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Mac/Images/process-syncing-active@2x.png" inkscape:export-xdpi="180" inkscape:export-ydpi="180" /> <g @@ -2241,7 +2241,7 @@ width="16" y="-114" x="41.96875" - inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Mac/Pixmaps/process-syncing-idle-active@2x.png" + inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Mac/Images/process-syncing-idle-active@2x.png" inkscape:export-xdpi="180" inkscape:export-ydpi="180" /> <path @@ -2249,13 +2249,13 @@ style="text-indent:0;text-transform:none;block-progression:tb;color:#000000;fill-rule:evenodd;enable-background:new;fill:#ffffff;fill-opacity:1" d="m 44.4375,-113 c -0.82205,0.092 -1.4425,0.79783 -1.4375,1.625 l 0,4.375 -0.5,0 -0.5,0 0,0.5 -0.03125,5.59375 c 0,0.74984 0.1756,1.43675 0.5,1.96875 0.3244,0.5319 0.84191,0.9375 1.46875,0.9375 L 56,-98 c 0.62679,0 1.14435,-0.4056 1.46875,-0.9375 0.3244,-0.5319 0.5,-1.21885 0.5,-1.96875 l 0.0625,-7.59375 0,-0.5 -0.5,0 -0.5625,0 0,-0.34375 -0.03125,-1.125 0,-0.5 -0.5,0 -5.71875,0 -2.15625,-1.90625 -0.15625,-0.125 -0.1875,0 -3.5625,0 c -0.01,-4.6e-4 -0.02175,3.1e-4 -0.03125,0 -0.0385,-0.001 -0.0865,-0.001 -0.125,0 l -0.03125,0 -0.03125,0 z M 50,-108.84375 a 0.58589994,0.58589994 0 0 1 0.5625,0.375 l 1.0625,2.375 2.46875,0.25 a 0.58589994,0.58589994 0 0 1 0.3125,1.03125 l -1.875,1.78125 0.46875,2.375 a 0.58589994,0.58589994 0 0 1 -0.84375,0.625 l -2.15625,-1.125 -2.3125,1.09375 a 0.58589994,0.58589994 0 0 1 -0.84375,-0.6875 l 0.5625,-2.3125 -1.875,-1.90625 a 0.58589994,0.58589994 0 0 1 0.375,-1 l 2.375,-0.125 L 49.5,-108.5 a 0.58589994,0.58589994 0 0 1 0.375,-0.3125 0.58589994,0.58589994 0 0 1 0.125,-0.0312 z m 0,1.96875 -0.84375,1.625 a 0.58589994,0.58589994 0 0 1 -0.46875,0.3125 l -1.40625,0.0937 1.1875,1.1875 a 0.58589994,0.58589994 0 0 1 0.15625,0.5625 l -0.34375,1.4375 1.46875,-0.6875 a 0.58589994,0.58589994 0 0 1 0.53125,0.0312 l 1.3125,0.6875 -0.28125,-1.5 a 0.58589994,0.58589994 0 0 1 0.15625,-0.53115 l 1.1875,-1.125 -1.5,-0.15625 a 0.58589994,0.58589994 0 0 1 -0.46875,-0.34375 L 50,-106.875 z" id="path4857-0" - inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Mac/Pixmaps/process-syncing-idle-active@2x.png" + inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Mac/Images/process-syncing-idle-active@2x.png" inkscape:export-xdpi="180" inkscape:export-ydpi="180" /> <rect inkscape:export-ydpi="180" inkscape:export-xdpi="180" - inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Mac/Pixmaps/process-syncing-error-active@2x.png" + inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Mac/Images/process-syncing-error-active@2x.png" x="72" y="-115" width="16" @@ -2269,14 +2269,14 @@ width="48" id="rect7635" style="opacity:0;fill:#f57900;fill-opacity:1;stroke:none;enable-background:new" - inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Pixmaps/icons/process-syncing-up-48.png" + inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Images/icons/process-syncing-up-48.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90" /> <g transform="matrix(1.0414,0,0,0.92475,-101.77499,-255.97)" style="opacity:0.7;fill-rule:evenodd;enable-background:new" id="g7637" - inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Pixmaps/icons/process-syncing-up-48.png" + inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Images/icons/process-syncing-up-48.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90"> <rect @@ -2304,7 +2304,7 @@ transform="translate(-87.999989,-264)" style="enable-background:new" id="g7643" - inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Pixmaps/icons/process-syncing-up-48.png" + inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Images/icons/process-syncing-up-48.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90"> <g @@ -2354,7 +2354,7 @@ transform="matrix(0.95581,0,0,0.96875,-73.859989,-261.12)" style="enable-background:new" id="g7659" - inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Pixmaps/icons/process-syncing-up-48.png" + inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Images/icons/process-syncing-up-48.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90"> <g @@ -2397,14 +2397,14 @@ height="48" x="258" y="-214" - inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Pixmaps/icons/process-syncing-down-48.png" + inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Images/icons/process-syncing-down-48.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90" /> <g id="g7701" style="opacity:0.7;fill-rule:evenodd;enable-background:new" transform="matrix(1.0414,0,0,0.92475,-51.774989,-255.97)" - inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Pixmaps/icons/process-syncing-down-48.png" + inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Images/icons/process-syncing-down-48.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90"> <rect @@ -2432,7 +2432,7 @@ id="g7707" style="enable-background:new" transform="translate(-37.999989,-264)" - inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Pixmaps/icons/process-syncing-down-48.png" + inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Images/icons/process-syncing-down-48.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90"> <g @@ -2482,7 +2482,7 @@ id="g7723" style="enable-background:new" transform="matrix(0.95581,0,0,0.96875,-23.859989,-261.12)" - inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Pixmaps/icons/process-syncing-down-48.png" + inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Images/icons/process-syncing-down-48.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90"> <g @@ -2525,7 +2525,7 @@ width="48" id="rect7763" style="opacity:0;fill:#f57900;fill-opacity:1;stroke:none;enable-background:new" - inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Pixmaps/icons/process-syncing-48.png" + inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Images/icons/process-syncing-48.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90" /> <g @@ -2557,7 +2557,7 @@ transform="translate(12.000011,-264)" style="enable-background:new" id="g7771" - inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Pixmaps/icons/process-syncing-48.png" + inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Images/icons/process-syncing-48.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90"> <g @@ -2607,7 +2607,7 @@ transform="matrix(0.95581,0,0,0.96875,26.140011,-261.12)" style="enable-background:new" id="g7787" - inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Pixmaps/icons/process-syncing-48.png" + inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Images/icons/process-syncing-48.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90"> <g @@ -2647,7 +2647,7 @@ transform="translate(-192.99999,-13.999996)" style="enable-background:new" id="g7833" - inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Pixmaps/icons/process-syncing-up-48.png" + inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Images/icons/process-syncing-up-48.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90"> <path @@ -2667,7 +2667,7 @@ style="enable-background:new" id="g7837" transform="matrix(1,0,0,-1,-142.99999,-361)" - inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Pixmaps/icons/process-syncing-down-48.png" + inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Images/icons/process-syncing-down-48.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90"> <path @@ -2687,7 +2687,7 @@ style="enable-background:new" transform="matrix(1,0,0,-1,-91.999989,-361)" id="g7843" - inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Pixmaps/icons/process-syncing-48.png" + inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Images/icons/process-syncing-48.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90"> <path @@ -2707,7 +2707,7 @@ style="enable-background:new" id="g7849" transform="translate(-93.999989,-13.999996)" - inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Pixmaps/icons/process-syncing-48.png" + inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Images/icons/process-syncing-48.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90"> <path @@ -2739,7 +2739,7 @@ id="flowPara8732">GNOME 3</flowPara></flowRoot> <rect inkscape:export-ydpi="90" inkscape:export-xdpi="90" - inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Pixmaps/icons/process-syncing-error-48.png" + inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Images/icons/process-syncing-error-48.png" style="opacity:0;fill:#f57900;fill-opacity:1;stroke:none;enable-background:new" id="rect8734" width="48" @@ -2774,7 +2774,7 @@ <g inkscape:export-ydpi="90" inkscape:export-xdpi="90" - inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Pixmaps/icons/process-syncing-error-48.png" + inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Images/icons/process-syncing-error-48.png" id="g8742" style="enable-background:new" transform="translate(62.000011,-264)"> @@ -2824,7 +2824,7 @@ <g inkscape:export-ydpi="90" inkscape:export-xdpi="90" - inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Pixmaps/icons/process-syncing-error-48.png" + inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Images/icons/process-syncing-error-48.png" id="g8758" style="enable-background:new" transform="matrix(0.95581,0,0,0.96875,76.140011,-261.12)"> @@ -2865,7 +2865,7 @@ id="g5833-3-4-4" style="stroke:#c36e11;stroke-width:2;enable-background:new" transform="matrix(2.2594,0,0,2.2594,-3935.313,-2059.767)" - inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Pixmaps/icons/process-syncing-error-48.png" + inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Images/icons/process-syncing-error-48.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90"> <path @@ -2878,7 +2878,7 @@ id="g5833-3-4" style="stroke:#fde2c0;stroke-width:2;enable-background:new" transform="matrix(2.2594,0,0,2.2594,-3935.313,-2060.767)" - inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Pixmaps/icons/process-syncing-error-48.png" + inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Images/icons/process-syncing-error-48.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90"> <path @@ -2891,7 +2891,7 @@ style="display:inline;enable-background:new" id="g20371" transform="translate(-338,-571)" - inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Pixmaps/icons/process-syncing-error-48.png" + inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Linux/Images/icons/process-syncing-error-48.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90"> <path diff --git a/SparkleShare/Common/Pixmaps/Sources/tutorial-slides.svg b/SparkleShare/Common/Images/Sources/tutorial-slides.svg index faec290..49e1a6f 100644 --- a/SparkleShare/Common/Pixmaps/Sources/tutorial-slides.svg +++ b/SparkleShare/Common/Images/Sources/tutorial-slides.svg @@ -3064,7 +3064,7 @@ style="fill:url(#radialGradient211652);fill-opacity:1;stroke:#261f1f;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" inkscape:export-xdpi="180" inkscape:export-ydpi="180" - inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Common/Pixmaps/tutorial-slide-1@2x.png" /> + inkscape:export-filename="/Users/hbons/Projects/SparkleShare/SparkleShare/Common/Images/tutorial-slide-1@2x.png" /> <g transform="matrix(0.85916724,0,0,0.85916724,-926.30984,-650.2188)" id="g52133-7" diff --git a/SparkleShare/Common/Pixmaps/Sources/user-icon-default.svg b/SparkleShare/Common/Images/Sources/user-icon-default.svg index 872a50e..872a50e 100644 --- a/SparkleShare/Common/Pixmaps/Sources/user-icon-default.svg +++ b/SparkleShare/Common/Images/Sources/user-icon-default.svg diff --git a/SparkleShare/Common/Pixmaps/about.png b/SparkleShare/Common/Images/about.png Binary files differindex c0d0c59..c0d0c59 100755 --- a/SparkleShare/Common/Pixmaps/about.png +++ b/SparkleShare/Common/Images/about.png diff --git a/SparkleShare/Common/Pixmaps/about@2x.png b/SparkleShare/Common/Images/about@2x.png Binary files differindex fc92a09..fc92a09 100644 --- a/SparkleShare/Common/Pixmaps/about@2x.png +++ b/SparkleShare/Common/Images/about@2x.png diff --git a/SparkleShare/Common/Images/readme-banner.png b/SparkleShare/Common/Images/readme-banner.png Binary files differnew file mode 100644 index 0000000..428640d --- /dev/null +++ b/SparkleShare/Common/Images/readme-banner.png diff --git a/SparkleShare/Common/Pixmaps/side-splash.png b/SparkleShare/Common/Images/side-splash.png Binary files differindex ca7f68f..ca7f68f 100755 --- a/SparkleShare/Common/Pixmaps/side-splash.png +++ b/SparkleShare/Common/Images/side-splash.png diff --git a/SparkleShare/Common/Pixmaps/side-splash@2x.png b/SparkleShare/Common/Images/side-splash@2x.png Binary files differindex f5fa864..f5fa864 100644 --- a/SparkleShare/Common/Pixmaps/side-splash@2x.png +++ b/SparkleShare/Common/Images/side-splash@2x.png diff --git a/SparkleShare/Common/Pixmaps/text-balloon.png b/SparkleShare/Common/Images/text-balloon.png Binary files differindex b95e7e6..b95e7e6 100644 --- a/SparkleShare/Common/Pixmaps/text-balloon.png +++ b/SparkleShare/Common/Images/text-balloon.png diff --git a/SparkleShare/Common/Pixmaps/text-balloon@2x.png b/SparkleShare/Common/Images/text-balloon@2x.png Binary files differindex 6b86ad4..6b86ad4 100644 --- a/SparkleShare/Common/Pixmaps/text-balloon@2x.png +++ b/SparkleShare/Common/Images/text-balloon@2x.png diff --git a/SparkleShare/Common/Pixmaps/tutorial-slide-1.png b/SparkleShare/Common/Images/tutorial-slide-1.png Binary files differindex bb6268e..bb6268e 100644 --- a/SparkleShare/Common/Pixmaps/tutorial-slide-1.png +++ b/SparkleShare/Common/Images/tutorial-slide-1.png diff --git a/SparkleShare/Common/Pixmaps/tutorial-slide-1@2x.png b/SparkleShare/Common/Images/tutorial-slide-1@2x.png Binary files differindex fbf4ac3..fbf4ac3 100644 --- a/SparkleShare/Common/Pixmaps/tutorial-slide-1@2x.png +++ b/SparkleShare/Common/Images/tutorial-slide-1@2x.png diff --git a/SparkleShare/Common/Pixmaps/tutorial-slide-2.png b/SparkleShare/Common/Images/tutorial-slide-2.png Binary files differindex 15624a4..15624a4 100644 --- a/SparkleShare/Common/Pixmaps/tutorial-slide-2.png +++ b/SparkleShare/Common/Images/tutorial-slide-2.png diff --git a/SparkleShare/Common/Pixmaps/tutorial-slide-2@2x.png b/SparkleShare/Common/Images/tutorial-slide-2@2x.png Binary files differindex 2c99291..2c99291 100644 --- a/SparkleShare/Common/Pixmaps/tutorial-slide-2@2x.png +++ b/SparkleShare/Common/Images/tutorial-slide-2@2x.png diff --git a/SparkleShare/Common/Pixmaps/user-icon-default.png b/SparkleShare/Common/Images/user-icon-default.png Binary files differindex b962747..b962747 100644 --- a/SparkleShare/Common/Pixmaps/user-icon-default.png +++ b/SparkleShare/Common/Images/user-icon-default.png diff --git a/SparkleShare/Common/Makefile.am b/SparkleShare/Common/Makefile.am index 2f972e5..8daf95b 100644 --- a/SparkleShare/Common/Makefile.am +++ b/SparkleShare/Common/Makefile.am @@ -1,3 +1,3 @@ SUBDIRS = HTML \ - Plugins \ - Pixmaps + Presets \ + Images diff --git a/SparkleShare/SparkleNoteController.cs b/SparkleShare/Common/NoteController.cs index 47809d2..51e2082 100755..100644 --- a/SparkleShare/SparkleNoteController.cs +++ b/SparkleShare/Common/NoteController.cs @@ -1,5 +1,5 @@ // SparkleShare, a collaboration and sharing tool.
-// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com>
+// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -16,12 +16,13 @@ using System;
-using System.Net;
using System.Threading;
+using Sparkles;
+
namespace SparkleShare {
- public class SparkleNoteController {
+ public class NoteController {
public event Action ShowWindowEvent = delegate { };
public event Action HideWindowEvent = delegate { };
@@ -29,20 +30,17 @@ namespace SparkleShare { public event UpdateTitleEventDelegate UpdateTitleEvent = delegate { };
public delegate void UpdateTitleEventDelegate (string title);
- public string AvatarFilePath = "";
+ public readonly string AvatarFilePath = "";
public string CurrentProject { get; private set; }
- public SparkleNoteController ()
+ public NoteController ()
{
- Program.Controller.ShowNoteWindowEvent += delegate (string project) {
- CurrentProject = project;
- ShowWindowEvent ();
- UpdateTitleEvent (CurrentProject);
- };
-
- AvatarFilePath = SparkleAvatars.GetAvatar (Program.Controller.CurrentUser.Email,
- 48, Program.Controller.Config.FullPath);
+ SparkleShare.Controller.ShowNoteWindowEvent += OnNoteWindowEvent;
+
+ if (SparkleShare.Controller.AvatarsEnabled && !SparkleShare.Controller.FirstRun)
+ AvatarFilePath = Avatars.GetAvatar (SparkleShare.Controller.CurrentUser.Email,
+ 48, SparkleShare.Controller.Config.DirectoryPath);
}
@@ -55,7 +53,7 @@ namespace SparkleShare { public void SyncClicked (string note)
{
HideWindowEvent ();
- new Thread (() => Program.Controller.GetRepoByName (CurrentProject).Resume (note)).Start ();
+ new Thread (() => ResumeWithNote (note)).Start ();
}
@@ -63,5 +61,21 @@ namespace SparkleShare { {
HideWindowEvent ();
}
+
+
+ void OnNoteWindowEvent (string project)
+ {
+ CurrentProject = project;
+
+ ShowWindowEvent ();
+ UpdateTitleEvent (CurrentProject);
+ }
+
+
+ void ResumeWithNote (string note)
+ { + BaseRepository repo = SparkleShare.Controller.GetRepoByName (CurrentProject);
+ repo.Resume (note);
+ }
}
}
diff --git a/SparkleShare/Common/Pixmaps/Sources/app-icons.svg b/SparkleShare/Common/Pixmaps/Sources/app-icons.svg deleted file mode 100644 index 275580d..0000000 --- a/SparkleShare/Common/Pixmaps/Sources/app-icons.svg +++ /dev/null @@ -1,2009 +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="svg11300" - style="enable-background:new" - height="400" - width="500" - version="1.0" - inkscape:version="0.48.2 r9819" - sodipodi:docname="app-icons.svg"> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="847" - inkscape:window-height="516" - id="namedview5704" - showgrid="false" - inkscape:zoom="1.4142136" - inkscape:cx="261.07811" - inkscape:cy="215.48582" - inkscape:window-x="0" - inkscape:window-y="0" - inkscape:window-maximized="0" - inkscape:current-layer="layer20"> - <inkscape:grid - type="xygrid" - id="grid6476" /> - </sodipodi:namedview> - <metadata - id="metadata85"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:creator> - <cc:Agent> - <dc:title>Hylke Bons, Lapo Calamandrei</dc:title> - </cc:Agent> - </dc:creator> - <dc:title>sparkleshare</dc:title> - <dc:subject> - <rdf:Bag> - <rdf:li>folder</rdf:li> - <rdf:li>directory</rdf:li> - <rdf:li>share</rdf:li> - <rdf:li>dir</rdf:li> - </rdf:Bag> - </dc:subject> - <dc:description>Derived from Jakub Steiner's design</dc:description> - <cc:license - rdf:resource="http://creativecommons.org/licenses/by-sa/3.0/" /> - <dc:rights> - <cc:Agent> - <dc:title>Hylke Bons, Lapo Calamandrei</dc:title> - </cc:Agent> - </dc:rights> - </cc:Work> - <cc:License - rdf:about="http://creativecommons.org/licenses/by-sa/3.0/"> - <cc:permits - rdf:resource="http://creativecommons.org/ns#Reproduction" /> - <cc:permits - rdf:resource="http://creativecommons.org/ns#Distribution" /> - <cc:requires - rdf:resource="http://creativecommons.org/ns#Notice" /> - <cc:requires - rdf:resource="http://creativecommons.org/ns#Attribution" /> - <cc:permits - rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /> - <cc:requires - rdf:resource="http://creativecommons.org/ns#ShareAlike" /> - </cc:License> - </rdf:RDF> - </metadata> - <defs - id="defs3"> - <linearGradient - id="linearGradient11481"> - <stop - id="stop11483" - stop-color="#a04600" - offset="0" /> - <stop - id="stop11485" - stop-color="#ce5c00" - offset="1" /> - </linearGradient> - <linearGradient - id="linearGradient4989"> - <stop - id="stop4991" - stop-color="#f57900" - offset="0" /> - <stop - id="stop4993" - stop-color="#fcaf3e" - offset=".060437" /> - <stop - id="stop4995" - stop-color="#fcaf3e" - offset=".17754" /> - <stop - id="stop4997" - stop-color="#f57900" - offset=".89422" /> - <stop - id="stop4999" - stop-color="#ce5c00" - offset="1" /> - </linearGradient> - <linearGradient - id="linearGradient4908"> - <stop - id="stop4910" - stop-color="#ce5c00" - offset="0" /> - <stop - id="stop4912" - stop-color="#f57900" - offset="1" /> - </linearGradient> - <linearGradient - id="linearGradient3423"> - <stop - id="stop3425" - stop-color="#fff" - offset="0" /> - <stop - id="stop3427" - stop-color="#fff" - stop-opacity="0" - offset="1" /> - </linearGradient> - <linearGradient - id="linearGradient4156"> - <stop - id="stop4158" - stop-color="#fff" - offset="0" /> - <stop - id="stop4180" - stop-color="#fff" - stop-opacity=".78824" - offset=".73068" /> - <stop - id="stop4160" - stop-color="#fff" - stop-opacity="0" - offset="1" /> - </linearGradient> - <linearGradient - id="linearGradient4101"> - <stop - id="stop4103" - stop-color="#fff" - offset="0" /> - <stop - id="stop4109" - stop-color="#fff" - stop-opacity=".80588" - offset="0.6" /> - <stop - id="stop4105" - stop-color="#fff" - stop-opacity="0" - offset="1" /> - </linearGradient> - <clipPath - id="clipPath4061" - clipPathUnits="userSpaceOnUse"> - <path - id="path4063" - style="enable-background:new" - d="m52.094 312c-2.335 0-4.094 1.28-4.094 3.95v167.47c0 3.95 2.447 6.58 5.772 6.58h189.56c3.3444 0 4.673-2.4607 4.673-5.9054v-147.52c0-2.951-2.0107-4.5466-4.516-4.5466h-93.987c-1.6928 0-4.4338-0.2055-6.493-2.5614l-13.071-14.954c-1.7575-2.0107-4.2252-2.5106-6.0898-2.5106h-71.746z" - fill-rule="evenodd" /> - </clipPath> - <filter - id="filter4065" - color-interpolation-filters="sRGB"> - <feGaussianBlur - id="feGaussianBlur4067" - stdDeviation="1.91" /> - </filter> - <filter - id="filter4123" - width="1.1433" - y="-.36858" - x="-.071666" - height="1.7372" - color-interpolation-filters="sRGB"> - <feGaussianBlur - id="feGaussianBlur4125" - stdDeviation="6.4501067" /> - </filter> - <filter - id="filter4375" - width="1.0248" - y="-.35609" - x="-.012418" - height="1.7122" - color-interpolation-filters="sRGB"> - <feGaussianBlur - id="feGaussianBlur4377" - stdDeviation="1.0664062" /> - </filter> - <filter - id="filter4379" - color-interpolation-filters="sRGB"> - <feGaussianBlur - id="feGaussianBlur4381" - stdDeviation="0.90031864" /> - </filter> - <filter - id="filter4454" - width="1.323" - y="-1.8572" - x="-.16150" - height="4.7144" - color-interpolation-filters="sRGB"> - <feGaussianBlur - id="feGaussianBlur4456" - stdDeviation="15.476679" /> - </filter> - <filter - id="filter4458" - width="1.1077" - y="-.61907" - x="-.053832" - height="2.2381" - color-interpolation-filters="sRGB"> - <feGaussianBlur - id="feGaussianBlur4460" - stdDeviation="5.158893" /> - </filter> - <filter - id="filter4496" - width="1.0696" - y="-.40007" - x="-.034789" - height="1.8001" - color-interpolation-filters="sRGB"> - <feGaussianBlur - id="feGaussianBlur4498" - stdDeviation="3.3339431" /> - </filter> - <filter - id="filter4508" - width="1.1392" - y="-.80015" - x="-.069578" - height="2.6003" - color-interpolation-filters="sRGB"> - <feGaussianBlur - id="feGaussianBlur4510" - stdDeviation="6.6678862" /> - </filter> - <filter - id="filter3458" - width="3.8375" - y="-.047068" - x="-1.4188" - height="1.0941" - color-interpolation-filters="sRGB"> - <feGaussianBlur - id="feGaussianBlur3460" - stdDeviation="1.0345072" /> - </filter> - <pattern - id="pattern2719" - width="256" - patternUnits="userSpaceOnUse" - patternTransform="translate(-523,-333)" - height="256"> - <image - id="image2715" - xlink:href="data:image/png;base64,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 3NySOBxOkZub25pQKFyvq6tzsbW1nRoaGvIFAIAgFovXOjo6qvX09EAikQjAYDBq09PT9V+/fsXa 2dlJ/e9//+s+evSo0okTJ2YBAHD78ePH72PHjmUCAABMT0+nDQ0Nfe/p6ZHmcDjEHTvIwWjxAAAg AElEQVR2CDEYzLqvr6+GhobGOp1O92QwGJYsFuvu1taWjpSUlDufzwfNz8+v/vjxY+TixYsuKBRK BQKByAsEgjWJREIZGRkZxuPxgp07d6KysrLGvby8/jc7O1tAoVDgcDh8UVZWFnf06NH5ixcvStXW 1oqDgoKgtra2e9bX10cYDAYNh8PpUKlU2OPHj2vOnDkju3v37t0bGxsyqampT+fm5tZPnjwZQKfT +xsbGxWam5vF6enpBDwerzU5Odmvqqo6XlNTQzx37hylpKREWUdHhxwVFTV27do1opycnNjT09Mg Nze3mUKhED58+DAQEhJi0djYOHXr1i3Mly9f6jEYjJqNjY2zp6dn4/fv36WRSKSqhobGtpKSEnF1 dfUtDAY7OT8/T+fxeHo7duyAXb9+fTo3N1fGwcGhTEZGRhYGg/HOnz9vi0KhaN7e3rM5OTkK+vr6 HtevX/9+//79K+/evbvK4/H4ioqKKG9vb/+YmJjfly5dstm3bx/K19e36/nz508/fPjwLjc3t/L3 799vuFzuy+Hh4T/Xr193fvr0qYKBgQGuvr5+/NChQ8vnzp1T0NLSWhGJRNz19XVcbW2tho6Ozpfk 5OS/q6qq0m1sbKwXFxc/6ejo7LO2tqa+fPlSfXt7e+bKlSvmfD4fUVVVxadSqX8eP35M/fTpUxEA AEBVVVVEeHi4Vm9vrwIMBoNMT0/3ysvLb0KhUHcUCiWWk5Pby+Px7sFgsOOBgYEVGhoaW//8888h KBSqOzw8HD01NaVmbm5uqKys7BEcHOxrbGzs4unpCUxNTa2MjIwIXVxcjJqamqCNjY3Kjx496rK1 tb0UFRX1LDU1VZnD4bB4PN4ij8dTHx0dnQ4ODr4lFouB9vb2Aj09PXkZGZlgsVi8WF9ff3lkZAR/ 6tSpZyKRqO/Nmzdvb9++7bdnz56ypKQkaxqNhoDD4WJZWVkiAACAjIyMcHl5mamlpRX6H+W4+Ndf f73w8vLSPXjwoBGDwVg7fPjwgq2t7aS8vPyEtrb27r///hvQ1dUdxuPx2o8ePbIBS0tLS/P5/E4u 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 0ul0eS6Xq9/e3s4KDAws4HK5U2fOnEnLyso6p6SkRPX29ladmJgQsra21h0ZGdmanZ2VKCoqYmxs bICxWCxUSkoK0t7e3l1TU9MPhUK3a2pqaGw2W+rhw4e9N2/ebFdUVPytra0tmpWV5XD//v1vZmZm G2pqam1bW1vZ4+PjSCEhIRU6nT6FxWIJ29vbtX5+ft81NTUpVlZWNAMDAzEAAFb+obujIBAI+H/j uV5eXpSIiIj8/Pz8hrm5uY6/f/8az83NaauoqMifPXtWWkhIiBQdHb3c2Nh4ks/nO5NIJHxDQ4P+ 8vKyyr59+6zAYHCAubk5ZGtrS8vPz+9vfHy8upubG9XX13e2vr5+KTIy0vfgwYPpdXV1OqdOnTJS UFAIYzKZLBgMJrq+vh5mbm6+ZmlpKU2hUDiGhoYEa2truJ+fX9Dhw4eP7Ozs0J88eTLu4eFhee3a NYSnp2eWlZXVIQkJCcnGxkaRsbGxLhwOJ7W2tjbd3t7+QUtLK/jNmzdRMBiMb2pqKunq6jrBYDBA RUVFm1NTU+8gEAglOztbwcLCghAaGtr+9u1b3P3796d//vxZEBwcnPnr16/PCATi2MWLF1mlpaV7 t7a2hBMSEpwPHDgg0dHRYfLhw4dADw+PfRcvXuxWUVGJLC0tjQ0JCWl//Pix0ePHj8UNDAxEsFgs g0wmjwMAAKBQKCcmk1mVnJx8fteuXWIEAuEnGAwWXLx40fHLly99UCi0X0pKat3R0XE4LCzMgsVi WQgLC681NDTs7uvrQ+Xl5Y1AoVDIz58/Z728vC74+fn9JJFINFFRUbaQkJDko0eP/uBwOPyTJ084 SUlJ+C9fvuyIiYlN37t3zwUMBgPFxcVDk5OTTZqamhh/f/9vQ0NDeqmpqddiY2N3rK2tNRobG+XP nz+/PjExsXjixAldKSkpOovFmv3H9JOAwWCGSCTSAAKBAD09Pb1WVlaeCASC7+DgoOTv70+ora0l u7q6GomLi8/+i9J9ExISgN7e3hUkEtk7PT294Ozs3FdZWdmdn58fBAKB+KKioth79+6F3b9/32Zm ZoaJw+GU/uHQbRMTEyF6enp/bW1tk2ZmZq6vra3taGhoqO/evXtWTEwMyuPx1mpra4du3LjRuLq6 iklOTvb/+/evXmNjY//Y2NhCYWHhaTU1Nea7d+/uUiiUaxQK5Y6jo+NqUlKSlImJSXhubm6bjo6O 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 LB4/foxcX19nGBsb9+vo6ITS6fRZAwODvp6eHmNpaWnPrq6uD8HBwZ2rq6vE8+fPkw4ePGhYWVnJ sLKyYnR0dNC3trZgy8vLovfv3/dcXl5emp2dpaLR6CpJSUm5Hz9+9PT19RnGxcWZuLq6zmVnZ086 ODikgMFgMQAARO/du/cwNjZWhkwmI3Jzc8eDg4Nn19fXYfb29vshEIjw0aNHr548eZJAIpFUzczM WCIiIrJoNHp6bW1NXEVFRX1paYn84MGDqaCgIA0ikai5trb2+vbt279///6tNj4+fkRfX3+hsbFx kMfjTdHp9D0SEhKztbW1cpcvX2a2t7f7Z2dn50hKSsIwGEy9uLi4mYmJya7W1tYbVCrVdnl5WUlH Rwfh7u4OoFCowa6uLr309PRlDw8PkJ6eHvPjx4+wqqqqLRcXl2FtbW07CQmJKhMTk6/Ly8tpTCYT Iikpif9flVxTU9P2yspKt5+fn7Wnp+fz2tpa56qqKqkTJ06IXr9+vauzs3P72bNn8VpaWn8+fvw4 /+PHj/GoqCiPurq6Im9v70QoFEoAAIDv4uJS+PXrVwUUCoWNjY297urqKiEjI+OekZFBy8nJwTo7 Ow91dHRc5HK5o2lpaV/t7OwQOzs7QuBLly6tioiINBkYGPjCYLDQ/v5+TllZ2Y2+vj6csrLy1NDQ 0Lu4uLj61NTUr9nZ2XWysrIHbGxsfO7cuZOenZ1NunHjBnv37t3bPB5vrqKi4mRhYaHW/v37vcLD w9/SaDQql8ud6unpeXX9+vW+3NxcnZKSEvj8/PwdAADWAABYo1Ao99LT05tDQkKGwGCwrkAg2GAy meD09HTlwMBADxsbG+uXL19uDgwM3AGBQAqWlpZAfHy8qoeHx7ShoaH16OgoY319fRsMBnM3NjZq 4XB4DxwOl7t+/fqStrY26vbt25fodHpVU1NTroODA4vD4Uxzudypo0ePhh88eFB/Y2NjRVNT8w6d ThfS0dGRDAsLUzI3N1fJycmRn52dHSgtLU35/ft3dnJy8u+2tjZxZ2dnx6WlJcb79++nFxcXHfbu 3esvJCQk+/v3b+fOzs6d2tpaelRU1Fc+nw/e2dnhbG9v183OzrbweDzpvr4+6ObmpnBjY2NwZGRk FRgMvr22tpbO4XAmmEwm4ufPn+3t7e0yeXl53TY2NuIWFhaI3bt3W1dXVxdevXp1FgwGQ8FgsGZB QQGkt7f3Q3BwsENWVtZWenq6aHR0dE9gYGC+k5OT7pcvXxYVFRW7oFComYKCgrK4uLgXBoPRcHd3 TxAIBMoIBOJIf3+/rKWlJbW2tvZTXl4epru726GyspJ/4MCByIWFBaMbN26Ap6enGVpaWlQIBCJ4 +PBheXZ29l84HL6BwWCWBgYGGqSlpQU6OjrQzc3NCwcPHvRISEiot7KyYlRUVKwHBgZq8Pl8YHFx saW3t7dpdnZ2ua+vj6uurm7T2NhIdXNzCzA1NcU9evSou7u7W0VcXLydRqMlzc3NJdfX1585fPiw jKGh4S1jY+MaU1NToVevXmleuHBh4+HDh28lJSV7P336FKempqbm4OAgHBISQm5ra0vv7OyEtba2 TlMolOWZmZmVsLAwBolEoktISAikpKR0srOzy5WVlSELCwtsGxub4rS0tBEAAPgoFEpsZWUFtbS0 1IZAIBi/f//+qKqqyhsaGuJ0dnb6mZiYhF27du2NtbX1vaioKNP79++ji4qKxsPCwsaZTKYVj8eT TkpK0ispKVlPS0tjl5eXf+/q6kKcOnXqrI2Njfnq6qpnd3d3hqSk5GFFRUXXsrKyHj6fD+PxeDg7 OzsFPT09ZQ8Pj4n+/n73/Px8yoULFzC3bt2qz83NpQn+/wDDw8NEJBK5feHChczs7OzfUlJSODAY jMHj8ceLi4uv1NTUtBQVFZWAwWCqv7+/iouLy553795l5ObmgtbX17cLCwvxJ06ciMLhcKMeHh5z 0tLSyKqqKg5IIBAIXFxc3pibmw8YGRmJtrW10VkslmZHRwcyLy+PYmBgYMjlcneamprKHBwcIlks FpnFYoHExcX1+Xz+9pcvX64UFRVtvX79Oq61tbXcyckpgMlkcgcGBkpWVlbEIRAIaG1tba25ubm3 oKDgLZvNFi8sLMwJCQmJHh8fb8jMzLz1+PHjJgAAkP9+5iBHR0dnBoOxQiKRBGg0WtTS0lLRw8Nj 6vv37/iKiopWISEh0LFjx8LAYLCiu7t73ocPH7QcHR3byGTy5J49e6AWFhaYa9eugRYWFjIBALgF AAAVAIDm7e3txzAYTIxGoy1MTU31KCoqKmZmZl5oaGiI/f79OwqJRAb/EyX8gYGB6oWFhRUkErmm pKS0TSKRlkEgEKi2tlbRzs4OKS0tjbC2toYCAMAAAKD55s2bimfPnj3y5s2blF27dhmePHnyWVZW 1qXbt2/veHh4IPh8Pqyuro6hpaW1Ojk5STEzMzO2sbFZFwgEiOLi4md+fn5EPT292xsbGx8JBIJA X1+/6tKlS2G9vb1NTCYTqKur0wkICFjW0NBQ9vb2DtfS0nqMw+GEcnNz3/z+/dsLCoVW9ff3a1Gp VL2qqipRKSmpqpcvX2ro6+sntba23re2to63tbW9lZqaumFqamr95s2b9ZCQEGswGAzR1NRclJeX J3V2dl7z8fG5S6FQQGQyeSogIECur6+Ptbq6KobD4VazsrKEvn37NnHmzBk7JpO5QaFQoBAIBDI1 NYVEoVBwAoHAiImJWS4oKGC1trZqmJmZuXR3d9c5OTmVTE1N7fr165eIkpLSalBQkNHk5KQvAAD8 xMTEMy9evHCZmJjoW15eZjAYDDqfz8eOjY2JGhkZbZSVlXHt7e2t8vLyKAMDA50UCsVobm6OkJ6e XpiVlaVTVVUl/fbt246Kigqmp6enxNTU1EJPT49eRUWFColE2mSxWBBZWVnkhQsXZqurq92pVCr5 +vXrdRkZGa5kMjlrZmYGYWFhQdXS0rLl8Xj4gwcPrsrLy7fFxMQkg0AgwZMnT26fPXs2paCg4Pqx Y8eKKyoqThYXF+P6+/sNbGxsxi0sLHZWV1dV7t69q3D37t3+mZmZtYKCAv7S0lKAlJTUvLq6+sLr 169lIyIiSAUFBaC1tTVRLS0tPQqF0tnf3w9MTk5uzMzMiIaGhqLi4+MbHB0dkS9evNiOj4+3IxKJ pffu3TN+//792ZSUlNupqam5v379egEAABmBQKjOzc3Na2trS+vq6vrzeLxLLBbLfn19fcHDw0Mw MDBwnslktlZWVrYsLi6KPXv2bIrFYplevXr1z7dv31qPHj2qsGvXrkSQQCAQUCiUnyUlJePZ2dlj r169kqusrBzH4/FWCgoKdCgUKiASiUba2tpfKyoqOBoaGufDw8NfysvLC5WVlSE9PT17r1y5suvG jRvVbDZbMDIyslZeXn4aAACgoaGhGIPBIDQ0NCw8PT3f43A4m69fv4YSicSYDx8+7N63bx/o/fv3 Ev9y02UOhyMNAoGQPT093SgUalRXV9eMwWBo/5tznlpeXm7R1dVFBwUFHVxZWRkaGhriCAsL83k8 Hg0Gg4FTUlKyfvz4cdPMzKy+p6cnTFVV9dX8/PyuiYmJdW9v7/HZ2VmD6elpPAQC6R8fH0fZ2dnB QkJCFoyMjISxWGw7lUo18/X1FWOxWODt7e3V8fHxHT09PWpvby/f29tbv7q6+md6evro9evXjRUU FFBqamry/x6MY+np6Reio6OD4HA4cWhoqExERITMYDA28Hj8HoFAAIyOjtZjMBjIiRMnfhOJRI2e nh5BYGAg09DQUITJZIq4uLic7+npKbW3t5edn58XKCgozG5tbcllZ2c3DQ0Nbdnb26PKysroEAhE 8OLFCwM1NTVQa2vrhpWVlaq5ufnvT58+ufwznaj29vb1zc3NRjIyMppDQ0PdV65caQOBQIKysrKH XC73XVZWFk1DQ4Oira1N/PjxYyOHw5GSl5ffDA0NPRgQEJADg8EkDx06NEgmk5UcHR2ZysrKB5hM ZqePjw9l//79wuPj4xJnz57lR0RECLe2tjLYbPbuhw8fvvn58+diXV0dDg6Hz5w7d86yvLxcys7O rjsgIMDUyckprLm5+XVGRkbz06dP3ZFIpJampmZ/d3d3u6ys7GM3N7drnz59kpqdnZ0fHR1FWVhY yAsLC8vHx8d3XrlyRbWgoODvzZs3j6mpqX26fv365r8aLaOtra1yAABspqam5t6/fz9qampqJiYm NopGo7lgMNgIi8WKOjo6GvL5fEBbW7tjYmLCns1m5x89ehRZVFTUoKur65SWltbr6el5vaamJguD wUgEBwermZmZjXd0dDiTyWR3AACgAAAAr1+/PiciImJEJBJnsrOzNxQUFCS+fPkijkaj+9+9eycL g8GUp6amSuLi4hjR0dGOioqKTH19/ZCgoKA8NTW1lWPHjumLiYmZS0hI2N2/f/+Bra0tFw6H87a2 tgQJCQlTT548USsuLp5dWVnBu7m5dd25c4f948ePvbGxsfO1tbU24uLiPZqamn0cDsf2xo0bW+vr 6ywCgSDZ3d1NX19fh4mJiQ0MDw8rT05Ozq+treGqq6u9EAgEb2xsbMTBwQEYGxtzpFKpvTAYbC40 NJRTW1tLhDY2Np6Zm5tjx8bG+o2PjxNu3LiRdv/+ffP29vYmIyOjcDAYDExPT38jk8mY0dFRlpaW lrC9vT2jurpa2cLCokZRUXHl8uXLvIWFBWkJCQlKTU1NSVdXlxuZTA59+/Yt+dWrVyHFxcUd4+Pj rrm5uV8DAgLGqVSqRGZmZheDwdj9+fNn0sLCAh+DwVBNTU0HqFQqAIVCjYuKiv5++fIFuHnz5qtr 166FhoSESFdWViIxGIzE9PR0Ip1O34bD4cfa2trowcHBaoqKimYlJSWyAAAIbty4wedyucDk5GTs 2NhYGZVKBZ86dQoRGxs7zmAwusTExPai0ejR9vb2nYSEBKaxsTHzzZs3JuHh4UI8Hm8WAABlTU1N WQ0NDdz6+vqErq6u1MTERJuDg4Pp7OzsZkhIiAkIBOICALAIAAACAABnFotlzOVyQY8ePToHhUJH OByOTGxs7PWDBw/e0NPTW05MTLxmZ2fXA4fDESwWi3zo0CGNycnJ5du3b4MbGhpA29vbl5qbm/nq 6uoIAoGg3dHRMVhaWsoIDw+XnpmZQWIwGDV9ff2vPB6Pn5KSsp6Wljbs7u7u/PfvX7GIiAiAzWaj +vv7a37//j02Ojp6UlhYmE+lUie1tbXpLBYLnpCQIMLhcHq4XK5hbGyszM7OztL4+PjIs2fPDGdm ZiJDQkL2j42NVcNgMG5AQAAHBAKBoqKivMhk8vSpU6eepqWlEYqKilwJBIILl8vt5XK5gKqqaguV SjWGw+HciIgIu7Nnzyro6elVvn//HlddXc1VUVHpjomJYREIhJNMJvO+qampXWhoKG9gYOC1k5PT p4WFBZPW1tbhrKysIzU1NW84HM7Q8vLyDzs7O/TU1BRVT09PWk5OjqKgoIBRUFCAP3jw4PHQ0JDD yZMnF16+fLm/qqrqhJeXV3ZhYWH18ePH/fbv3z/Y399fFRISAp+cnFTc3Nys1dbW9p6dnf31bwV7 Ky0t7SUEApGNj49fiYmJcWppaSGCQCANKpU64O7uHislJTV35cqVTH9//yOqqqquGRkZ8aqqqip5 eXlFOByOdeTIEQGNRlNwcXFBu7u7h5PJ5Hf379+PA4FAYmAwmF9RUZHe0tJy9+HDh5X37t3Tu3Hj xnxKSopdYmJiZ2Nj46/du3cjVlZWtk6dOqW6trYGxWKx4jk5Oc1dXV15//ygdFtbW1koFOpDJpOz X79+/SMjI8NSIBD8gcFgEjQazcPOzq7n5cuXKpcuXUJwuVx+fX39oq2tLWBra2tfX18/vrCwQHj/ /v0QAABy8/PzD8TFxcOZTObfT58+PXV3d7dgs9kKhYWFaGFhYV1Ifn7+t4CAgN9qamo/7e3taVtb Wxw6nd6hpKSki8PhtAEA4MfHx9/u6ekpLCgo6HB2djbt6emZz8/Pl3ZwcBgikUiYy5cvu7q5uUl2 dnayqFRqk4ODQzwWi915/vw5Jjs7G3r06FGpo0ePQhsaGlbFxMSQhw8fFnN2draenp6uRyKRIB0d Hd6uXbu2W1paSN+/fwft3r1b/vjx45Dm5ub2mzdvWvL5/KqNjQ1IWFhYWG9vLyktLY0YFxeHLyoq Kl5YWOCOjIz0WFpaotFotK2QkBCRQCAguFwuAgwGoyQlJS1evHjR+ObNm4mvX78uo1Ao9Nzc3C9Z WVnn1tbWJ2pqaoSFhYWd4eFhqcHBQWZoaKgKDAaDweFwv3/tsYLm5uZtCATColAoMnQ6fdzNza33 2bNnYSkpKYS2trbfdDrdiEAgAOXl5evfv3/vs7GxQR87dixKR0enNS4uThAVFZXD4/GWkEjkz4iI CMqLFy8IaWlpu4ODg2mHDx/G+Pn5uXA4HL6NjY0rAoEY+++//4alpaUN9fT0xAUCASUrK2sADoe/ NTIySpmenhZ0d3cvp6am+g0NDTHi4+P709LS1OBwOM7b27uKQqGAnZycNqBQ6GZZWVkbHo/fo6io uLZr164wHo+HffDgwXcHBwctgUDAmJycJKelpXnMzc1179u3j+Pk5GTOYDDgBAJheXx8fNvS0jIa h8PpI5HIrzs7O/JGRkYneDxeLxQKNYNCoUoCgeBhVlbWpo2NjQgAANtfvnz5dfXqVf2EhIT6kJCQ YUlJSUF2drZrcXFxd3V19aqiomIFBAIRkpGRseNwOC3Ly8s/yGQyBI/Hi6ioqMgTCISSiIgIBVFR Ub6FhcXEz58/2Y8fPzbj8/mg3t7eOVVVVWV1dXXRlJSUb93d3bTBwUH8xsbGx/Pnz5sNDAxwf/78 STl69CgSh8Nx3d3dha2srJzW19dBEAhELiYmphMOh6ONjIywYWFh7h4eHqg9e/ZsEAiECSkpqQsm Jib97u7ujQcOHJAwNjbWkZaWxgsLC8tOT08/Ly8vF09OTt4nLS2taGRkNLixsTFlb2+fkpub+z0p KSmAz+fv0Gi0kYyMjCAoFAq5cOECUV5eXoZIJMKVlZV1u7q6yry8vGScnZ3dqFTqEhaLZZeVlf2w srIKgsFgejQarRGPx4NYLNYYBAKZrKur+8lkMsU3Nze1jx8/bpSTk9NjZmam3dLS0iIqKjpw5coV NYFAgKTRaMgfP36Mh4eH452cnA4ePnx4AIlENkxOThISExMvCQSC1b179w6Pjo7e2NjYkDhy5EiX oqLicWlp6Z0TJ070MplMEqi8vPyAkZGRDwaD4c7OzlZFRUX5nD9/foFAIEipqKhok0ikCzQaTb+m puZbcXGx6dOnT22cnJz2/+s3r3FxcalvbGy0fvbsGRcAAAAMBn/n8XiAkZHR8e3tbTQGgwGPj48P VlRUzJSXlyuw2ewmNBptGBMTs5Wfn4/++vXryXv37l0FAEAGBoPNlJSUbG9sbKAxGAzV3NwcVlhY qLe0tBTj4eFxm8lkShAIhFozMzMTLBb729/f/xYUClX8h5VuQqFQPBKJtG1iYrLGZDLpMBiMODk5 SdbQ0PCdnZ09TyKR0AwGg4FGo41FRUW5V65cyQ8MDESura1FSUpK9nh6ei6ZmpraDQwMcAAA0NPR 0RGZmZkRotPp9WAwGEAikZIhISELkZGRaA8PDy8AAICbN28+ZDAYWx0dHetdXV0xeDx+3MTEpK+z s9MiLS1tfmlpCZmWlib76tWrV9LS0mg8Hv8IAABlLpc72NfXR9LX1zcYHR39IyMjU4VEIhP4fH7r 5uYmaWJiAqKmpiY8MzODMDc39wOBQKjKysoOb29vs56enqaFhQWKu7u7EpfLhS8tLQlfvHixjEaj idTV1UX6+vo+SklJcV1dXd3W0NBg1dbWblZUVEi8fv16DYFA+ILBYP7y8nLd9vY2DQwGQy9dugSA QCDBnj17hpWVlcUzMzOHZ2dnpbOysoyLioq2yWQy093dHc3lctesra11f//+XTk/P48gk8lsMBjM f/z4cUpiYuKVuLi4ABaLtdPS0tKDx+PlHz16xC4pKUnCYrG1S0tLqMTExDIUCkXx9PTU6evrE4ZA IICGhgbl2rVr7K6uLvfc3Nw/JiYmslNTU9+IRKJjQ0PDWldX15yhoeGUiYkJQVVV1RAOh7sPDQ09 Wl9fV8bhcJyxsbGhiIgIx1evXq0eOnRIoba29iOHw9HJyMgQtrS0bCQQCG6enp6BXC53FQqFSnp5 eWV//PjRBQqFPkpKSkIEBATgMjMzFT5+/Bj5+fPnt4GBgcFpaWkvY2JiVISFhcUpFMpkS0tLn4WF xaaMjEwGg8FIfPnypVhUVFQ4AAAgIyOjhmfPnk1mZmZ2enh4+HR0dPAuXLiAU1RUNFhaWqqprq4e 2bt3724EAqEKgUAEa2trn5aWlqZVVVXN3N3dkfX19dYgEGgeAADW+vo6eW5urr+lpaULAAB8TExM 6o8fP9IsLS3d7ty58z08PFxLSUnJhMfjbS0vL0+FhoYOLC8vK1laWq76+vpyPnz4ICUQCMBpaWnK YmJi3PT0dH5vb2+xkpKSpoiIyDKfz6cnJiZq4PF40vr6+jU1NbU7YDKZLPLy5csiMBgsNDg4OPv5 8+dNKysrDB6PN1xYWJjD4/FnuVwuyNnZ2Ts0NJSdnJzcmpOT8+bQoUP3Tp8+zWYwGLjKykr6sWPH RGRkZNjfv3+f29zc5AYEBAw7OTlNcblcqqampnZ4eDh7bm4O3dDQEHHq1KkxPz+/BCQS+ePFixfR eDweefbs2X2jo6Pqjo6OQ/Pz83Y1NTWH7ty5Ez8yMmL49+/f1zExMSuvX79GXr161S4wMFAIBoM5 gkAgXklJyREulzvzL2P9JisrywYAwKy+vr5mYmJiNjY2diYjI+PRq1evWHV1dYIXL17gjxw5ogMA AFBWVvZweXnZyNjYePjBgweibm5uanQ6XRmJROp/+fLl9+jo6CCFQiGNj48vy8rKxj558mSVx+OB CAQCubi4uOjbt29vS0tLRS9duuT78uXLyObmZhqPxyNFRkb2p6Wl8dzd3X0xGEyNiIgIp7OzUwSP x395+vRpypkzZ1LLy8u/fvnyhQEAABgKhW5CIJAogUAAdHZ2CkdFRWHs7e2Py8vLh5HJZClhYWHT 5ubmmu7u7ratra1LCASCl52dvQwCgRQFAgE3KChoeWJiQojBYGxub29znj59aqKnp2dhZWUlt7i4 iDA3N5fQ1taev3r1qvj8/PxbKpX6V0xMTJFCoSgeO3aMQqPR3hcUFEzs3bs338zM7N7+/futR0dH HQwNDf26urpAurq6m9ra2hRTU1PIzs7OjImJie6BAwfUzp49q5uenn5IIBAATU1Nu+Xk5IhYLFbU 3Nxcp7q6egoAANDHjx+jIyMjW4lE4veoqCjJ1dVVlqmpqUzI/9F01n9NN14b/ywZY0nDYIwezaRT ukM6DMRCRUUB49ZbsRVbQEQwsJXbAAFRSrpGl3QPRrOxsd6eX77PH3Gu13Ve7+s6Z/fuDS8vrxYf Hx9faWlpTkRERKFAIBAgEAgxAADWSUlJc0FBQVpnz5510dLSInI4HFZWVtZHAAAALS0tfxsbG2Nd XV1KY2Mjf3BwkLVr1y7l+fl53MLCAmPXrl2MgoKC/UpKSk5zc3P9oaGhn7Zt29a8vr5ede3atYHP nz9XQyCQ41AoVNjX1weWlpaeAACAZWNjA/33339f7t+/XxEAABYMBtPOz88vCA4OvgSHw12mpqZS Ojs7kevr64j+/v6W/v7+ZgAAAGtr69D09PQIY2NjGvUeVQAAIABJREFUdE9Pzzifz+ctLS0VFRcX 8w0NDYlLS0s9m5ubBQAAiFdWViaePn1qdOnSpRkCgbDY0NDwg8PhjAuFwjkcDqePw+G8ent7ZQ8e POjNYrEaioqKJpFIJKG+vh7E5/PB6enp2f39/fMNDQ1jN2/eNHNwcKA9fvwYmJ2dlcdgMNzOzk7U jx8/erBYbLi1tfXqx48fY21tbaezs7OTbt++fUFOTi5ibW3tn927d+cZGRmRQJOTk7d7enrGra2t ORkZGWvPnz8fS01N1bW3t9eytbW15/P5Cjwej/nq1as+CwuLFRqNZjQwMFBOpVLd1dTUllJTU5WU lZUJ7u7utMTExL+urq5aU1NTo93d3TxPT08tDoeD3NzchHV3d2/NzMz0ZmZmvv1fs6mltrb2LQQC ET98+NDmzp07a1wut/Pbt2+q2tracAqFokkmk216enpaDQwMtJaWlnq7urrGbW1tTWVlZU2/f/9+ PSIi4rZYLBZcv359z+XLl3uuXLly4uLFi7ECgWAoPDy8NyIiQrJt2zYiCoWSweFwJhcuXHg9MzOj kJmZaUYikcIhEAj1ypUr33bu3LnK4XCs3NzcmHQ6PaWnp+fohw8fuElJSaEKCgoIMBiM7+/vf/Hj xw+1nz9/8h0cHCD29vZsOp0OPnr0aOri4uInMBisEBER8SY/Pz+SRCLt7u/v/5CcnJwxPDxssrq6 6tzR0dHc0tIiZ2ho2AuHw/3n5+dXZmdnh9zd3TWwWKzC6Ojo376+PpvIyMhZiUSiiEKh8GKxGGAy mbIvXryonJiYkMvOzg7k8/mZKysrI4mJiYYkEmnZxMQErqamhtbX12cDALCoqqp6befOnbnv3r2L QiKRehwOp3R0dHSzubkZtW3btq3GxsZFe3t79YqKCl5cXNyWmppacmBgoNOTJ0/O9/X1ffD39/+q o6Nzl06nO62srNAQCIT11NTUJx8fH0lPT481m82eweFwfmAwWH5zc/Plz58/O3g8noyWltY4kUj0 3traYvH5/D4EAiGlqKhob2NjM5OVlbV69+7d9bS0NMzQ0BA9MzOT8Pr1axKJRFqvrq6WvXbtWntG RoYlAACAvb39nrGxsVIIBIICAECgoaFBEQqFrNra2lI1NTVlNBotIhKJOw8dOpTu7u4+FRUV9Wxl ZaVjdXV1/c6dO53Z2dnBu3fvLpqZmcHj8Xi4vb396KFDh7T++++/+Xv37omnpqZu/j/pEQqF0yAQ CPDw8HgWFRXVOTQ05D08PCwGAGC4pKTkIggEAkZHRzP09fWvNDc33wsMDMTfu3ePam1tLRcZGanc 29u7V1VVNaOiokJWUVFxA4vFkh0dHafu37/fvX379q8AAADt7e0pm5ub0KWlJR09Pb3WxsZGLQaD IYyMjNTA4/E0sVgstbCwMMbhcPTIZLIuCoVa7uzsHPj06ZOGh4cHLzc3F8tisdpv3bpFTE5OHq6s rLRDIpE+k5OTNVJSUpL9+/e3x8XFyUZERFyfmJg4mJKSovPw4UOZtLQ0fl5enm9RUdEFPz+/oxAI RNbPz+/+58+ffX///j1gaWmp7e/v3wE5efJkBJ1OrxgZGQkNDQ1dDA4O9mUwGPMeHh5xMTExP6Oi osgIBIJIJpNh8fHxKxEREajS0tLVmJgYzYSEBImqqqotEomU2b17dzkYDG75+/fvX29v7x329vZe 2dnZVREREQ4AAMyrqaktxMfHh2xtbf1cXFzsRCKRqltbW/ICgWCCRCItjI+PbywvL0NPnDhxhc/n V2lpaaEFAsE0mUy2TEpKGhcKhVsUCsUfCoViuFwurbu7ey4oKKgai8UOuLq6OkxMTDRFRkYGicVi CY/HG4yNjQ3o6emBKigo8KBQqOTXr19FYDCYK5FIjDs6OupxOBz71KlTbEdHR5anp6cCi8WiP3r0 SFhdXd21urq6ODc3J9na2lrIyMiYq6+v73BxcbFIS0vjnjt3Try2toacm5tDeXh4/Jqbm3vPZDIx jo6Oyl1dXSqWlpYz169fn923b5/Yw8PDmkwmQx8/fix6//69Qn9/P5tKpcqpqqoqent7++Tk5Kyd PXtW/vTp02ZCoZDFZrOh27ZtOxAaGnqeQCDsDQkJ+bFjxw69lJSUBTweD6+vr++am5tTKCwshCYk JIwZGxvr6OnpmbBYrGUajQYIhcJNNBrdOT4+DkOhUErNzc3dAwMDoO3bt+tYWlq6cjicCTKZrBAV FfXL0tJSwmaz1Q0NDS0tLCym2Wx2l1gsNhAKheUdHR2Lp0+fnqZQKI5v3759hsFgaObm5sNPnz6l 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 MplZWlqKzM7O5sJgsF9ycnI7XV1dIQUFBTNRUVHG7969W0Wj0a8PHjyYikAgqBAIxHl7eztjeXlZ BgAAAIVCKaJQKIPu7u6LCAQCmJmZsZCSktri8/mr1tbWMY6OjlGNjY0vAACgg8Fg1OLi4ueEhISl Fy9eeLNYrOZ79+69j42NTRQTExM4ODj8dXJy6vn48aNjdHR02ZkzZ17JyMjkZmRkVMrKyroXFxez 5+bmBl++fBklLy+vDoVC11xdXa9LSUlp5ObmhvN4PFB+fn59Xl4eDIvFUmVlZUWdnJwkg4KCjjQ2 NoYTiUTC379/e5hMJjg2Njb43r17s21tbT2amprIb9++0X7+/Gm8srJie+3atdz4+Hi3rq6uKQAA gB07dtgeO3bs1/PnzzEbGxtYaWlpbktLy5q9vb3d6urqLQKBcKa/v3+oqqpqU09PjxgeHr755MkT KJfLFbq7u68UFRWBDQ0NRwkEAsfMzOxeQUHBGygUKoyMjHRXVlbuAYPBQHt7e2hAQMApPp+v9/Hj R/KePXuUaTSawrt37wYHBwfNfv/+Tb937573gwcPislkcr2pqakHDoebiY2NJdvb2+u9evUqvLu7 u9DExMSRzWbft7a29ty9ezc/KSlp19TUVNbMzMzq8vIyR1lZ2QqHw7WVl5fT/1leteTl5bfYbLb2 wsLCqqqqqoqUlJQFDAaDPH/+/EtLSwtkYWEBTSAQKu7eveslKSmJJhAI4jweT1BZWTnk5eVlQqVS qQoKCvv7+/sTaDQalEwmi+7Zs2fnkSNHBvPz8x3n5+dHFBUVVcfHx/vl5eWxAoFgC4VCEWtqauqO Hz8ujsFgpmZnZw39/Pxy9u7dK1NcXCxZVlamTafTjZSVld/Mz8/HX7hw4SKfzwc/fvz4yOLiIkVD QyMEAADg5s2bl3x8fExVVVVZEhISWlAoVI7NZg+Pjo4OqKqq4pBIpKZAIOAzmUwwCoUSjY6OfonD 4XQSEhIu/vz5083X1/dmc3Nzm7W1Na+6uloEiUSqqKurE1AolP4/tgTAYrEW6HT6PBqNVrS3t/9Z VlZWY2xsHAv+/PmzR0lJycnz58+LS0pKLq+vrytjsVh0YmLi9O/fv83CwsJ+rKysUK2srN78+vVL rqSkJPHhw4fq8fHxnyIiInQyMzNLampq5ufm5hq/f/9elpmZ2cPlcpWlpaUvT0xMNF2/fn2TwWCA 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 t8uXL+vKy8sbPXr06M/9+/d1QkJCnlpYWByEQCBAQkLCLgwG0zh27BhteHh4+vTp00KGhoZCIBAI YWZmNhEREREnKSnJFRER8R4YGKgQEhLi3rt3b0pSUlKSx+MtYTAYYXd3d3kajda2tLTE/vDhg5ZA IJhcWVn5KScnd2b//v1LkOjo6KNjY2PDVVVVetLS0tSZmRny48ePT+jp6c1NTU2xYTDY+smTJ8P3 7dunl5+f3+rq6mooISEhOHXqFHR9fV2dTqcLSUlJocPDw6f6+/urZ2dnJa5evUqRkJDYk5aW5kZF RUU5OzvnSEhIiGZkZNzV09Nr6Ovrk09LS7OMiYmZlpGRkVRXVxdfWlrizszM7JSVlWkbGxtT2tvb dxwcHOx0dXUV7t69u5eYmKjh4eExjUKh4CwWi/z8+XNsSUnJHp/P5+bn59Pu3r3LCwkJEcnNzZ17 +/YtZ3d3F5GZmWlKoVDWYTAYcOjQoYNsNlsagUCgYDCYsYKCwmp0dPS/jx490isuLqaoqalBDA0N M86fP28ZFRX1TE5OzhCFQjlZWVllLywsCFlaWrZmZmbOX758ORSHw/XfvXtXobq6euvUqVMBAAAA cDgcx+PxJqWlpTGampoYIpG47/79+3L29va8qampqubmZrCTk5MGiUTakZSUnJGXl4c/fPjQ2tPT Ez8yMsIRFhamcDgcITAYPG1paakwODgIu3XrltWVK1fwHz58EB0dHR0MCgraBwKB5ng83vbY2Jj0 /v37laBQqHx7e/uIiIhInby8/N6VK1d8WlpaYNnZ2epTU1NYeXl5WTk5ubH+/v6poKAgx7S0tNLS 0tJTLS0tK7m5uWYQCGR0cXFx6q+//mptaWnR9fX1RW5vb7Pn5+cJrq6uszExMb4gEKg8MzPTW1VV dVNaWvrdoUOHxNFotGpoaOj0iRMnFCwsLO4zmcxJYWFhqo6OzvWxsbG0hIQEGgqF2rG2ttYfGxub k5eX10tLS+OoqqrOJyYmyuvp6U1HRESoubi4cEdGRsy5XG5/aGio2djY2Pa+ffs2sVissqGhIU5L S+tgX1/fKwkJCQlJSUk1cXFxXn19/QAcDgcdOXIErqCgIOjr60NtbW2N29nZPY6NjV0wNDScLiws 7FZVVTU3NjYWY7FYHGtr69MQCGQtKSkJIyYmhlRQUNhmsViQyclJYyQSyTx58qSZqKjo/s7OzkYj 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 dEtLy+2EhIT7YDBYCQAA4MuXL5KfP3++amdn50Amky0vXLjAd3Fx0Z2dnd1VU1Ojk5SU5KelpVWG wWBWnj9/PnHt2jUDFxcXmb///psdGxurMD8/z0Aikfz6+noKBoMx6uzsxHR3d0+ePn36kI2NjSYM BqO3tLQkdXZ2HqLT6Yy+vj4ABAIB7e3tap8/f2aurq5q2NjYWHh4eLA+f/784+3btzxXV9fPdDrd PzIycurixYvShw4dAnt4eKwIBAIeAABAVlZW2M6dO+l5eXlfhULhfGtr6w8CgQCm0+k6FAplIDQ0 1CsuLo6zvb0twGAw8P7+/go+n29w8+bNU0pKSukcDucGnU6/NTMzIyUhIeFvZWW1tW/fvm0KhdJB JBL9o6KixDdv3iR4enpKDQ0Nnbl3757ElStXpNfX1/sdHBzcu7q60ufm5iCvXr3Sraqq2kMikT4o KChIo9FoNBwOx8bExEQKBIIqUE1NzSlVVVVeYWEhMTo6WqGtra3k7du30o8fPybhcLjA+fl5DzQa bcpisXbHxsZ2ZmZmmv78+bMzPDw8QEZGZjcAAICPj8/Zf/75x3h+fr4uLy/PsaioyPfZs2e5fzTj Rr29vdOZmZk9JiYmuPfv3z8EAAD8/fv3F7du3eLOz88jCgsLZ4hEopOMjIx7YWHhtfDw8PT/9c9j Y2PHZ2Zm1Gpra2vFYrFJW1ubTnt7O1FCQgL06NGjx2Aw2JzBYAwtLy+LhoeHlaKjoy0OHTok5eXl taSrq7vA5/Ph58+f98RgMJZ/ilTGy5cv95w7d+6tvr5+r4ODg0Z3dzfdxMTETU9PT7+oqOhBSEiI 19DQ0ISZmZmrnp5e1a9fv0BQKFS8srIiCAkJwWZnZ3ebmZlZlpWVleBwOGJTU5OMm5ubg7q6OsfX 13fZwcGhZ2ZmxltOTm59c3MTjcFg6r9+/fo2IiLivL29fZu9vb3PH296n7Kycgyfz597+PDhyMWL F30gEIhJcXHx2507dwpbW1ul/Pz83MBgMDAwMPBFS0tL99evXz0oFEqorq7O0dDQOCAUCnkAAABg MBjr6Oj4paGhoY3H443B4XD52dlZVwcHh6Xx8fGN+Ph4aRQKxTl27BgJg8EIHj58OOPn58fQ19fn SkpKJn348OHx9+/fmX19fQafPn1if/r0SWVgYGA6MzNzZ39/PwUEAsGsrKxcDh06lP/3339rotFo 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 7+fPn3lGRkaM4eHhgLm5OeXQ0FAsiUTyMTY2lj537px4bGxsoLGxcXFgYIA9NzdHEQqF2JGREYml pSXJtrY2ZTc3N6yXl1fsz58/JwUCwZaMjIysWCyek5OTU15bW2tXUlJi6OrqblVWVm5oaGgw9u3b J1NQUPD9+fPnr69cuZLHZrO/0en0HhgMJrO1tbXs4ODgoaGhIREfH9/v7e1tNDAwQOZyudtBQUET kZGRhiQSSaG+vr63pqaG5efnJ2hubh40MjKyFQgEC319fR93796tAYFAjHR1dc17enpK/vvvvwQA AIB37949v3Hjxgc3Nze5b9++Sbu5ua3q6emp8vn8nywWa6u3t/cjiUTyaW1tvV9VVbXZ19eHNTc3 by0rK7M8dOgQamxsbOD06dMYS0tLMwkJCa3/Wzq3bt0adnJyMpaXlzdZX1+/KRaL5aqrq39mZ2fv olKpm729vZRr167N8fl8eRUVlZ9VVVXxQUFBG3A4nDM/P/+7qamJsrW1xYPD4ZJPnjz5b2trqz4l JcVCTU2N6ePjM0Ymk3UdHR1Zm5ubUlZWVkMHDhww4/P5M/Ly8uZUKnXMz89vIy0tTRcEAnEwGIzs 6urqxMzMjIqmpmZ3dHS0gkgkGoiOjn4aERHBnp2dNayvrydevXp1BAwGK4vFYoDNZv/68eOHioGB wUBRUdFsV1cX5/379+jy8nIFBAJBFAgEGyKRSHt1dZWmra29IisrqykhIfFHSkrKSigUzl66dOlX WFjYnrKysq8kEmmAzWYj8/PzA2AwGLGysvLXzZs3iXV1dYOJiYnOSUlJtMXFxe87duzwnJqaKgSB QGsIBEI2NzcXdeLECeuampoXTk5O58LCwtjOzs76LBYLJC0tza+tre1aW1vbrK2tRd67d4/233// 2VVWVoq9vb2fycrKKpqYmEDs7e1HOjs7qS0tLepBQUG1qamp6tbW1oC5uTlDV1eXbGJiIuvq6mpJ IBD+Nzc314HFYncTCARhR0dHq4eHBy4iIkIJgUDoQyAQIQwGmz1z5kwDhUJZkJGR2aipqdn95csX CQkJCSAhIaHjn3/+waytrS2ZmZlh8vPzcf7+/v5QKBTBZDJfnjhxotfDw8MyJCQESaVSn3h7e/tQ qdTWysrKvLKysnv+/v6aaDSap6Cg4M3hcOa+ffvWV1xcfA4CgeAjIyMlgoODBXv37nVaW1tTu3// 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 L6RfvHhB2rt3ryAyMjLg6dOnzjo6OrX19fUrTU1N7NLS0lO2trYnvb29n7S2tl6jUCjNAwMDZfn5 +XwfH5+O0NBQ9/z8fGRUVJRgampK3d/ff2llZaVrcHBQtby8HDk9PS3l5eU1eOnSJRk+nz8uIyOT CIfD0aGhoYekpaX7AABotbW1VVJUVITp6uq64nA4YP/+/VPr6+urCARC6Obm1nr16lUEkUiUb2lp MamqqvKrrq72OXPmjEZgYCAKh8Op7Nq1K66np+ePUChcNzAwABsbG4tzc3PJ7969m4+OjrbB4/Fl x48fz52bm8vH4XAN8fHx/gMDA2/V1dWNZWVltxkaGnrp6emp2drahuFwuFEpKSlET09Pi5ycHNfS 0lKdTCaL09LSank8npmLi0tJbm6upo2Njayuri4eDofTFhcXqS4uLhQOhyNhsVjQuLi4k1QqtWpj Y6OdSqWOlJeXF9y6detgRkZGZWJioguJRBp59OiRYnR0NKazsxNJpVKXOzo6ahEIhACJRA7fvn3b FwQCPdLX11fS19dfefLkyRqJRBqPioqyX19fX8nLy4M8evRI2NPTY3b69Onfi4uLK2g0micWi9Wt ra23MpnMGRQKNX/jxo0sV1dXyerqakVzc7PWlStXGnR1dSMuX76sUlJSAg8NDe1VVFRci4mJcdLT 0zPR09ObePz4sTQMBpMKCgryb2trq6PT6bbh4eHI0tLSucDAwMClpSUOHo/HKSoqNigpKXF+/vyJ NTIyKi0qKuKpqakxyWQyOCsry+Pp06fDwcHBqqA/f/5k0el06tOnT403bdrUn5KSkiwSiZY2NjZ6 USiUg7+/f761tTUFiUTK2dra0goKCkzOnj0729vbywwKCronEAgag4ODK758+XLjn70X3tLScio/ P995x44dHH19/Q8kEsnl8ePHY3w+fyMyMtISh8N5Q6FQ2ODgYB0AACA9PT1XFArlsLi4mA0Gg41C QkJKAADQHh0dRfv7+w/fvHnT9MmTJ33m5uZSxsbGBAAAAC8vL5knT560fP36VcPMzEzO09NToKWl daK8vDzH3d1d6siRI5SoqCihq6urk4qKSjGdTn8kIyNzsrOzc5OOjo7z8vLy2O3btzt0dXXlo6Oj LVtbW8MCAwPTnz592p+Xlzf+8OFDMovFOgmFQpm3b9+mEIlE8PPnz/WkpaWp+vr6DKFQCHn48KFq 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 zPbt2/coKyvbnzlz5ktISIgsISFhs4KCwlRSUlL5wMDAptraWp0rV644oNHoeXl5eY2VlZXvpqam 1hwOZ2X79u1kNBpNSEhIaLOysurG4XAkExOT1cjISERWVha9pqbGKzAwULBlyxZFKyurPVAodFlF RUXf1NRUa3l5Wezk5HRxamqqpKioaN7KysocjUZbtLa2vjY3N7/w48eP3k+fPoFAIFCvj4+PdH5+ HlNXVzfT3d2N9fT01Dx//vy++fl5dRcXF/D27dtnORzOZ3V1devu7u74uro6vJeXF/7ChQsBPB6P amlpaYpGo8V4PJ7t5eX1T25u7qy7uzteIpHMcjgc2tzcnCA8PNwhMzOzcWFhYT02NlaByWR+ZbFY S0+ePLH18vKiWFlZKXZ1dbX5+Pis2NvbK66vr8NaWlpQPT09QqlUipicnOTPzMwgIRCInK6ubiuY QCBQXF1dUXfv3u0eHR2V3bhxA3Bxcem8f//+y5s3b3Z4eHi4JCQkBDGZzOKIiIjm+Pj44bCwsBqR SARqa2t7CgAAoKqqKpTJZPMEAkGgoKAwHxsbm7K2tpZHoVAEN27cUFtZWcnKzMx0q6mpMY2Jifl7 69atLaqqqjsfPXq08f37934ulztuY2NT293dbbq4uPi7tbU1hEAgQOPi4qxhMJiZsbGx/cOHDw0M DAwEf/780QaDwTIymWybl5e318HBgT4+Pv7X1NQ078mTJz/Onz9P+/nz55ynpyd7enrazNnZmd/c 3IyYnp5GAwAAXLt2jRgcHDx84cKFsdbW1oMkEkmIRqPlnZ2dlbS0tGhKSkrEqqqqGldXVxUOhwML DAw0+/Lli2FaWtqsUChkv337lsnj8Y4NDw9XJyUliYlEIjU7O1tOTU3NkEQi6VpZWZHy8/MbyWSy bHZ2VhIbG4ujUCgmampqZjQaDXfw4EEHHo/XraysfAmHw2Xo6OhUCgSCMDKZPHXhwoW26OhoTSUl JVJ6ejqMwWC0CYXCjzo6OnVsNnvh4MGDp+vq6r6AwWCguLj4OZVKvW1lZfWPQCDgfv36Vchms+Gx sbFaPB6PQSKRlmUyGainp0dPJpNxNjY2QMrKyiHW1tamXV1drtPT0/Xl5eWdNBqt1dvb+/bNmzdn v337hnZxcUHW1NTU6+npzQEAANjb23/q6uqKKioqypubm9OIjY01SU5OLvr58+fCmTNngvLy8oZR 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 " - height="256" - width="256" - y="0" - x="0" /> - </pattern> - <clipPath - id="clipPath6238" - clipPathUnits="userSpaceOnUse"> - <path - id="path6241" - style="enable-background:new" - d="m52.094 312c-2.335 0-4.094 1.28-4.094 3.95v167.47c0 3.95 2.447 6.58 5.772 6.58h189.56c3.3444 0 4.673-2.4607 4.673-5.9054v-153.46c0-2.951-2.0107-4.5466-4.516-4.5466h-93.987c-1.6928 0-3.9044-0.77514-6.493-2.5614l-13.071-9.0198c-2.2092-1.5245-4.2252-2.5106-6.0898-2.5106l-71.746 0.01z" - fill-rule="evenodd" - fill="#808080" /> - </clipPath> - <filter - id="filter4375-3" - height="1.7122" - width="1.0248" - color-interpolation-filters="sRGB" - y="-.35609" - x="-.012418"> - <feGaussianBlur - id="feGaussianBlur4377-0" - stdDeviation="1.0664062" /> - </filter> - <filter - id="filter4375-3-0" - height="1.7122" - width="1.0248" - color-interpolation-filters="sRGB" - y="-.35609" - x="-.012418"> - <feGaussianBlur - id="feGaussianBlur4377-0-0" - stdDeviation="1.0664062" /> - </filter> - <pattern - id="pattern4229-8" - xlink:href="#pattern2719-8" - patternTransform="translate(-523,-583)" /> - <pattern - id="pattern2719-8" - width="256" - patternUnits="userSpaceOnUse" - patternTransform="translate(-523,-333)" - height="256"> - <image - id="image2715-4" - xlink:href="data:image/png;base64,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 3NySOBxOkZub25pQKFyvq6tzsbW1nRoaGvIFAIAgFovXOjo6qvX09EAikQjAYDBq09PT9V+/fsXa 2dlJ/e9//+s+evSo0okTJ2YBAHD78ePH72PHjmUCAABMT0+nDQ0Nfe/p6ZHmcDjEHTvIwWjxAAAg AElEQVR2CDEYzLqvr6+GhobGOp1O92QwGJYsFuvu1taWjpSUlDufzwfNz8+v/vjxY+TixYsuKBRK BQKByAsEgjWJREIZGRkZxuPxgp07d6KysrLGvby8/jc7O1tAoVDgcDh8UVZWFnf06NH5ixcvStXW 1oqDgoKgtra2e9bX10cYDAYNh8PpUKlU2OPHj2vOnDkju3v37t0bGxsyqampT+fm5tZPnjwZQKfT +xsbGxWam5vF6enpBDwerzU5Odmvqqo6XlNTQzx37hylpKREWUdHhxwVFTV27do1opycnNjT09Mg Nze3mUKhED58+DAQEhJi0djYOHXr1i3Mly9f6jEYjJqNjY2zp6dn4/fv36WRSKSqhobGtpKSEnF1 dfUtDAY7OT8/T+fxeHo7duyAXb9+fTo3N1fGwcGhTEZGRhYGg/HOnz9vi0KhaN7e3rM5OTkK+vr6 HtevX/9+//79K+/evbvK4/H4ioqKKG9vb/+YmJjfly5dstm3bx/K19e36/nz508/fPjwLjc3t/L3 799vuFzuy+Hh4T/Xr193fvr0qYKBgQGuvr5+/NChQ8vnzp1T0NLSWhGJRNz19XVcbW2tho6Ozpfk 5OS/q6qq0m1sbKwXFxc/6ejo7LO2tqa+fPlSfXt7e+bKlSvmfD4fUVVVxadSqX8eP35M/fTpUxEA AEBVVVVEeHi4Vm9vrwIMBoNMT0/3ysvLb0KhUHcUCiWWk5Pby+Px7sFgsOOBgYEVGhoaW//8888h KBSqOzw8HD01NaVmbm5uqKys7BEcHOxrbGzs4unpCUxNTa2MjIwIXVxcjJqamqCNjY3Kjx496rK1 tb0UFRX1LDU1VZnD4bB4PN4ij8dTHx0dnQ4ODr4lFouB9vb2Aj09PXkZGZlgsVi8WF9ff3lkZAR/ 6tSpZyKRqO/Nmzdvb9++7bdnz56ypKQkaxqNhoDD4WJZWVkiAACAjIyMcHl5mamlpRX6H+W4+Ndf f73w8vLSPXjwoBGDwVg7fPjwgq2t7aS8vPyEtrb27r///hvQ1dUdxuPx2o8ePbIBS0tLS/P5/E4u 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 0ul0eS6Xq9/e3s4KDAws4HK5U2fOnEnLyso6p6SkRPX29ladmJgQsra21h0ZGdmanZ2VKCoqYmxs bICxWCxUSkoK0t7e3l1TU9MPhUK3a2pqaGw2W+rhw4e9N2/ebFdUVPytra0tmpWV5XD//v1vZmZm G2pqam1bW1vZ4+PjSCEhIRU6nT6FxWIJ29vbtX5+ft81NTUpVlZWNAMDAzEAAFb+obujIBAI+H/j uV5eXpSIiIj8/Pz8hrm5uY6/f/8az83NaauoqMifPXtWWkhIiBQdHb3c2Nh4ks/nO5NIJHxDQ4P+ 8vKyyr59+6zAYHCAubk5ZGtrS8vPz+9vfHy8upubG9XX13e2vr5+KTIy0vfgwYPpdXV1OqdOnTJS UFAIYzKZLBgMJrq+vh5mbm6+ZmlpKU2hUDiGhoYEa2truJ+fX9Dhw4eP7Ozs0J88eTLu4eFhee3a NYSnp2eWlZXVIQkJCcnGxkaRsbGxLhwOJ7W2tjbd3t7+QUtLK/jNmzdRMBiMb2pqKunq6jrBYDBA RUVFm1NTU+8gEAglOztbwcLCghAaGtr+9u1b3P3796d//vxZEBwcnPnr16/PCATi2MWLF1mlpaV7 t7a2hBMSEpwPHDgg0dHRYfLhw4dADw+PfRcvXuxWUVGJLC0tjQ0JCWl//Pix0ePHj8UNDAxEsFgs g0wmjwMAAKBQKCcmk1mVnJx8fteuXWIEAuEnGAwWXLx40fHLly99UCi0X0pKat3R0XE4LCzMgsVi WQgLC681NDTs7uvrQ+Xl5Y1AoVDIz58/Z728vC74+fn9JJFINFFRUbaQkJDko0eP/uBwOPyTJ084 SUlJ+C9fvuyIiYlN37t3zwUMBgPFxcVDk5OTTZqamhh/f/9vQ0NDeqmpqddiY2N3rK2tNRobG+XP nz+/PjExsXjixAldKSkpOovFmv3H9JOAwWCGSCTSAAKBAD09Pb1WVlaeCASC7+DgoOTv70+ora0l u7q6GomLi8/+i9J9ExISgN7e3hUkEtk7PT294Ozs3FdZWdmdn58fBAKB+KKioth79+6F3b9/32Zm ZoaJw+GU/uHQbRMTEyF6enp/bW1tk2ZmZq6vra3taGhoqO/evXtWTEwMyuPx1mpra4du3LjRuLq6 iklOTvb/+/evXmNjY//Y2NhCYWHhaTU1Nea7d+/uUiiUaxQK5Y6jo+NqUlKSlImJSXhubm6bjo6O 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 LB4/foxcX19nGBsb9+vo6ITS6fRZAwODvp6eHmNpaWnPrq6uD8HBwZ2rq6vE8+fPkw4ePGhYWVnJ sLKyYnR0dNC3trZgy8vLovfv3/dcXl5emp2dpaLR6CpJSUm5Hz9+9PT19RnGxcWZuLq6zmVnZ086 ODikgMFgMQAARO/du/cwNjZWhkwmI3Jzc8eDg4Nn19fXYfb29vshEIjw0aNHr548eZJAIpFUzczM WCIiIrJoNHp6bW1NXEVFRX1paYn84MGDqaCgIA0ikai5trb2+vbt279///6tNj4+fkRfX3+hsbFx kMfjTdHp9D0SEhKztbW1cpcvX2a2t7f7Z2dn50hKSsIwGEy9uLi4mYmJya7W1tYbVCrVdnl5WUlH Rwfh7u4OoFCowa6uLr309PRlDw8PkJ6eHvPjx4+wqqqqLRcXl2FtbW07CQmJKhMTk6/Ly8tpTCYT Iikpif9flVxTU9P2yspKt5+fn7Wnp+fz2tpa56qqKqkTJ06IXr9+vauzs3P72bNn8VpaWn8+fvw4 /+PHj/GoqCiPurq6Im9v70QoFEoAAIDv4uJS+PXrVwUUCoWNjY297urqKiEjI+OekZFBy8nJwTo7 Ow91dHRc5HK5o2lpaV/t7OwQOzs7QuBLly6tioiINBkYGPjCYLDQ/v5+TllZ2Y2+vj6csrLy1NDQ 0Lu4uLj61NTUr9nZ2XWysrIHbGxsfO7cuZOenZ1NunHjBnv37t3bPB5vrqKi4mRhYaHW/v37vcLD w9/SaDQql8ud6unpeXX9+vW+3NxcnZKSEvj8/PwdAADWAABYo1Ao99LT05tDQkKGwGCwrkAg2GAy meD09HTlwMBADxsbG+uXL19uDgwM3AGBQAqWlpZAfHy8qoeHx7ShoaH16OgoY319fRsMBnM3NjZq 4XB4DxwOl7t+/fqStrY26vbt25fodHpVU1NTroODA4vD4Uxzudypo0ePhh88eFB/Y2NjRVNT8w6d ThfS0dGRDAsLUzI3N1fJycmRn52dHSgtLU35/ft3dnJy8u+2tjZxZ2dnx6WlJcb79++nFxcXHfbu 3esvJCQk+/v3b+fOzs6d2tpaelRU1Fc+nw/e2dnhbG9v183OzrbweDzpvr4+6ObmpnBjY2NwZGRk FRgMvr22tpbO4XAmmEwm4ufPn+3t7e0yeXl53TY2NuIWFhaI3bt3W1dXVxdevXp1FgwGQ8FgsGZB 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 RoYlAACAvb39nrGxsVIIBIICAECgoaFBEQqFrNra2lI1NTVlNBotIhKJOw8dOpTu7u4+FRUV9Wxl ZaVjdXV1/c6dO53Z2dnBu3fvLpqZmcHj8Xi4vb396KFDh7T++++/+Xv37omnpqZu/j/pEQqF0yAQ CPDw8HgWFRXVOTQ05D08PCwGAGC4pKTkIggEAkZHRzP09fWvNDc33wsMDMTfu3ePam1tLRcZGanc 29u7V1VVNaOiokJWUVFxA4vFkh0dHafu37/fvX379q8AAADt7e0pm5ub0KWlJR09Pb3WxsZGLQaD IYyMjNTA4/E0sVgstbCwMMbhcPTIZLIuCoVa7uzsHPj06ZOGh4cHLzc3F8tisdpv3bpFTE5OHq6s rLRDIpE+k5OTNVJSUpL9+/e3x8XFyUZERFyfmJg4mJKSovPw4UOZtLQ0fl5enm9RUdEFPz+/oxAI RNbPz+/+58+ffX///j1gaWmp7e/v3wE5efJkBJ1OrxgZGQkNDQ1dDA4O9mUwGPMeHh5xMTExP6Oi osgIBIJIJpNh8fHxKxEREajS0tLVmJgYzYSEBImqqqotEomU2b17dzkYDG75+/fvX29v7x329vZe 2dnZVREREQ4AAMyrqaktxMfHh2xtbf1cXFzsRCKRqltbW/ICgWCCRCItjI+PbywvL0NPnDhxhc/n V2lpaaEFAsE0mUy2TEpKGhcKhVsUCsUfCoViuFwurbu7ey4oKKgai8UOuLq6OkxMTDRFRkYGicVi CY/HG4yNjQ3o6emBKigo8KBQqOTXr19FYDCYK5FIjDs6OupxOBz71KlTbEdHR5anp6cCi8WiP3r0 SFhdXd21urq6ODc3J9na2lrIyMiYq6+v73BxcbFIS0vjnjt3Try2toacm5tDeXh4/Jqbm3vPZDIx jo6Oyl1dXSqWlpYz169fn923b5/Yw8PDmkwmQx8/fix6//69Qn9/P5tKpcqpqqoqent7++Tk5Kyd PXtW/vTp02ZCoZDFZrOh27ZtOxAaGnqeQCDsDQkJ+bFjxw69lJSUBTweD6+vr++am5tTKCwshCYk JIwZGxvr6OnpmbBYrGUajQYIhcJNNBrdOT4+DkOhUErNzc3dAwMDoO3bt+tYWlq6cjicCTKZrBAV FfXL0tJSwmaz1Q0NDS0tLCym2Wx2l1gsNhAKheUdHR2Lp0+fnqZQKI5v3759hsFgaObm5sNPnz6l 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 MplZWlqKzM7O5sJgsF9ycnI7XV1dIQUFBTNRUVHG7969W0Wj0a8PHjyYikAgqBAIxHl7eztjeXlZ BgAAAIVCKaJQKIPu7u6LCAQCmJmZsZCSktri8/mr1tbWMY6OjlGNjY0vAACgg8Fg1OLi4ueEhISl Fy9eeLNYrOZ79+69j42NTRQTExM4ODj8dXJy6vn48aNjdHR02ZkzZ17JyMjkZmRkVMrKyroXFxez 5+bmBl++fBklLy+vDoVC11xdXa9LSUlp5ObmhvN4PFB+fn59Xl4eDIvFUmVlZUWdnJwkg4KCjjQ2 NoYTiUTC379/e5hMJjg2Njb43r17s21tbT2amprIb9++0X7+/Gm8srJie+3atdz4+Hi3rq6uKQAA gB07dtgeO3bs1/PnzzEbGxtYaWlpbktLy5q9vb3d6urqLQKBcKa/v3+oqqpqU09PjxgeHr755MkT KJfLFbq7u68UFRWBDQ0NRwkEAsfMzOxeQUHBGygUKoyMjHRXVlbuAYPBQHt7e2hAQMApPp+v9/Hj R/KePXuUaTSawrt37wYHBwfNfv/+Tb937573gwcPislkcr2pqakHDoebiY2NJdvb2+u9evUqvLu7 u9DExMSRzWbft7a29ty9ezc/KSlp19TUVNbMzMzq8vIyR1lZ2QqHw7WVl5fT/1leteTl5bfYbLb2 wsLCqqqqqoqUlJQFDAaDPH/+/EtLSwtkYWEBTSAQKu7eveslKSmJJhAI4jweT1BZWTnk5eVlQqVS qQoKCvv7+/sTaDQalEwmi+7Zs2fnkSNHBvPz8x3n5+dHFBUVVcfHx/vl5eWxAoFgC4VCEWtqauqO Hz8ujsFgpmZnZw39/Pxy9u7dK1NcXCxZVlamTafTjZSVld/Mz8/HX7hw4SKfzwc/fvz4yOLiIkVD QyMEAADg5s2bl3x8fExVVVVZEhISWlAoVI7NZg+Pjo4OqKqq4pBIpKZAIOAzmUwwCoUSjY6OfonD 4XQSEhIu/vz5083X1/dmc3Nzm7W1Na+6uloEiUSqqKurE1AolP4/tgTAYrEW6HT6PBqNVrS3t/9Z VlZWY2xsHAv+/PmzR0lJycnz58+LS0pKLq+vrytjsVh0YmLi9O/fv83CwsJ+rKysUK2srN78+vVL rqSkJPHhw4fq8fHxnyIiInQyMzNLampq5ufm5hq/f/9elpmZ2cPlcpWlpaUvT0xMNF2/fn2TwWCA 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 t8uXL+vKy8sbPXr06M/9+/d1QkJCnlpYWByEQCBAQkLCLgwG0zh27BhteHh4+vTp00KGhoZCIBAI YWZmNhEREREnKSnJFRER8R4YGKgQEhLi3rt3b0pSUlKSx+MtYTAYYXd3d3kajda2tLTE/vDhg5ZA IJhcWVn5KScnd2b//v1LkOjo6KNjY2PDVVVVetLS0tSZmRny48ePT+jp6c1NTU2xYTDY+smTJ8P3 7dunl5+f3+rq6mooISEhOHXqFHR9fV2dTqcLSUlJocPDw6f6+/urZ2dnJa5evUqRkJDYk5aW5kZF RUU5OzvnSEhIiGZkZNzV09Nr6Ovrk09LS7OMiYmZlpGRkVRXVxdfWlrizszM7JSVlWkbGxtT2tvb dxwcHOx0dXUV7t69u5eYmKjh4eExjUKh4CwWi/z8+XNsSUnJHp/P5+bn59Pu3r3LCwkJEcnNzZ17 +/YtZ3d3F5GZmWlKoVDWYTAYcOjQoYNsNlsagUCgYDCYsYKCwmp0dPS/jx490isuLqaoqalBDA0N M86fP28ZFRX1TE5OzhCFQjlZWVllLywsCFlaWrZmZmbOX758ORSHw/XfvXtXobq6euvUqVMBAAAA cDgcx+PxJqWlpTGampoYIpG47/79+3L29va8qampqubmZrCTk5MGiUTakZSUnJGXl4c/fPjQ2tPT Ez8yMsIRFhamcDgcITAYPG1paakwODgIu3XrltWVK1fwHz58EB0dHR0MCgraBwKB5ng83vbY2Jj0 /v37laBQqHx7e/uIiIhInby8/N6VK1d8WlpaYNnZ2epTU1NYeXl5WTk5ubH+/v6poKAgx7S0tNLS 0tJTLS0tK7m5uWYQCGR0cXFx6q+//mptaWnR9fX1RW5vb7Pn5+cJrq6uszExMb4gEKg8MzPTW1VV dVNaWvrdoUOHxNFotGpoaOj0iRMnFCwsLO4zmcxJYWFhqo6OzvWxsbG0hIQEGgqF2rG2ttYfGxub k5eX10tLS+OoqqrOJyYmyuvp6U1HRESoubi4cEdGRsy5XG5/aGio2djY2Pa+ffs2sVissqGhIU5L S+tgX1/fKwkJCQlJSUk1cXFxXn19/QAcDgcdOXIErqCgIOjr60NtbW2N29nZPY6NjV0wNDScLiws 7FZVVTU3NjYWY7FYHGtr69MQCGQtKSkJIyYmhlRQUNhmsViQyclJYyQSyTx58qSZqKjo/s7OzkYj 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 dEtLy+2EhIT7YDBYCQAA4MuXL5KfP3++amdn50Amky0vXLjAd3Fx0Z2dnd1VU1Ojk5SU5KelpVWG wWBWnj9/PnHt2jUDFxcXmb///psdGxurMD8/z0Aikfz6+noKBoMx6uzsxHR3d0+ePn36kI2NjSYM BqO3tLQkdXZ2HqLT6Yy+vj4ABAIB7e3tap8/f2aurq5q2NjYWHh4eLA+f/784+3btzxXV9fPdDrd PzIycurixYvShw4dAnt4eKwIBAIeAABAVlZW2M6dO+l5eXlfhULhfGtr6w8CgQCm0+k6FAplIDQ0 1CsuLo6zvb0twGAw8P7+/go+n29w8+bNU0pKSukcDucGnU6/NTMzIyUhIeFvZWW1tW/fvm0KhdJB JBL9o6KixDdv3iR4enpKDQ0Nnbl3757ElStXpNfX1/sdHBzcu7q60ufm5iCvXr3Sraqq2kMikT4o KChIo9FoNBwOx8bExEQKBIIqUE1NzSlVVVVeYWEhMTo6WqGtra3k7du30o8fPybhcLjA+fl5DzQa bcpisXbHxsZ2ZmZmmv78+bMzPDw8QEZGZjcAAICPj8/Zf/75x3h+fr4uLy/PsaioyPfZs2e5fzTj Rr29vdOZmZk9JiYmuPfv3z8EAAD8/fv3F7du3eLOz88jCgsLZ4hEopOMjIx7YWHhtfDw8PT/9c9j Y2PHZ2Zm1Gpra2vFYrFJW1ubTnt7O1FCQgL06NGjx2Aw2JzBYAwtLy+LhoeHlaKjoy0OHTok5eXl taSrq7vA5/Ph58+f98RgMJZ/ilTGy5cv95w7d+6tvr5+r4ODg0Z3dzfdxMTETU9PT7+oqOhBSEiI 19DQ0ISZmZmrnp5e1a9fv0BQKFS8srIiCAkJwWZnZ3ebmZlZlpWVleBwOGJTU5OMm5ubg7q6OsfX 13fZwcGhZ2ZmxltOTm59c3MTjcFg6r9+/fo2IiLivL29fZu9vb3PH296n7Kycgyfz597+PDhyMWL F30gEIhJcXHx2507dwpbW1ul/Pz83MBgMDAwMPBFS0tL99evXz0oFEqorq7O0dDQOCAUCnkAAABg MBjr6Oj4paGhoY3H443B4XD52dlZVwcHh6Xx8fGN+Ph4aRQKxTl27BgJg8EIHj58OOPn58fQ19fn SkpKJn348OHx9+/fmX19fQafPn1if/r0SWVgYGA6MzNzZ39/PwUEAsGsrKxcDh06lP/3339rotFo ha9fvw52dnZO7927d9HCwsL748ePTTt37uSfP3+eYm1tbSMUCsV6enprurq6dpqamjITExMz1tbW Z06cOJF669YttL6+voKmpiYvMDCwVVFRET07OyuFxWKbIyMjjV1cXAxAIFBDU1PTETgcrkKhUNKl pKT2bm5u/vb09OxycnISbG9vS3d2djrv3bu3TyQS0RgMhmZWVpbd9vb2ZkBAQKOLi4tWTEzM28DA QL/w8PBuY2Njd2tra+309PSC1NTU3ISEhNjU1NSjampqT0JDQ3EcDgcjLy8/cvPmzXg0Gi159erV W4mJiTkQCIT94sWLoqampmknJyebnz9/sl+9euX4xwj3vaGhQebu3bt8MBgMKCsrL7169Urnzp07 8yoqKqzDhw+Hh4eHf8rIyNDbsWPHQG5uroSUlJSqubk5ODo6uqqgoGA3n88HJSUlNaWnp++AQqHO d+7ceW1paTmxf//+1uLiYseKigprLpe7dvbsWV5fXx9XSUmJRyKRjJaXlzE0Gq2xt7dXEofDQYOD g5MAAACWlpaevX37tvXHjx96bm5uzO/fv6uFhoaifv/+Xdjd3W3f1NQUQaPRsoRCoQgMhUKl1dTU Ap2cnBZ//vzZIS8v7/f06VP7ixcvTn/9+vXZp0+ffHk8XujTp0/HS0tLTQYHB0eXlpZEIpGIv7Cw UDQxMZFnaWmJysjIaAwPDz/w48cPzZKSkndEIhFubGyMxePx/H379un19/eH/PPPP9t0Ov3jH9pN dGpqKk1JSWnqy5cv/e7u7q3b29v1z58/B+fn58fu2bMnrbKy8sKlS5fYW1tbmysrK+rt7e04JpMp lpKSYq6uru7a3NzcDg0NPezr67tfQkLCQFJSUtvQ0LCBSqWi09LS2o4dO+YhFAobwWAwYG5u/orL 5eZqa2svo1Co0fT09K39+/efJJPJ4IyMDDOxWCyCw+EqWCzWhMPhCCorKykbGxu0r1+/yhIIhD2r q6tMHR0dNTKZ3N7Z2amQmJjI4/P5YRwOB9PW1rbw+PHjJ83Nzb319fW9+vr6ulNTU0gSiTRTVVXl +PTpU6cPHz5ce/HiBfnw4cOp4+PjKwAAAMrKyif5fD48Pz9/SUNDoxsEAikXFxe/dXZ2HsLj8UQ3 Nze5oaGhUpFIBBgYGHizWCzehw8fZng8HoRIJGqLxeIXYDAY1NbWVgmBQJSysrI4DQ0NzICAAKMv X76w19bWSsRi8ZZQKIyCQqE4JBKJaW5u/vnmzRvhzZs3T1lZWSVlZGQYMBiMKj09PeNDhw4Rvn79 Kvr+/XvbyZMnnWZnZ+VFIhEqOzt7wcrKau+hQ4eS+vr6kBAIBNXZ2Um5dOkS0sfHR8Pa2tpbLBaD goKCHKqqqkZevnx5+vjx4zaHDx/eGR4e/oJKpSLs7Oy+W1lZ7ent7S2srKyEolAo0+Li4qG0tLRu eXl5uEgk4mdnZ6Pa29s3W1patIuLi+FIJHKjsbHxC4vFWlBXV7/K5/O3pqamFoKDg61WVlb2SktL Q+h0OhiJRC5YWloiuFwujEKhtEAgEOynT5/8r1y5EvLPP/+4hIWFbc/NzaFxOByjra1tCA6HC5lM 5puEhATnmZmZ+ps3b7rk5OScs7OzQ0dERPgXFRVVt7W1vXrx4oX+9vb2WwAAJMPDw4WhoaGkBw8e zOfl5Vmrqall4PF4KhQK1eFyuVAJCYllKSmp4du3bxu2tbW9t7e3b9+3b5/M9vb2z/z8fKPx8fHl a9euyf38+VO0sbExHxER8YLH4+lwudxlJpP5EgAAID09vRcEAgGXLl3az2QyYYcPH46tq6tTEggE VU5OTmOpqakbCAQCo6SkJP3jx4+JkZGRBgAAgIWFBX5QUNBfDAaj5Y9RTc7Q0NBNXV2dIS8vL+rs 7CRkZGTQs7Oznzx//lytubm5dWBgAD88PCwHIRKJXi4uLrtQKBTb0NBQCYlEMoOCggB3d3eF9fV1 7NjYGNfMzExVR0dne2xsDFZcXDx05coVaywWC0IikQIqlfoDi8UuBwcHk5OTky1iY2N5SCRye3t7 e+rGjRt8LS2tqd7eXmpTU9NPbW1thJSUlEFoaOhTAABat7a24Hv37hX29/cvZ2dnWz18+PBdamqq haGhoSabzQaFhYUdDg0Nde/u7u4xNzdHGxkZ0VEo1JSNjY28vr4+S01NzeK///5r2LVr16G1tbWP WCx2uqOjQ9fAwOD3tWvXjE6cODG/srKiJBQKN3ft2sXz9/eH7Ny5U3rPnj0DioqKM/n5+bUCgUB9 eXkZ1tjYOE0ikXpPnDihp6am9sHBwcFGSkpqXUZGBk2hUKbFYrE2gUA4UlFR8dbHx0crPz+f/f79 e76rqysvKSnJZXh4GJuYmHhRWlra98GDB/Px8fHtp06demRtbf3Dy8tLzGazeZ6enuNDQ0ODTk5O BENDQ9ubN292d3d3L0ZHR+/g8XiKBAJBE4fDNUEgEDwEAllPTU39/uDBA05bW1svmUzmvXr1qsHf 31+ZTCbbsFgs6bKyMq6Ojo46BoOZhsPh8ioqKvqamprha2trTWFhYbTe3t59R48ebaPRaIZmZmab /v7+ZCKRaGVmZraERCIN5+fnH3h4ePgsLCyM6OvrW7W3t1NJJNIeAoHAlJKS8j1w4IBVa2vrt+PH j/M+ffrU0dLSog8Gg9lpaWmSDQ0NW9ra2ptycnLi8+fPb9nb2/fr6ure2LFjR0xOTk4liUTCcjic ueHh4ZajR48qPXnypMLf33+6t7eXERkZuRIXFzceHx+P5nA4E0gkEvPy5cvl06dPi/B4PCsrK0sV BoNtZWdn++BwOFheXl6nqanpFhKJBOvq6p7o7+/vmpmZwdy7d0/nxo0bvurq6qtoNBrx119/JUlI SPB//vxZjUaj5aWlpVVLS0vnqFTqNoPBkK6urt68fPlyysTERKm9vf25iIiINEdHR2FaWtpnc3Nz eQUFhR4/P78jNTU1neHh4ftiYmLSyGTyDoFAMA8CgfAaGhpri4uLjWFhYctbW1se+/fvf2RsbAzm cDj0lJSUY/Hx8VIwGOxzcXExws7OrlNKSkp9YWFBrre3t5pGo0nRaLRFDAazraOjw2CxWKRHjx6p cDgczbS0tImsrKy00dHRJiMjI9mcnJySyclJTSsrq2EOhwO7ePHibh0dHS1vb2+1ixcvtn379m09 MTHR8dOnT0wtLS0ZExMTi4mJiVoNDQ1VKBSq1tLSUpSfn69SXFxs9OTJE6q9vb0QDoejw8LC3OTl 5c3Hx8cr1NXV+Tt27DgNolKpj7KyshYvXLgw19zcDKVQKJJubm6Tvb29EBkZGW+BQAAikUjo6upq 1s2bN+FoNHqhsbFRf2trq5NGoy3l5ORAIRAIMT093ZpMJlMqKiow9fX1FCKRKBYKhWMnT57UiYmJ afH09AyQlZVFnzhxgnLs2LElKSkpxNbWFp1Op8PCw8O7+vr6oiIiIoqfP38eBgDAZGRkpGpHR4df T0/Pyz/fmu1bt24t83g8ZkpKir2Li4tJTExMzbNnzxwKCwufmJiYmIjFYjEej8cpKio6jY+PfwwL C9MYHBw8UFZWlvpn0qve19fXRyAQVDw9PaVQKFS1jo7OI7FYzPT393/M5/M5VVVVr/4oyeJkZWVX bt26hbO1tc29detWJolEoru6ukY1NzcXAAAAMJnMX7t3775nZ2f3LwQCIcJgsLbq6urn5ubmWVNT U6FkMnncxMRkpqSkRDEtLW3b2dl5xNnZGfLr1y/d/Px8XkJCgtl///1XDYVCN93c3PQIBIKPWCwG VlZWMmVlZR0ZDMbTM2fOmKipqUHU1NTYgYGBjjIyMsowGGxLQkJCgsFgrPb19U3p6OgYysnJqUGh UDGfz19isViQ6Ojofjc3t5HXr1/b19bWGp47d64Vh8MtOzo6qpPJZBaVSkUsLCywysrKmCgUatvR 0RHw9/c/h8fjK+/du7dy6tQpzeTk5JnDhw9vd3V11fT19YXu27dPV1paWl4kEn0uKipi1dTUCJ8+ fRqGQCBE169fv8tms1cvXboUw+fzn+Lx/4+pN/+H+v/+/x+z74x9ZxBjX2KStbJGhDahbKlnhUo9 24mUlGhRelYqkghJskb2fd/3fRnrmLHMjNnn+8On1/fy/g/uP5zLuZz77dzO9Sahs7Kysi8pKans 2bNnkdvb2/1+fn5zubm5YjAYzAoMBivl5eUd8vT0TPr48eOfJ0+ewIuKipYrKirWUlJSVJOTk9G3 bt3aMDY2HnNxcVGmUqlrJ06c8MFgMOMUCoWztbU17enpicTj8aK/f//WhUAg+7u7u18bGxuHHjp0 6GpPT4+VkZFR7evXrzdwOJwMnU4fHx0d3XRycqoCAABwdHSMFBERYSQnJ1uAQKDF8fFxzL1792iP Hz+uIpFIJb29ve/19PQshEJhycDAAFZRUZG3tra2NDo6qujm5mYnEAiE5ubmgTo6Ovi0tLSU//cL A4vm5ORcwGAwww4ODrd2dnbIYDAYT6PRsFNTU0W5ubmqOBwOYmNjM7m9vb07JCRkfWVlhQSBQMRZ LBZnZ2cH/Pjx4760tLRePp/vFB0d3fjgwYPJ2tpas+3t7Xo2m22ZmJhIn5ubAykpKS2AQCDFL1++ mC0tLcHi4uImb926NaCpqfl0dXU1V1JS8ujXr19jMRgMpKenR6anp6fL29ub4O3t/SA/P/80DAZz dnZ2tgbPz8+jyWQyv6qqar6hoUH+9OnT+44fP84+evToPScnJ1M3NzcfgUAglpGRwWptbcXIyMgs gkAg7vT09MynT5/0k5KS/m1ubsbicDjFb9++5d2+fXvY19f3Ko/Hk0hPT9d7+vSpNI1Gs5eWlpYT FRU9kpmZGW5hYaFrYGBgAofDDffu3WsfHh5ul5qaOu/p6bkiJSVFK4zU0wAAIABJREFU7+/vF790 6RJ737595w0NDYPYbDZDVVVVmUKhyIuLi7P3799vweFwQGNjY8gjR47E7du3T1/411CgpKR0+MWL F5VQKLS2t7d37/9GIgsLCykikdgKAIBCQEDAxMzMzHRnZ6dudXV17ObmJlVWVlbb29tbysfH57mX l9cnXV1dk5qamlwKhaLW39//EIfDcfLy8pCtra0fraysTpmamoq4u7u/i42N/d7U1HTd19dXtru7 O0BbW/tTdXX1rqSkpNyhoSFsaWkp/+nTp8OPHz8ufv78+cT3798ZWCwWOzc310+lUuclJCTYoqKi 8N7e3nmhUAikpqYmDA0N8dlsNpVAICQMDAwIAgICaAEBAdrm5uaddDqdT6VS0QAAWGKx2I21tTVe a2vrKgaD2YZAIMZfv37NQSAQwo2NDeyHDx/MpaSktvz8/JqNjIxGIiMjzQEAQM7MzGDl5eUFRUVF 1RcuXJC0srKCXbt2jf/ixYsPIBBI9eXLl/2PHj0iYzAYkKio6K3x8XG5wMBAZRKJtEalUlffvXu3 U11dzX///v3RxsbGwtLS0k4QCGSyf/9+NSwWC0Oj0TeZTKbV58+fZy0sLAz++++/H1AotOfChQuo sbExNIvFagQAYN7V1fVmX19ftp2dHVJdXX3o+vXrOBKJtPj48ePRzc1NckFBATQ+Pv7kgQMHLHA4 HG1wcPDp5ORkOwwG6yQQCPa/fv1alZWV7SorK/vd39//fGdnB4iMjLy3d+9e8NWrV0cfP37MERcX V42KikIQCIR8e3v7VIFAMOvm5maSnZ2ttr29bcDn87sFAsFyZ2dnORqN3gwMDPR68+bN6127dumE hYW1jY2NyXR3d9MmJydBnz59wnt4eBxhsVjk9fX1H46Ojn43btyQBgAA4HA4W3Q6vczJyckuKipK hsvlgkRFRXF8Ph81ODjYAAKBqJ6enstXrlxpkZGRWdPR0RE3NTXFUigUKJvNRv348eNRZmbmz8LC whk6nX7G19eXOjs7C8/Ozrb577//BhgMBkFGRmby2rVr2NbWVr9//vkH7O7uTsdise7fvn3Ll5GR GVldXaUBAIDOyMhonp6eLsZisTBTU9MRoVBIdnFx0dy/f78Wk8kso1Aoi+bm5pulpaX14BMnTuz8 888/UBAIZP/u3btdLS0t/VVVVS6bm5tLXC4XVFxc/CEsLCy9qKjIODg4uKGkpMQyNzf3kbKyslNg YKBkYWFhVW1trYmbm9uP2dlZKplM5rJYrG/q6uqNkZGRUHFx8dEzZ85gpqen+1JSUi4tLi5W6+jo rGhpaY3u3r37HI/H+x0dHe3Z3t6uKi8vfwSHw6kcPXp0j7+/f+jGxga6q6uroLGxcYvFYnEUFBSY cnJy2gcPHsxDo9H46upqx97eXrPS0tJ+TU1N66CgIGpISMirrq4udElJifrq6mpfbW1t1unTp4Uo FIpAo9FghoaGoz9//tRBIBAiZ86caSESibiBgYFlIpEIT09PJ3p6enbHxsZySSRSp7Ozc7irq+ut mpoaDh6PhwcHB29YWVnF3bhxIx6JRDrzeDzQ5uYmisVi8Tc3N7kxMTH9hw8fpv8N4iQ8efLkP3V1 dbaUlJTapUuX1J88eXI/NjbW0MLCoqe8vNxWXFxcydnZ+aCnp+dNBweHxWfPnn2l0+mqc3Nz2wKB QKyysnKqrq5O98mTJ33W1tZLPj4+UBEREcibN29+/o0HtwOBQPgnT54g5ubmioeGhj7X1NTo4HA4 JwsLixEKhSIPh8M5y8vLUhISEvC/k822hIQEk8fjzdjZ2Wm1tbVN5+fnLzg7O0ttbGxQJSUlv9+6 dUu+srJSCo1GKzQ0NLi5u7tLeXt7zzU3N4tJSkpKSUtLq+FwOEWBQECfnJwUWVhYYNjZ2Y0BAABs bm52o9Fo+tevX8eDg4MZrq6ue0dHRznj4+OiFy9eFNPX13dns9lgPp8/BQaDV4lEolR7e3uGl5eX HhaLhWxvb++cOXPGGgKBgDY3NyljY2NZKioq44qKijtYLFa7u7ubxmQyrebn538AAGDs7e0traSk JKGsrKy2e/duqcuXLxtERkYmVFVV8cBgMDQhIYF+/vz5wadPn/pCIBCV7u7uh38j1nuoVGri+vq6 7vT0tAgSieQXFhY+sLS0XGlubuZ9+vTptaKi4mx0dHTB6dOnD33+/Jns6uoKaW9vTx8aGuqQlpYO OnXqVH9/f7/Dly9fSul0esWdO3d+YzCYPTo6OvydnR2upqam4MyZMxkHDhzoNTIyCpaRkRHV0NA4 WVdXp5GQkECOiYnBIpHIATAYPOvi4hJ6/vx5SyaTKf3nz5/Zjo6OcTQarYHBYECzs7PSSkpKCjwe D6+npye+tbWVZmBgQMzJycG/ePHifGRkZEpcXNxLU1PTy+7u7k9ra2vVd3Z2eC4uLvYSEhJ3rl69 6kwikbD37t3bgcFgKmg02jo1NbXdxcVFB4zD4SAvXryAvn//nmdra5vs4OBgjsPhsFgsls9gMEq4 XC5maGiI9+fPn1wikdj37t27wpmZGTSFQoEaGhrqbG9vs+bm5kozMzOtQ0NDg5ydnSm2trbxU1NT lng8nqesrKy5sLCASE5Obk1ISDgAAABQV1dn2tfXRwEAAJCWlg4FAACZnp6+Mjc3J41EIt04HA5o cXHxt76+vjSXyxU4Ozs7aGpqYq2trVljY2MIHA4H4XA4bUgk0uzSpUvTfX190hgMRu3NmzdTFRUV djk5OZednJwOx8XFtYeGhmJcXFx6t7e3IcvLy6yFhQWliYmJhbKyMuq3b99OdHZ2qvb29q7V19eD 8Xi8AAAAYHx8fLOnp0fEwsJiy8DA4NXq6ira29v7eEhICEEgEDT09vZ2NjQ0JEtJSS1LSkqCjYyM 6gkEguD27dsOzs7O8/fv35/p6uqqdnR0vNnX17eIQqF4wcHBmAcPHjzt6emZ3dnZMf7169cECoXi 5+fndwIAUHrixIkNWVlZsba2NjAEAjGjUChkTU3NyX///bcIBoOd/vnzp/Lo6ChvZ2dn8S9qitzb 25vu5eV1REtLa0JWVvYWhUKZvXHjBrS/v/9fd3d3JBqNzmptbVVISUnZVFFRkcLhcK5v375FHT58 uHNsbGxNIBCAhoeHF2NiYvQPHDgwC4FA6kdGRt5qaWltP3v2rJvD4czHx8eTWlpadtXX1yvV1tbO v3v3LufixYuTYDCYHxsb2/Hw4cPhW7du8ZFIpL6iouKOgoLCifT09GQMBkOhUCjwzc1NiouLiwAO h08TCISRtra2I9HR0Z0sFgscGxvbiUAgvMrKyjwAAFj9999/ubKyso5MJlMeh8PJNDU1ScbHx/Mk JCQ6Hj58uAuPx2tZWlo6QyAQIZPJ1ASDwYCFhYWmqKgoFwaDYWAwmIKkpOSRN2/e3IyLi9PV1dV9 WV5eri8tLW3R3NysNz8//6yxsXHPnj17/oHBYMiCgoLDNBpt5urVq7M4HM59aWnpExqNnk5OTjbl cDgoDofzx9raGpecnPzI2dl5p7m5eZtEIt28fv36pLu7+7+enp413t7exw0MDDZiY2OxL168iPjw 4cPPEydOOI6MjEBOnTrVe+DAAYUjR47IgUCgSl9f34nExMQeDAbDff/+vZGoqCgXjUbLMxgMVkpK yqeIiIgJFAqlzOfzBUVFRdpycnJN8vLy0lVVVUJbW9sadXX1w+bm5rOtra1KTCazKyIioik4OFgZ AAAgPj7+S0lJSUdDQwP07du3egKBALS+vs6EQqF0OByO0dLSMi8tLZW6fPlyY1FRkUpYWNhFLpfL g9y+fXu/lpYW+K/qCNjY2DDCwsJwhYWF+ZKSkgpmZmbO1dXVIAgEMnPkyBEbAoHQ7+rqmhAUFNT3 /PnzNT8/P4msrKxta2vr9ffv37NsbW0ZN2/eVBgZGVkzMjI6hEajyevr690RERG2XV1dMv39/Vky MjJyExMTZElJyT8wGOzknz9/whUUFJQNDAzwaDRaBg6HY+Fw+PDx48d9ORwOhUajrUxMTHADAwN9 Pn/+PFtRUXH5169ff3R0dHYbGxvL2Nralr57967FzMxMKjAwcFRUVNQ9OTk5VSAQoI8ePboaFBQU m5iY+P3Lly9q1tbW9UFBQSexWCwCDAYL8/Pzt/fs2cOBQCCYnz9/Imtra9ESEhKLVCp19OLFi0Qu l9vu7OxMb2hoaDxw4EBXTU3NMo1GE7e0tNx35cqVLXd395BTp05x1NTU0E5OTnRpaWl5c3NzmJ6e 3lk4HM7JzMwcvHLlCvbVq1djMBgM3NnZKenu7o7CYrEKUlJS80ZGRroyMjICBoMBPnbsGGxyclLy 0aNHZs+fPwcdOHCAHx4eflYgEHQnJCQMSEpKcjQ1NeeNjY11uVzu+r///ruJxWLLAgMDVcLDw/sa Gxt3bG1tFTQ1NfXW19eHSkpKVjc2NrR+/Pgh4ejoSFNXV7eysrLacHNzU3Z3dxf/999/lxsbG/cf PXpUV1FR0dDR0fExAAAABoOBDQwMDO3s7IjExcVFvnz5sra0tFQgIyOj1NLSwp2bm5u+e/euka+v 7/6dnR32lStXms3NzX3weDy/qalpprCwcAuDwciNj48vTE5OztjZ2VEXFxdV6+vryZKSknqHDx9G zMzMLPv5+V0GgUAiQ0NDxXNzc5ipqSnc+Pj4OwgEgsnPz1+MiIiY8/f3/zg9Pf3706dPiRgMRt/N zS0xMDDwgIuLS9bY2Bi5tbW1e9euXRApKSmtgoKCJiKRCKmrqxtubm5mrq6uzkRFRa3r6uoOLy4u zra1tekKhcLllpYWQExMTFZNTY1iY2NDGBoaWnJ0dIQfPXp0Z3JycqSnp2dAVVXVcHl5mdLX16e3 tLS0evXqVX8wGLwlFAp79+3btzE1NTV/48YNvKKiohUSiZQ0MDCAFxUVlWhpabFRKBSUQqEscLlc up6eHuz27ds3FxcXBYmJidiZmRmhp6enHJfLJQsEAq6cnNx5JBKpW1NTk3Xt2jUvGo1GdnZ2lgaB QBhDQ0P8sWPHpoyNjYdZLJYaBoNBBgQEIExNTS3ExcUtyWTylri4+BCHw1mMjIzkvX//fuPx48e0 lJSUoTt37oilpKSsHz16lJ+UlNTg5OTkXFlZmfPlyxdrCATSFBsbGwuHw1Hgjx8/QpuamiQzMjKu aWtrH93e3rZSU1NbMjQ0ZPv6+u6AwWDNnz9/nr979+7HGzdudDU2Nip2dHTUOTk58VdWVlZ///6d kpWVBfv16xfNxMTky+zsLB4CgRhubGwof/z4sXZqagolJydnNDo6qmBnZ9dUXFysFB0d3UoikeKb mprEpqamPjs4OKQPDw9LycrK+oLBYBmBQADlcrkqurq6lyUkJLiTk5MUDQ0NelZW1lcAAID79++n E4lE3urq6sPBwcHkoqIia39/fw00Gi26uLi4RaPRKgcHB0Wmp6f5cnJyG2AwGIiKiorAYrFV+vr6 qs3NzVUKCgqSmpqaEj09PajY2NjmEydOLNbX10+7ubn102g0qqenp5q0tLRqTEzMNwMDA+uTJ09e +/btmw6TyYRmZGR8jIiIIF++fHnc2tr6GZvN3tne3t708fGBqKioQLhcLhgCgYiTSKTvX79+xZ45 c6bw8uXL1IGBAR0LCwvi1atX1U1MTGZwOJxibW1t89zcnKiJiUm7t7e3zszMTMfu3buHu7u75+zs 7PQBANi4c+eOyOPHj7Xevn17WkZGBvP58+cvWCx2LSEhQW14eBhSV1c3zuPxBp88eSJiYGCgw+Vy QU1NTVI+Pj5uaDR6fmpqytHe3t6nurr6aWpq6gMRERGp0dFR0a9fv47Y2tpOMpnM/nfv3k3Pzc2l zM/Pv+/o6Mg6cODAPW9v7yA6nd546tQpQm9vb3N+fv4UCAQSUigU0O7duw0hEIiQQqFkLi4uSkMg EMTQ0BD8v//+o1y5ckWLQCAM3r59O1pOTq7yzJkzxpmZmfULCwutAAAAoqKi8t+/f4cEBwd/fvny ZdydO3fuKykpbZmbmy97e3s7S0pKVg8ODqpFR0cTWlpaYuLi4k6PjY3lQKHQ41AoFO7j4/NWRkZG NDo62vgv0hz4+vVrgYmJCe7w4cMjx48f1zx27JiYuro6vaioSMLDw0MmJCRExMXFhbdv3z4Ml8ul 3r17Fzs1NQWhUqlBEAjEIj4+fuH06dMQMTExdF9fn25BQcHSqVOnjqemplp9+vQp5M2bN8kAAADl 5eUrioqKxoaGhpsmJiZWZmZmSePj4409PT3tTU1NigwGgzc6OrpIIpF2KSoqkm/duqXJ4XAor1+/ pjg5OSFOnDjxMzg4WFpcXBx269atBVdX17C+vr7UkJCQYFdX198xMTHOMTExvVAotOjbt29tubm5 Nh4eHgQ0Gr3l5uYmcfHiRc7379+7zMzMqqWkpHALCwvo6urqseDg4Pr19XWr//77T5LP5+t3d3fL Pnz4UKS4uJjj4+Oj/1e0VmQwGDxnZ2dCenr6z7a2tjZQcXHxl9DQUMzU1JQnAADAp0+fHnl4eOwV ERFRuXfvXvWjR4+C/2fK8fT09IiOjpb/9u0b0djYeKGtrU3T2tp66sKFCwIfHx90eHi4IgAA/JWV FTiZTJ7X19fXGRsbi7tw4YK1i4uLGplMJre0tEj6+/t33b592wMAgM0HDx5Qb968ubekpCRPSkqK aGdnZzY2NlbS19e3dvTo0aOXLl36mJSUdBkGgwn/Gl6IPB5vTSgUgqanp4e8vLxqDQ0Nvx8+fPgK GAymHz58+KBQKAS2t7fLNzc35SsrK1uDgoKePXz48IqkpGSVn5/f68+fP09ZWFhIKCsr0+7fvz/3 +vXrwMLCwrarV6/CJSQk1oKDg2tlZWW1VVVVd7W2ttIoFAo4LCzMAQKB4P/i0V4nJSW14PF4mydP nhD6+vpGtLW1dWg02iCBQFCRlZUN/vTp0yMwGLxNIpEY6enpKkZGRnX5+fkkHo8HAACw/PnzZ7fW 1tYvGhoaEuLi4uqOjo5dIiIimxQKxa2iomJERkaGsbS0tNXV1SVNIpFOhIaGxu3atcsxLCxsTVRU dB+DwSg6cuQI+tevX46hoaEtLS0tvMHBQYednR0wHA6fCg0NbZmZmUGWl5ffLi4uvnXo0KGD58+f /1lcXOzu5+c3GBER4QaBQID29vYPjY2NejY2NnxxcfHS8vJy6Y6ODoK5ufm8iYmJhoyMjDyFQuEk JSUtDw8Pz2dnZ9OTkpIWYmJiAsFgsMHExMR4Z2dn5Y8fP6i3b9+2aGpqaqyoqFCxtraGzc3NNS8t LbkPDg4K796922JgYGBnYGCwbWpqOtXc3IwsKCjAb25u8kpKSmZu3bqFOnny5D5ra+uuzMzM2P/V nJycXEhvby+OwWAIGQwGPCMjY9jExEQJAABwbW2t4okTJ3ZERES4Wlpajm1tbSVCoRChrKwMFggE gLq6+q2ZmZmnFApFo7GxMR8Oh1va2tri1NXVd86cOTNqb28vd/ny5fHCwkJTGxsbIpfLlRYKhYLZ 2dnW0dHRkaysrGldXV1xAABw169fv5qXlxenqKhoZmRkhKmsrKwbHx+v3bdv3507d+58e/Xq1SEx MTEZBQWFeTQa3cNkMvfKyclR7927J1peXi4wNTUdfPjwoTGZTMYAAAAMDQ0x371715WUlHT64MGD BdPT01pDQ0NoDocDeffu3XtVVVXnhw8fCrq7uw/Ex8cnxsTEHNq7d+9MS0uLuoODw2xBQYHdp0+f Guvq6ljKysrUmzdvivj7+9PPnz+P9PPzIz5+/LjP19fXBIFAOKytrd3/9euXPB6Ph4iLi8NxOByY RqOxNTU1VyHe3t5H+vv7mUlJSWPHjx//qKio2Le+vv7n5s2bIh4eHnQ1NbW9AAAIAAAQlpaWDigq KioFBQWRAgMDO7y8vLZdXFyO4XC4Rnl5+TkdHZ3dkpKSxrKysqzp6emKvXv3OhkZGS36+/uLUigU ieXl5e2jR49C2Wz2clpaGtPNzU1OTk5OWlRUFGNhYRF46dKlN/7+/j6RkZHPvby8NF6+fPlAVlbW YmJiYrajo2Po9u3byysrK9UzMzOz09PT5OTk5O1du3ahQ0NDZYlEovH09HQXDAZbo9PpE79+/Zow MDBoFQqFUvv375+QlpbmRUdHZy4uLv7Q1tY2ys3NXSORSJj19fWh1dVV6Js3b5RhMBjn/fv33evr 6zKWlpZWMjIyyKGhIZqNjc3iq1evanV0dAA4HM4OCAgoKSoqcj969KiltLS0g5aWlo2oqCjK3Nwc GxUVdQIAAIGOjg4SDofX/Pr1i+jp6TkZExOz6+XLl23Gxsb8nJwc/J49e2gbGxvQ9vZ2FhwOb5uY mABev34tGR4efiw5OTnr3Llzkqampm9lZWXxaDRa+OfPn29379619PT0zLp///50SEjIppGR0TAG g5lXUlJSu337Nh+DwRyNjo5+QaVSa0NDQy0OHTqktLGxUYNEIsERERE9w8PDmjExMdOJiYkFoaGh njMzMz+PHz8OP3v2LM/Q0FCkvb19LSYmZuz+/fvKZmZmEllZWSvu7u6XQCDQhJubm1BdXR2oqqqC 5OTkaGGxWI6RkZFKRUWFf3x8vFRFRUWQvLy8xtu3b2fPnz8PUKnUweDgYF8Oh9Pr7++PAIFA8kVF RTtzc3Nre/fuhRcWFoqfPXv24PDwcC4cDqdVV1fLgkCg1X379qkEBQV9J5FIbfLy8tq2trbtCAQC 4ujoOJ6dnb2GRCLd9PX1FTU1NccWFhbgIyMjPGtray0MBoPd3t7+gEQiJ9rb28VFRERk5+bmOsTF xY127doFU1dXx5FIJIGLiws3Ozub+urVK/ORkZHBnJycFwwGoyE8PJy8urrKlpSUlBEREWn48eMH HYFALKmoqIiTyeQxMpncd+bMGbPExEQcl8sFzc3Nzf78+dOVQCAsmpqaKmCx2G0ZGRn1W7duST55 8mQFgUDscnR0JMvJyQ3CYDDG2bNntefn59ccHBwIMzMz67q6upJHjhw5X11d/X1nZ6fv6tWr+F+/ fjGtrKx0z58/jzUyMuoUCASS0dHRzNOnT3epqqpi5ufnIbOzs8Rr1649qa2tJYuLi8tpamrC0Gh0 Q0ZGBuvz589u4+PjTBAIVA2FQrU4HM7coUOHVm7evHm2rq6u7vDhwwRdXd3j8vLyBhsbG9UTExNk UGJi4jsKhbJWU1Oj4Orq2sblcg2ioqJO/iWmtJaVldWGh4fbdHZ27iAQCMHo6OjCnTt3JMvLy40y MzP99PT0dPX09MLGxsZSNTQ0bFJTU7/19fUpZmVlbTU1NemYmpqCent78X19fVMhISHGFy9eTN2z Z49kSkqKcmxs7Cqfz9/d09OzQSQS8Xw+HxwdHZ1kYmLiXFNTw56dnUVTqVSnxsbGcSQSiTYzM6Pl 5eWtv3//nnD8+PFvFhYWR1paWsbk5eVZbDabjUajUVtbW1A7Ozu/9vb208XFxRpFRUUWmZmZWkpK Slwej4eOiYlpP3ny5LqxsbExDAYL3N7eLpOSkpITCoUQNTW10cTExM6enh5CYGCgqpSUFAEAAOjc 3NxvaWlplYCAgF9XrlxRCg8P71peXpZLT0/fycnJwTx//vwgEol09vT0fMLj8Sjy8vLsd+/ehUEg kMH3798v9fb2cpOSks4PDAzcffPmjbalpeVSUlLSlrS0NFxFRWXVw8NDWVNTc7yurs6USqUuu7q6 CgEAGNu7d++RqqqqgvT09NUjR47swmAw++3t7TtmZ2c9paWlG5OSklZ0dHT4L1++hM7Pzwvr6uqe Ly8vPxAKhTwejweSl5d3rK2t/W5hYWF68eJFso6ODkRHR6ezqqpKgcfjzREIBMS7d+/k8/LyDE+e PPlxZGTkxurqKnpubq5gZmZmbX19HeHn5+fH4XC6SSTS4u/fv3WWl5d7TUxM4vl8/nRXV1caiUQK AABAtLOz86WampoCBoPZVVtbO0yhUCbNzMxIZ8+epZSVle0HAACAwWD6AAAAlZWVWSoqKjsMBgPS 0NAw6ebmpgECgQB9fX1pPz+/4qSkpKR79+69g8PhbD09vV+urq73e3t7PxOJxGNxcXFvY2Njf2xu bjY+evTo9/z8POTUqVOAnZ2dLQwGE1Kp1Pc5OTmShYWFqjk5OTYwGEy4tbVVv7S0NKKiouKNRCI3 PT09B/T1/9+xpri4OMvCwkIciUTCxMTEqNLS0voAAAAZGRl5VVVV/4vtTv3rRfmcmJg4HRISotTc 3Dzp4OCwm8fjMWRlZf1pNNrv7e1t2sLCwtqdO3cWa2pq4v53Dbq4uPgIiUTKEYlE5d7eXtiBAwdo Q0NDhMjIyP8iIiL8mExmzblz56TDwsLYPB5vGY/Hb6ampuobGhqu4PF4hbq6Osry8jIeh8ONJycn u2VlZWWurq7CCATCbhgMtv73bUtnz549qqamNh4bG7sDgUAAHx8fvU+fPrXHx8djf/78Kb60tNRx /fp1enZ2NpFCoWzi8XgeWFZWdjs0NFTo6uraFh4e/s/169ctWlpa0gAAwCORSMHu3bst+/v7Z168 eEHr7e0dl5aWRmEwmPaurq5ce3v7YCwWq9/U1NRCoVC0BwcHGywsLBSSkpLctra20vF4PG9lZUWr uLh4dXFxEVNZWbmNQqGY9+/fV5GXlwcXFhYq7ezsiJiamsoHBQVRuru7h4eGhqLfvn17AA6HC9LS 0rQWFxf71tfXa1JSUvIBAABwOJzk9+/fz3h5eVWg0WglFRUV/YGBAVEzMzMwg8EwNDAw2KbT6d// /PmjBAKBQOfPnx+Vk5Njnzp1ivLp06cfd+/etTU0NDyur68P2d7eLtPR0ekxMjIqWFpaWnN0dPxD pVIR3t7efDExMUZra+ujtbW1ksbGxgYsFuucmpq6X0tLS+M1xrBhAAAgAElEQVTkyZN8aWnpVT6f r5qUlOQOBoMRDg4O11+/fj2amZmJ3r9/v+iVK1fKXVxc6quqqgBPT0/2yspKQV9fn6iVldWit7d3 cElJiYu9vf1oTEyM2Pj4uBQAACBTU9NaNTW1+aSkpLWGhgaVzMzMMTqdrhEUFBSqqalprqioiFhc XDyXn5///ty5c7MvX77cW1lZuTU3NwfAYDAuj8fr6OzshIyNjWElJCSUAAB4YW5uTt7Y2BDo6+tD QkNDHUZHR03a2tokd+3aBTI3N1ccGBg4pqGhodnT0/OYTqfD2traPvT09Az39vayAgMDE/bv3//t +/fvX8rLyxkKCgpeHR0d6Onp6fOBgYFpqqqqzIaGhvQ9e/ZcQiKRuO/fv08MDQ31JCYm9svKyqL6 +/u3y8vLj7i6uqb//Pkz7O8tRripqelKWFjYCp1OZ6NQqI6UlJReGo3WWVFRMa2kpNRRW1ubRiAQ tjMzM/vu3LlzksPhgKhUqjSPx8NBIBCF69evh/r5+VWAQCC8p6cnbGpqSoTFYoGbmpo+joyMQNBo NA8KhQqdnJyGkUjkbgQCoff169dRNBotsLe3H9fX15+Dw+HTJ06cEFZVVc3a2Nhc5nA4CzY2NlBr a+ufw8PDU0QiUf3Zs2dS8fHxonQ6vbCvry+ATCYj3d3dNVJSUhosLS3Vf/z40ScmJoZoaGjInZqa SsfhcKJCoRCel5dnqKam9rmnpyeXTqdnyMvL/xsdHb10/PjxPk9Pz8a7d+/WVVRUfLe0tJTgcrmg +vp6Fp1OR2ppaSlPTU1RSCTSUH5+voiUlJQaEolEmJiYsGAwmFBOTk5GUVGRd/r06T09PT1rv379 msnLy9tmMpndHR0d6/n5+VPLy8tKDx48UBAIBHOzs7Mdnp6e/ICAgGxfX9+B5OTkRQQCoSomJrbA 4XAADocjhDx79swDAACCvr6+NBqNLq2rq4OYmZmZT01NpcNgMDFPT0/GuXPnZgwNDQlGRkZnCgoK BhMSEm6Mjo42kclk2aSkJCQKhSLb2dkBv3//lrWzszMvLS3NJhAIOAkJiYClpaUfFAplQ0pKir6z s9O6tbVltbm5ST5y5Ii0r6/vQVlZ2SUGg9Hv4uKiqqysLOvo6Ah69+6du5+fH/FvXp5DeXk5Ni4u 7vz79++Hx8bGim1sbMaFQiETBAIBysrKWpWVlYuXL1/+FRwcDGGz2aCqqirEnz9/YGFhYWaDg4O0 PXv2qLq5uYH19PRs8Hg8DwKBgPF4fPXz588pIBCIXVZWhnF1dV199eqVHhQKnXn79u2GmZnZ0NLS klBLS8tt9+7dlyorK89qaWndfvLkyQMIBIIYHR3dPnTokPjJkyd/6unpwVpaWqiSkpK7njx5snzn zh3C4uIiAACAoK2tjf/48eMrkZGRD6SkpBR6enr4Fy5cmNXU1Fz29fXFw2AwgoGBAXh9fX0PAABG 3759Q3h5eW2Ul5fTfvz4YWpmZtY/PDy8IRAI5lVVVU3YbPa0gYHBMXt7e43Pnz9PT0xMiJWXlx8e Hh4uLCsrWwoICNDz8PAgd3d3c7OysuopFIr4gQMHnHV1dVFwOJxvbGwsz+VyiwIDA4/4+PhAWlpa mtFodLGSkpKZUCiEkMnklYcPH+rv27ev3cTExCcoKMh9YWHhS3JyMjImJqZ8dHRUo6qqSujs7Cyc mJiQMzAwGLl+/foLJBI5ERoaWhYREXH348ePSU5OTpZMJhPa1NQ0dP/+fUUUCgVFIBBLk5OTSDU1 NUxXV9eEoaGhLBKJ7HZzc5NVU1O7GBcXN1tSUoKJi4s7B4VCK2xsbDRLS0s7bG1tWbt27TLH4XBs SUlJma9fvzL+YraZJiYmiIMHD8K1tbUZ169fN/nw4QOsoKBAUUVFBXP16tU+LBY7yefz17e2tmAz MzMrAQEBsAsXLiw9efJEPSEhoYbP59uNjY198/b23sVkMv/cuXPHR0dHB8lgMLojIiIEw8PD2Pb2 9q6JiYndw8PDrHPnzu2dnJyc9fb25lpZWRkcPnw498iRI3OKiooBbDaboqKiIiEqKqo9PDycJyMj I6mqqgqZm5ur9PX1PWNoaLh+7dq183A4vILFYs2Jiooq5OTk0Do6OtBwOLz2y5cvvJqaGlE7Ozut uLi4diKR+E97e3u/qqqqSG9v79TLly99Kioq/mCx2NGoqKh/8vLyxjMzMwM/fPgwmZSUdFRFRQXn 5eW1HRUV9Y1Go9HZbLb2wsIC297e3mFlZaXY1NTUxNfXVxQGg438+PGDRSAQxsAMBgOCQqF4a2tr OQsLC6sODg6ytra2dUtLS3AsFks7evToyl/w5ywAAMDu3bt5AoFgbWNjAzYyMjKelZXl4ePjY/bo 0aNFeXl5ZmNjY/nGxoaaqqpqvbW19d3t7W2Gp6enbX19vaiVldUxeXn5OQAAgIMHDzoCAIBxcnKi 1NTUSIuIiAgMDAysNDQ0ZAEAYD569CjM39//tqenJ+bcuXOaJ0+evCkvLz+MxWIh2tra1j09PZUg EAgoKSnJjo+PF2loaEiZmZlZkZGRcbS0tLTA4/Gkw4cP49zc3AhqamrI2NjYGgwGI4DBYAYQCETn 1KlTd3d2dhAXLlwQW1hY6H///r0SGo1WNDExcdi1a9dmTk7OCpvNFomKisoAAGBj//7911gsVsn5 8+fPXrlyxe/58+ee0dHRzSIiIrb5+fl/6HQ67+nTp4tv3761RiAQIWlpadBDhw5JVlRUGC8sLLx8 +vSprb6+Pnt+fp5TVlYmZWdnpwKFQnVyc3Mz+Xw+iEQiiRIIhF2jo6NUNTU13IEDBygAAADR0dFT 3t7eB7W1tY9paGjMwmAwVSgUKguFQnVramostLW1l+FwOA+Hw/EePnxIKi8vT7p27RpVSkqqxcDA wE1cXNxoc3NzeGZmZgsOh+9HoVCKSUlJHg0NDYOioqJ9vb29KqOjo5jt7e1lcXFxqpWVlV1GRoYY Dodz/Z8Q9+rVK+3JyUkeFoulnzhxYgICgUjLycmp5ubmQmVlZYM9PT1/IRAIzPLyslZDQ8N/MTEx 3lwul+fs7LxbQ0ODvbm5CQUAAJiamhIcOHAAv7Ozw3BwcEDt3bvXanBwEC8nJ3eBw+HwPnz4QI6N jV1vb2+P1tfXjxMREQFdu3YNq66urolCoXZWVlamOzo6umJiYurfvn07X1ZWdnXfvn0of39/ibW1 tUOWlpbsoaEhMofDmf47LSKjoqJmx8bGukgkEk1PT4+soaHhAQKBDmtqapoGBgY6XrhwAXno0CFT oVC4gUQiB3R1dXczGIwFFArFT0lJkffw8MDo6ekRnJyc1lEoFI/NZms7OTnxWCwW5PLly3UIBMJ4 a2sLcuvWrYc/fvwoBYPBYAaDMdnf37+ERqP5z58/XxUVFd0UCASAqKjoWnd3d6iioqLq69evFVZW Vlj+/v4yJ06c2FZTU7PX1NRUsrKyUpicnEQXFhZaKCsrF9vb20+dP38elpaW5lZRUVG+uLgIS0tL kxIKhRLv3793NTExaRscHFQNCQmprq6uHtTV1cUgEIhAe3v7Y0ZGRuA9e/aYHzp0aAgKhRIVFBS4 Ojo6KpOTkxglJaVdNBqNBBIKhUKBQLBEoVAeXb58GZ+amuqQkJDQLBQKYeHh4VNkMnlVWVlZOzg4 GPTff//Z3b9//923b990KRSKW1VV1Z+xsTGGlJQUDoFAYO7evdvBYrFsY2NjR5hM5nRNTc0OgUDY lJKSsiUSiSw5ObnenJwc9vXr1x9RqdRJKpWa2tHRQdq/fz/n58+fDElJSU1DQ8PZP3/+DB8+fFhz cXFRf3NzsxWLxRJNTEzwMzMzq56envMDAwPu1tbWmeXl5cHq6up3iUSiyO3bt10NDAxEoVCocGNj g97a2toXEhJiuLGxYW9gYJD9+/dvxIcPH5psbW31zc3N5aemphgqKiosMBisf+rUqdGkpCTNDx8+ 5NvZ2Rnu2bNnv1AoZAEAANy8efOjj4+PvJGRUQAAANTNzc1ODocDhkKhUocOHXrh4OBw4OzZsxIN DQ0N2dnZ8iQSCRoZGXlveXn53dLSEoJMJm9PT09jNzY2GA4ODguSkpKQ0dFRqKWlpQkKhZJYXV39 qaCg4CYUCqV9fHyq09LSbF6/fl0fEBCwqKSkdJRGo+WgUKj/XxXPzs5+evPmzeVnz56BSSQSRlZW 1nN1dbWmoaFBPCUlBSgtLZUVExPrXVtbw75+/brc398/WEREhINEIq2YTGZ5ZWVldX5+vunk5CRv Y2ND6tKlS3+qq6s3k5OTL5WUlJQBAACkp6fTc3NzrUEgkFAoFO4ik8mzUlJSXDQazTt16lQlkUhc 7ujo2Pv9+3dlHA53gMVikalU6vSuXbvYTCZzX0tLywddXV2zra0tiISEBGZmZqbp6tWrs5OTk1py cnIzFRUVIaWlpfmHDh3ygEAg3ImJiWARERF/Ho8HYLFYSExMDP/hw4ekx48f5xsYGECtrKxkc3Nz By5cuHBjc3OzEQAA4Ny5cxu+vr6TampqEnp6eh4sFqt9Z2cHXFJSMl5WVrYVFRUlq6urm9vb23s1 Ozt78O7du0Z0Oh2ytLQ0FxwcvOLu7s4cHx9ne3l5WeDxeC6Xy6VhsVgci8XimZqauikqKpbV19e3 Xbp0if/69WtXS0tLtpubGyU+Pl7L3d39T0tLi193d3dTTk5Oy7lz51QDAgJQCwsLKg0NDXQ0Gq36 6dOnz+7u7naioqLYgYGBaXd39w0sFrty48YNSXNzcxiRSFwHAADl7u6u9vLlS4nfv39329nZkSor K0dbW1txYmJiXb29vea1tbXO29vbHggE4uL8/Dxia2srpaSkRD4yMvLLwsLCq+TkZERfXx+/uLj4 KJ/Pn2Wz2eATJ05U5+Xl7ampqanbs2ePHQAAwNra2lROTg4tMDBQY3t7u2vXrl1WWVlZjeCtra0a HR2dFGlp6VdCoVANiUSaRkREhPX09FCxWGzC8vKyeVZW1oibm9t4SEhI+dLSktqzZ88wFApl+eXL lxR/f/+Q9PR0IZvNZhQUFBBzcnJWHzx40Egmk/ViY2O9PD09j9fU1KwjEAiBkpLSKTgczp+bm6ug UCgzzc3NYiAQqOnPnz9sd3f31Y6OjvqysrKhzs5OqIuLi+GePXtI8fHxM8nJybmLi4vY/v5+FA6H A4uLi49LS0tr8Xg80Ojo6L3i4mL/CxcugPB4POT9+/eLVCr1u6Wl5bpQKFT7G2Ol999//5VGRkY+ wmAwqmAweB+RSPTs7++fiY6OriwsLJySlZW109LSEpWTk+vOz89PEwqFgh8/fny1s7NTGxgYwDMY jF4GgzEPg8Gk+Xx+BQqFmqiqqooaGhoCioqK2kxNTbWtra0nt7a2pm/evBnE4/E4U1NT0EePHuH+ +ecf2fr6emp3d/eEQCDYfejQofvLy8v1UChUWFdXJzc7O5tRWVn54+zZs1QwGAzs3bt3LSAgYBGB QGxpa2ub/V+eIZPJnPv9+zfxyJEjd2VlZT2PHTv2qba2Fn38+HG3z58/U8PDw+dXV1fF+Hw+6PLl y/Z4PJ7HZrNBDAajwsXFhcVisXgAAAB79uwZbm9vJ+jq6ipmZGRkLy0tbRw+fNg4Li6OSqFQNvfv 37+8s7MDzszMfKyurq6cnZ2dNTs7W+vl5aX369cvKwKBUAuBQGACgQBYX1+fQ6PRvIiIiAIrK6sG GRkZ1ZWVlQU4HM4wMzMru3jxIv/gwYMUU1NTvrS0tNjjx48/hYWFjbW2tj4QCAQjCgoKN3A4nObm 5iaUzWZvREZGMpBI5O7z588rHjlyJCw+Pn6BRqOttbW1Zbe0tKwAAACJj4+fodPp6kKhcIlCoZTW 1dX1r62ttZ4+fTqaz+cv/LUlf/Tw8MhNTU1dLygomC8sLGwlEAhls7OzBn5+fm5NTU2WlZWVtba2 thmysrK6q6urIrW1tUuPHj36qKenN1RdXS2NRCLRXV1dcTo6Oj3W1tbTq6ur3Z6engVYLLZwfHyc FRERcYlGoyHxeDzt8+fPw319fagfP35k/Pr1a3Vrawu0tra2HRAQsH7r1q2tjx8/YhMSEnafOHFC r6+vD6+urm4yNjYmAofDwefOnXNIT08v+P79+1h6errj48ePj168eHEoOzu7RFRU9A0MBtMrLy9f UFVVRTIYDJ3JyckPhoaG6m/fviUkJCS0+vv7P6upqXng7Oz8LC8vz7atra3A3NxcfN++fVMWFhZz PB4PFBYWRhIREeFLS0trzc3NDZ4+fdofvLS0NNfU1GQzNjYW/+3bt8CNjY2ompqawry8vAgOh1OU mJiICgoKSpmcnISeOXOGlZCQoCkiIlKPRqOJqampB1JTU18YGxuzXV1dL8nIyJzS0tLyunPnDjw0 NFQFAoEINTU1j6enp9+1trYewuFwv0xNTXXLysqGurq6Fg0MDPZMT09rWllZiQiFQuLly5cPLi4u oj58+HApKioq/cePH7kKCgq09PT095WVlfNiYmIbDx8+lNzc3AzOy8vz5XK57Pb29iEQCIRva2uT xGAwrtXV1bM5OTlGXC5X/sWLF5d5PF5NRkZGTVtbm4GMjMxPY2NjwtjYWNfm5uYXBQUFKwcHB9W6 urqtv5hrdnV1tbStra0aDAYzTE9PF7q4uFzy9PRUhcPhWxAIZAuFQkm3traqE4nEP0gkUjY3N9fc 3t5eXVxcHOHo6IiSkZFhEggEaTqdDjl48KCooqLiBoVCmQ4MDFwFAID0/v17WkVFhd/W1ha0s7Oz eHJykotCoZRsbW2PLC0tLU9PT8fl5eVtLy4uYsBgcPvm5ubE/20Atra2urdu3Wqqrq5OZbPZLYcP H5b08vJyLy4ujpWTk/O+efPmMBgMRiEQCCyfz18ZHBys+qvMVyQlJS14enpejoyMxG1tbXVBoVCJ wsLC/IyMjCQpKakmDAZzBAKB0Pr7+8+qqalxxcXFDc6dO5eVk5Nzz9/f3zk7Oxuiqampsr29/Z+e nt4GEolkgcFgBQkJCURPT09lTk4OLT8/HyUvL7/b0NBQu7W1ldXa2nrI0tJyW19f3wwEAjVISUm1 /vvvv3bV1dVWq6urEAqFslBaWkoHAGATBAIBAoGAMDQ0NIzH428eOnQoTUND42lUVJT4nTt33nz5 8oX577//0o8dO1YlLy8P9fb2dpKRkSH09vZuampqMjIzMwe6u7ufKSoqmhKJxCtoNNogLy/PWk1N TRuDweRpaWlha2pqxOh0utTw8DB5c3Nz4MaNGyZnz54VWV9f//Ps2bPNs2fP8kxNTdF2dnZyX79+ XUxOTsZvbGwEKCoqqoyMjMiLiIjIXrlypfrq1ascDAbDHxoaKkWhUIjXr19LkkikSHFx8ZHfv3+r X7lyRby0tHQcj8dLFRQUMKenp4mhoaFGqqqqY0QicTAtLW1DXl5+CAaDUQ4fPjzZ19eX2tvby9DU 1NR68eJF3cWLF5fS0tK0vL29A+l0+vLOzs6ymZkZ5e3btzbm5uaUP3/+TNy/f/+7i4vLh+/fv7Nl ZWXBERER2gUFBRcjIyMbJCQktERERIL7+vqOZ2RkwGxtbeEwGGySwWBwpqena0Eg0PrW1tZjkKGh 4aP4+PjZ3NzcLS8vL1x3d7eCoaEhEB8fj37w4IEEk8mE2NnZ+WloaIR3dXUdnJiY2NTT05M0Nzcf /f37t05WVtavtra25cTExKMCgQAICwtbTEtLw0ZFRfU+ffr0+f8t3qysrAssFkvY19cnSyQSlf38 /CAsFktpYGBg0szMDE2hUOSqqqoa5ufnUfb29hImJiZWIBAI6O/v/2NoaBggEAhYBQUF1/39/c0X FxeJTCZzGwQCiR48eLB6bm7O7NmzZ/kVFRWE5ORkydXV1ZGwsDD1xMREQVlZ2VpaWppkU1MTiUaj tWOxWEkymQwHAGBRS0tLVygUggQCAcDhcCaoVCoMgUAIvLy81mtqaq7+XVs9X1tbY3E4nDQPDw/n y5cvb//69QvT39+vwmazdcXExHgdHR3kBw8ebGVnZ+unpaU17927V2X//v1B29vbHqmpqRpCoVB8 z549ks3NzQ0GBgbAvn37sB4eHuTV1VXP1NTUnYmJiR4SiaQlLi6+PygoKAMCgfBIJJIMFovlnTlz JrKpqSlUIBAATCZTDoPBILFYLF9ZWdnYw8OjIS8vTwEAACA5OZlubGxMAYPBg1paWkrNzc1kX1/f Bw0NDV+hUKhwZmZmyMvL6z4EAtEHAADK5XKn6urqrv38+ZMrJyd39M6dO4FgMHjx9OnTP0NCQnp2 7959k8lktnp5ec0mJSXNxcbG4jMyMhTHx8dRqqqqxzgczmcmkwkBAABgsVgbEAgEPDc3p37hwoXt +/fvgwEAqFFWVtbIysqaHRoa2kaj0ex79+6ZCQSC/tjYWMaHDx9CBgYG5mpra5u8vLwUaDSahJmZ 2RKHwyGWlZXR2tvbv9y4cePP35V0ztjYWIO+vr5FQkJC9uXLl11HR0e3goODqa6urqDHjx+/Xlpa uqCgoLA/Nze31tDQUKW/vx978OBBq6ioqLfLy8s4MBgMGBsbK4JAIOG7d+9gCQkJ1f39/ZyXL18y pqenwyAQiMrAwMArERERZwQCIWCxWOybN2+2REVFrWdlZZGio6PVPnz4MLayssKLjIwMAgCAZ2Fh kWZnZ0dWU1MDvL29Rd+9eydBo9EEYmJi7MbGRnZgYCBQW1urKBAIKKOjo8K/TXw7LCzslIaGRm9F RYXo2bNnJxUUFMifP3++8OjRo/p//vkHHxERMfzgwQPt+/fvrz58+FBFVFRUKygoKHx9fR0XHx9v ICUlxT1+/LhKRUUFYe/evYVjY2NWZmZmv9PS0kiTk5MABALpTU5OhiQnJ7NXV1fVpKWlZba2tmhF RUXUkJCQYKFQSFtZWRmADAwMXCESiUY9PT30lZWVHTqdvqWuro49f/58tYKCghMWixUtLi6OiIyM 9JqcnNwikUjHv379mmRhYUFFIBAjVCoV6u/vDyGTyVJcLpd+4cKF4wsLC/1UKhX4/ft3o42NjXF9 ff2/s7Oz2SwWC1xQUCBUUFDQ0tLSmn3+/Hn3zZs3FdFodIG2trahhISEnLa29qK8vPzszs6OPBQK HZ+amiJraGj8jIyMXP348ePvgYEBlKKiYpGxsbGGmpqa9crKSpu1tTVXTk6OsrOzo6qjo7OjqalZ Mj8/r/T8+XP9K1euzJiYmBjNz8+vubi4aJDJ5D4+ny+zubk5NjExsaWoqCgeHh7epKCgUNjS0rJk YGDgkpCQUJmenn6BQqE0FRQUfDYwMCCkpKSMBAcH/5OYmNgNAIBoe3u7Jx6P73BxcbHgcrlIoVBY Gh0dTYyJiUEqKyvD8Hi8cH19vcfd3Z344cOHm3v37rXGYDBN6urqZo8ePQLt27dvHQqFIiYnJ+H/ /PMP0NraKj4+Pi6cmZmZo9PpM2AwGOjo6KBNT0+v8/n8XCwWa7CwsDClpaWF9vHxQcfExOwhk8lz SkpKjImJCUltbW2OjIzM9NbWltj6+ro0gUCQNjc3PwSDwVS8vLwW8vLy8B0dHepsNnvZ2NiYwmQy y8hkcqWOjs5+Y2Nj48bGRvbZs2fvR0VF/aRQKMMpKSkmFy9ePKCkpLTU1NSEKi0t7S0pKRlJTk7e IyIiAh4eHn6rpqb2aGBgYJDD4cw0NTVNeHl5Ye/evStbX18/gUAgcAcOHDAdHh6mFhUVyb1580bN zs5OnUAgWM7MzHD5fP5SW1tbx+Tk5KSysjJ/eHh49vnz58oaGhqo0NDQZSQSuVhYWDhqY2Mj/PHj R6qFhUX4+Pj4HzExsXpDQ0MPGo2GXl5eZuvq6govXrx4uqGh4bmamppSbm4uc319fVYgEOhDIBCB tra2IDQ0FOLr69tnYWGx/vnzZ6nAwEAZIyOjLHd39yJLS0vva9eu+XV2dpZlZmbWxsbGqoeHh5NY LBbAZDKX/P39RYeHh013796N9PHx4dy5c6fX2NjYAIfDYbhcLuf37/+Pp+/+p7px/3+d4SzHcTg4 h2Nz7L1FZnZE3ImK2zslqzSkKMkdKSkpGUmlVCQNKpQSsikyyt6O43CGszjr+0uf7/9wPa7H9Xxe z9G4cOfOHbvl5eVhJyenlfPnz8O2t7dhnp6elnp6elgvL68kNTW1GhaL9bu6ulpFUlISsXv3bpKa mhpDVVWVbWFhQWpubi4gkUiW1tbWTJFI1GNmZnbUwsLiPQqF4oWEhMSiUCiVp0+fZoyOjgokJCTA bm5uhKampnkqlUo4e/bsMpFIFBQWFvKioqLkxWKx2tWrV5kxMTGmEAgEmZubW+3m5iaHQCCIycnJ jOvXr0dUVVW90tPT04TD4ULQ2tpa3ebm5mZ5eXm3l5eXDAAAwMDAAA6Px7cmJyf7d3V1Kfn7+6/0 9/cftLGxOdDT01PJ5XKbJicnq2ZnZ6UNDAyIW1tbOunp6UVDQ0Oe7e3thK2tLXBcXNyfO3fuEIqK ihrk5OSIbDZ7ddeuXVpJSUlDExMTwqysLFc8Hi/l5+dnura21qWiohINBoMBoVC4npGRkUkmk60r Kyu1jY2NK588eWJBoVCUrl27VqWgoGBlbW3N2rt3r4hOp1OzsrKUdu3aBYZCoSOKiorORCKRp6Gh YZWVlVUvJyenUlZWBn/48OEvAwODYB0dnbrJycnQwsLC9qNHj+4Ui8UTIyMjderq6ooZGRmYq1ev +v2VPI/l5eXRzMzMTtBotEaRSDRUVFQ0tba2JqBQKMa3b982u3bt2recnByn2NjY3xoaGhvHjh3j hYeHv0xMTNzp6+ubAwaDZQEAAEpLSy95eHis1tTUkJOTk98wGIxwkUik09vbizU0NITU19d/wOPx an+dkXYikWhq9+7d75lMZvLPnz9HS0tLR/bv32+lo3QVjtgAACAASURBVKMDSEtL7xgaGvqBRCLl tbW11Wg02nxPT8+4m5sb9cGDBwY6OjrIxcXF4QMHDuwrKCgo8PX1tVlaWmoODg72MTEx4cvKyi5y OBxURkaGlrm5OQmLxdpPT09Xqaur2xCJxJGVlZXdAAAAmZmZAY6OjtpwONze398fJy8vPzoyMuIp EolAQqFw6H//+x/V09NzPCoqKo/JZJ40NTXVzsnJ6czPz+e/f/8eEh8fb3Hnzh17GRmZFQAA5K9f v/6TzWZL2dnZwWAw2A8jIyMmHA633Nra2nzy5EkPg8GAxcfHGz5//hyxsbGB+fLli/DOnTuM9fV1 sYyMzLaOjo6QSqVKaWlpHeLz+Yt5eXl5DQ0Nsv/9959sUlIS/dKlS0b+/v67KBRKtaKiYsry8nIz CAR6paioeE9HR+fihw8fNFpbW7/duHHD2tDQkFlTU9MAAECsWCwO+7/r9OjRo5dLS0sv5eXlpSsr K8vh8fiX9vb2/83Pz3esr6/DioqKBo4fP65dUFAwmZOTE6arq3uayWQOfPv27cDi4iKSzWaPnj9/ nhASEuJqZWX1W01NTc3T0zPz/8RA7u7u1/fs2UPv7e2lRkZG7rK1tRX9+PFDSCAQkElJSQx7e/sJ Foslv3PnTlh6enpveXm5Ph6PBzgcjjwYDAaIRKIhn8+fAoFACmw2ewUMBkNGRkY2hELhlqSkpERF RQXr7t27FyYnJ0sKCgp4nz9/pufn52/o6+trHDp0aM7BwWEiLi5OHwAAM0VFRT82m/3j06dP78Bk MnkuLi7u9+nTp1nGxsYWLi4ufmQy+cqVK1esEAhEhZSU1GpHR4e8SCRa6OrqujU1NVV4//79p0gk ErW0tMSBQCB4GxsbXGho6Nzw8LBPUlJSlZSUFOLChQubz549m29sbNRaX1/Hf/36lTQ5Oal77949 YxqN9qSysvLD7Ozsp8TExGtKSkr+YDAYAwAABgQCAe7u7qSZmZm6r1+/Uh48eID29/cf//Lly28n Jyd2aGjoNggEoqenp3eSyWTtnJwc5X/++WcmLS3N/e+7kjw+Pv4+JSXFRVdXl1lbW7uho6NzBAQC yYyOjgb09/c3CQQCMBgMHofD4cS/RpJlRUXFTSQSierq6up+8eKFSFZWVvbJkyclU1NTBRgMxh2P x8N6e3tVZWRkxPfv3//2+PHj8ZaWlpGEhATOkydPWsFgsHh8fFz11atXqJSUlOqLFy+eW15ePu/i 4qKioaFRzGaz8RQKpaC3t9dmYmJi0tPTM+HRo0cLFhYWSjgcTlJNTU0PDAZT/fz8mgoLC3cgkcjP cnJyRKFQCC4tLVUAAACYmpqqMjQ0tNDW1lY7d+5c7fr6+hQCgZB49uwZ3tfXl+3t7e2Vk5MjXVZW 9uL06dOJMzMzG0lJSXswGIzW58+fneLj49nV1dXG0tLS7MHBwcmGhoa7SkpK8GPHjl1aWloyrK6u PmRtbf0MBALtcHR0dKbT6S29vb3b09PTSltbWwM8Hu8XCARC7N27tzsyMvLi3y76W5mZmcUxMTF+ SkpK9p2dnS6VlZUGCwsLj7q6uprpdLowOzub1NjYiLCxseE6Ozv7dHd3865fv76IRqMt9+zZ4/nn zx8CBALBolCoJTc3tyVbW9vhqakpyc3NTcDU1HQvGo1W1tLS8gKDweitra3fZ8+eTX3+/LkpFAqd 7u/vTwoMDIyCQCAqioqKJ/X19dOVlJTcLSwsXLKzsy/p6upqnz17dtPT09NleHj4YEZGhioAACYA ALz8K3EH/s6NaUNDw93Tp09ndnd3b1Op1JCtra3f6urqdhUVFTwLCwsFY2Njv5KSkn1IJHKWxWKl 9vf3X6RSqdIikQhpYGCgx2Qyo2JjY+mFhYWYxsZG8Pfv32NHR0dTVldXC83MzMR6enqdIyMj+r29 vc8ZDAY3KyurJSEhYUVFRWU6Li7u29WrV2XHxsbGQkJCUCwWi7u9vb3R0dHR29PT0yESiQAYDCZ/ 4MCBZ7KysqZYLNZjx44dfgYGBgpPnz5dSklJUR4bG3vKZDKl8vPznX19fRk6Ojqyra2tvTExMauj o6OuCgoKBxQVFe0oFIo3FAotCwgICAO1tbXdx+Px/TU1NeDExETEmzdvYAsLC9JUKrUbBAJZa2ho 0GNiYhLBYDAgFovhp06dunv9+nW/f//9t83Y2Bh66NChSUlJSaGUlJS7SCTCbm1tUSQlJXU/fPhQ k5mZKVRVVV0ikUgGdXV1ig4ODuuNjY3qVCp1287OTuTl5VWblJSUyOfzQZGRkV+fPHniPDw8/MXa 2jrr/v37aWfPntVeX1/fVV1dXWJkZCRRV1fX4+TkpBYeHu5CoVC0+vr6vgAAAGhqatJFIpHr2NjY KpFI5JaWls4ODw/zUSgU2dHR0aK+vh55//79qeHh4VmRSGShr6+/WVZWJkulUu9SqVQDOBxOevDg wfHt7e1vv379oqmpqek2NDR0Tk9PS58+fdoGAAAAiUTKGxkZtaNQKOGBAwf6zpw5U3b+/PlsCAQi TkxM3Lazsxv8+fPnDiMjoyEDAwMXf39/PgwG+7Vz504NZWVlVGFhYbO0tDRfQ0NDLS0tTfPatWvy XV1dk4mJiR5SUlLCP3/+9GpqanooKCgcXV1dLRkdHa149+7djIKCgmddXd2vZ8+eSYtEIsOoqKiO ly9f/hsVFVV86dKlDaFQuK2hoZFx48aNLhAIBIZCoT9wONzW6dOnY93c3J5ZW1svPXjwQBsKhQIa Ghp/GhsbX9XU1FSFhISEAQCwyuVyGxkMBnRubo4jKSkJuX//Pk9DQ4NaUFBA7O7uhuNwOEsOh9ML BoMJAwMD39BoNHJycrK7rKzM6sOHD6fevn37wNbWVtbQ0LCZRCLZvXnz5p2vr29gZ2en5vLychUA ACA/Pz+L1tZWuIKCwhEKhVJ6586d37GxsXYsFgsiEonmxWIxRlVVdbq5uRng8XiQO3fu0K9evarC ZrOXHzx4oGltbT2fnJx8mUqlfvT29n64b98+bHBwsJubm9vKjh07eoKDg21KSkrmuFwuoaioSNXO zs6kvLy8R19fXyY7O5tcVFSEfvXq1UR0dPQNAAAAEAi0DwAAAQAA6+bm5lF9fX17wWAwTCgUjkxP T9exWCxoVVUVOTs7+ygYDNb8y3F8npiY+MJkMmWam5uViEQiJDw8XEYkEgEbGxsUJpMpHh4elhII BH1KSkrahoaGyydPnhSYmJgsIxAI8L59+/ynp6cXRCLRa21t7RBDQ0NMU1MTHAKBACUlJZP37t1T 5XA4EAMDg9/JycnUgwcPBk9OTrYqKiraw2AwOAgEWnv9+nXP4cOH9zOZTIakpCS2urr6z/79++3o dPqv9vb2l0pKSr4gEGjr4sWLn3t6eg4YGRmthoeHf6ZSqTLnz5+PAwBAks/nMwQCAUgkEqXPzMyE QPLy8pwJBEKgk5PTkadPn46QyeRuXV1dtYiICBU5OTm8trY2fmVlZdHU1PSnq6vrpIWFBQYEAi1H Rkb67Ny50x6LxQbDYDD46urqq1+/fv0qKSnheXh4uH/48KH59+/ftLS0NHB0dHRmVVXVdyUlJTGV Sl3Nz88XXrlyxczCwsLp7NmztxITE5UrKyvFJiYms7du3cooLi5OiYmJuUoikWr19PQso6Oj50+e PGnn7Ozsjsfjrdva2n5MT09rSEtLM9XV1amqqqrRcDgcjUKh2M3NzV3BwcE6Bw8edAWBQD0DAwNr WVlZE3g8/vjg4CBFTU1tGI/H72lra1u3sbFx/fz583MzMzMPZWXlV8ePH0eMjY2RFxcXmXFxcacB APikpKSkfffu3TZHR0e9hIQERGho6KiEhIQqHA5v6u7uBt+/f/+XkpKSLJVKRVtYWMgfPHjQdnt7 e/vp06cYKysrvJ2dHQ6NRjvKyMjg9PX1EdPT0yqZmZmyL1++nEpISHCNiIj4oq+v34bBYGRlZWW1 jh8/DqmtrW2pq6tTmJ6epsPhcJC/v/8PAoHgk5+f3weFQhcaGhraCgoKTnV3d686OTmVPn369Nnt 27elHj16JCkvL88yMTExdnNzGzh16pRPf3//zw8fPvjY2dl9iIiIMPz69WtFWlqaRUxMzFZCQkLL 3r17o5ubm98ZGBgoE4lEGT8/P097e3ubhIQEJhgMlgSBQNIwGIwYGRl5R0tLC8FgMHh37tzRzMrK gnV1dd1SV1dnWFtbG169epWxY8cOakpKirOHh0f7nz9/5FtbW+FSUlK879+/Q7q6ukbRaHRPVVXV ZkJCgvfU1NTa+Pg4BQaDMVVUVAzq6uombGxs0CYmJsufP3+mx8fHe3R1dUGysrIOp6Wl5cJgsB+G hoYazs7ONt7e3gGysrLKTU1Nz3/8+GFVV1cnGxYWhreyspLIyclZnZqaCjczM+ucn59votFoJocP HyYikUgRDodTFQqFz8PDw3/u3LnTXlJSEr+2tianpaU1LS0t3VtRUZHKYDCgzc3NeiAQaM7a2loV gUCobm1tjQMAID07OzvMZrNRAQEBEiAQiINCoZbX19exUlJSdBkZGezr168FioqKEjQajfv792+1 2NhY0fr6+q+hoSFSbGwshkAgDJw8efJIUlISDwQCFS4sLFCjoqJ2ZmRkcNhsNkJWVhZAoVBfPTw8 zKWlpQloNHotNja29ebNm6rOzs4SpqamKBQKpSgQCFAIBAL758+fpZcvX76ztrYWvHjxYmhkZETK 09PTYG1tbSs9Pb0vKiqKRSAQdGEw2CQKhULLyMg4cbnczzAYTGFyclIbj8dLQf/8+fOHy+X+am5u dvr333+pmpqaz8BgMCY0NNQyLy/vMAgEgrFYLDSJRBLhcDj03zhrm4aGhsdtbW1qGRkZU0Kh0K2q qkpMJBIxeXl5CZmZme8vXLiQ6uXlVWloaHjs+/fvjzMyMqirq6uskZERs8bGxkU9Pb1nNTU1876+ vr75+fmGc3NzLfv27fv95s2b8mPHjl0bGho6+ubNG/j09HQAj8dTa2lpEYWEhAinpqakTUxMxlRV VXGnTp0aw2AwCWw2ewIMBnMlJSX1lpaW6u7evUtOTU01ffz4sVJaWhqipqaGa29v3/Lr169VMpms k5ub+zY3NzcIAoFsw+Hw+KSkJD1XV9eZwMDAhn/++ec2CASSAAAAqK6uhs/OzjacOnUq8M+fPxU0 Gm0iOztb49OnT1t8Pv8yk8ksqK+vlyOTyZyKigr82toauLOz83teXp7fyZMnZwsLC9Hh4eFCBoPR gMfjgfz8fCkWi7XV19c3dPny5UMCgWCjvLzc4+XLl8X29vYSMBhsuKenh/znzx9FSUnJ7WfPniVy uVzwxMSE4YMHD76fPXt2565du6xLSkq+oVAo5aCgoOsAAAD6+voMMpkMxePxzOvXr9NcXFxIV69e 3U5LS+t7/PgxUiwWZ9XX1z8ZHh4uHB4e/jchIcGLxWK9z8rKUqXT6Zc3NjaUIBCIglAoXMLj8f84 Ojrura6u1u7p6anH4XCakZGRvCtXrrg+evSIm5KSIm1ubr5KoVAYKysrenQ6XUij0ayfPHnSub6+ zhSJRKs9PT1bZDJZcOPGjWUnJ6cjHR0dqKmpqXE0Gi3U0dGBAQDwc3l5eUJaWtpgbGyMZmtrS3zw 4MFqYGAg/datW3rV1dX7eTze0P79+9X+4nN9OBxuffTo0cWPHz8Kvn37xpSVleVfuXLFZmJiQmho aMgUiUTz5ubmhQQCIdXe3j6+vr7euLGx0UNBQaEYAoFUycrKUq9fv56dnp4eu7CwsNbb20sQCASc S5culRIIhDAKhSKmUqnxpqams3g8/rOjo+NJCoVCw2KxYDgcrsfj8Wbu3LkzbWBg4LGysvL78ePH iIKCApCRkZH33NzcRxAIJJKXl19lMBgS6+vrZFVVVWFVVVWHra0tNikpCeTl5TVWXV29UyAQiEEg kMypU6dyQCAQUFpa2qOmpqYFAABw/PjxyuLi4vPR0dE5HA4He/v27aX09HTFJ0+etKekpFidOXMG ymAwej5//rwBgUBA7u7u2OXl5e9ycnIPjh8/3ozD4XQBABB4enoy0tPTdYqKijQmJiZav337ppye no7o6+sbQ6FQkjo6Ot8+ffqk9uDBg+/gtbU1JBKJhFlbW6/SaDRdRUXFPGdnZ7fh4WEtZWXliM3N Tdnw8PD1zMxMxNLSEmNycvKnSCQCNDU1OVpaWmlwODw7Ly/vYUlJiSIEAoGfOXPmOZPJZG5sbDzs 7+8f8vf3P7S9vc198eLF5srKCtnJyelLWFiY9ubmJvfkyZOJdnZ2UAKBsIrFYqVv3rx5ytLScubR o0cpZDKZVl5evrOhoUFjaWnJ7tChQ1t9fX1ydXV1jTExMSEZGRlSLS0tSAAAAC6Xu721tcW8du3a LXl5ebSlpaU6jUbrfvnypbetrW1GYmLicRwOV5+YmPiPt7c32c7OTu7379+daDQaaWNjs1NaWpqT kZEho6KiogmBQBTm5+ejsrOzD62trX3fs2ePDZvNft7Q0KBFJBKNjhw5gpybm3MLCgq6c/36devN zU0uGo2W6+/vB96+fbtSUVEBffXq1VpLS4uEgoLCFo/H66uqquJJSkoSi4uLTTY3N2WLiopsc3Nz W62srGbk5eV14+Libg0NDVGmp6c3bWxsbJydnbF/o8nuMpnMAWNjY62goCDNpaWlJU1NzdaJiQnZ Q4cOVXp4eCQTCIQAPT294L+utaWWlhZmSkoKu7Gx0c7Kysq6p6fnkIaGhlFSUlLX+/fvkYuLi9Ss rKzI/fv3N1RUVAy+fv26X0ZGpjEgIGBiYmICqaOjo1dSUiJmMBjjCAQCtr6+Dnn69Klke3v7YHFx Ma65ubndwcFhiU6nM8LCwizl5OTQQUFB5QwGQ1RXV+fy6tUrob29vVgkEgGzs7P6YDBY7OPj8xqP x7dnZmaSGxsbG2RkZOTn5uasAAAA9uzZY4DD4Wamp6f3NTU1Oc/MzMiKxWKAw+GAnzx58rS4uPh/ Z86cwbi7uyuFhYWhOjo6NgkEghQej9+pra09WFNTw5iZmdnQ0dHZu729/SU4ODgbCoXqxcTE8I8d Oybl5+fnNzs7+2RgYOBjcnLyKUlJyQECgXCew+H0zs/Py3Z0dJjq6urioVAo4uDBgwpZWVkKysrK qhAIxFFRUdE9Pj4+GovF5rJYrL6RkRGDM2fOIOfm5vR6e3vrl5eXOfHx8dVlZWWrFRUV1KGhoQkP D491fX19SXt7ew6JRLIyNzf30tDQMPv+/bsjgUD4ND8/L7G5ubkOh8NlxGKxxL17977h8fhtBAIh qq2tTQAAALhy5YrsoUOHyhEIhMTVq1fJOTk5TXFxceuWlpZKRkZG7idOnHBnsViinJycJi8vryMA AEjKyclFgEAgcV1dHTkwMPBXbGws8u3bt51wOFyYlpbG7ejoaIdCoaTZ2dmHz549Ey8vL0+EhobO gQ8fPqyQmZmp2tLSMt/W1iYcGBgAvX792sXIyGgKAAC0QCBYuXbtGpjL5YKzsrLWOzs7Zd68eZMh Ly8P//Dhg+HHjx9zDx06pKOrqyuenZ2lZWRk6KampkJRKJQSgUBQu3Dhgt3Vq1fhcnJy1OXlZfTl y5dvwmCwxdraWsSxY8faZWRk/n316tWUs7OzICEhoauvr2/27t275tbW1rG/fv2q/PTp021jY2Nw eXm5REREBMfOzs5YTk5OgMFgYPfu3ZMUCATj3d3d/SwWC3nhwoWbBgYGuLNnzzLT09PbJCQk9AEA EPD5/CV7e/s4T0/P5rm5uR+XLl3a8vDwUJaQkNBFIpEifX39xZaWluwdO3ZkicXi5bS0NIvo6Gjf kydPBnt7ezetr69DUlNTBXFxcei3b9+C8Hi8qqysLOv48eMtO3fuTGSxWL8VFRWXpaWlERUVFbsE AoG4qanJ0c7Obqiqqoqzf/9+rKWlJQiPx9Ps7e0/l5eXrxgYGIgKCgq4AAAAY2Nj5YcOHUpsbW39 oa6urh0dHf29qqpqAoPBOEpLSwsCAwN7DQ0NkwwNDZOsrKwIjx8//j42Ntaur6+PamhosBQIBCMI BGK8vr5epaam5s7jx49lIBDIzs3NzXYMBjP38uVLjJmZ2R85OTlTJBIJP3DggOXz58+9jh49ahgW Fnba19c3wdra+rednd3o8PCw/7dv37p//Pix0dPTI5SRkeFDIBDe169fzRcXFzkHDhwwJ5FISkpK SqK/3Ijw5s2bi2/evJHW09Mbra+vV0pISLAvLy9fT05OHiKTydWNjY2BcDhc+9q1a/QdO3bYIhCI AwEBAYsPHz5sgsFgIllZ2dH5+fndZmZmzMOHD3dlZ2en/tU5kIeHh1W5XC6Yz+c/ePny5R93d/ep ioqKpr/JQoVEIpG9e/fuwIaGhq80Gg3MZrOb6+rqzPv7+7FeXl7LBAKBp6amtqO5uRmfkJBwDwAA 4MCBA/kMBoPU399PdHV1NS8qKvqkrq6+6/Llyz+Dg4N5XC53vbGx8SgAAEBxcfFVPp/vp6OjoyIU CkHz8/NbFhYWWwMDA0k8Hg9z4MCBkY2NDZS/v//WjRs3vLKzs8dTU1OF79+/Z+3atUuVTqdr5ufn 13p4eDT+JRuLwWCwFofDoSkrK898//49mEAg0JeWlhgKCgr0lJSUQVlZ2X0tLS0RPT09yFu3bjn1 9/d7lZeXM3Jzc0uYTCZDLBbLIhAIcHl5+SlFRUUgMTHxBofDgXV1dY3s37//yIsXL3adPn16wtLS slpXV1eVyWSqa2hoqB05cuRZU1PTPwoKCjp0Ol0iJSWFBLawsJCtqqrSJBKJGwYGBowLFy6o1dfX 9z569ChyYWHhCRwOFxUXF38sKyujKSkpbSUnJ68MDg6Snjx5ohYbG+tlaWk5rKSkpBAdHb26uroq v7KyMp2XlzfR3Nzch8Fg+MrKyigAAIDIyMg9Fy9ePOjm5hYbGxs7IxaLB1NSUnhPnjzJtbKyQnh7 e7czGAwQDofzE4vFABKJhB46dGinWCwGPnz4YPHp06fJmJiYqRcvXsgYGRnR+/v7K319fSlQKNQI i8VisFisfFBQ0GVJSUmlBw8eIE+dOuVLo9GaRCIRCwqFEi0tLevOnz//hUQiGZHJ5Cgul+uFwWBu KCsr37G2thbCYLBsEAgEAAAAnDlzxm1zc5OHw+H45ubmU+/evQMwGAwahUJ9DAsLA4NAIPmSkpL9 9+/fdxIKhY1cLtfMwMAg0tPTkxgREfHZ1tYWy2AwPmlray/u3bvXJSIi4g0AAICGhkbP9PS0+seP H9kXL14UJCUl8UQiETA+Pr4aFBRUERgYuIRCoRqnpqayp6ensxcXF1eXl5dX//33XzQAAEBbW9td BwcHnqura1B4eLi0tra24rt371ScnJwkNzY2Sv+P0e7t7X179erVFCUlpViBQBCVkZFB3LNnj+Gl S5f49+/fp+BwOM2VlZW17e1tkFAoBKBQqEVXVxfj5cuXzVNTUzw3N7cTv379ItPpdGJdXZ0oNTUV W11drayhoWGRnp6+CACAbHl5uYWzs/PUzp07/WdmZkx7enp8VVVV9Z49e/bl06dPM8+fP5cNCAgA c7lcLW9v786tra0NgUAAam1tnWSxWINkMlmnoaEheXJyEh8YGIgAAACwt7eXoVAoVl+/fjXNy8ur WlxcVHNxcZlYW1szMzIyCu3s7FQaGxszh8PhQgkJCbnS0tJbRkZGOCgUah8YGOgLh8OREAhkc2xs 7Lm5uTnj5s2bP9+/f9/k4+Oz3N7ebv7ff//tGhwcxDs5OcmGh4dPDQwMkFtaWnhPnz4dp9Pp/VZW Vqvu7u7c3t5ecFNT00pISEjBhQsXmoeGhv5sbGw4ycnJUSwsLB6TSCRJJpMJ3b17978rKyvz09PT DF1dXQ0mk7m2trYmrK6uVj9y5IgmjUaDRkZGzhUWFnptbW2JDxw4QPTw8NAxNDSEGxgYrBw9elTA 4XAAFxcXWlZWFllfX/+XsrJy+/DwcH98fLyssrLyr0+fPnXs2LHj6uXLlxX7+/sNzczMplNTU5/H xcX9U1NT8/TmzZvjd+/ePSMnJ/fP9+/fCaqqqk7a2tqyk5OT/pmZmQZnz57tJBAI0ydOnNh2c3P7 4+3tTQ4ODq7++fPnpL6+vgQ4Pj6eHBERMXbq1KkbHh4egWfOnBnw9PT0WV1dRQAAwHnz5s2EUCgE EhIS5qKjo5k8Ho9aUlLCi4qK0m5oaGBQqVQJFArlqamp6bpv377RR48ejbu5uQlKS0ulIBAIZHp6 +m1cXBwDCoVuS0lJGfX19Vn/73//2xoZGXHc2trCmJqa0p2dnSmdnZ39X79+bUlNTW0JDQ1ta2tr +1VXV/dEIBDc2N7e3i4oKEj18/MT7t69e2V8fFzd3t7+7tzcnPTw8PBHY2PjzYyMjLPFxcWWAoFg DY1GAyAQiFtcXDwAAIAIAoHgFxcXVfbu3dvJYDAglZWVja9fvz567969GQAARE1NTdDY2FheVVVV Fp/Pp8DhcPrY2NiatLQ0/N69e/daW1u1X7582Umj0UK8vLwywGAwlk6nd2xsbMyiUKiI/fv3nyST yUsYDIZfVVVFmpycvINCoUBPnz51QCAQimVlZdG5ubl/4HC41tDQEPHw4cPbpqamwgsXLsDPnj1b IRaL5V+8eKFNIpH++fr1KxQCgWi8e/fulpaWFgcMBotsbGzwMzMzjS0tLZTFxUWjffv2wbhcLkZD QwOVmJj4o6CgYBAGg8W4u7vPAQCw0dPTQ2hubjZ6/vz5XlNT05zExEQslUpFHTlyZOjixYtOKSkp devr6zwsFqsFAoGmAABY6+3tzfP392+BQqHisbGxr35+frqpqamwP3/+tFZXV3tgsVghDAYTKyoq qru4uBDPnDmzlJ+fv4ZAIDBOTk4KlpaWw0gkpvTnMwAAIABJREFUsuPZs2cely5dMsjJydGSkpLi vH79+ldWVhb7woULXyYmJtDHjx+/GBQUVBISEiIFgUDYBw8e7Lt8+TIpNzf3OIfDUf748SMjNzdX Lj4+fkdTUxOJRCK5Li0tcXfu3PnGz88PzGKxIEeOHHFdW1urO3bs2AETExOkUCjsAABg+/79+y0U CuUtkUjUn56edlxdXUVevHjxX2tra0pSUtIfeXl5c2VlZdPw8HBDNze3IxcuXODFxMQok8nkfyUl JRVHRkZQAoFAbXR0FHf8+HE9fX39DRcXl6Xy8vJ8CoWSnp2drbG0tBQsEAi4ysrK0Onp6XFzc/N/ 2Gy25IkTJ5ZRKJQwICBgC4VCvQMAANja2uLyeLy1goICDRsbGzl7e3u8jo4O1t/fP7e3t3c9Ly9v rLm5eWhlZWU9JCREcufOnVP+/v56cnJyHdra2vunpqaQTCZTs7q6OktHRwcpEAggQ0NDetnZ2fuh UChQXV2tHhERIQkGg7WGh4evhYeHT/f391uBweAJKpXaYGZmZrC0tKSIQqFKtLS0ZD98+KCtqqoa 2NXVlRYdHe1w4cIFddDw8HCVvr6+PYvFevfx40fM7t27JcFgMMDj8VoFAoEZCASiodFo1c3Nzcmc nJwVKysryrFjx8yIRCLVwcEBEIlE4PPnz+uKxWKIra3t4sjICFpBQWFhfHxcLyYmRlRSUgLW0NCo 2rNnj0Vtba1XZWVl09GjR6/GxcWVV1RUGHR0dNQZGRkd1dPTKzQzM+Og0WiempoaJjQ0VPvKlSsj J06cwFpbW5//24F2QUFBIRgKheo+f/78QnBwsF9LS8uClJTUgoqKCo/NZiuzWKwJQ0NDr5GREaau rq4mAoFQAgAA4PP5Y9vb2/iVlZUZEAg0unv3bnlpael6CwsLRG1tLXt+ft4XDofbcLlc1qtXrx6E h4dfW19fn2pubn5w9epVryNHjnx8+PBhcGRk5Ofw8HBjPB5/nEajPZ+ampq1srI6/zd08Q2NRpvE 4/HbaDT6+N9m4ImVlZVZKSkpemho6HBISAjm8uXLSmpqauMXLlzAQiCQTX19fbUHDx4s7dmzZ2R0 dBTh4uKyBYVC90VERBTcu3fPOTMzUzUqKmq4oqLCqqCgQPvDhw+NPj4+XrOzsz+2t7eRUVFRqLGx sVZHR0dVLS2tzTt37pj9+fMHOT4+vmJhYQHV0NDYu7m5+UBaWvpkb2/vDQ6H8+XLly+EoaEhu337 9kmFhYUdmpycvMZkMqFYLJavqal57q+JqsTT01PKw8Nj1d7eftrAwMB6aGiIGh4ebsTn80E4HI5w 69at7F27drFKS0ud1dXVx/Pz8x1Onz5NXVhYGHJzc1MUiUQAm81el5KS+hkSEtKbm5tb6uXltZma mipdUVGh3tDQcO7o0aM3W1paqM7OzsS7d+8WmJqaOo+Pjy9ZW1vjMRgMYXt7G4LD4bYpFApkfn6+ TygUgl69eqWYnJysKycnJ6yrq5vw8vISQiCQ/pGRETiFQpF0dnaG5eXl6WdmZi4DAMAEAKB9bm4u zdnZmfnz50/V7u7uThqNBiOTyXdjY2MfWFtbt8HhcI3W1lYLLpdLl5GRseVyuV1fv35tLi0tpe7Y sYMFhUJBUVFRuzgcjlAgEIjV1NR4AACwAQBo//Hjhx4Oh7N7/fr1/Z6eHvW4uLiq0dHRYwcPHnQU CAQACoVSF4vFjKmpqWahUEgzMDC4kpubm04kEpHr6+tVbW1thmg02mllZWXh3bt3Or9//64yNjZ+ 39LSclJCQgJka2v7z+TkZKe6urrT6OjogrGxMQIMBqvY29sfra2tPVxaWvrY29vbxMrK6hAEAuEt LS0VFRYW4q9du3a7rKwsJTo6+hqFQvnvxo0bE319fVrPnj3TXl9flwB9+fLlBIlE0h0cHJwoKSlR v3HjxoikpKTazZs3W3ft2qVVXl6+ER0d7VxSUjJ+//59yeXlZbiWlpZVUVFRW3x8vAMaje5rbW1V F4lEv7BY7KK+vr4Mn8+fWV9fD8Tj8SZ9fX1P1dXV3QwMDLCjo6MMKpX6saWlhRQZGemEQqFE1tbW ZbOzswcnJyd//yXo6FFRUerd3d18Pz8/fRkZGQGPx0Oy2eyxc+fOIcvLy2G9vb1zAAAAurq6tklJ SRXJyckua2trSwQCYVJFRSX406dPTVQqdSs0NHQPGo1WXl5eJquoqBgCADAyOzsrdnFxafzx44cu kUh8SafT96alpTVTqVRvEonUA4PBZM6cOeO7srLSq6qqmh4UFPTo8OHDsP3796tXVVW99vPzyz1+ /HhyXFwcGovFasjLy1ssLS09c3JyAjgcDoFEIjXfvXtXAAaDPd+9e7fg4+NjpaioOPv79++pjo4O /Pnz52OOHDnyuaCgQLGtra1/ZmaGQyKRUCYmJuTW1lY5Eom0qaen51lSUlIeGhoqaG9vd/D19dWS lJQM2N7efru4uPhJU1PzSn9//1M4HC6i0WhgAwMDZSwWa1xTU3Pbz8/PZ319vVtWVlZTQUFBgcvl WjU1Nb3YtWvXLjAYrFddXX0nIyODPjQ05AeFQi3YbPbQ9PT0iL6+vhWdTq968+aNUENDg+bu7p4/ NjZWzuVyt7y8vKRnZ2dXEhISZg0NDU3i4uKUwWAwWkJCAjYwMPCitLQUf+TIkWUwGAwgkciV2tpa BxaLJZaTkxtjsVgwaWlp1cDAwB5FRcXoGzduzP/7779fp6endzg6OjpDIBBtAAAALS2tW76+vlAT ExOkmpoa6/HjxyNNTU0mk5OTjn/xvkNvb288k8lEGxsbew4ODo7u3LnThsfj0ZeWlqYBAABYLFZu QEBA0vDw8FRISAjp3bt341JSUu4VFRWjgYGBQikpKTuxWKzl4uJS0dDQ4I5CoYQikUgaAABEYWFh Tlxc3OkXL158srKyUhgaGlq0s7NTzMjIGIqIiMDu3btX/uLFiwMeHh6zjY2N+hMTExIlJSUGf1HX /3p7ezPk5eUtg4KCOH19fTvS09Pvczgc1vHjx10xGAymra2tc3h4mBsSEjKPwWDskEikaHh4ePHX r18CKysrgoeHhxWDwdj518XYKSUlJVRXV5/o6uoCtre3KZubm3AcDscXi8Via2tricXFRY+LFy9W Z2VlZa6vrxfp6OigxWIxaGFhQUckEr1tb29XKCoqAp08eVKIx+NHAAAQc7lcH2dn55mpqSlCa2vr 8I4dO+wg9+/f/6+rq0soKyvbd+DAAS0mkzn/8+dP4cLCwvr79+/NAwICZBQVFb81NTWhYmJi8mZm Zii+vr4r/v7+GF1dXayFhcXWxsaGcHp6WuLJkydqPj4+0tevX4fp6+ujNjY2WpOTk6lXrlyxAYFA Hebm5lATExP7+/fvV9ra2pqnpKTMuLq6MmNjY7sxGIyLjY0N3N3dXa6oqGjd09MTnZOTQzE3N197 9OjRhpGREcLQ0HA+MjISlJ6eHlJZWUlrbm6ufvXq1f/y8/PDtbW1XQgEwj8jIyNZbW1tAi8vL4P2 9vZ6PT09+9LS0pb29vYfQqGQDADAUlpamn1paemPiooK56amJtD8/LwCEoncGhoaIt27d29fQUFB qkgkMk1JSRmNi4sb1NbWlg4ICMhmMBhjDQ0NY0ZGRjiBQAD68OEDwtbWFpOamsotKSkxys3NNY2O jq4IDQ19fvr06Zrbt2/fUlJSMsFgMI4yMjJLP3/+bKuvrydHRUXJhIaGziYnJ5srKyvLaWpqyqio qHidP38eAQAAyM3Nbbm+vp5EIBA6cDicqKGhgdfZ2dlCJpM5JiYmnkKhsEZNTS26ubm5Ew6HgzEY zNqvX796TE1N7WEw2JacnJyTg4NDjby8PK6oqKiyqqpKNykpSbGlpeXu0tISzMfHB1VTUzNrbGws vHv37kMejzdvampqLykpGUShUG5FREQo0un0Z7W1tbIPHz6EOjg4DAUHB8vIyckhFhcX0dLS0nMq KirhXV1dqe3t7ZMhISFIdXV1HYFAwHv8+LFtX1/fq0ePHhXBYLCy2tpafT8/P7qpqambr6/vvXPn zoGxWKwkj8ejKykpha6srLzY2toa3rNnDx0Gg63icDiGj49PloGBQd3Dhw/lXVxcvi4uLiIIBAJ4 dHR0mEgkqkRGRhZ3dXX179271x4Gg0HhcDg2ICBgW05OTre9vV0CjUbPmZiYKPX398s3NTUNAwDA x+FwUgoKClM7d+78mJSUpL2xsbEoFosFSCRyc2NjY9bV1XWPSCQSX79+vXvHjh04Pz8/TG1t7baZ mRn/yJEjR2ZnZ998/fpVUU5Ojh0fH5+2e/ducxAI9PPvAjhHoVBU9fX1Y4yMjJ7V1dWV6+vrg799 +2bi6ura297e3sjj8Qzj4+NDOBxO/+Li4rKEhASRzWYvenp6Yi9dukSenJz84+7u3o3BYEbQaLTB 6dOnn378+PGQvb19u5KSksDQ0FDvxIkTrZ8+faK0trb+8+zZs5JTp07l/f2C9cXFxalra2v/mJmZ +bqysmIcGBioaW1tPXvp0iVeYmKioKGhAVJVVQXKy8uT1dPTc+VyuVwAADiQzMzMChKJZOzg4NBD oVCgwcHBbo8fPx7Q0tISgEAgI1tbW/ybN29GHR0dFQUCwebhw4fp1tbWEnfv3lXlcDgP/Pz8sHQ6 XWJ2dpbj7e1NWV5elrOwsBg6f/58H4/HE9y7dy//1KlTClFRUcu3bt1q3N7eZvr7++/Izc0dRCAQ ZFdXV2kqlSohEokkbWxs2FAoVK2lpWUpIiKCHRgY6DgwMMAhEokweXl5kYaGhm1lZeWKj4/PSy8v r3APDw83bW3tZ4aGhn4AAIAAAAAGBwdHh4aGOGfOnBEtLy+TDh06pOPu7r5PS0vro6ysrKpIJJJ8 9OgR5+LFixlkMrn3+PHjv/v7+12ampo8mpub63fv3m1Lp9PBNBpNwtzcHNnT09O6c+dObX19/RwI BII8c+bMDyqVunDu3LliR0dHSygUqrpr1y7U5uYmWUFB4bhYLIY4OjqGT09PzxkYGAiSk5MbORzO q+3tbVRTU5OKrKwsJzc3lx0ZGTl25swZeQQCwUMgEMvNzc3r29vb5K6urgV7e/uh06dPy3t7ewek pKQIIyIiGFgsVmljY2O8oKCgvbCwUPJ///ufs7GxsZtQKPw+Pz8Pc3BwOITBYIg/fvy4SSQSnd++ fSuhqKjIefPmjToWi72hq6tLOH369KebN2/eNTQ0tH3w4EF9Q0PDpLa2tsG+ffv4S0tLNcXFxV1Y LBbM5/P7t7e3Nebm5uQlJCTE0dHRLywtLZNu3bqFdnZ29iYQCJYgEIg3Ojr6yczMDIdEIndwuVwE DofDamlpMXx9fT0kJSW5eDxePywsbAeBQFCm0WhceXn5ZSgUil5YWJDasWPHhenp6f8EAoGITCbT y8rKFrFY7G8LCwsJsVgM/ffff5c9PT2HIyMjfScmJr7Jyclhb9++jXJ0dBQmJSUdunz5skBGRqYC AoFQhoeHu8bGxtC1tbW6DAbDsKGhgejj48NUU1ND0mg0aT8/PxEWix2JiIhYYDKZqKmpqZHdu3db lJWVPXBwcLATi8VbGAzGDQCAteLi4mU2m80Ri8UYDQ2NKTMzM6itra2FWCweuXr1akR7e3tLc3Nz PRqNxuXm5gpsbW2hUCjUTkJCQhKBQEgBAPBmbm5OsqGhwfTZs2c2ExMTZEdHxygqlUqdm5trunTp 0nJ8fLwXmUxGmpqa4iAQiD2FQuHRaDRxXV2dgpOT09ahQ4fe8Pl8pePHjy8IBAJebGws9cqVK49T U1MjAwICtPh8/pSDg0PKkSNHbnh4eGwNDg7SVFVVtVRVVVtlZWVhOTk5DD6fv3bgwIGFly9fXvnx 48fQ0NCQalFR0Qk0Gj1mYWExKxQK1w0NDcWgxMTE89euXXMBAEBUWlpaTaFQJL29vRdVVVWVFxYW SBYWFnrb29tkoVCImZycHFFVVTV+9+7dSy0tLYy0tLRAIBAI6+rqLFxcXDrV1NR8QCCQeHZ2dgiH wxF1dXWV0tLSmLdv3w58//59raGhIW1lZWUZiUTqGBsbewMAAHR0dNSYmZnhpaSkIoRC4RQEAtG6 efPmUR0dHSNXV1dTCoXS9/bt214ymazc0NCgxOfziZGRkUNnz55NmZ2d/Tg0NDQUEBDw/xNzEhIS jsTHx9vp6+uHvnr1KjE4OLjI0tLydX9/fxiPx5sAgUCzIBBIXUZG5mp7ezuut7cXHB0dfQoMBuP/ Sj7/IBAI3adPn97lcrkQFAq1raSkxDxz5swiHA53np6e7hoYGDBXUlKKBAAADAAA8ObNmytEInHY 2tr6xd8TrjU/P39ULBav2trasqhUqqq1tbWKo6OjyMTEpBOHw1HGx8dJg4ODF6hUapulpeUEm82G hIWFzYHB4BUikTiioqKiWVxcvDMoKKh3e3tb28XFhdzV1SXV1NQkg0AgeNbW1pyDBw9uysrKGq6s rCy0tLSs7d271wYMBksMDQ3Rr1+/vvbu3bv0np4eHykpKbOZmZmZ7e3tzbS0NGJ/f/9kdHS0/61b t5pv3ryJsre3d7h9+zZTLBb//PLly6vh4eFCBoMBSk1NFUOh0CoHBwd9DAbzKTIy0m59fd2Fx+Ph AAAATExMDHt7e29ZWVkdnZ2dHQEAADh//nw1GAwGodFop3v37gU4OTl9ysnJEeLx+C0dHR3vhYWF W/Ly8rubm5sH3N3dLc6ePbseGho6oaOjY9TT09NtYGDAx2KxMmw2e2NpaQluaWm548ePH3BDQ0M2 CoUy+fbt21V1dXX30tLSOjKZ7F1fX69NIBBo+fn5zFOnTrF7enrc0Gj0N2Vl5VUOh6Px8OHDzYcP H6KXlpaa//nnH2koFMoLDAz0mJmZWYXD4eWfPn1CXbx4sePjx49n0tPT5zo6OgIPHjz4u7S01F9a WtqRTqe3Hz169O3m5ibA5/PRL1++VN3c3IR2d3dva2pqonk8Xg+Xy6Xi8fh1Q0PDKwKBYHF0dLTe yMjoQGNjY5OxsbE6kUi0DgwMPL6wsIAeHx8/dffu3QUMBsMPDAx0olKpC3A4XGRiYlI+Ozubb2pq WoLBYOb8/PxgX758Afbt2yc1MzOjfPjwYXUSibQrKirqYUZGhsz29jbLx8eHbWJiwq+trT3758+f U9LS0lgCgZA+OTmZrKGhcQoEAgEPHz585Ofnp04gEMIMDAzSCgsL9Y8ePSp2c3Mbl5SU5EM+fvy4 7+fPn3lGRkaM4eHhgLm5OeXQ0FAsiUTyMTY2lj537px4bGxsoLGxcXFgYIA9NzdHEQqF2JGREYml pSXJtrY2ZTc3N6yXl1fsz58/JwUCwZaMjIysWCyek5OTU15bW2tXUlJi6OrqblVWVm5oaGgw9u3b J1NQUPD9+fPnr69cuZLHZrO/0en0HhgMJrO1tbXs4ODgoaGhIREfH9/v7e1tNDAwQOZyudtBQUET kZGRhiQSSaG+vr63pqaG5efnJ2hubh40MjKyFQgEC319fR93796tAYFAjHR1dc17enpK/vvvvwQA AIB37949v3Hjxgc3Nze5b9++Sbu5ua3q6emp8vn8nywWa6u3t/cjiUTyaW1tvV9VVbXZ19eHNTc3 by0rK7M8dOgQamxsbOD06dMYS0tLMwkJCa3/Wzq3bt0adnJyMpaXlzdZX1+/KRaL5aqrq39mZ2fv olKpm729vZRr167N8fl8eRUVlZ9VVVXxQUFBG3A4nDM/P/+7qamJsrW1xYPD4ZJPnjz5b2trqz4l JcVCTU2N6ePjM0Ymk3UdHR1Zm5ubUlZWVkMHDhww4/P5M/Ly8uZUKnXMz89vIy0tTRcEAnEwGIzs 6urqxMzMjIqmpmZ3dHS0gkgkGoiOjn4aERHBnp2dNayvrydevXp1BAwGK4vFYoDNZv/68eOHioGB wUBRUdFsV1cX5/379+jy8nIFBAJBFAgEGyKRSHt1dZWmra29IisrqykhIfFHSkrKSigUzl66dOlX WFjYnrKysq8kEmmAzWYj8/PzA2AwGLGysvLXzZs3iXV1dYOJiYnOSUlJtMXFxe87duzwnJqaKgSB QGsIBEI2NzcXdeLECeuampoXTk5O58LCwtjOzs76LBYLJC0tza+tre1aW1vbrK2tRd67d4/233// 2VVWVoq9vb2fycrKKpqYmEDs7e1HOjs7qS0tLepBQUG1qamp6tbW1oC5uTlDV1eXbGJiIuvq6mpJ IBD+Nzc314HFYncTCARhR0dHq4eHBy4iIkIJgUDoQyAQIQwGmz1z5kwDhUJZkJGR2aipqdn95csX CQkJCSAhIaHjn3/+waytrS2ZmZlh8vPzcf7+/v5QKBTBZDJfnjhxotfDw8MyJCQESaVSn3h7e/tQ qdTWysrKvLKysnv+/v6aaDSap6Cg4M3hcOa+ffvWV1xcfA4CgeAjIyMlgoODBXv37nVaW1tTu3// vlZJSYlw165dm9PT09XXrl3rc3d3V1BSUqJPTk7C4XA4PyAggCQWi3u3traoV65cme3u7hZ1dnYu 9fT0/IyNjd29tra2JBaLfyUnJx8/derUQ319feHAwIDUw4cPHSDZ2dkPFhYWnqWmpv7LYrEqBgYG bDIzM8EwGGx3bW3t68TEREsEAjF49uxZg6KiIiiHwxGmpKTs8fHx2bu5udkXFBS0ICsry758+fIj CAQiubS0tPHo0aMfHz9+5DU1NQnS0tI0KysrfykqKi53dHRw1tfXN+7cuYMyNDREv3v3Drxv3z4m j8f7TqPRVDY2Nsjfv3+nS0hILGKxWE0nJycUn88HmZiYkHA4HEdFRcWovb19rqOjA3b48GHR6upq 19mzZ+3v3bsXBgAAn06n1xEIBEM0Gi2EwWBbIBBIikajDZ4/f/6LpqZmj5WV1Zazs3Ognp6exMzM jMG5c+dwNTU1bCsrq61Hjx49Dg4ODhAIBCMAAHTg8XhSd3c3f2ZmZmNsbEzH0tJy4tatW9ZdXV0D d+/eHff19V1//vx5v66u7vvl5WVmVlbWVG5u7q+4uDhsYmLi0+vXr0eEhobOslisIRUVFfG9e/f+ NzQ09CgvL8+Zy+WurqysQMLCwro7OjqYSkpKC1euXFHQ0tKSsLS07FdSUuJVV1f/Y2JismZra5tM JBLrmpqaEPb29gt79+4lZWVlxXd2dg5++fJl3cbGhufg4ICdmpoinjt37vv+/fv1X758uZaenm4u ISGhsLGx8UpGRsYNBALNR0REtEOhUFBMTAyLz+drKSsrrz9+/BgNhULBbW1ti1FRUdATJ060CgSC LWlpaW5CQgLC3t4eJCUlJRMUFKTc0tLC9vb2TmhpablvaWl5mE6nt42NjQGKiorSOjo60kwm88fy 8rKxpKQkZHNzc+zTp0+jYWFhqPT0dExcXJxOX1/f/bi4uBgnJyf/R48eTSkoKKxTqVRoXFxcwfj4 +Ls7d+58PXz4sNPExMS4j48PLikpaXvfvn0Sly9fpoBAIBAcDl9mMpkYHA4nNzo6+vHLly82enp6 ivr6+mWVlZU7/f39maGhobZSUlKTT58+VVpYWKAODg6CZ2ZmwAcOHDi7vr7eJSUlJU2hUObFYrGc qampGZfLXc7MzJzX09NTV1NTUygrK9v8+vVrt66uLiM0NNTt2LFj/J8/f6p6enp+9PT0VIdCoSxv b2+NwcHBOTweD4uJiVHEYDBrfD6fjUQin8zMzNgFBwcHSUlJIVxdXW+GhISYwuFwQk5OzvzDhw9X CgsLx62trbWYTCazubm5pLS0dL6rq0s8MDDw1svLa4+JicmdL1++CBgMBheNRtNiY2M1rayshjQ0 NEiFhYXgvr4+1ufPnzsPHjyoqKqqOorD4Wjfv3//npmZuVZeXr5SUlISZGxsPLS4uIjOzMzUf/jw 4Rc9Pb0NCwsLt+bm5ke+vr4wCwsLmZSUFMP//T+mzvqv6e/9/88lLBhjDDZidHeHNAhYSCmipKiA AQag2BhYKIqK+lIRUMBAVEAUBJQuJaRrwGDURoyNbay/P3x9326fv+D8cs51O+c6j+t+j4n5DoHD 4Yb19fWwr1+/9mzfvt2QxWINODg4rPX397d8+PCBmJeX96Orq2u+p6enKzExUdrBwcESg8HInThx ogWLxdJzcnLW9uzZoxcRERE8Ojo6IhaLwcPDw6yoqCid7u5uuKysbGVvb68dAAAkRUVFIolE6t23 b5/X169fp0ZGRo74+fmVzs3NQQMCAtzPnj07ZWJiIm1nZ6ciEom4z54960lNTV0LDQ0dqa2tXfL0 9FTn8XhTVlZWbAQCoXrr1i3M79+/tf/8+fNJIpG85nK5K8XFxa1KSkp0BQUFXZFItLJjx45SLy8v NSkpKZympqZFZ2fnwq5du9gFBQXEY8eOrSUlJdH6+voQdDp9rbOzswKNRgtIJJJabm7u63379s1+ +fLFLi0tjS4UCtlra2vrKBQKkpyc7EulUpvd3Nz8q6ur6WFhYacPHDiwNT4+Hjs5OTnr6upqCgaD NxwcHKRnZmaGCASCuZmZmUtAQIAxCoWCQ6FQNhaLVY6Li7N+9uxZf3p6usrCwgLZ3Nwcnpub2+Pr 67vJ3t5e6f79+xUeHh5m4+PjM+rq6uy9e/eutrW1mYLB4F8WFhZycDh8+OPHjybT09OTr1+/7rSy skIDALBw8+ZNxSNHjiiNj4+XtrS0kAICAvACgaDnwYMH0qWlpcaBgYHLLBZLPiMjo8PW1lbr79+/ LZWVlfkHDhyoVVdX96HRaIuurq5ex48fJz9+/Bipq6uLpNPp/LCwMLmFhYV1LBa7gsfjPffu3fsT hUJhk5OT8ZmZmZ8mJibaYTDYZF5envv09LTSrl27Zh49eiRLo9GmKysr+xMTE71zc3NrU1JSOtTV 1fl37tw5XlNTU0OhUKqUlZX5Ojo68FP7bjK4AAAgAElEQVSnTlkKhcKhhw8fikUi0frZs2cP1tXV NQiFQuHfv3/VXF1d0Ww2m62vr899+PDhMBgMZguFQgsvLy9uY2Mj3svLa2VwcJAuFosVYmNjLywv L/9hMpmC3t7eYg6Hw7Gysjo6OjpaaGFh4ScSiYSRkZEtX79+dYVCocy7d++O79+/X53FYk0SCAQQ mUyeu3Dhgoy/v/+sjIyMqrm5Ob6/v39RWVlZW0dHR3///v3PwWBwp7GxsXxiYmKgoaHhxt27dyUE AkGVQqHME4lETxaLhT579uxAbm5uBBwOp2/fvl1dS0trc3V19WJISIh9UFCQBoPBEAoEAom9vT3y 5MmTIYWFhenq6upmJSUly3A4XBuHw62BwWAFGxsb9tGjR/W2bdsGOnfuXBcIBFLV0dHRX1hYWDI0 NATzeDxWenp6n5eXFyIkJCTp+PHjqwkJCcYxMTELISEhuOHh4RkWiyVlaGjY1NfXtxQfH78FEhQU FDAzMyPl5+dnTKfTKRwOh+vo6Khvbm6eDAKB2n7//o1JSkpiYDAYdmlpqcnw8PDI1NQUBQQCTf5z 57XX19ePEInEaVVVVY5IJIKKRCKGt7e3R0REBMrCwmK3trY2SFlZGe3i4uKuqanppqqq+ikrKys0 LCys5PXr15jq6urulpaWRXd3d5SUlBSLx+Ox+Hw+YG1tPXfq1Kk1KBTqefjwYdrw8HBHc3OzjKys rOzExMTakSNHBBQKZenZs2fMnp4e2UuXLsncuHEDCwKBas3Nzf36+/sHnz9/7jU6OkrDYrFtg4OD y+Hh4bbNzc1cBoMhPz4+fqm+vt579+7dERQKpdbPz8/M0NDQMjU1dcbU1BSUn5+P8/T0XGCxWIJD hw45EYlE0crKiohEIin39/fP02g0hpubmxsIBFIUCAQDMBjM+OXLl/VoNHpSU1OT8Pz58762tjZJ RkZGsrOz842DBw+GrqysjGIwGIvR0dG3WVlZrZGRkYY8Hk8Ki8Uu0mg0zuzsrOL58+eVoVAowd3d 3QAAACiDwSjR0tJSE4lE7aurq9qGhoboN2/e/FhdXUXT6XSympraypMnT25duHBhODMz83R8fDz8 69evJa2trQqbN2/WUFZWlktJSekwMDAgzM7OTohEIrW+vr4fnz9/Prpr167J8+fPvy4rK3t0586d 8+rq6mlWVlaXU1JSCg4cOBB24sQJXlZWFgWFQslwuVzwyZMn+0kkkoKBgYE5FAodPnv2rEJOTs4s AoGArK2tmZFIJJvq6upNRUVFBfX19crnz5/XaWpqEqJQKIyvry9tY2NDaGdnpzA7OyvZvn27iYeH h+3jx49nxsbGhtPS0go+fvzYaGBgoPLgwQOUra3toqqqqh6Px/uuoqKiqKKiMoPH45XNzc0x7u7u 8kVFRSAikSivrq4+rqWlBQ8JCTE6ePAg5datW5jBwcE1eXn5znfv3s12d3cTrl+/7jczM8MdHBzs bmlpkaXT6R1mZmZ79u3bpwmBQGCHDh36e/v2bTyVSoUqKyubq6mp9crIyMiur68j0Gj0uouLyyU+ nw+YmJhscDicVQwGM9De3u6JQCCszczMWL29vX0kEgm+efNml8HBwUEikahYXV39NC8vD3j+/Pkh GAymzWQyK7u6upQkEgnT19c3AgwGcy9dutS9b98+yqVLlxQfP37cTSAQcoODg/GfPn0igkCg2WfP nv1nYmJi2NXV9bW9vV2dy+W29vT0LGhpaa2bmZnBz58/Dw0NDSUZGhpira2ty/38/Gza29tXN23a tL2tra2Mz+dXk0gkVT09PcXy8vIBPB4vOn78OGZ9fV3Fw8ODALGwsDDw9/fX8/PzMxUKhaUnT56M io2N7YfBYGuLi4u8kydPbllZWenr7e3lhoWFucjKynZ8+fJFcevWrQg2mz0VGRnpOD4+jrp//z78 xo0b57q6uj6cOnUqeWNjY7mmpoZhbGyskpyc3KypqSn49OnTsImJiZyFhUUoAABze/bs8YfD4Sga jfY3ISHhABKJ5NjY2BgikUgBAACjxcXFzNraWrCjoyP60KFDcg4ODgb5+fnLs7OzwysrK+QTJ05o UqlUbmdnJ4xGo7Grqqq2o9HogczMTIMLFy5M7tq1y+TJkyddurq6G1paWpDLly9jrl27Nn/v3j2h s7PzZSMjoxAYDEa9efPm9x07dmzKy8vjgcHg/oSEhKXCwkL1hw8fmm7ZssVTVVWVXFhYuH7nzp2P vr6+SBKJlMLj8SgkEknS19c3tXXr1qMrKyvSV65c+XPz5k0pY2PjaKFQCB8aGurS1tYexuFwkqSk pC3r6+tl0tLSCv/9998vJSUlsxcvXiD7+/s5KSkpSh8/fuRoa2uzQkNDZclksoy6ujq6v7//zIsX L6RfvHhB2rt3ryAyMjLg6dOnzjo6OrX19fUrTU1N7NLS0lO2trYnvb29n7S2tl6jUCjNAwMDZfn5 +XwfH5+O0NBQ9/z8fGRUVJRgampK3d/ff2llZaVrcHBQtby8HDk9PS3l5eU1eOnSJRk+nz8uIyOT CIfD0aGhoYekpaX7AABotbW1VVJUVITp6uq64nA4YP/+/VPr6+urCARC6Obm1nr16lUEkUiUb2lp MamqqvKrrq72OXPmjEZgYCAKh8Op7Nq1K66np+ePUChcNzAwABsbG4tzc3PJ7969m4+OjrbB4/Fl x48fz52bm8vH4XAN8fHx/gMDA2/V1dWNZWVltxkaGnrp6emp2drahuFwuFEpKSlET09Pi5ycHNfS 0lKdTCaL09LSank8npmLi0tJbm6upo2Njayuri4eDofTFhcXqS4uLhQOhyNhsVjQuLi4k1QqtWpj Y6OdSqWOlJeXF9y6detgRkZGZWJioguJRBp59OiRYnR0NKazsxNJpVKXOzo6ahEIhACJRA7fvn3b FwQCPdLX11fS19dfefLkyRqJRBqPioqyX19fX8nLy4M8evRI2NPTY3b69Onfi4uLK2g0micWi9Wt ra23MpnMGRQKNX/jxo0sV1dXyerqakVzc7PWlStXGnR1dSMuX76sUlJSAg8NDe1VVFRci4mJcdLT 0zPR09ObePz4sTQMBpMKCgryb2trq6PT6bbh4eHI0tLSucDAwMClpSUOHo/HKSoqNigpKXF+/vyJ NTIyKi0qKuKpqakxyWQyOCsry+Pp06fDwcHBqqA/f/5k0el06tOnT403bdrUn5KSkiwSiZY2NjZ6 USiUg7+/f761tTUFiUTK2dra0goKCkzOnj0729vbywwKCronEAgag4ODK758+XLjn70X3tLScio/ P995x44dHH19/Q8kEsnl8ePHY3w+fyMyMtISh8N5Q6FQ2ODgYB0AACA9PT1XFArlsLi4mA0Gg41C QkJKAADQHh0dRfv7+w/fvHnT9MmTJ33m5uZSxsbGBAAAAC8vL5knT560fP36VcPMzEzO09NToKWl daK8vDzH3d1d6siRI5SoqCihq6urk4qKSjGdTn8kIyNzsrOzc5OOjo7z8vLy2O3btzt0dXXlo6Oj LVtbW8MCAwPTnz592p+Xlzf+8OFDMovFOgmFQpm3b9+mEIlE8PPnz/WkpaWp+vr6DKFQCHn48KFq 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 zPbt2/coKyvbnzlz5ktISIgsISFhs4KCwlRSUlL5wMDAptraWp0rV644oNHoeXl5eY2VlZXvpqam 1hwOZ2X79u1kNBpNSEhIaLOysurG4XAkExOT1cjISERWVha9pqbGKzAwULBlyxZFKyurPVAodFlF RUXf1NRUa3l5Wezk5HRxamqqpKioaN7KysocjUZbtLa2vjY3N7/w48eP3k+fPoFAIFCvj4+PdH5+ HlNXVzfT3d2N9fT01Dx//vy++fl5dRcXF/D27dtnORzOZ3V1devu7u74uro6vJeXF/7ChQsBPB6P amlpaYpGo8V4PJ7t5eX1T25u7qy7uzteIpHMcjgc2tzcnCA8PNwhMzOzcWFhYT02NlaByWR+ZbFY S0+ePLH18vKiWFlZKXZ1dbX5+Pis2NvbK66vr8NaWlpQPT09QqlUipicnOTPzMwgIRCInK6ubiuY QCBQXF1dUXfv3u0eHR2V3bhxA3Bxcem8f//+y5s3b3Z4eHi4JCQkBDGZzOKIiIjm+Pj44bCwsBqR SARqa2t7CgAAoKqqKpTJZPMEAkGgoKAwHxsbm7K2tpZHoVAEN27cUFtZWcnKzMx0q6mpMY2Jifl7 69atLaqqqjsfPXq08f37934ulztuY2NT293dbbq4uPi7tbU1hEAgQOPi4qxhMJiZsbGx/cOHDw0M DAwEf/780QaDwTIymWybl5e318HBgT4+Pv7X1NQ078mTJz/Onz9P+/nz55ynpyd7enrazNnZmd/c 3IyYnp5GAwAAXLt2jRgcHDx84cKFsdbW1oMkEkmIRqPlnZ2dlbS0tGhKSkrEqqqqGldXVxUOhwML DAw0+/Lli2FaWtqsUChkv337lsnj8Y4NDw9XJyUliYlEIjU7O1tOTU3NkEQi6VpZWZHy8/MbyWSy bHZ2VhIbG4ujUCgmampqZjQaDXfw4EEHHo/XraysfAmHw2Xo6OhUCgSCMDKZPHXhwoW26OhoTSUl JVJ6ejqMwWC0CYXCjzo6OnVsNnvh4MGDp+vq6r6AwWCguLj4OZVKvW1lZfWPQCDgfv36Vchms+Gx sbFaPB6PQSKRlmUyGainp0dPJpNxNjY2QMrKyiHW1tamXV1drtPT0/Xl5eWdNBqt1dvb+/bNmzdn v337hnZxcUHW1NTU6+npzQEAANjb23/q6uqKKioqypubm9OIjY01SU5OLvr58+fCmTNngvLy8oZR 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 " - height="256" - width="256" - y="0" - x="0" /> - </pattern> - <filter - id="filter4375-19" - height="1.7122" - width="1.0248" - color-interpolation-filters="sRGB" - y="-.35609" - x="-.012418"> - <feGaussianBlur - id="feGaussianBlur4377-5" - stdDeviation="1.0664062" /> - </filter> - <filter - id="filter4379-0" - color-interpolation-filters="sRGB"> - <feGaussianBlur - id="feGaussianBlur4381-6" - stdDeviation="0.90031864" /> - </filter> - <clipPath - id="clipPath10943" - clipPathUnits="userSpaceOnUse"> - <path - id="path10945" - style="enable-background:new" - d="m122.25 334.01h128.41c3.1968 0 5.3404 2.0241 5.3438 5.0625l0.125 121.72c0 16.5-3.6622 25.219-10.469 25.219h-197.25c-6.6058 0.59601-7.3649-12.59-7.5-27.219l-0.90625-99.469c-0.01871-2.0256 2.1157-5.0625 5.3125-5.0625l52.281-0.0313c4.1684-0.002 7.5572-1.9403 9.4688-4.7812l7.6562-11.344c1.6157-2.4013 4.3332-4.0938 7.5312-4.0938v0.00005z" - fill="#808080" /> - </clipPath> - <filter - id="filter11355" - color-interpolation-filters="sRGB"> - <feGaussianBlur - id="feGaussianBlur11357" - stdDeviation="0.93036145" /> - </filter> - <linearGradient - id="linearGradient10672" - y2="15.929" - xlink:href="#linearGradient4908" - gradientUnits="userSpaceOnUse" - y1="31.315" - gradientTransform="matrix(.30890 0 0 .27375 302.94 177.48)" - x2="24.866" - x1="24.866" /> - <linearGradient - id="linearGradient10674" - y2="181.8" - xlink:href="#linearGradient11481" - gradientUnits="userSpaceOnUse" - y1="193.61" - x2="314.99" - x1="311.83" /> - <radialGradient - id="radialGradient10676" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient3423" - cx="306.1" - cy="179.01" - r="8.6094" - gradientTransform="matrix(2.5489 0 0 .51730 -475.41 88.05)" /> - <linearGradient - id="linearGradient10678" - y2="3.2953" - xlink:href="#linearGradient4989" - gradientUnits="userSpaceOnUse" - y1="71.491" - gradientTransform="matrix(.28968 0 0 .17690 302.87 183.04)" - x2="25.054" - x1="25.054" /> - <linearGradient - id="linearGradient10680" - y2="185.05" - xlink:href="#linearGradient11481" - gradientUnits="userSpaceOnUse" - y1="195" - x2="306.41" - x1="306.25" /> - <radialGradient - id="radialGradient10682" - gradientUnits="userSpaceOnUse" - cx="147.02" - cy="525.86" - r="103.05" - gradientTransform="matrix(.95029 .0060304 -.094604 .28670 57.057 330.17)"> - <stop - id="stop4349-3" - stop-color="#fff" - offset="0" /> - <stop - id="stop16444" - stop-color="#fff" - stop-opacity=".49804" - offset=".5" /> - <stop - id="stop4351-6" - stop-color="#fff" - stop-opacity="0" - offset="1" /> - </radialGradient> - <linearGradient - id="linearGradient10684" - y2="202.06" - gradientUnits="userSpaceOnUse" - y1="184.76" - x2="315.7" - x1="311.83"> - <stop - id="stop4777" - stop-color="#fff" - offset="0" /> - <stop - id="stop4779" - stop-color="#fff" - stop-opacity="0" - offset="1" /> - </linearGradient> - <linearGradient - id="linearGradient10740" - y2="9.8486" - xlink:href="#linearGradient4908" - gradientUnits="userSpaceOnUse" - y1="24.754" - gradientTransform="matrix(5.3662 0 0 5.0874 24.876 281.35)" - x2="14.956" - x1="14.956" /> - <radialGradient - id="radialGradient10742" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient4156" - cx="70.156" - cy="220.5" - r="100" - gradientTransform="matrix(1.9941 0 0 .72285 -59.399 163.61)" /> - <linearGradient - id="linearGradient10744" - y2="253.57" - gradientUnits="userSpaceOnUse" - y1="357" - x2="107.5" - x1="107.5"> - <stop - id="stop4174" - offset="0" /> - <stop - id="stop4176" - stop-color="#90937c" - offset="1" /> - </linearGradient> - <radialGradient - id="radialGradient10746" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient3423" - cx="50.125" - cy="82.962" - r=".875" - gradientTransform="matrix(16.008 0 .000034745 43.857 -752.27 -3567.8)" /> - <linearGradient - id="linearGradient10748" - y2="-145.75" - xlink:href="#linearGradient4989" - gradientUnits="userSpaceOnUse" - y1="25.019" - gradientTransform="translate(0,210)" - x2="-132" - x1="-132" /> - <radialGradient - id="radialGradient10750" - gradientUnits="userSpaceOnUse" - cx="101.7" - cy="315.19" - r="108" - gradientTransform="matrix(1.4307 0 0 .42130 -49.751 212.95)"> - <stop - id="stop4103-5" - stop-color="#fff" - offset="0" /> - <stop - id="stop4109-6" - stop-color="#fff" - stop-opacity=".80588" - offset="0.6" /> - <stop - id="stop4105-2" - stop-color="#fff" - stop-opacity="0" - offset="1" /> - </radialGradient> - <radialGradient - id="radialGradient10752" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient3423" - cx="147.02" - cy="525.86" - r="103.05" - gradientTransform="matrix(1.5869 1.2599e-7 -5.9773e-8 .75290 -86.287 85.9)" /> - <radialGradient - id="radialGradient10754" - gradientUnits="userSpaceOnUse" - cx="44.937" - cy="410.12" - r="3.4688" - gradientTransform="matrix(39.807 0 0 18.279 -1744.9 -7086.7)"> - <stop - id="stop4326-9" - stop-color="#fff" - offset="0" /> - <stop - id="stop4328-6" - stop-color="#fff" - stop-opacity=".65294" - offset=".71110" /> - <stop - id="stop4330-3" - stop-color="#fff" - stop-opacity="0" - offset="1" /> - </radialGradient> - <radialGradient - id="radialGradient10756" - gradientUnits="userSpaceOnUse" - cx="250.09" - cy="400" - r="4.4387" - gradientTransform="matrix(19.019 -.38976 .33942 16.562 -4640.3 -6129.5)"> - <stop - id="stop4316-3" - stop-color="#fff" - offset="0" /> - <stop - id="stop4318-1" - stop-color="#fff" - stop-opacity=".44706" - offset=".59645" /> - <stop - id="stop4320-4" - stop-color="#fff" - stop-opacity="0" - offset="1" /> - </radialGradient> - <linearGradient - id="linearGradient10758" - y2="262.26" - gradientUnits="userSpaceOnUse" - y1="-46.176" - x2="-103.86" - x1="-103.86"> - <stop - id="stop11581" - stop-color="#a1a184" - offset="0" /> - <stop - id="stop11583" - stop-color="#4a4a3e" - offset=".85274" /> - <stop - id="stop11585" - offset="1" /> - </linearGradient> - <linearGradient - id="linearGradient11558" - y2="68.858" - xlink:href="#linearGradient4989" - gradientUnits="userSpaceOnUse" - y1="236" - gradientTransform="translate(3.3065e-8 250)" - x2="174" - x1="174" /> - <radialGradient - id="radialGradient11560" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient4101" - cx="101.7" - cy="315.19" - r="108" - gradientTransform="matrix(1.4307 0 0 .42130 -49.751 212.95)" /> - <radialGradient - id="radialGradient11564" - gradientUnits="userSpaceOnUse" - cx="319.98" - cy="76" - r="21.978" - gradientTransform="matrix(3.4068 -.031444 .0078362 .82648 -770.72 23.249)"> - <stop - id="stop5402" - stop-color="#fff" - offset="0" /> - <stop - id="stop4610" - stop-color="#fff" - stop-opacity=".49804" - offset=".5" /> - <stop - id="stop5404" - stop-color="#fff" - stop-opacity="0" - offset="1" /> - </radialGradient> - <linearGradient - id="linearGradient11566" - y2="58.425" - xlink:href="#linearGradient11481" - gradientUnits="userSpaceOnUse" - y1="88.129" - x2="322.32" - x1="322.32" /> - <linearGradient - id="linearGradient11604" - y2="52.626" - xlink:href="#linearGradient11481" - gradientUnits="userSpaceOnUse" - y1="69.892" - x2="318" - x1="318" /> - <linearGradient - id="linearGradient11665" - y2="131.51" - xlink:href="#linearGradient11481" - gradientUnits="userSpaceOnUse" - y1="146.76" - x2="320.88" - x1="320.88" /> - <linearGradient - id="linearGradient11667" - y2="68.858" - xlink:href="#linearGradient4989" - gradientUnits="userSpaceOnUse" - y1="232.98" - gradientTransform="translate(3.308e-8 250)" - x2="174" - x1="174" /> - <radialGradient - id="radialGradient11673" - gradientUnits="userSpaceOnUse" - cx="44.937" - cy="410.12" - r="3.4688" - gradientTransform="matrix(39.807 0 0 18.279 -1743.9 -7086.7)"> - <stop - id="stop4326" - stop-color="#fff" - offset="0" /> - <stop - id="stop4328" - stop-color="#fff" - stop-opacity=".65294" - offset=".71110" /> - <stop - id="stop4330" - stop-color="#fff" - stop-opacity="0" - offset="1" /> - </radialGradient> - <radialGradient - id="radialGradient11675" - gradientUnits="userSpaceOnUse" - cx="250.09" - cy="400" - r="4.4387" - gradientTransform="matrix(19.023 0 0 16.566 -4507.5 -6226.3)"> - <stop - id="stop4316" - stop-color="#fff" - offset="0" /> - <stop - id="stop4318" - stop-color="#fff" - stop-opacity=".44706" - offset=".59645" /> - <stop - id="stop4320" - stop-color="#fff" - stop-opacity="0" - offset="1" /> - </radialGradient> - <linearGradient - id="linearGradient11677" - y2="135.5" - xlink:href="#linearGradient11481" - gradientUnits="userSpaceOnUse" - y1="154.3" - x2="319" - x1="319" /> - <linearGradient - id="linearGradient11679" - y2="155.22" - gradientUnits="userSpaceOnUse" - y1="149.19" - x2="305.5" - x1="305.5"> - <stop - id="stop4735" - stop-color="#fff" - offset="0" /> - <stop - id="stop4737" - stop-color="#fff" - stop-opacity="0" - offset="1" /> - </linearGradient> - <linearGradient - id="linearGradient11723" - y2="18.848" - xlink:href="#linearGradient4908" - gradientUnits="userSpaceOnUse" - y1="30.385" - gradientTransform="matrix(.30890 0 0 .27375 301.94 218.48)" - x2="24.866" - x1="24.866" /> - <linearGradient - id="linearGradient11725" - y2="221.38" - xlink:href="#linearGradient11481" - gradientUnits="userSpaceOnUse" - y1="232.34" - gradientTransform="translate(0,1)" - x2="315.29" - x1="315.05" /> - <radialGradient - id="radialGradient11727" - gradientUnits="userSpaceOnUse" - xlink:href="#linearGradient3423" - cx="306.1" - cy="179.01" - r="8.6094" - gradientTransform="matrix(2.5489 0 0 .51730 -476.41 129.05)" /> - <linearGradient - id="linearGradient11729" - y2="-9.4962" - xlink:href="#linearGradient4989" - gradientUnits="userSpaceOnUse" - y1="50.897" - gradientTransform="matrix(.28968 0 0 .17690 301.87 224.04)" - x2="25.188" - x1="25.188" /> - <linearGradient - id="linearGradient11731" - y2="223.68" - xlink:href="#linearGradient11481" - gradientUnits="userSpaceOnUse" - y1="233.24" - x2="314.47" - x1="314.49" /> - <linearGradient - id="linearGradient11733" - y2="208.75" - gradientUnits="userSpaceOnUse" - y1="184.62" - x2="320.56" - 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="radialGradient11735" - gradientUnits="userSpaceOnUse" - cx="147.02" - cy="525.86" - r="103.05" - gradientTransform="matrix(1.5869 1.2599e-7 -5.9773e-8 .75290 -86.287 85.9)"> - <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> - <radialGradient - id="radialGradient7892-7" - cx="239" - xlink:href="#linearGradient3423" - gradientUnits="userSpaceOnUse" - cy="51" - r="5" /> - <radialGradient - id="radialGradient7894-2" - gradientUnits="userSpaceOnUse" - cx="179.52" - cy="178.16" - r="68.868" - gradientTransform="matrix(1.3088 .77845 -.34302 .57647 -3.4812 -69.984)"> - <stop - id="stop15764-4" - stop-color="#fff" - offset="0" /> - <stop - id="stop15766-7" - stop-color="#fff" - stop-opacity="0" - offset="1" /> - </radialGradient> - <filter - id="filter15758-4" - height="1.2122" - width="1.2028" - color-interpolation-filters="sRGB" - y="-.10611" - x="-.10140"> - <feGaussianBlur - id="feGaussianBlur15760-4" - stdDeviation="4.6353635" /> - </filter> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4908" - id="linearGradient7681" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(5.3662,0,0,5.0874,24.876,281.35)" - x1="14.956" - y1="24.754" - x2="14.956" - y2="9.8486" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient4156" - id="radialGradient7683" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.9941,0,0,0.72285,-59.399,163.61)" - cx="70.156" - cy="220.5" - r="100" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3423" - id="radialGradient7685" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(16.008,0,3.4745e-5,43.857,-752.27,-3567.8)" - cx="50.125" - cy="82.962" - r=".875" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient11481" - id="linearGradient7687" - gradientUnits="userSpaceOnUse" - x1="318" - y1="69.892" - x2="318" - y2="52.626" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4989" - id="linearGradient7689" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(3.3065e-8,250)" - x1="174" - y1="236" - x2="174" - y2="68.858" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient4101" - id="radialGradient7691" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.4307,0,0,0.4213,-49.751,212.95)" - cx="101.7" - cy="315.19" - r="108" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3423" - id="radialGradient7693" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.5869,1.2599e-7,-5.9773e-8,0.7529,-86.287,85.9)" - cx="147.02" - cy="525.86" - r="103.05" /> - <radialGradient - inkscape:collect="always" - xlink:href="#radialGradient11564" - id="radialGradient7695" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(3.4068,-0.031444,0.0078362,0.82648,-770.72,23.249)" - cx="319.98" - cy="76" - r="21.978" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient11481" - id="linearGradient7697" - gradientUnits="userSpaceOnUse" - x1="322.32" - y1="88.129" - x2="322.32" - y2="58.425" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4908" - id="linearGradient7745" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(5.3662,0,0,5.0874,24.876,281.35)" - x1="14.956" - y1="24.754" - x2="14.956" - y2="9.8486" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient4156" - id="radialGradient7747" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.9941,0,0,0.72285,-59.399,163.61)" - cx="70.156" - cy="220.5" - r="100" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3423" - id="radialGradient7749" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(16.008,0,3.4745e-5,43.857,-752.27,-3567.8)" - cx="50.125" - cy="82.962" - r=".875" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient11481" - id="linearGradient7751" - gradientUnits="userSpaceOnUse" - x1="318" - y1="69.892" - x2="318" - y2="52.626" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4989" - id="linearGradient7753" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(3.3065e-8,250)" - x1="174" - y1="236" - x2="174" - y2="68.858" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient4101" - id="radialGradient7755" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.4307,0,0,0.4213,-49.751,212.95)" - cx="101.7" - cy="315.19" - r="108" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3423" - id="radialGradient7757" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.5869,1.2599e-7,-5.9773e-8,0.7529,-86.287,85.9)" - cx="147.02" - cy="525.86" - r="103.05" /> - <radialGradient - inkscape:collect="always" - xlink:href="#radialGradient11564" - id="radialGradient7759" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(3.4068,-0.031444,0.0078362,0.82648,-770.72,23.249)" - cx="319.98" - cy="76" - r="21.978" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient11481" - id="linearGradient7761" - gradientUnits="userSpaceOnUse" - x1="322.32" - y1="88.129" - x2="322.32" - y2="58.425" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4908" - id="linearGradient7809" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(5.3662,0,0,5.0874,24.876,281.35)" - x1="14.956" - y1="24.754" - x2="14.956" - y2="9.8486" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient4156" - id="radialGradient7811" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.9941,0,0,0.72285,-59.399,163.61)" - cx="70.156" - cy="220.5" - r="100" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3423" - id="radialGradient7813" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(16.008,0,3.4745e-5,43.857,-752.27,-3567.8)" - cx="50.125" - cy="82.962" - r=".875" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient11481" - id="linearGradient7815" - gradientUnits="userSpaceOnUse" - x1="318" - y1="69.892" - x2="318" - y2="52.626" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4989" - id="linearGradient7817" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(3.3065e-8,250)" - x1="174" - y1="236" - x2="174" - y2="68.858" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient4101" - id="radialGradient7819" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.4307,0,0,0.4213,-49.751,212.95)" - cx="101.7" - cy="315.19" - r="108" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3423" - id="radialGradient7821" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.5869,1.2599e-7,-5.9773e-8,0.7529,-86.287,85.9)" - cx="147.02" - cy="525.86" - r="103.05" /> - <radialGradient - inkscape:collect="always" - xlink:href="#radialGradient11564" - id="radialGradient7823" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(3.4068,-0.031444,0.0078362,0.82648,-770.72,23.249)" - cx="319.98" - cy="76" - r="21.978" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient11481" - id="linearGradient7825" - gradientUnits="userSpaceOnUse" - x1="322.32" - y1="88.129" - x2="322.32" - y2="58.425" /> - </defs> - <g - id="layer17" - transform="translate(0,300)"> - <g - id="layer18" - display="none"> - <rect - id="rect3589" - style="enable-background:accumulate" - height="24" - width="120" - display="inline" - y="16" - x="331" - fill="#eeeeec" /> - <rect - id="rect4698" - style="enable-background:accumulate" - height="48" - width="48" - display="inline" - y="-200" - x="321" - fill="#eeeeec" /> - <rect - id="rect4700" - style="enable-background:accumulate" - height="32" - width="32" - display="inline" - y="-124" - x="328" - fill="#eeeeec" /> - <rect - id="rect4702" - style="enable-background:accumulate" - height="22" - width="22" - display="inline" - y="-73" - x="328" - fill="#eeeeec" /> - <rect - id="rect4704" - style="enable-background:accumulate" - height="16" - width="16" - display="inline" - y="-31" - x="328" - fill="#eeeeec" /> - <rect - id="rect4706" - style="enable-background:accumulate" - height="24" - width="24" - display="inline" - y="-74" - x="327" - fill="#eeeeec" /> - <rect - id="rect4708" - style="enable-background:accumulate" - height="256" - width="256" - display="inline" - y="-222" - x="45" - fill="#eeeeec" /> - <text - id="text4710" - style="enable-background:new" - xml:space="preserve" - font-size="18.301px" - display="inline" - y="-228.48639" - x="45.970734" - font-family="Bitstream Vera Sans" - fill="#000000"><tspan - id="tspan4712" - x="45.970734" - y="-228.48639">places</tspan></text> - <text - id="text4714" - style="enable-background:new" - line-height="125%" - font-weight="bold" - xml:space="preserve" - font-size="18.301px" - y="-228.48639" - x="166.9707" - font-family="Droid Sans" - display="inline" - fill="#000000"><tspan - id="tspan4716" - x="166.9707" - y="-228.48639">sparkleshare</tspan></text> - <rect - id="rect22378" - style="enable-background:accumulate" - height="22" - width="22" - display="inline" - y="-73" - x="358" - fill="#ededed" /> - <rect - id="rect22380" - style="enable-background:accumulate" - height="24" - width="24" - display="inline" - y="-74" - x="357" - fill="#ededed" /> - </g> - <g - id="layer20"> - <g - id="g10370" - style="enable-background:new" - transform="translate(55,-250)"> - <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(#linearGradient11725)" - fill="url(#linearGradient11723)" /> - <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(#radialGradient11727)" - 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(#linearGradient11731)" - fill="url(#linearGradient11729)" /> - <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(#linearGradient11733)" - 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(#radialGradient11735)" /> - </g> - <g - id="g10383" - opacity=".7" - style="enable-background:new" - fill-rule="evenodd" - transform="matrix(1.0414 0 0 .92475 41.225 -241.97)"> - <rect - id="rect10385" - opacity=".5" - transform="matrix(.18370 0 0 .15777 296.62 56.633)" - rx="8.1534" - ry="10" - height="20" - filter="url(#filter4496)" - width="230" - y="201" - x="15" /> - <rect - id="rect10387" - opacity=".3" - style="enable-background:new" - transform="matrix(.18370 0 0 .15777 296.62 56.633)" - rx="8.1534" - ry="10" - height="20" - filter="url(#filter4508)" - width="230" - y="201" - x="15" /> - </g> - <g - id="g10389" - style="enable-background:new" - transform="translate(55,-250)"> - <g - id="g10391" - style="enable-background:new" - clip-path="url(#clipPath4061)" - transform="matrix(.20370 0 0 .20794 289.85 -11.138)"> - <path - id="path10393" - d="m52.094 312c-2.335 0-4.094 1.28-4.094 3.95v167.47c0 3.95 2.447 6.58 5.772 6.58h189.56c3.3444 0 4.673-2.4607 4.673-5.9054v-147.52c0-2.951-2.0107-4.5466-4.516-4.5466h-93.987c-1.6928 0-4.4338-0.2055-6.493-2.5614l-13.071-14.954c-1.7575-2.0107-4.2252-2.5106-6.0898-2.5106h-71.746z" - fill-rule="evenodd" - fill="url(#linearGradient10740)" /> - <path - id="path10396" - opacity=".4" - style="enable-background:new" - d="m122.25 348.81c-3.1981 0-5.9155 1.7237-7.5312 4.125l-7.6562 11.344c-1.9116 2.841-5.3003 4.7797-9.4688 4.7812h-52.25c-3.1968 0-5.3924 3.0374-5.3438 5.0625l0.40625 16.688h214.31l1.28-36.94c0.10424-3.0366-2.1469-5.0625-5.3438-5.0625h-128.41z" - fill-rule="evenodd" - filter="url(#filter4123)" /> - <path - id="path10398" - opacity=".53881" - style="enable-background:new" - d="m52.094 313c-2.336 0-4.094 1.27-4.094 3.94v2c0-2.67 1.758-3.94 4.094-3.94h70.75c1.8646 0 4.3363 0.48933 6.0938 2.5l13.07 14.97c2.0592 2.3559 4.8072 2.5625 6.5 2.5625h94.969c2.5054 0 4.5312 1.5803 4.5312 4.5312v-2c0-2.951-2.0259-4.5312-4.5312-4.5312h-94.969c-1.6928-0.00001-4.4408-0.2066-6.5-2.5625l-13.06-14.97c-1.7575-2.0107-4.2292-2.5-6.0938-2.5h-70.75z" - fill-rule="evenodd" - fill="url(#radialGradient10742)" /> - <rect - id="rect10400" - opacity=".45" - style="enable-background:new" - transform="matrix(.77346 0 0 1 10.907 260)" - rx=".875" - ry=".875" - height="52.75" - filter="url(#filter3458)" - width="1.75" - y="57" - x="49.25" - fill="url(#radialGradient10746)" /> - </g> - <path - id="path10402" - opacity=".1" - stroke-linejoin="round" - style="enable-background:new" - d="m300.53 53.531v34.844c0 0.20329 0.0697 0.28522 0.0937 0.3125s-0.002 0.03125 0.0625 0.03125h38.75c0.009-0.02998 0.0312-0.0363 0.0312-0.1875v-31.031h-19.156c-0.45375 0.000001-1.3862-0.10695-2.0938-0.875l-2.6875-2.9062c-0.16068-0.17442-0.30923-0.1875-0.46875-0.1875h-14.531z" - transform="translate(-.000017 1)" - stroke="#fff" - fill="none" /> - <path - id="path10404" - style="enable-background:new" - d="m300.34 53.5c-0.4788 0-0.83934 0.26755-0.83934 0.8266v34.048c0 0.82708 0.50158 1.3781 1.1832 1.3781h38.859c0.6856 0 0.95797-0.51499 0.95797-1.2359v-30.095c0-0.61758-0.41219-0.95153-0.92579-0.95153h-19.267c-0.34703 0-0.89129-0.05868-1.3311-0.53606l-2.6796-2.9087c-0.37533-0.40742-0.86615-0.52542-1.2484-0.52542h-14.7z" - stroke="url(#linearGradient11604)" - fill="none" /> - </g> - <g - id="g10406" - style="enable-background:new" - transform="matrix(.95581 0 0 .96875 69.14 -247.12)"> - <g - id="g10408" - fill-rule="evenodd" - style="enable-background:new" - transform="matrix(.20370 0 0 .19480 289.85 -4.0923)"> - <path - id="path10410" - d="m42.874 352.72 52.267-0.0193c4.1684-0.002 7.2209-2.2103 9.4817-4.7828l11.312-12.872c1.9108-2.1744 4.3437-4.1154 7.5418-4.1154h128.42c3.1968 0 5.3068 2.0258 5.3281 5.0642l0.95575 136.27c0.0219 3.1253-2.1672 15.872-10.687 15.872h-200.93c-3.2882 0-8.7273-8.8895-8.7346-12.015l-0.279-118.33c-0.0048-2.0257 2.1312-5.0642 5.3281-5.0642z" - fill="url(#linearGradient11558)" /> - <path - id="path10412" - style="enable-background:new" - d="m123.25 335c-3.1981 0-5.9155 1.7237-7.5312 4.125l-7.6562 11.344c-1.9116 2.841-5.3003 4.7797-9.4688 4.7812h-53.25c-3.1968 0-5.3924 2.0374-5.3438 4.0625l0.03125 1.6562c0.18147-2.0076 2.2909-3.7188 5.3125-3.7188h53.25c4.1684-0.002 7.5572-1.9403 9.4688-4.7812l7.66-11.34c1.61-2.4 4.33-4.12 7.53-4.12h127.41c2.8797 0.00001 5.0005 1.6414 5.3125 4.1875l0.03-1.13c0.10424-3.0366-2.1469-5.0625-5.3438-5.0625h-127.41z" - fill="url(#radialGradient11560)" /> - <path - id="path10414" - opacity=".71984" - 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" - transform="matrix(1 0 0 3.7326 0 -1328.7)" - filter="url(#filter4375)" - fill="url(#radialGradient10752)" /> - </g> - <path - id="path10418" - opacity=".82101" - style="enable-background:new" - d="m314.62 61.562c-0.27285 0-0.50707 0.15801-0.71875 0.4375l-1.5938 2.0938c-0.60305 0.79616-1.6115 1.3746-2.8125 1.375h-10.875c-0.004 0 0.002-0.0034-0.0312 0.03125-0.0333 0.03464-0.0317 0.12302-0.0312-0.0625l-0.0312 5.3125c-0.0122 3.8367-0.0453 9.007 0.15625 13.188 0.1008 2.0902 0.25866 3.9401 0.5 5.1875 0.11807 0.61023 0.26774 1.0867 0.375 1.3125h40.875c0.0692-0.12036 0.17803-0.37231 0.28125-0.78125 0.22371-0.8863 0.38957-2.3178 0.5-4.0938 0.22087-3.5518 0.22025-8.5147 0.21875-13.969v-10.031c-0.003-0.0017 0.0133 0-0.0625 0h-26.75z" - xlink:href="#path9590" - stroke="url(#radialGradient11564)" - stroke-width="1.0392" - fill="none" /> - <path - id="path10420" - style="enable-background:new" - d="m298.61 64.417 10.889-0.0039c0.86843-0.000314 1.5502-0.41422 1.9754-0.97545l1.5896-2.0986c0.35-0.474 0.9-0.839 1.57-0.839h26.754c0.66601 0 1.1098 0.41315 1.11 1.0328l0.003 10.065c0.003 10.907 0.0259 19.902-1.8046 19.902h-41.448c-1.9551 0-1.7911-13.079-1.7667-20.743l0.0169-5.3071c0.001-0.41313 0.44401-1.0328 1.11-1.0328h-0.00002z" - stroke="url(#linearGradient11566)" - stroke-width="1.0392" - fill="none" /> - </g> - <g - id="g11614" - style="enable-background:new" - transform="translate(-395,-550)"> - <g - id="g10422" - opacity=".7" - style="enable-background:new" - fill-rule="evenodd" - transform="matrix(.70690 0 0 .59614 542.32 400.81)"> - <rect - id="rect10424" - opacity=".5" - ry="10" - rx="8.1534" - transform="matrix(.18370 0 0 .15777 296.62 56.633)" - height="20" - filter="url(#filter4496)" - width="230" - y="201" - x="15" /> - <rect - id="rect10426" - opacity=".3" - ry="10" - style="enable-background:new" - rx="8.1534" - transform="matrix(.18370 0 0 .15777 296.62 56.633)" - height="20" - filter="url(#filter4508)" - width="230" - y="201" - x="15" /> - </g> - <g - id="g10428" - style="enable-background:new" - transform="translate(450,300)"> - <g - id="g10430" - style="enable-background:new" - clip-path="url(#clipPath6238)" - transform="matrix(.13127 0 0 .13405 299.57 88.831)"> - <path - id="path10432" - d="m52.094 312c-2.335 0-4.094 1.28-4.094 3.95v167.47c0 3.95 2.447 6.58 5.772 6.58h189.56c3.3444 0 4.673-2.4607 4.673-5.9054v-153.46c0-2.951-2.0107-4.5466-4.516-4.5466h-93.987c-1.6928 0-3.9044-0.77514-6.493-2.5614l-13.071-9.0198c-2.2092-1.5245-4.2252-2.5106-6.0898-2.5106l-71.746 0.01z" - fill-rule="evenodd" - fill="url(#linearGradient10740)" /> - <path - id="path10434" - opacity=".4" - style="enable-background:new" - d="m122.25 325.65c-3.1981 0-5.9155 1.7237-7.5312 4.125l-7.6562 5.2824c-1.9116 2.841-5.3003 4.7797-9.4688 4.7812h-52.25c-3.1968 0-5.3924 3.0374-5.3438 5.0625l0.40625 16.688 214.31 6.0613 1.28-36.94c0.10424-3.0366-2.1469-5.0625-5.3438-5.0625h-128.41z" - fill-rule="evenodd" - transform="translate(0,20)" - filter="url(#filter4123)" /> - <path - id="path10436" - opacity=".53881" - style="enable-background:new" - d="m52.094 315.1c-2.3356 0-4.0938 1.2663-4.0938 3.9375v2c0-2.6712 1.7581-3.9375 4.0938-3.9375h70.75c1.8646 0 4.3363 0.48933 6.0938 2.5l13.07 9.6c2.0592 2.3559 4.8072 2.5625 6.5 2.5625h94.969c2.5054 0 4.5312 1.5803 4.5312 4.5312v-2c0-2.951-2.0259-4.5312-4.5312-4.5312h-94.969c-1.6928-0.00001-4.4408-0.2066-6.5-2.5625l-13.062-9.6068c-1.7575-2.0107-4.2292-2.5-6.0938-2.5h-70.75z" - fill-rule="evenodd" - fill="url(#radialGradient10742)" /> - <rect - id="rect10438" - opacity=".45" - ry=".875" - style="enable-background:new" - rx=".875" - transform="matrix(.77346 0 0 1 10.907 260)" - height="52.75" - filter="url(#filter3458)" - width="1.75" - y="57" - x="49.25" - fill="url(#radialGradient10746)" /> - </g> - <path - id="path10440" - opacity=".1" - stroke-linejoin="round" - style="enable-background:new" - d="m306.5 131.5v22h25v-19.969h-12.312c-0.48404-0.00002-0.98403-0.19311-1.4688-0.5625l-1.75-1.3438c-0.19-0.15-0.3-0.13-0.22-0.13h-9.25z" - stroke="#fff" - fill="none" /> - <path - id="path10442" - style="enable-background:new" - d="m306.05 130.5c-0.31529 0-0.55273 0.17248-0.55273 0.53286v22.593c0 0.53317 0.33031 0.88836 0.7792 0.88836h25.59c0.45149 0 0.63086-0.33199 0.63086-0.79671v-20.575c0-0.39812-0.27144-0.61339-0.60966-0.61339h-12.688c-0.22853 0-0.54045-0.0894-0.87656-0.34557l-1.7646-1.3447c-0.28685-0.21859-0.57039-0.33871-0.8221-0.33871l-9.686-0.00001z" - stroke="url(#linearGradient11665)" - fill="none" /> - </g> - <g - id="g10444" - style="enable-background:new" - transform="translate(450,300)"> - <g - id="g10446" - fill-rule="evenodd" - style="enable-background:new" - transform="matrix(.13127 0 0 .11708 299.57 96.848)"> - <path - id="path10448" - fill="url(#linearGradient11667)" - d="m42.874 349.71 52.267-0.0193c4.1684-0.002 6.9379-2.5673 9.4817-4.7828l11.312-9.8521c2.15-1.8726 4.3437-4.1154 7.5418-4.1154h128.42c3.1968 0 5.416 2.0271 5.3281 5.0642l-4.2511 146.94c-0.0904 3.1239-2.1921 5.209-5.4803 5.209h-200.93c-3.2882 0-5.3942-2.0848-5.4803-5.209l-3.534-128.17c-0.05581-2.0249 2.1312-5.0642 5.3281-5.0642z" /> - <path - id="path10450" - style="enable-background:new" - d="m123.25 335c-3.1981 0-5.9155 1.7237-7.5312 4.125l-9.6762 7.9465c-1.9116 2.841-5.3003 4.7797-9.4687 4.7812h-51.23c-3.1968 0-5.3924 2.0374-5.3438 4.0625l0.03125 1.6562c0.18147-2.0076 2.2909-3.7188 5.3125-3.7188h51.23c4.1684-0.002 7.5572-1.9403 9.4687-4.7812l9.6762-7.9465c1.61-2.4 4.33-4.12 7.53-4.12h127.41c2.8797 0.00001 5.0005 1.6414 5.3125 4.1875l0.03-1.13c0.10424-3.0366-2.1469-5.0625-5.3438-5.0625h-127.41z" - fill="url(#radialGradient11560)" /> - <path - id="path10452" - 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" - transform="matrix(1.017 0 0 4.334 -2.4994 -1619.3)" - filter="url(#filter4375)" - fill="url(#radialGradient10752)" /> - <g - id="g10454" - style="enable-background:new" - transform="translate(0,10)" - filter="url(#filter4379)"> - <path - id="path10456" - style="enable-background:new" - d="m44.344 346.72c-0.81378 0-1.502 0.39781-2.0625 1-0.56052 0.60219-0.81462 1.443-0.8125 1.5312l2.906 121.47c0.0243 1.0112 0.33196 1.6322 0.78125 2.0625 0.44929 0.43025 1.1319 0.75 2.25 0.75h1c-1.1181 0-1.8007-0.31975-2.25-0.75-0.44929-0.43025-0.75695-1.0513-0.78125-2.0625l-2.906-121.47c-0.0021-0.0882 0.25198-0.92906 0.8125-1.5312 0.56052-0.60219 1.2487-1 2.0625-1h-1z" - fill="url(#radialGradient11673)" /> - <path - id="path10458" - style="enable-background:new" - d="m250.66 326.47c1.0751 0 1.7892 0.34909 2.2188 0.75 0.42956 0.40091 0.68674 0.86171 0.65625 1.75l-4.875 141.72c-0.0355 1.0334-0.3727 1.6672-0.8125 2.0938-0.4398 0.42651-1.0697 0.75-2.1875 0.75h1c1.1178 0 1.7477-0.32349 2.1875-0.75s0.77703-1.0603 0.8125-2.0938l4.875-141.72c0.0305-0.88829-0.22669-1.3491-0.65625-1.75-0.42956-0.40091-1.1437-0.75-2.2188-0.75h-1z" - fill="url(#radialGradient11675)" /> - </g> - </g> - <path - id="path10460" - style="enable-background:new" - fill="none" - stroke="url(#linearGradient11677)" - d="m305.22 137.52 7.0174-0.002c0.55965-0.00019 0.94333-0.30684 1.273-0.59786l1.0244-0.9043c0.27864-0.24597 0.58319-0.51443 1.0126-0.51443h17.241c0.42921 0 0.71564 0.2532 0.71535 0.63304l-0.0123 15.882c-0.002 2.0258-0.93512 2.4852-1.3766 2.4852h-26.483c-0.44148 0-1.1441-0.47913-1.142-2.4636l0.0144-13.884c0.00026-0.25321 0.28614-0.63303 0.71534-0.63303l-0.00006-0.00041z" /> - <path - id="path10462" - opacity=".3" - stroke-linejoin="round" - style="enable-background:new" - d="m315.53 136.5c-0.0349 0-0.0689 0.007-0.34375 0.25l-1.0312 0.90625c-0.34006 0.3002-0.98039 0.87468-1.9375 0.875h-6.7188v13.5c-0.00091 0.87701 0.16607 1.3319 0.25 1.4688h26.375c-0.27462 0 0.37365 0.21923 0.375-1.5v-15.5h-16.969z" - stroke="url(#linearGradient11679)" - fill="none" /> - </g> - </g> - <g - id="g10348" - opacity=".9" - style="enable-background:new" - fill-rule="evenodd" - transform="matrix(.46656 0 0 .79230 218.99 -125)"> - <path - id="path10352" - opacity=".5" - d="m42.556 201h186.56c8.79 0 15.88 4.46 15.88 10s-7.0862 10-15.888 10h-186.56c-8.8021 0-15.888-4.46-15.888-10s7.0862-10 15.888-10z" - transform="matrix(.18370 0 0 .15777 296.62 56.633)" - filter="url(#filter4496)" /> - <path - id="path10354" - opacity=".3" - style="enable-background:new" - d="m30.157 201h211.35c8.3967 0 15.157 4.46 15.157 10s-6.7598 10-15.157 10h-211.35c-8.4 0-15.16-4.46-15.16-10s6.7598-10 15.157-10z" - transform="matrix(.18370 0 0 .15777 296.62 56.633)" - filter="url(#filter4508)" /> - </g> - <g - id="g10356" - style="enable-background:new" - transform="translate(55,-250)"> - <path - id="path10358" - style="enable-background:new" - d="m306.53 179.5c-0.57203 0.064-1.0035 0.54941-1 1.125v13.344c0.00006 0.62129 0.50371 1.1249 1.125 1.125h14.719c0.62129-0.00006 1.1249-0.50371 1.125-1.125v-11.312c-0.00006-0.62129-0.50371-1.1249-1.125-1.125h-6.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-5.5938c-0.0416-0.002-0.0834-0.002-0.125 0z" - fill-rule="evenodd" - stroke="url(#linearGradient10674)" - fill="url(#linearGradient10672)" /> - <path - id="path10360" - opacity=".4" - style="enable-background:new" - d="m306.62 180.44c-0.10325 0.0115-0.15688 0.0836-0.15625 0.1875v13.344c0.00001 0.11468 0.0728 0.18749 0.1875 0.1875h14.719c0.11468-0.00001 0.18749-0.0728 0.1875-0.1875v-11.312c-0.00001-0.11468-0.0728-0.18749-0.1875-0.1875h-6.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-5.5938c-0.0104 0.00017-0.0208 0.00017-0.0313 0l0.00005-0.0001z" - stroke="url(#radialGradient10676)" - fill="none" /> - <path - id="path10363" - stroke-linejoin="round" - style="enable-background:new" - fill="url(#linearGradient10678)" - fill-rule="evenodd" - stroke="url(#linearGradient10680)" - d="m305.85 185.49h4.6897c0.5327 0 1.2151-1.0847 1.6478-1.6332 0.1341-0.20388 0.34688-0.35593 0.60228-0.35593 3.5701 0.006 7.1406-0.0156 10.71 0.0141v9.309c0 3.2028-1.2901 3.677-1.6504 3.677h-15.699c-0.36031 0-1.6504-0.40781-1.6504-3.677v-7.3424s1.3498 0.009 1.3498 0.009v-0.00003z" /> - <path - id="path10366" - 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(.086612 0 0 .26364 301.19 67.064)" - filter="url(#filter4375-3)" - fill="url(#radialGradient10682)" /> - <path - id="path10368" - opacity=".4" - stroke-linejoin="round" - style="enable-background:new" - d="m312.94 184.5c-0.17581 0.22664-0.44781 0.6386-0.78125 1.0312-0.17236 0.20297-0.35508 0.41053-0.59375 0.59375s-0.5515 0.375-1.0312 0.375h-4.6875c-0.20314 0-0.22418 0.0344-0.25 0.0625-0.0258 0.0281-0.0937 0.12531-0.0937 0.40625v5.8438c0 3.0049 1.0699 2.6875 0.65625 2.6875h15.688c-0.53644 0 0.65626 0.24559 0.65625-2.6875v-8.3125h-9.5625-0.00005z" - stroke="url(#linearGradient10684)" - fill="none" /> - </g> - <path - id="path5717-2" - stroke-linejoin="round" - style="enable-background:new" - d="m366.38-23.985c-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="m366.38-24.985c-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="#fde8d0" - stroke-linecap="round" - fill="none" /> - <g - id="g5833-3" - stroke-linejoin="round" - style="enable-background:new" - transform="translate(-1541.7 -889.1)" - stroke-linecap="round" - fill="none"> - <path - id="path5717-2-7" - style="enable-background:new" - d="m1911 825.96c-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="#c56b0c" /> - <path - id="path5717-0" - style="enable-background:new" - d="m1911 824.96c-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="#fde8d0" /> - </g> - <g - id="g5833-3-4-4" - style="enable-background:new" - transform="matrix(2.2594 0 0 2.2594 -3942.3 -2045.7)" - stroke="#c36e11" - stroke-width="2"> - <path - id="path5717-0-9-7" - stroke-linejoin="round" - style="enable-background:new" - d="m1911 824.96c-0.1681 0.0217-0.3164 0.15386-0.3579 0.31842l-0.7155 2.1494-0.1586 0.0802h-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.2264l-0.1586-0.0802-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.00001v0z" - stroke="#c36e11" - stroke-linecap="round" - stroke-width=".88521" - fill="none" /> - </g> - <g - id="g5833-3-4" - style="enable-background:new" - transform="matrix(2.2594 0 0 2.2594 -3942.3 -2046.7)" - stroke="#fde2c0" - stroke-width="2"> - <path - id="path5717-0-9" - stroke-linejoin="round" - style="enable-background:new" - d="m1911 824.96c-0.1681 0.0217-0.3164 0.15386-0.3579 0.31842l-0.7155 2.1494-0.1586 0.0802h-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.2264l-0.1586-0.0802-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.00001v0z" - stroke="#fde2c0" - stroke-linecap="round" - stroke-width=".88521" - fill="none" /> - </g> - <path - id="path5717-0-9-4-5" - stroke-linejoin="round" - style="enable-background:new" - d="m374.29-110.21c-0.2567 0.0331-0.4832 0.23499-0.5466 0.48632l-1.0927 3.2827s-0.1467 0.0739-0.2423 0.12249h-3.3395c-0.1867 0-0.3689 0.0973-0.4859 0.24315-0.2462 0.27585-0.1844 0.76528 0.1207 0.97266l2.7325 2.0062 0.058 0.2918-1.032 3.2218c-0.1435 0.50286 0.5294 1.0082 0.9715 0.72947l2.7322-2.006h0.3497l2.7325 2.006c0.2376 0.15564 0.5781 0.12845 0.7891-0.0603 0.1789-0.16536 0.2534-0.43555 0.1827-0.66879l-1.0323-3.2218c-0.098-0.0194 0.038-0.19453 0.058-0.29178l2.7321-2.0062c0.3061-0.20736 0.3667-0.6968 0.1207-0.97264-0.1161-0.14585-0.2991-0.23713-0.4857-0.24316h-3.4004s-0.153-0.0774-0.2422-0.12249l-1.0323-3.2826c-0.031-0.11485-0.095-0.22216-0.1826-0.30405-0.1283-0.12447-0.3079-0.19259-0.4857-0.18286l0.021 0.0002-0.0009 0.00001 0.0004-0.00003z" - stroke="#bb660b" - stroke-linecap="round" - stroke-width="1.5" - fill="none" /> - <g - id="g5833-3-4-9" - style="enable-background:new" - transform="matrix(1.5273 0 0 1.5273 -2544.3 -1370.2)" - stroke="#fde8d0" - stroke-width=".98214"> - <path - id="path5717-0-9-4" - stroke-linejoin="round" - style="enable-background:new" - d="m1911 824.3c-0.1681 0.0217-0.3164 0.15386-0.3579 0.31842l-0.7155 2.1494s-0.096 0.0484-0.1586 0.0802h-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.2264s-0.1002-0.0507-0.1586-0.0802l-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.00001v0z" - stroke="#fde8d0" - stroke-linecap="round" - stroke-width=".98214" - fill="none" /> - </g> - <rect - id="rect12657-5" - style="color:#000000;enable-background:new" - rx="0" - ry="0" - height="0" - width="2" - y="-60" - x="701" - fill="#888a85" /> - </g> - <g - id="layer21"> - <g - id="g10464" - opacity=".8" - style="enable-background:new" - fill-rule="evenodd" - transform="translate(45,-251)"> - <rect - id="rect10466" - opacity=".8" - transform="matrix(.91304 0 0 0.3 28.304 171.7)" - rx="8.1534" - ry="10" - height="20" - filter="url(#filter4458)" - width="230" - y="201" - x="15" /> - <rect - id="rect10468" - style="enable-background:new" - transform="matrix(.91304 0 0 0.3 28.304 171.7)" - rx="8.1534" - ry="10" - height="20" - filter="url(#filter4454)" - width="230" - y="201" - x="15" /> - </g> - <g - id="g10470" - style="enable-background:new" - transform="matrix(1 0 0 1.0054 45 -491.56)"> - <g - id="g10472" - style="enable-background:new" - transform="translate(0,-20)" - clip-path="url(#clipPath4061)"> - <path - id="path10474" - d="m52.094 312c-2.335 0-4.094 1.28-4.094 3.95v167.47c0 3.95 2.447 6.58 5.772 6.58h189.56c3.3444 0 4.673-2.4607 4.673-5.9054v-147.52c0-2.951-2.0107-4.5466-4.516-4.5466h-93.987c-1.6928 0-4.4338-0.2055-6.493-2.5614l-13.071-14.954c-1.7575-2.0107-4.2252-2.5106-6.0898-2.5106h-71.746z" - fill-rule="evenodd" - fill="url(#linearGradient10740)" /> - <path - id="path10476" - opacity=".71233" - style="enable-background:new" - d="m122.25 324c-3.1981 0-5.9155 1.7237-7.5312 4.125l-7.6562 11.344c-1.9116 2.841-5.3003 4.7797-9.4688 4.7812h-52.25c-3.1968 0-5.3924 3.0374-5.3438 5.0625l0.409 16.7h214.31l1.28-36.94c0.10424-3.0366-2.1469-5.0625-5.3438-5.0625h-128.41z" - fill-rule="evenodd" - transform="translate(0,20)" - filter="url(#filter4123)" /> - <path - id="path10478" - opacity=".53881" - style="enable-background:new" - d="m52.094 313c-2.336 0-4.094 1.27-4.094 3.94v2c0-2.67 1.758-3.94 4.094-3.94h70.75c1.8646 0 4.3363 0.48933 6.0938 2.5l13.07 14.97c2.0592 2.3559 4.8072 2.5625 6.5 2.5625h94.969c2.5054 0 4.5312 1.5803 4.5312 4.5312v-2c0-2.951-2.0259-4.5312-4.5312-4.5312h-94.969c-1.6928-0.00001-4.4408-0.2066-6.5-2.5625l-13.06-14.97c-1.7575-2.0107-4.2292-2.5-6.0938-2.5h-70.75z" - fill-rule="evenodd" - fill="url(#radialGradient10742)" /> - <path - id="path10480" - style="enable-background:new" - d="m51.094 311c-2.335 0-4.094 1.28-4.094 3.95v168.47c0 3.95 2.447 6.58 5.772 6.58h191.56c3.3444 0 4.673-2.4607 4.673-5.9054v-148.52c0-2.951-2.0107-4.5466-4.516-4.5466h-94.987c-1.6928 0-4.4338-0.2055-6.493-2.5614l-13.071-14.954c-1.7575-2.0107-4.2252-2.5106-6.0898-2.5106h-72.746z" - filter="url(#filter4065)" - stroke="url(#linearGradient10744)" - stroke-width="1.9947" - fill="none" /> - <rect - id="rect10482" - opacity=".45" - style="enable-background:new" - transform="matrix(.77346 0 0 1 10.907 260)" - rx=".875" - ry=".875" - height="52.75" - filter="url(#filter3458)" - width="1.75" - y="57" - x="49.25" - fill="url(#radialGradient10746)" /> - </g> - <path - id="path10484" - opacity="0.03" - style="enable-background:new" - d="m52.094 312c-2.335 0-4.094 1.28-4.094 3.95v167.47c0 3.95 2.447 6.58 5.772 6.58h189.56c3.3444 0 4.673-2.4607 4.673-5.9054v-147.52c0-2.951-2.0107-4.5466-4.516-4.5466h-93.987c-1.6928 0-4.4338-0.2055-6.493-2.5614l-13.071-14.954c-1.7575-2.0107-4.2252-2.5106-6.0898-2.5106h-71.746z" - fill-rule="evenodd" - transform="translate(0,-20)" - fill="url(#pattern2719)" /> - <g - id="g10486" - style="enable-background:new" - clip-path="url(#clipPath10943)" - transform="translate(-.06621 -11.01)"> - <path - id="path10488" - style="enable-background:new" - d="m-157.81 83h128.41c3.1968 0 5.3404 2.0241 5.3438 5.0625l0.125 121.72c0.000001 16.5-3.6622 25.219-10.469 25.219h-197.25c-6.6058 0.59601-7.3649-12.59-7.5-27.219l-0.90625-99.469c-0.0187-2.0256 2.1157-5.0625 5.3125-5.0625l52.281-0.0313c4.1684-0.002 7.5572-1.9403 9.4688-4.7812l7.6562-11.344c1.61-2.403 4.33-4.095 7.53-4.095z" - transform="translate(280.07 251.01)" - fill="url(#linearGradient10748)" /> - <path - id="path10490" - opacity="0.03" - style="enable-background:new" - d="m45.329 104.26 52.267-0.0193c4.1684-0.002 7.5701-1.9418 9.4817-4.7828l7.63-11.34c1.6157-2.4013 4.3437-4.1154 7.5418-4.1154h128.42c3.1968 0 5.4323 2.0276 5.3281 5.0642l-4.8648 141.73c-0.12 3.11-2.2 5.2-5.49 5.2h-197.25c-3.2882 0-5.4052-2.0846-5.4803-5.209l-2.919-121.47c-0.04866-2.0251 2.1312-5.0642 5.3281-5.0642z" - fill-rule="evenodd" - transform="translate(0,250)" - fill="url(#pattern4229-8)" /> - <path - id="path10492" - style="enable-background:new" - d="m123.25 335c-3.1981 0-5.9155 1.7237-7.5312 4.125l-7.6562 11.344c-1.9116 2.841-5.3003 4.7797-9.4688 4.7812h-53.25c-3.1968 0-5.3924 2.0374-5.3438 4.0625l0.03125 1.6562c0.18147-2.0076 2.2909-3.7188 5.3125-3.7188h53.25c4.1684-0.002 7.5572-1.9403 9.4688-4.7812l7.66-11.34c1.61-2.4 4.33-4.12 7.53-4.12h127.41c2.8797 0.00001 5.0005 1.6414 5.3125 4.1875l0.03-1.13c0.10424-3.0366-2.1469-5.0625-5.3438-5.0625h-127.41z" - fill-rule="evenodd" - fill="url(#radialGradient10750)" /> - <path - id="path10494" - opacity=".34188" - 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(1 0 0 2.3217 0 -646.64)" - filter="url(#filter4375-19)" - fill="url(#radialGradient10752)" /> - <g - id="g10496" - style="enable-background:new" - fill-rule="evenodd" - transform="translate(0 10)" - filter="url(#filter4379-0)"> - <path - id="path10498" - style="enable-background:new" - d="m43.344 346.72c-0.81378 0-1.502 0.39781-2.0625 1-0.56052 0.60219-0.81462 1.443-0.8125 1.5312l2.906 121.47c0.0243 1.0112 0.33196 1.6322 0.78125 2.0625 0.44929 0.43025 1.1319 0.75 2.25 0.75h1c-1.1181 0-1.8007-0.31975-2.25-0.75-0.44929-0.43025-0.75695-1.0513-0.78125-2.0625l-2.906-121.47c-0.0021-0.0882 0.25198-0.92906 0.8125-1.5312 0.56052-0.60219 1.2487-1 2.0625-1h-1z" - fill="url(#radialGradient10754)" /> - <path - id="path10500" - style="enable-background:new" - d="m251.15 324.47c1.0749-0.022 1.796 0.31235 2.2336 0.70438 0.43769 0.39202 0.70426 0.84746 0.69197 1.7362l-1.9703 141.79c-0.0143 1.034-0.33847 1.6745-0.76943 2.11-0.43097 0.43543-1.0541 0.77176-2.1717 0.79466l0.99979-0.0205c1.1176-0.0229 1.7407-0.35923 2.1717-0.79466 0.43096-0.43543 0.75514-1.076 0.76943-2.11l1.9703-141.79c0.0123-0.88873-0.25428-1.3442-0.69197-1.7362-0.43768-0.39202-1.1588-0.72641-2.2336-0.70438l-0.99979 0.0205z" - fill="url(#radialGradient10756)" /> - </g> - <path - id="path10502" - stroke-linejoin="round" - style="enable-background:new" - d="m-157.81 83h128.41c3.1968 0 5.3404 2.0241 5.3438 5.0625l0.125 121.72c0.000001 16.5-3.6622 25.219-10.469 25.219h-197.25c-6.6058 0.59601-7.3649-12.59-7.5-27.219l-0.90625-99.469c-0.0187-2.0256 2.1157-5.0625 5.3125-5.0625l52.281-0.0313c4.1684-0.002 7.5572-1.9403 9.4688-4.7812l7.6562-11.344c1.61-2.403 4.33-4.095 7.53-4.095z" - transform="translate(280.07 251.01)" - filter="url(#filter11355)" - stroke="url(#linearGradient10758)" - stroke-linecap="round" - stroke-width="1.9947" - fill="none" /> - </g> - <path - id="path10504" - opacity=".3" - 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(1 0 0 .72174 -.06621 122.65)" - filter="url(#filter4375-19)" - fill="url(#radialGradient10752)" /> - </g> - <g - id="g7670" - stroke-linejoin="round" - transform="translate(-377 -265.9)" - stroke-linecap="round" - stroke-width="8" - fill="none"> - <path - id="path5717-0-9-5-0" - style="enable-background:new" - d="m569.63 136.6c-1.8678 0.24167-3.5157 1.7145-3.9769 3.5482l-7.9492 23.95-1.7625 0.89368h-24.294c-1.3579 0-2.6831 0.70979-3.5342 1.7741-1.7911 2.0126-1.342 5.5835 0.8777 7.0965l19.878 14.637 0.4228 2.129-7.5075 23.506c-1.044 3.6688 3.8509 7.3561 7.0675 5.3223l19.876-14.636h2.5444l19.878 14.636c1.7284 1.1354 4.2055 0.93713 5.7406-0.43994 1.3013-1.2065 1.8432-3.1778 1.3288-4.8796l-7.5094-23.506c-0.7113-0.14154 0.2801-1.4192 0.4228-2.1289l19.875-14.637c2.2268-1.5129 2.6678-5.0838 0.8779-7.0964-0.8444-1.0642-2.1756-1.7301-3.5328-1.7741h-24.737l-1.7619-0.89367-7.5096-23.95c-0.2213-0.83794-0.689-1.6208-1.3288-2.2184-0.9333-0.90818-2.2399-1.4052-3.5332-1.3341l0.1573 0.00086v0.00011l-0.009 0.00034z" - stroke="#d77711" /> - <path - id="path5717-0-9-5" - style="enable-background:new" - d="m569.63 135.6c-1.8678 0.24167-3.5157 1.7145-3.9769 3.5482l-7.9492 23.95-1.7625 0.89368h-24.294c-1.3579 0-2.6831 0.70979-3.5342 1.7741-1.7911 2.0126-1.342 5.5835 0.8777 7.0965l19.878 14.637 0.4228 2.129-7.5075 23.506c-1.044 3.6688 3.8509 7.3561 7.0675 5.3223l19.876-14.636h2.5444l19.878 14.636c1.7284 1.1354 4.2055 0.93713 5.7406-0.43994 1.3013-1.2065 1.8432-3.1778 1.3288-4.8796l-7.5094-23.506c-0.7113-0.14154 0.2801-1.4192 0.4228-2.1289l19.875-14.637c2.2268-1.5129 2.6678-5.0838 0.8779-7.0964-0.8444-1.0642-2.1756-1.7301-3.5328-1.7741h-24.737l-1.7619-0.89367-7.5096-23.95c-0.2213-0.83794-0.689-1.6208-1.3288-2.2184-0.9333-0.90818-2.2399-1.4052-3.5332-1.3341l0.1573 0.00086v0.00011l-0.009 0.00034z" - stroke="#fbc98d" /> - </g> - </g> - <g - id="g4864" - transform="translate(44.913 -32.613)"> - <path - id="path14841-3" - opacity=".45783" - d="m244 51c0 2.7614-2.2386 5-5 5s-5-2.2386-5-5 2.2386-5 5-5 5 2.2386 5 5z" - fill-rule="evenodd" - transform="matrix(2.7092 0 0 2.7092 -468.22 -205.68)" - fill="url(#radialGradient7892-7)" /> - <path - id="path14843-0" - d="m244 51c0 2.7614-2.2386 5-5 5s-5-2.2386-5-5 2.2386-5 5-5 5 2.2386 5 5z" - fill-rule="evenodd" - transform="matrix(.50798 0 0 .50798 58.548 -92.739)" - fill="#fff" /> - <path - id="path14849-7" - opacity=".45783" - d="m244 51c0 2.7614-2.2386 5-5 5s-5-2.2386-5-5 2.2386-5 5-5 5 2.2386 5 5z" - fill-rule="evenodd" - transform="matrix(3.8092 0 0 3.8092 -726.5 -264.78)" - fill="url(#radialGradient7892-7)" /> - <path - id="path14851-8" - d="m244 51c0 2.7614-2.2386 5-5 5s-5-2.2386-5-5 2.2386-5 5-5 5 2.2386 5 5z" - fill-rule="evenodd" - transform="matrix(.71422 0 0 .71422 14.155 -105.98)" - fill="#fff" /> - <path - id="path14984-6" - stroke-linejoin="round" - transform="matrix(.79552 .35130 -.35138 .79570 88.379 -256.93)" - stroke="url(#radialGradient7894-2)" - stroke-linecap="round" - stroke-width="11.498" - fill="none" - d="m206.67 217.35-40.254-8.0108-22.183 34.465-4.8204-40.759-39.633-10.447 37.275-17.18-2.3117-40.921 27.858 30.142 38.204-14.844-20.058 35.808z" - filter="url(#filter15758-4)" /> - <path - id="path11982-8" - opacity=".56223" - style="color:#000000" - d="m135.06-25.261s6.625-3.125 12.625 0.125l21 15.25c3.875 2.125 9.5-1.25 10.375-4.875 0 0-6.25 0.75-8.5-2.75l-19.5-14.75c-1.625-1.25-4.25-1.25-6.25-0.25z" - fill="#fdeddd" /> - <path - id="path11986-8" - opacity=".56223" - style="color:#000000" - d="m126.76-10.228c-3.125-1-4.4428-3.0273-2.8894-8.8172l3.9266-12.827c0.46212-4.3952 0.2966-7.8518-5.2599-11.008 0 0-0.75133 6.0816-2.2258 10.04l-4.3167 13.436c-0.30418 5.8002 4.7754 9.8299 10.765 9.176z" - fill="#fde6cf" /> - <path - id="path12005-4" - opacity=".56223" - style="color:#000000" - d="m143.09-80.305s-3.5993 6.3798-10.374 7.1964l-23.701 0.19632c-5.8903 0.006-9.4041 7.3868-7.2725 12.851 0 0 0.66626-4.725 7.7755-4.7948l24.563-0.48717c2.0486 0.0806 4.1905-1.4369 5.2444-3.4091z" - fill="#fff" /> - <path - id="path12007-3" - opacity=".56223" - style="color:#000000" - d="m143-99.122s2.26 1.3429 5.6317 7.2754l3.7079 12.163c2.1637 3.8535 4.1 7.2989 10.458 6.6619 0 0-4.8166-15.45-7.5324-23.085-3.1048-4.9086-7.9683-4.7165-12.265-3.0153z" - fill="#fff" /> - <g - id="g12056-1" - fill-rule="evenodd" - transform="translate(307.14 -213.37)"> - <path - id="path12058-4" - opacity=".45783" - d="m244 51c0 2.7614-2.2386 5-5 5s-5-2.2386-5-5 2.2386-5 5-5 5 2.2386 5 5z" - transform="matrix(3.8092 0 0 3.8092 -1042.5 .95285)" - fill="url(#radialGradient7892-7)" /> - <path - id="path12060-9" - d="m244 51c0 2.7614-2.2386 5-5 5s-5-2.2386-5-5 2.2386-5 5-5 5 2.2386 5 5z" - transform="matrix(.71422 0 0 .71422 -301.85 159.75)" - fill="#fff" /> - <path - id="path12062-2" - opacity=".45783" - d="m244 51c0 2.7614-2.2386 5-5 5s-5-2.2386-5-5 2.2386-5 5-5 5 2.2386 5 5z" - transform="matrix(1.8092 0 0 1.8092 -568.58 103.68)" - fill="url(#radialGradient7892-7)" /> - <path - id="path12064-0" - d="m244 51c0 2.7614-2.2386 5-5 5s-5-2.2386-5-5 2.2386-5 5-5 5 2.2386 5 5z" - transform="matrix(.33922 0 0 .33922 -216.81 179.1)" - fill="#fff" /> - </g> - </g> - <use - id="use3340" - style="enable-background:new" - xlink:href="#g3326" - transform="translate(30.005 -.00021074)" - height="400" - width="500" - y="0" - x="0" /> - </g> -</svg> diff --git a/SparkleShare/Common/Pixmaps/Sources/gitorious.svg b/SparkleShare/Common/Pixmaps/Sources/gitorious.svg deleted file mode 100644 index e1c011d..0000000 --- a/SparkleShare/Common/Pixmaps/Sources/gitorious.svg +++ /dev/null @@ -1,63 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg id="svg9662" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="24" width="24" 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="defs3"> - <filter id="filter10824" height="1.2825" width="1.209" color-interpolation-filters="sRGB" y="-.14123" x="-.10449"> - <feGaussianBlur id="feGaussianBlur10826" stdDeviation="0.95917508"/> - </filter> - <linearGradient id="linearGradient4333" y2="34.607" gradientUnits="userSpaceOnUse" x2="-545.52" gradientTransform="translate(569,1013)" y1="28.408" x1="-557.06"> - <stop id="stop10743" stop-color="#f46e6e" offset="0"/> - <stop id="stop10749" stop-color="#f7d478" offset=".5"/> - <stop id="stop10745" stop-color="#f46e6e" offset="1"/> - </linearGradient> - <linearGradient id="linearGradient4335" y2="36.362" gradientUnits="userSpaceOnUse" x2="-551" gradientTransform="translate(569,1013)" y1="27.362" x1="-551"> - <stop id="stop10755" stop-color="#e50000" offset="0"/> - <stop id="stop10757" stop-color="#ab0000" offset="1"/> - </linearGradient> - <linearGradient id="linearGradient4337" y2="28.079" gradientUnits="userSpaceOnUse" x2="-557.01" gradientTransform="translate(569,1013)" y1="34.767" x1="-568.52"> - <stop id="stop10729" stop-color="#73d216" offset="0"/> - <stop id="stop10735" stop-color="#efff20" offset=".5"/> - <stop id="stop10731" stop-color="#89d216" offset="1"/> - </linearGradient> - <linearGradient id="linearGradient4339" y2="35.858" gradientUnits="userSpaceOnUse" x2="-563.29" gradientTransform="translate(569,1013)" y1="25.486" x1="-563.29"> - <stop id="stop10719" stop-color="#4e9a06" offset="0"/> - <stop id="stop10721" stop-color="#346704" offset="1"/> - </linearGradient> - <linearGradient id="linearGradient4341" y2="40.663" gradientUnits="userSpaceOnUse" x2="-549.62" gradientTransform="translate(569,1013)" y1="15.384" x1="-562.87"> - <stop id="stop10836" stop-color="#fff" offset="0"/> - <stop id="stop10838" stop-color="#fff" stop-opacity="0" offset="1"/> - </linearGradient> - </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/> - </cc:Work> - </rdf:RDF> - </metadata> - <g id="layer1" transform="translate(0 -1028.4)"> - <rect id="rect10657" fill-opacity="0" height="24" width="24" y="1029.4" x=".088379"/> - <path id="path10769" d="m-555.82 22.937-11.801 3.1974v9.6581l11.801 3.4441 10.23-3.1316v-9.9706z" transform="matrix(1.0124 0 0 1 575.75 1011.2)" filter="url(#filter10824)" fill="#2e3436"/> - <path id="path10705" stroke-linejoin="round" d="m23.514 1034.8-10.55-3.9367-1.4805 0.054 0.007 19.914 1.509 0.017 10.514-3.1427z" stroke="url(#linearGradient4335)" fill="url(#linearGradient4333)"/> - <path id="path10691" stroke-linejoin="round" d="m0.55806 1034.8 10.471-3.9459h1.4422l0.0365 19.989-1.4631-0.031-10.487-3.1115z" stroke="url(#linearGradient4339)" fill="url(#linearGradient4337)"/> - <path id="path10693" d="m2 1036.4 9.0165-3.0054-0.0442 15.034l-8.972-2z" fill="#fff"/> - <path id="rect10668" d="m5 1037 2-0.3728v8.6465l-1.9844-0.3518z" fill="#539710"/> - <path id="rect10672" d="m3 1040.1 6.5938-0.9381v3.3314l-6.5938-0.9z" fill="#539710"/> - <path id="path10737" d="m22.016 1036.4-9.016-3l0.0442 15.034 8.9723-2.0281z" fill="#fff"/> - <rect id="rect10798" rx="0" ry="0" height="2" width="2" y="1030.4" x="11" fill="#85680e"/> - <rect id="rect10800" rx="0" ry="0" height="2" width="2" y="1049.4" x="11" fill="#85680e"/> - <rect id="rect10767" rx="0" ry="0" height="19" width="2" y="1031.4" x="11" fill="#eabe35"/> - <rect id="rect10842" rx="0" ry="0" height="1" width="2" y="1031.4" x="11" fill="#a78312"/> - <path id="path10810" opacity=".75" d="m12.816 1031.9-1.6843 0.01-9.6106 3.6209-0.0183 11.457 9.5022 2.8463 1.9639 0.031 9.5057-2.8861 0.0335-11.455z" stroke="url(#linearGradient4341)" stroke-width="1px" fill="none"/> - <path id="path10830" d="m21.062 1040.1-6.5938-0.9381v3.3314l6.5938-0.8463z" fill="#dc0000"/> - <g id="layer9" stroke-linejoin="round" transform="translate(-1687.8 -118.06)" stroke="#000" stroke-linecap="round" display="none" fill="#fff"> - <path id="path11071" opacity=".5" style="enable-background:new" d="m729.88 60.625a14.688 5.9375 0 1 1 -29.375 0 14.688 5.9375 0 1 1 29.375 0z" transform="matrix(1.2596 0 0 1.0947 -22.831 -6.3684)" display="inline" stroke-width=".85160"/> - <path id="path11073" opacity=".5" style="enable-background:new" d="m729.88 60.625a14.688 5.9375 0 1 1 -29.375 0 14.688 5.9375 0 1 1 29.375 0z" transform="matrix(1.2596 0 0 1.0947 -22.831 -3.3684)" display="inline" stroke-width=".85160"/> - <path id="path11075" opacity=".5" style="enable-background:new" d="m729.88 60.625a14.688 5.9375 0 1 1 -29.375 0 14.688 5.9375 0 1 1 29.375 0z" transform="matrix(1.0553 0 0 .90859 173.25 35.022)" display="inline" stroke-width="1.0212"/> - <path id="path11084" opacity=".5" style="enable-background:new" d="m729.88 60.625a14.688 5.9375 0 1 1 -29.375 0 14.688 5.9375 0 1 1 29.375 0z" transform="matrix(1.0553 0 0 .97833 123.25 30.38)" display="inline" stroke-width=".98416"/> - <path id="path11086" opacity=".5" style="enable-background:new" d="m729.88 60.625a14.688 5.9375 0 1 1 -29.375 0 14.688 5.9375 0 1 1 29.375 0z" transform="matrix(1.0894 0 0 .97833 98.901 27.38)" display="inline" stroke-width=".96866"/> - </g> - </g> -</svg> diff --git a/SparkleShare/Common/Plugins/gitorious.png b/SparkleShare/Common/Plugins/gitorious.png Binary files differdeleted file mode 100644 index 731835b..0000000 --- a/SparkleShare/Common/Plugins/gitorious.png +++ /dev/null diff --git a/SparkleShare/Common/Plugins/gitorious.xml b/SparkleShare/Common/Plugins/gitorious.xml deleted file mode 100644 index d0cee9e..0000000 --- a/SparkleShare/Common/Plugins/gitorious.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<sparkleshare> - <plugin> - <info> - <name>Gitorious</name> - <description>Open source infrastructure for hosting open source projects</description> - <icon>gitorious.png</icon> - <backend>Git</backend> - <fingerprint>7e:af:8d:ec:f0:39:5e:ba:52:16:ce:19:fa:d4:b8:7d</fingerprint> - </info> - <address> - <value>ssh://git@gitorious.org/</value> - <example/> - </address> - <path> - <value/> - <example>/project/repository</example> - </path> - </plugin> -</sparkleshare> diff --git a/SparkleShare/Common/Plugins/gitorious@2x.png b/SparkleShare/Common/Plugins/gitorious@2x.png Binary files differdeleted file mode 100644 index 806f113..0000000 --- a/SparkleShare/Common/Plugins/gitorious@2x.png +++ /dev/null diff --git a/SparkleShare/Common/Plugins/planio.png b/SparkleShare/Common/Plugins/planio.png Binary files differdeleted file mode 100644 index d11e070..0000000 --- a/SparkleShare/Common/Plugins/planio.png +++ /dev/null diff --git a/SparkleShare/Common/Plugins/planio@2x.png b/SparkleShare/Common/Plugins/planio@2x.png Binary files differdeleted file mode 100644 index 97ec2a3..0000000 --- a/SparkleShare/Common/Plugins/planio@2x.png +++ /dev/null diff --git a/SparkleShare/Common/Plugins/ssnet.png b/SparkleShare/Common/Plugins/ssnet.png Binary files differdeleted file mode 100644 index 8aac460..0000000 --- a/SparkleShare/Common/Plugins/ssnet.png +++ /dev/null diff --git a/SparkleShare/Common/Plugins/ssnet.xml b/SparkleShare/Common/Plugins/ssnet.xml deleted file mode 100644 index 718e6f3..0000000 --- a/SparkleShare/Common/Plugins/ssnet.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<sparkleshare> - <plugin> - <info> - <name>SparkleShare.Net</name> - <description>The easiest way to share projects with SparkleShare</description> - <icon>ssnet.png</icon> - <backend>Git</backend> - </info> - <address> - <value>ssh://storage@sparkleshare.net/</value> - <example/> - </address> - <path> - <value/> - <example>/username/project</example> - </path> - </plugin> -</sparkleshare> diff --git a/SparkleShare/Common/Plugins/ssnet@2x.png b/SparkleShare/Common/Plugins/ssnet@2x.png Binary files differdeleted file mode 100644 index 3449b9e..0000000 --- a/SparkleShare/Common/Plugins/ssnet@2x.png +++ /dev/null diff --git a/SparkleShare/Common/Plugins/Makefile.am b/SparkleShare/Common/Presets/Makefile.am index dc0a049..40efbe9 100644 --- a/SparkleShare/Common/Plugins/Makefile.am +++ b/SparkleShare/Common/Presets/Makefile.am @@ -1,18 +1,17 @@ -dist_plugins_DATA = \ +dist_presets_DATA = \ bitbucket.xml \ github.xml \ - gitorious.xml \ - ssnet.xml \ + gitlab.xml \ own-server.xml \ planio.xml \ github.png \ - gitorious.png \ + gitlab.png \ bitbucket.png \ - ssnet.png \ planio.png \ own-server.png -pluginsdir = $(pkgdatadir)/plugins/ +presetsdir = $(pkgdatadir)/presets/ MAINTAINERCLEANFILES = \ Makefile.in + diff --git a/SparkleShare/Common/Plugins/bitbucket.png b/SparkleShare/Common/Presets/bitbucket.png Binary files differindex c2de052..c2de052 100644 --- a/SparkleShare/Common/Plugins/bitbucket.png +++ b/SparkleShare/Common/Presets/bitbucket.png diff --git a/SparkleShare/Common/Plugins/bitbucket.xml b/SparkleShare/Common/Presets/bitbucket.xml index 1737448..c1690ee 100644 --- a/SparkleShare/Common/Plugins/bitbucket.xml +++ b/SparkleShare/Common/Presets/bitbucket.xml @@ -1,12 +1,12 @@ <?xml version="1.0" encoding="UTF-8"?> <sparkleshare> - <plugin> + <preset> <info> <name>Bitbucket</name> <description>Free code hosting for Git and Mercurial</description> <icon>bitbucket.png</icon> <backend>Git</backend> - <fingerprint>97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40</fingerprint> + <fingerprint>cf:35:d0:39:74:91:04:48:94:b6:e1:3c:02:29:09:60:ac:1b:1d:ac:6f:49:cd:28:8d:ec:fd:61:76:86:a7:50</fingerprint> </info> <address> <value>ssh://git@bitbucket.org/</value> @@ -17,5 +17,6 @@ <example>/username/project</example> <uses_lower_case>True</uses_lower_case> </path> - </plugin> + </preset> </sparkleshare> + diff --git a/SparkleShare/Common/Plugins/bitbucket@2x.png b/SparkleShare/Common/Presets/bitbucket@2x.png Binary files differindex 01ecba8..01ecba8 100644 --- a/SparkleShare/Common/Plugins/bitbucket@2x.png +++ b/SparkleShare/Common/Presets/bitbucket@2x.png diff --git a/SparkleShare/Common/Plugins/github.png b/SparkleShare/Common/Presets/github.png Binary files differindex 62bb35b..62bb35b 100644 --- a/SparkleShare/Common/Plugins/github.png +++ b/SparkleShare/Common/Presets/github.png diff --git a/SparkleShare/Common/Plugins/github.xml b/SparkleShare/Common/Presets/github.xml index bf24fd0..2916ed4 100644 --- a/SparkleShare/Common/Plugins/github.xml +++ b/SparkleShare/Common/Presets/github.xml @@ -1,12 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> <sparkleshare> - <plugin> + <preset> <info> <name>GitHub</name> - <description>Collaborate on projects hosted on GitHub</description> + <description>The biggest collection of Open Source projects</description> <icon>github.png</icon> <backend>Git</backend> - <fingerprint>16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48</fingerprint> + <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> </info> <address> <value>ssh://git@github.com/</value> @@ -16,5 +17,5 @@ <value/> <example>/username/project</example> </path> - </plugin> + </preset> </sparkleshare> diff --git a/SparkleShare/Common/Plugins/github@2x.png b/SparkleShare/Common/Presets/github@2x.png Binary files differindex fd32047..fd32047 100644 --- a/SparkleShare/Common/Plugins/github@2x.png +++ b/SparkleShare/Common/Presets/github@2x.png diff --git a/SparkleShare/Common/Presets/gitlab.png b/SparkleShare/Common/Presets/gitlab.png Binary files differnew file mode 100644 index 0000000..fef79da --- /dev/null +++ b/SparkleShare/Common/Presets/gitlab.png diff --git a/SparkleShare/Common/Presets/gitlab.xml b/SparkleShare/Common/Presets/gitlab.xml new file mode 100644 index 0000000..b6db2ed --- /dev/null +++ b/SparkleShare/Common/Presets/gitlab.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<sparkleshare> + <preset> + <info> + <name>GitLab</name> + <description>Open Source alternative to GitHub</description> + <icon>gitlab.png</icon> + <backend>Git</backend> + <fingerprint>44:e4:05:bc:f4:e1:1a:b5:b8:46:e5:8b:a0:bf:6d:ab:d2:3d:cc:9e:36:7c:ae:17:cb:0c:91:b5:b3:b3:fc:44</fingerprint> + </info> + <address> + <value>ssh://git@gitlab.com/</value> + <example/> + </address> + <path> + <value/> + <example>/username/project</example> + </path> + </preset> +</sparkleshare> + diff --git a/SparkleShare/Common/Presets/gitlab@2x.png b/SparkleShare/Common/Presets/gitlab@2x.png Binary files differnew file mode 100644 index 0000000..68cd1bd --- /dev/null +++ b/SparkleShare/Common/Presets/gitlab@2x.png diff --git a/SparkleShare/Common/Plugins/own-server.png b/SparkleShare/Common/Presets/own-server.png Binary files differindex c5d0a08..c5d0a08 100644 --- a/SparkleShare/Common/Plugins/own-server.png +++ b/SparkleShare/Common/Presets/own-server.png diff --git a/SparkleShare/Common/Plugins/own-server.xml b/SparkleShare/Common/Presets/own-server.xml index eb9b401..d6ceab6 100644 --- a/SparkleShare/Common/Plugins/own-server.xml +++ b/SparkleShare/Common/Presets/own-server.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <sparkleshare> - <plugin> + <preset> <info> - <name>On my own server</name> + <name>Own server</name> <description>Everything under my control</description> <icon>own-server.png</icon> <backend>Git</backend> @@ -15,5 +15,6 @@ <value/> <example>/path/to/project</example> </path> - </plugin> + </preset> </sparkleshare> + diff --git a/SparkleShare/Common/Plugins/own-server@2x.png b/SparkleShare/Common/Presets/own-server@2x.png Binary files differindex 4312338..4312338 100644 --- a/SparkleShare/Common/Plugins/own-server@2x.png +++ b/SparkleShare/Common/Presets/own-server@2x.png diff --git a/SparkleShare/Common/Plugins/parse_plugins.xsl b/SparkleShare/Common/Presets/parse_plugins.xsl index bded3cc..bded3cc 100644 --- a/SparkleShare/Common/Plugins/parse_plugins.xsl +++ b/SparkleShare/Common/Presets/parse_plugins.xsl diff --git a/SparkleShare/Common/Presets/planio.png b/SparkleShare/Common/Presets/planio.png Binary files differnew file mode 100644 index 0000000..d6ad0c4 --- /dev/null +++ b/SparkleShare/Common/Presets/planio.png diff --git a/SparkleShare/Common/Plugins/planio.xml b/SparkleShare/Common/Presets/planio.xml index 1e91c90..730094a 100644 --- a/SparkleShare/Common/Plugins/planio.xml +++ b/SparkleShare/Common/Presets/planio.xml @@ -1,12 +1,12 @@ <?xml version="1.0" encoding="UTF-8"?> <sparkleshare> - <plugin> + <preset> <info> <name>Planio</name> - <description>500MB of unlimited free hosted Git repos and project management</description> + <description>Online project management</description> <icon>planio.png</icon> <backend>Git</backend> - <fingerprint>77:d1:54:d7:33:7e:38:43:40:70:ca:2d:3a:24:05:22</fingerprint> + <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> @@ -17,5 +17,6 @@ <value/> <example>/[account]-[project].git</example> </path> - </plugin> + </preset> </sparkleshare> + diff --git a/SparkleShare/Common/Presets/planio@2x.png b/SparkleShare/Common/Presets/planio@2x.png Binary files differnew file mode 100644 index 0000000..5bbad90 --- /dev/null +++ b/SparkleShare/Common/Presets/planio@2x.png diff --git a/SparkleShare/SparkleSetupController.cs b/SparkleShare/Common/SetupController.cs index 574da27..289bf1c 100755..100644 --- a/SparkleShare/SparkleSetupController.cs +++ b/SparkleShare/Common/SetupController.cs @@ -1,5 +1,5 @@ // SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com> +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -21,7 +21,7 @@ using System.IO; using System.Text.RegularExpressions; using System.Threading; -using SparkleLib; +using Sparkles; namespace SparkleShare { @@ -33,7 +33,7 @@ namespace SparkleShare { Syncing, Error, Finished, - Tutorial, + StorageSetup, CryptoSetup, CryptoPassword } @@ -44,7 +44,7 @@ namespace SparkleShare { } - public class SparkleSetupController { + public class SetupController { public event Action ShowWindowEvent = delegate { }; public event Action HideWindowEvent = delegate { }; @@ -53,7 +53,7 @@ namespace SparkleShare { public delegate void ChangePageEventHandler (PageType page, string [] warnings); public event UpdateProgressBarEventHandler UpdateProgressBarEvent = delegate { }; - public delegate void UpdateProgressBarEventHandler (double percentage, string speed); + public delegate void UpdateProgressBarEventHandler (double percentage, string information); public event UpdateSetupContinueButtonEventHandler UpdateSetupContinueButtonEvent = delegate { }; public delegate void UpdateSetupContinueButtonEventHandler (bool button_enabled); @@ -73,12 +73,11 @@ namespace SparkleShare { public event ChangePathFieldEventHandler ChangePathFieldEvent = delegate { }; public delegate void ChangePathFieldEventHandler (string text, string example_text, FieldState state); - public readonly List<SparklePlugin> Plugins = new List<SparklePlugin> (); - public SparklePlugin SelectedPlugin; + public readonly List<Preset> Presets = new List<Preset> (); + public Preset SelectedPreset; public bool WindowIsOpen { get; private set; } public SparkleInvite PendingInvite { get; private set; } - public int TutorialPageNumber { get; private set; } public string PreviousUrl { get; private set; } public string PreviousAddress { get; private set; } public string PreviousPath { get; private set; } @@ -86,9 +85,9 @@ namespace SparkleShare { public double ProgressBarPercentage { get; private set; } - public int SelectedPluginIndex { + public int SelectedPresetIndex { get { - return Plugins.IndexOf (SelectedPlugin); + return Presets.IndexOf (SelectedPreset); } } @@ -101,61 +100,56 @@ namespace SparkleShare { private PageType current_page; private string saved_address = ""; private string saved_remote_path = ""; - private bool create_startup_item = true; private bool fetch_prior_history = false; - public SparkleSetupController () + public SetupController () { ChangePageEvent += delegate (PageType page_type, string [] warnings) { this.current_page = page_type; }; - TutorialPageNumber = 0; PreviousAddress = ""; PreviousPath = ""; PreviousUrl = ""; SyncingFolder = ""; - string local_plugins_path = SparklePlugin.LocalPluginsPath; - int local_plugins_count = 0; + string local_presets_path = Preset.LocalPresetsPath; + int local_presets_count = 0; - // Import all of the plugins - if (Directory.Exists (local_plugins_path)) - // Local plugins go first... - foreach (string xml_file_path in Directory.GetFiles (local_plugins_path, "*.xml")) { - Plugins.Add (new SparklePlugin (xml_file_path)); - local_plugins_count++; + // Import all of the presets + if (Directory.Exists (local_presets_path)) + // Local presets go first... + foreach (string xml_file_path in Directory.GetFiles (local_presets_path, "*.xml")) { + Presets.Add (new Preset (xml_file_path)); + local_presets_count++; } - // ...system plugins after that... - if (Directory.Exists (Program.Controller.PluginsPath)) { - foreach (string xml_file_path in Directory.GetFiles (Program.Controller.PluginsPath, "*.xml")) { + // ...system presets after that... + if (Directory.Exists (SparkleShare.Controller.PresetsPath)) { + foreach (string xml_file_path in Directory.GetFiles (SparkleShare.Controller.PresetsPath, "*.xml")) { // ...and "Own server" at the very top - if (xml_file_path.EndsWith ("own-server.xml")) { - Plugins.Insert (0, new SparklePlugin (xml_file_path)); - - } else if (xml_file_path.EndsWith ("ssnet.xml")) { - // Plugins.Insert ((local_plugins_count + 1), new SparklePlugin (xml_file_path)); - // TODO: Skip this plugin for now - - } else { - Plugins.Add (new SparklePlugin (xml_file_path)); - } + if (xml_file_path.EndsWith ("own-server.xml")) + Presets.Insert (0, new Preset (xml_file_path)); + else + Presets.Add (new Preset (xml_file_path)); } } - SelectedPlugin = Plugins [0]; + SelectedPreset = Presets [0]; - Program.Controller.InviteReceived += delegate (SparkleInvite invite) { + SparkleShare.Controller.InviteReceived += delegate (SparkleInvite invite) { PendingInvite = invite; ChangePageEvent (PageType.Invite, null); ShowWindowEvent (); }; - Program.Controller.ShowSetupWindowEvent += delegate (PageType page_type) { - if (page_type == PageType.CryptoSetup || page_type == PageType.CryptoPassword) { + SparkleShare.Controller.ShowSetupWindowEvent += delegate (PageType page_type) { + if (page_type == PageType.StorageSetup || + page_type == PageType.CryptoSetup || + page_type == PageType.CryptoPassword) { + ChangePageEvent (page_type, null); return; } @@ -184,7 +178,7 @@ namespace SparkleShare { ChangePageEvent (PageType.Add, null); } - } else if (!Program.Controller.FirstRun && TutorialPageNumber == 0) { + } else if (!SparkleShare.Controller.FirstRun) { WindowIsOpen = true; ChangePageEvent (PageType.Add, null); } @@ -203,7 +197,7 @@ namespace SparkleShare { public void PageCancelled () { PendingInvite = null; - SelectedPlugin = Plugins [0]; + SelectedPreset = Presets [0]; PreviousAddress = ""; PreviousPath = ""; @@ -230,70 +224,44 @@ namespace SparkleShare { public void SetupPageCancelled () { - Program.Controller.Quit (); + SparkleShare.Controller.Quit (); } public void SetupPageCompleted (string full_name, string email) { - Program.Controller.CurrentUser = new SparkleUser (full_name, email); - - TutorialPageNumber = 1; - ChangePageEvent (PageType.Tutorial, null); - } - + SparkleShare.Controller.CurrentUser = new User (full_name, email); + new Thread (() => SparkleShare.Controller.CreateStartupItem ()).Start (); - public void TutorialSkipped () - { - TutorialPageNumber = 4; - ChangePageEvent (PageType.Tutorial, null); + ChangePageEvent (PageType.Add, null); } - + public void HistoryItemChanged (bool fetch_prior_history) { this.fetch_prior_history = fetch_prior_history; } - public void TutorialPageCompleted () - { - TutorialPageNumber++; - - if (TutorialPageNumber == 5) { - TutorialPageNumber = 0; - - WindowIsOpen = false; - HideWindowEvent (); - - if (this.create_startup_item) - new Thread (() => Program.Controller.CreateStartupItem ()).Start (); - - } else { - ChangePageEvent (PageType.Tutorial, null); - } - } - - - public void SelectedPluginChanged (int plugin_index) + public void SelectedPresetChanged (int preset_index) { - SelectedPlugin = Plugins [plugin_index]; + SelectedPreset = Presets [preset_index]; - if (SelectedPlugin.Address != null) { - ChangeAddressFieldEvent (SelectedPlugin.Address, "", FieldState.Disabled); + if (SelectedPreset.Address != null) { + ChangeAddressFieldEvent (SelectedPreset.Address, "", FieldState.Disabled); - } else if (SelectedPlugin.AddressExample != null) { - ChangeAddressFieldEvent (this.saved_address, SelectedPlugin.AddressExample, FieldState.Enabled); + } else if (SelectedPreset.AddressExample != null) { + ChangeAddressFieldEvent (this.saved_address, SelectedPreset.AddressExample, FieldState.Enabled); } else { ChangeAddressFieldEvent (this.saved_address, "", FieldState.Enabled); } - if (SelectedPlugin.Path != null) { - ChangePathFieldEvent (SelectedPlugin.Path, "", FieldState.Disabled); + if (SelectedPreset.Path != null) { + ChangePathFieldEvent (SelectedPreset.Path, "", FieldState.Disabled); - } else if (SelectedPlugin.PathExample != null) { - ChangePathFieldEvent (this.saved_remote_path, SelectedPlugin.PathExample, FieldState.Enabled); + } else if (SelectedPreset.PathExample != null) { + ChangePathFieldEvent (this.saved_remote_path, SelectedPreset.PathExample, FieldState.Enabled); } else { ChangePathFieldEvent (this.saved_remote_path, "", FieldState.Enabled); @@ -301,18 +269,12 @@ namespace SparkleShare { } - public void StartupItemChanged (bool create_startup_item) - { - this.create_startup_item = create_startup_item; - } - - - public void CheckAddPage (string address, string remote_path, int selected_plugin) + public void CheckAddPage (string address, string remote_path, int selected_preset) { address = address.Trim (); remote_path = remote_path.Trim (); - if (selected_plugin == 0) + if (selected_preset == 0) this.saved_address = address; this.saved_remote_path = remote_path; @@ -331,8 +293,7 @@ namespace SparkleShare { if (remote_path.EndsWith (".git")) SyncingFolder = remote_path.Substring (0, remote_path.Length - 4); - SyncingFolder = SyncingFolder.Replace ("-crypto", ""); - SyncingFolder = SyncingFolder.ReplaceUnderscoreWithSpace (); + SyncingFolder = SyncingFolder.ReplaceUnderscoreWithSpace (); ProgressBarPercentage = 1.0; ChangePageEvent (PageType.Syncing, null); @@ -341,26 +302,26 @@ namespace SparkleShare { remote_path = remote_path.Trim (); remote_path = remote_path.TrimEnd ("/".ToCharArray ()); - if (SelectedPlugin.PathUsesLowerCase) + if (SelectedPreset.PathUsesLowerCase) remote_path = remote_path.ToLower (); PreviousAddress = address; PreviousPath = remote_path; - Program.Controller.FolderFetched += AddPageFetchedDelegate; - Program.Controller.FolderFetchError += AddPageFetchErrorDelegate; - Program.Controller.FolderFetching += SyncingPageFetchingDelegate; + SparkleShare.Controller.FolderFetched += AddPageFetchedDelegate; + SparkleShare.Controller.FolderFetchError += AddPageFetchErrorDelegate; + SparkleShare.Controller.FolderFetching += SyncingPageFetchingDelegate; SparkleFetcherInfo info = new SparkleFetcherInfo { Address = address, - Fingerprint = SelectedPlugin.Fingerprint, + Fingerprint = SelectedPreset.Fingerprint, RemotePath = remote_path, FetchPriorHistory = this.fetch_prior_history, - AnnouncementsUrl = SelectedPlugin.AnnouncementsUrl, - Backend = SelectedPlugin.Backend + AnnouncementsUrl = SelectedPreset.AnnouncementsUrl, + Backend = SelectedPreset.Backend }; - new Thread (() => { Program.Controller.StartFetcher (info); }).Start (); + new Thread (() => { SparkleShare.Controller.StartFetcher (info); }).Start (); } // The following private methods are @@ -370,31 +331,31 @@ namespace SparkleShare { { SyncingFolder = ""; - // Create a local plugin for succesfully added projects, so + // Create a local preset for succesfully added projects, so // so the user can easily use the same host again - if (SelectedPluginIndex == 0) { - SparklePlugin new_plugin; + if (SelectedPresetIndex == 0) { + Preset new_preset; Uri uri = new Uri (remote_url); try { string address = remote_url.Replace (uri.AbsolutePath, ""); - new_plugin = SparklePlugin.Create (uri.Host, address, address, "", "", "/path/to/project"); + new_preset = Preset.Create (uri.Host, address, address, "", "", "/path/to/project"); - if (new_plugin != null) { - Plugins.Insert (1, new_plugin); - SparkleLogger.LogInfo ("Controller", "Added plugin for " + uri.Host); + if (new_preset != null) { + Presets.Insert (1, new_preset); + Logger.LogInfo ("Controller", "Added preset for " + uri.Host); } } catch { - SparkleLogger.LogInfo ("Controller", "Failed adding plugin for " + uri.Host); + Logger.LogInfo ("Controller", "Failed adding preset for " + uri.Host); } } ChangePageEvent (PageType.Finished, warnings); - Program.Controller.FolderFetched -= AddPageFetchedDelegate; - Program.Controller.FolderFetchError -= AddPageFetchErrorDelegate; - Program.Controller.FolderFetching -= SyncingPageFetchingDelegate; + SparkleShare.Controller.FolderFetched -= AddPageFetchedDelegate; + SparkleShare.Controller.FolderFetchError -= AddPageFetchErrorDelegate; + SparkleShare.Controller.FolderFetching -= SyncingPageFetchingDelegate; } private void AddPageFetchErrorDelegate (string remote_url, string [] errors) @@ -404,19 +365,19 @@ namespace SparkleShare { ChangePageEvent (PageType.Error, errors); - Program.Controller.FolderFetched -= AddPageFetchedDelegate; - Program.Controller.FolderFetchError -= AddPageFetchErrorDelegate; - Program.Controller.FolderFetching -= SyncingPageFetchingDelegate; + SparkleShare.Controller.FolderFetched -= AddPageFetchedDelegate; + SparkleShare.Controller.FolderFetchError -= AddPageFetchErrorDelegate; + SparkleShare.Controller.FolderFetching -= SyncingPageFetchingDelegate; } - private void SyncingPageFetchingDelegate (double percentage, double speed) + private void SyncingPageFetchingDelegate (double percentage, double speed ,string information) { ProgressBarPercentage = percentage; - if (speed == 0.0) - UpdateProgressBarEvent (ProgressBarPercentage, ""); - else - UpdateProgressBarEvent (ProgressBarPercentage, "Fetching files… " + speed.ToSize () + "/s"); + if (speed > 0) + information = speed.ToSize () + " – " + information; + + UpdateProgressBarEvent (ProgressBarPercentage, information); } @@ -427,7 +388,6 @@ namespace SparkleShare { if (PendingInvite.RemotePath.EndsWith (".git")) SyncingFolder = PendingInvite.RemotePath.Substring (0, PendingInvite.RemotePath.Length - 4); - SyncingFolder = SyncingFolder.Replace ("-crypto", ""); SyncingFolder = SyncingFolder.ReplaceUnderscoreWithSpace (); PreviousAddress = PendingInvite.Address; PreviousPath = PendingInvite.RemotePath; @@ -435,15 +395,15 @@ namespace SparkleShare { ChangePageEvent (PageType.Syncing, null); new Thread (() => { - if (!PendingInvite.Accept (Program.Controller.CurrentUser.PublicKey)) { + if (!PendingInvite.Accept (SparkleShare.Controller.UserAuthenticationInfo.PublicKey)) { PreviousUrl = PendingInvite.Address + PendingInvite.RemotePath.TrimStart ("/".ToCharArray ()); ChangePageEvent (PageType.Error, new string [] { "error: Failed to upload the public key" }); return; } - Program.Controller.FolderFetched += InvitePageFetchedDelegate; - Program.Controller.FolderFetchError += InvitePageFetchErrorDelegate; - Program.Controller.FolderFetching += SyncingPageFetchingDelegate; + SparkleShare.Controller.FolderFetched += InvitePageFetchedDelegate; + SparkleShare.Controller.FolderFetchError += InvitePageFetchErrorDelegate; + SparkleShare.Controller.FolderFetching += SyncingPageFetchingDelegate; SparkleFetcherInfo info = new SparkleFetcherInfo { Address = PendingInvite.Address, @@ -453,7 +413,7 @@ namespace SparkleShare { AnnouncementsUrl = PendingInvite.AnnouncementsUrl }; - Program.Controller.StartFetcher (info); + SparkleShare.Controller.StartFetcher (info); }).Start (); } @@ -468,9 +428,9 @@ namespace SparkleShare { ChangePageEvent (PageType.Finished, warnings); - Program.Controller.FolderFetched -= AddPageFetchedDelegate; - Program.Controller.FolderFetchError -= AddPageFetchErrorDelegate; - Program.Controller.FolderFetching -= SyncingPageFetchingDelegate; + SparkleShare.Controller.FolderFetched -= AddPageFetchedDelegate; + SparkleShare.Controller.FolderFetchError -= AddPageFetchErrorDelegate; + SparkleShare.Controller.FolderFetching -= SyncingPageFetchingDelegate; } private void InvitePageFetchErrorDelegate (string remote_url, string [] errors) @@ -480,15 +440,15 @@ namespace SparkleShare { ChangePageEvent (PageType.Error, errors); - Program.Controller.FolderFetched -= AddPageFetchedDelegate; - Program.Controller.FolderFetchError -= AddPageFetchErrorDelegate; - Program.Controller.FolderFetching -= SyncingPageFetchingDelegate; + SparkleShare.Controller.FolderFetched -= AddPageFetchedDelegate; + SparkleShare.Controller.FolderFetchError -= AddPageFetchErrorDelegate; + SparkleShare.Controller.FolderFetching -= SyncingPageFetchingDelegate; } public void SyncingCancelled () { - Program.Controller.StopFetcher (); + SparkleShare.Controller.StopFetcher (); if (PendingInvite != null) ChangePageEvent (PageType.Invite, null); @@ -506,6 +466,24 @@ namespace SparkleShare { } + public void StoragePageCompleted (StorageType storage_type) + { + if (storage_type == StorageType.Encrypted) { + ChangePageEvent (PageType.CryptoSetup, null); + return; + } + + ProgressBarPercentage = 100.0; + ChangePageEvent (PageType.Syncing, null); + + new Thread (() => { + Thread.Sleep (1000); + SparkleShare.Controller.FinishFetcher (storage_type); + + }).Start (); + } + + public void CheckCryptoSetupPage (string password) { new Thread (() => { @@ -517,7 +495,7 @@ namespace SparkleShare { public void CheckCryptoPasswordPage (string password) { - bool is_password_correct = Program.Controller.CheckPassword (password); + bool is_password_correct = SparkleShare.Controller.CheckPassword (password); UpdateCryptoPasswordContinueButtonEvent (is_password_correct); } @@ -541,7 +519,7 @@ namespace SparkleShare { new Thread (() => { Thread.Sleep (1000); - Program.Controller.FinishFetcher (password); + SparkleShare.Controller.FinishFetcher (StorageType.Encrypted, password); }).Start (); } @@ -549,29 +527,24 @@ namespace SparkleShare { public void CopyToClipboardClicked () { - Program.Controller.CopyToClipboard (Program.Controller.CurrentUser.PublicKey); + SparkleShare.Controller.CopyToClipboard (SparkleShare.Controller.UserAuthenticationInfo.PublicKey); } public void ShowFilesClicked () { string folder_name = Path.GetFileName (PreviousPath); - folder_name = folder_name.ReplaceUnderscoreWithSpace (); - - if (PreviousPath.EndsWith ("-crypto")) - folder_name = folder_name.Replace ("-crypto", ""); - - if (PreviousPath.EndsWith ("-crypto.git")) - folder_name = folder_name.Replace ("-crypto.git", ""); + folder_name = folder_name.ReplaceUnderscoreWithSpace (); - Program.Controller.OpenSparkleShareFolder (folder_name); + // TODO: Open SparkleShare/$HOST + SparkleShare.Controller.OpenSparkleShareFolder (folder_name); FinishPageCompleted (); } public void FinishPageCompleted () { - SelectedPlugin = Plugins [0]; + SelectedPreset = Presets [0]; PreviousUrl = ""; PreviousAddress = ""; PreviousPath = ""; diff --git a/SparkleShare/Program.cs b/SparkleShare/Common/SparkleShare.cs index db3431b..73f0c2f 100644 --- a/SparkleShare/Program.cs +++ b/SparkleShare/Common/SparkleShare.cs @@ -1,5 +1,5 @@ // SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com> +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -18,18 +18,16 @@ using System; using System.Threading; -using SparkleLib; +using Sparkles; namespace SparkleShare { - // This is SparkleShare! - public class Program { + public class SparkleShare { - public static SparkleController Controller; - public static SparkleUI UI; - public static string [] Arguments; + public static Controller Controller; + public static UserInterface UI; - private static Mutex program_mutex = new Mutex (false, "SparkleShare"); + static Mutex program_mutex = new Mutex (false, "SparkleShare"); #if !__MonoCS__ @@ -37,28 +35,23 @@ namespace SparkleShare { #endif public static void Main (string [] args) { - Arguments = args; - - if (args.Length != 0 && !args [0].Equals ("help") && - SparkleBackend.Platform != PlatformID.MacOSX && - SparkleBackend.Platform != PlatformID.Win32NT) { + 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 + - "SparkleShare is a collaboration and sharing tool that is" + n + - "designed to keep things simple and to stay out of your way." + n + + "Share and collaborate by syncing with any Git repository instantly." + n + n + - "Version: " + SparkleLib.SparkleBackend.Version + 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 + - n + - "Usage: sparkleshare [start|open]"); + "under certain conditions. Please read the GNU GPLv3 for details." + n); - Environment.Exit (-1); + Environment.Exit (0); } // Only allow one instance of SparkleShare (on Windows) @@ -69,11 +62,11 @@ namespace SparkleShare { AppDomain.CurrentDomain.UnhandledException += OnUnhandledException; - Controller = new SparkleController (); + Controller = new Controller (Configuration.DefaultConfiguration); Controller.Initialize (); - UI = new SparkleUI (); - UI.Run (); + UI = new UserInterface (); + UI.Run (args); #if !__MonoCS__ // Suppress assertion messages in debug mode @@ -82,15 +75,11 @@ namespace SparkleShare { #endif } - private static void OnUnhandledException (object sender, UnhandledExceptionEventArgs exception_args) + + static void OnUnhandledException (object sender, UnhandledExceptionEventArgs exception_args) { - try { - Exception e = (Exception) exception_args.ExceptionObject; - SparkleLogger.WriteCrashReport (e); - - } finally { - Environment.Exit (-1); - } + var exception = (Exception) exception_args.ExceptionObject; + Logger.WriteCrashReport (exception); } } } diff --git a/SparkleShare/Common/SparkleShare.projitems b/SparkleShare/Common/SparkleShare.projitems new file mode 100644 index 0000000..9b4eac3 --- /dev/null +++ b/SparkleShare/Common/SparkleShare.projitems @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?>
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
+ <HasSharedItems>true</HasSharedItems>
+ <SharedGUID>{F16E3683-B622-4654-B799-99C8D68AA963}</SharedGUID>
+ </PropertyGroup>
+ <PropertyGroup Label="Configuration">
+ <Import_RootNamespace>SparkleShare</Import_RootNamespace>
+ </PropertyGroup>
+ <ItemGroup>
+ <Compile Include="$(MSBuildThisFileDirectory)AboutController.cs" />
+ <Compile Include="$(MSBuildThisFileDirectory)Avatars.cs" />
+ <Compile Include="$(MSBuildThisFileDirectory)BaseController.cs" />
+ <Compile Include="$(MSBuildThisFileDirectory)BubblesController.cs" />
+ <Compile Include="$(MSBuildThisFileDirectory)EventLogController.cs" />
+ <Compile Include="$(MSBuildThisFileDirectory)NoteController.cs" />
+ <Compile Include="$(MSBuildThisFileDirectory)SetupController.cs" />
+ <Compile Include="$(MSBuildThisFileDirectory)SparkleShare.cs" />
+ <Compile Include="$(MSBuildThisFileDirectory)StatusIconController.cs" />
+ </ItemGroup>
+</Project>
\ No newline at end of file diff --git a/SparkleShare/Common/SparkleShare.shproj b/SparkleShare/Common/SparkleShare.shproj new file mode 100644 index 0000000..0495fd2 --- /dev/null +++ b/SparkleShare/Common/SparkleShare.shproj @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <ProductVersion>8.0.30703</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{F16E3683-B622-4654-B799-99C8D68AA963}</ProjectGuid>
+ <ReleaseVersion></ReleaseVersion>
+ </PropertyGroup>
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.Common.Default.props" />
+ <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.Common.props" />
+ <Import Project="SparkleShare.projitems" Label="Shared" />
+ <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.CSharp.targets" />
+</Project>
diff --git a/SparkleShare/SparkleStatusIconController.cs b/SparkleShare/Common/StatusIconController.cs index 486104f..40bb6ed 100755..100644 --- a/SparkleShare/SparkleStatusIconController.cs +++ b/SparkleShare/Common/StatusIconController.cs @@ -1,5 +1,5 @@ // SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com> +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -20,7 +20,7 @@ using System.Collections.Generic; using System.Threading; using Timers = System.Timers; -using SparkleLib; +using Sparkles; namespace SparkleShare { @@ -35,38 +35,41 @@ namespace SparkleShare { public class ProjectInfo { - private SparkleRepoBase repo; + readonly BaseRepository repo; - public string Name { get { return this.repo.Name; }} - public string Path { get { return this.repo.LocalPath; }} + public string Name { get { return repo.Name; }} + public string Path { get { return repo.LocalPath; }} - public bool IsPaused { get { return this.repo.Status == SyncStatus.Paused; }} - public bool HasError { get { return this.repo.Status == SyncStatus.Error; }} + public bool IsPaused { get { return repo.Status == SyncStatus.Paused; }} + public bool HasError { get { return repo.Status == SyncStatus.Error; }} public string StatusMessage { get { string status_message = "Waiting to sync"; - if (!this.repo.LastSync.Equals (DateTime.MinValue)) - status_message = string.Format ("Synced {0}", this.repo.LastSync.ToPrettyDate ()); + if (!repo.LastSync.Equals (DateTime.MinValue)) + status_message = string.Format ("✓ Synced – Last change {0}", repo.LastSync.ToPrettyDate ()); - if (this.repo.Status == SyncStatus.SyncUp) - status_message = "Sending changes… " + this.repo.ProgressPercentage + "%"; + if (repo.Status == SyncStatus.SyncUp) + status_message = "Sending… " + (int) repo.ProgressPercentage + "%"; - if (this.repo.Status == SyncStatus.SyncDown) - status_message = "Receiving changes… " + this.repo.ProgressPercentage + "%"; + if (repo.Status == SyncStatus.SyncDown) + status_message = "Receiving… " + (int) repo.ProgressPercentage + "%"; - if (this.repo.Status == SyncStatus.SyncUp || this.repo.Status == SyncStatus.SyncDown) { - if (this.repo.ProgressSpeed > 0) - status_message += " " + this.repo.ProgressSpeed.ToSize () + "/s"; + if (!string.IsNullOrWhiteSpace (repo.ProgressInformation)) + status_message += " – " + SparkleShare.Controller.ProgressInformation; + + if (repo.Status == SyncStatus.SyncUp || repo.Status == SyncStatus.SyncDown) { + if (repo.ProgressSpeed > 0) + status_message += " " + repo.ProgressSpeed.ToSize () + "/s"; } - if (IsPaused) { - return "Paused"; + if (IsPaused) + return "Syncing Paused"; - } else if (HasError) { - switch (this.repo.Error) { + if (HasError) { + switch (repo.Error) { case ErrorStatus.HostUnreachable: return "Can’t reach the host"; case ErrorStatus.HostIdentityChanged: return "The host’s identity has changed"; case ErrorStatus.AuthenticationFailed: return "Authentication failed"; @@ -86,20 +89,20 @@ namespace SparkleShare { public Dictionary<string, string> UnsyncedChangesInfo { get { - Dictionary<string, string> changes_info = new Dictionary<string, string> (); + var changes_info = new Dictionary<string, string> (); int changes_count = 0; - foreach (SparkleChange change in repo.UnsyncedChanges) { + foreach (Change change in repo.UnsyncedChanges) { changes_count++; if (changes_count > 10) continue; switch (change.Type) { - case SparkleChangeType.Added: changes_info [change.Path] = "document-added-12.png"; break; - case SparkleChangeType.Edited: changes_info [change.Path] = "document-edited-12.png"; break; - case SparkleChangeType.Deleted: changes_info [change.Path] = "document-deleted-12.png"; break; - case SparkleChangeType.Moved: changes_info [change.MovedToPath] = "document-moved-12.png"; break; + case ChangeType.Added: changes_info [change.Path] = "document-added-12.png"; break; + case ChangeType.Edited: changes_info [change.Path] = "document-edited-12.png"; break; + case ChangeType.Deleted: changes_info [change.Path] = "document-deleted-12.png"; break; + case ChangeType.Moved: changes_info [change.MovedToPath] = "document-moved-12.png"; break; } } @@ -111,14 +114,14 @@ namespace SparkleShare { } - public ProjectInfo (SparkleRepoBase repo) + public ProjectInfo (BaseRepository repo) { this.repo = repo; } } - public class SparkleStatusIconController { + public class StatusIconController { public event UpdateIconEventHandler UpdateIconEvent = delegate { }; public delegate void UpdateIconEventHandler (IconState state); @@ -133,47 +136,20 @@ namespace SparkleShare { public delegate void UpdateQuitItemEventHandler (bool quit_item_enabled); public IconState CurrentState = IconState.Idle; - public string StateText = "Welcome to SparkleShare!"; + public string StateText = "Welcome to SparkleShare!"; public ProjectInfo [] Projects = new ProjectInfo [0]; - public int ProgressPercentage { - get { - return (int) Program.Controller.ProgressPercentage; - } - } - - public string ProgressSpeed { - get { - string progress_speed = ""; - - if (Program.Controller.ProgressSpeedDown == 0 && Program.Controller.ProgressSpeedUp > 0) { - progress_speed = Program.Controller.ProgressSpeedUp.ToSize () + "/s "; - - } else if (Program.Controller.ProgressSpeedUp == 0 && Program.Controller.ProgressSpeedDown > 0) { - progress_speed = Program.Controller.ProgressSpeedDown.ToSize () + "/s "; - - } else if (Program.Controller.ProgressSpeedUp > 0 && - Program.Controller.ProgressSpeedDown > 0) { - - progress_speed = "Up: " + Program.Controller.ProgressSpeedUp.ToSize () + "/s " + - "Down: " + Program.Controller.ProgressSpeedDown.ToSize () + "/s"; - } - - return progress_speed; - } - } - public bool RecentEventsItemEnabled { get { - return (Program.Controller.Repositories.Length > 0); + return (SparkleShare.Controller.Repositories.Length > 0); } } public bool LinkCodeItemEnabled { get { - return !string.IsNullOrEmpty (Program.Controller.CurrentUser.PublicKey); + return !string.IsNullOrEmpty (SparkleShare.Controller.UserAuthenticationInfo.PublicKey); } } @@ -184,11 +160,11 @@ namespace SparkleShare { } - public SparkleStatusIconController () + public StatusIconController () { UpdateFolders (); - Program.Controller.FolderListChanged += delegate { + SparkleShare.Controller.FolderListChanged += delegate { if (CurrentState != IconState.Error) { CurrentState = IconState.Idle; @@ -201,10 +177,9 @@ namespace SparkleShare { UpdateMenuEvent (CurrentState); }; - Program.Controller.OnIdle += delegate { + SparkleShare.Controller.OnIdle += delegate { if (CurrentState != IconState.Error) { CurrentState = IconState.Idle; - UpdateStateText (); } @@ -216,44 +191,61 @@ namespace SparkleShare { UpdateMenuEvent (CurrentState); }; - Program.Controller.OnSyncing += delegate { - int repos_syncing_up = 0; - int repos_syncing_down = 0; - - foreach (SparkleRepoBase repo in Program.Controller.Repositories) { - if (repo.Status == SyncStatus.SyncUp) - repos_syncing_up++; - - if (repo.Status == SyncStatus.SyncDown) - repos_syncing_down++; - } - - if (repos_syncing_up > 0 && - repos_syncing_down > 0) { - - CurrentState = IconState.Syncing; - StateText = "Syncing changes…"; - - } else if (repos_syncing_down == 0) { - CurrentState = IconState.SyncingUp; - StateText = "Sending changes…"; - - } else { - CurrentState = IconState.SyncingDown; - StateText = "Receiving changes…"; - } - - if (ProgressPercentage > 0) - StateText += " " + ProgressPercentage + "% " + ProgressSpeed; + SparkleShare.Controller.OnSyncing += delegate { + int repos_syncing_up = 0; + int repos_syncing_down = 0; + + foreach (BaseRepository repo in SparkleShare.Controller.Repositories) { + if (repo.Status == SyncStatus.SyncUp) + repos_syncing_up++; + + if (repo.Status == SyncStatus.SyncDown) + repos_syncing_down++; + } + + if (repos_syncing_up > 0 && + repos_syncing_down > 0) { + + CurrentState = IconState.Syncing; + StateText = "Syncing…"; + + } else if (repos_syncing_down == 0) { + CurrentState = IconState.SyncingUp; + StateText = "Sending…"; + + } else { + CurrentState = IconState.SyncingDown; + StateText = "Receiving…"; + } + + int progress_percentage = (int) SparkleShare.Controller.ProgressPercentage; + string progress_speed = ""; + + if (SparkleShare.Controller.ProgressSpeedUp > 0.0 && SparkleShare.Controller.ProgressSpeedDown > 0.0) { + progress_speed = "Up: " + SparkleShare.Controller.ProgressSpeedUp.ToSize () + "/s " + + "Down: " + SparkleShare.Controller.ProgressSpeedDown.ToSize () + "/s"; + } + + if (SparkleShare.Controller.ProgressSpeedUp > 0.0) + progress_speed = SparkleShare.Controller.ProgressSpeedUp.ToSize () + "/s "; + + if (SparkleShare.Controller.ProgressSpeedDown > 0.0) + progress_speed = SparkleShare.Controller.ProgressSpeedDown.ToSize () + "/s "; + + if (progress_percentage > 0) + StateText += string.Format (" {0}% {1}", progress_percentage, progress_speed); + + if (!string.IsNullOrEmpty (SparkleShare.Controller.ProgressInformation)) + StateText += " – " + SparkleShare.Controller.ProgressInformation; UpdateIconEvent (CurrentState); UpdateStatusItemEvent (StateText); UpdateQuitItemEvent (QuitItemEnabled); }; - Program.Controller.OnError += delegate { + SparkleShare.Controller.OnError += delegate { CurrentState = IconState.Error; - StateText = "Some changes weren’t synced"; + StateText = "Not everything synced"; UpdateFolders (); @@ -266,7 +258,7 @@ namespace SparkleShare { // FIXME: Work around a race condition causing // the icon to not always show the right state - Timers.Timer timer = new Timers.Timer () { Interval = 30 * 1000 }; + var timer = new Timers.Timer { Interval = 30 * 1000 }; timer.Elapsed += delegate { UpdateIconEvent (CurrentState); @@ -282,7 +274,7 @@ namespace SparkleShare { if (Projects.Length == 0) return StateText = "Welcome to SparkleShare!"; else - return StateText = "Projects up to date " + GetPausedCount (); + return StateText = "✓ Synced " + GetPausedCount (); } @@ -305,56 +297,56 @@ namespace SparkleShare { public void RecentEventsClicked () { new Thread (() => { - while (!Program.Controller.RepositoriesLoaded) + while (!SparkleShare.Controller.RepositoriesLoaded) Thread.Sleep (100); - Program.Controller.ShowEventLogWindow (); + SparkleShare.Controller.ShowEventLogWindow (); }).Start (); } public void AddHostedProjectClicked () { - new Thread (() => Program.Controller.ShowSetupWindow (PageType.Add)).Start (); + new Thread (() => SparkleShare.Controller.ShowSetupWindow (PageType.Add)).Start (); } public void CopyToClipboardClicked () { - Program.Controller.CopyToClipboard (Program.Controller.CurrentUser.PublicKey); + SparkleShare.Controller.CopyToClipboard (SparkleShare.Controller.UserAuthenticationInfo.PublicKey); } public void AboutClicked () { - Program.Controller.ShowAboutWindow (); + SparkleShare.Controller.ShowAboutWindow (); } public void QuitClicked () { - Program.Controller.Quit (); + SparkleShare.Controller.Quit (); } // Project items public void ProjectClicked (string project) { - Program.Controller.OpenSparkleShareFolder (project); + SparkleShare.Controller.OpenSparkleShareFolder (project); } public void PauseClicked (string project) { - Program.Controller.GetRepoByName (project).Pause (); + SparkleShare.Controller.GetRepoByName (project).Pause (); UpdateStateText (); UpdateMenuEvent (CurrentState); } public void ResumeClicked (string project) { - if (Program.Controller.GetRepoByName (project).UnsyncedChanges.Count > 0) { - Program.Controller.ShowNoteWindow (project); + if (SparkleShare.Controller.GetRepoByName (project).UnsyncedChanges.Count > 0) { + SparkleShare.Controller.ShowNoteWindow (project); } else { new Thread (() => { - Program.Controller.GetRepoByName (project).Resume (""); + SparkleShare.Controller.GetRepoByName (project).Resume (""); UpdateStateText (); UpdateMenuEvent (CurrentState); @@ -365,7 +357,7 @@ namespace SparkleShare { public void TryAgainClicked (string project) { - new Thread (() => Program.Controller.GetRepoByName (project).ForceRetry ()).Start (); + new Thread (() => SparkleShare.Controller.GetRepoByName (project).ForceRetry ()).Start (); } @@ -391,18 +383,18 @@ namespace SparkleShare { } - private Object projects_lock = new Object (); + readonly object projects_lock = new object (); - private void UpdateFolders () + void UpdateFolders () { - lock (this.projects_lock) { - List<ProjectInfo> projects = new List<ProjectInfo> (); + var projects = new List<ProjectInfo> (); - foreach (SparkleRepoBase repo in Program.Controller.Repositories) + lock (projects_lock) { + foreach (BaseRepository repo in SparkleShare.Controller.Repositories) projects.Add (new ProjectInfo (repo)); - - Projects = projects.ToArray (); } + + Projects = projects.ToArray (); } } } diff --git a/SparkleShare/Common/Translations/nl.po b/SparkleShare/Common/Translations/nl.po index 6aa7dd2..9735dd6 100755 --- a/SparkleShare/Common/Translations/nl.po +++ b/SparkleShare/Common/Translations/nl.po @@ -2,7 +2,7 @@ # # Translators: # <benjamincottyn@gmail.com>, 2011. -# <hylkebons@gmail.com>, 2011. +# <hi@planetpeanut.uk>, 2011. # <inxidious@gmail.com>, 2011. # Łukasz Jernaś <deejay1@srem.org>, 2011. # <m.manshanden@gmail.com>, 2011. diff --git a/SparkleShare/Linux/About.cs b/SparkleShare/Linux/About.cs new file mode 100755 index 0000000..f29b5bf --- /dev/null +++ b/SparkleShare/Linux/About.cs @@ -0,0 +1,168 @@ +// SparkleShare, a collaboration and sharing tool. +// Copyright (C) 2010 Hylke Bons (hi@planetpeanut.uk) +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see (http://www.gnu.org/licenses/). + + +using System; + +using Sparkles; +using Gtk; + +namespace SparkleShare { + + public class About : Window { + + public AboutController Controller = new AboutController (); + + Label updates; + + + public About () : base ("About SparkleShare") + { + SetWmclass ("SparkleShare", "SparkleShare"); + + IconName = "org.sparkleshare.SparkleShare"; + Resizable = false; + WindowPosition = WindowPosition.CenterAlways; + TypeHint = Gdk.WindowTypeHint.Dialog; + + SetSizeRequest (640, 260); + + + DeleteEvent += delegate (object o, DeleteEventArgs args) { + 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 (); + } + }; + + Controller.HideWindowEvent += delegate { + Application.Invoke (delegate { Hide (); }); + }; + + Controller.ShowWindowEvent += delegate { + Application.Invoke (delegate { + ShowAll (); + Present (); + }); + }; + + Controller.UpdateLabelEvent += delegate (string text) { + Application.Invoke (delegate { + updates.Text = text; + updates.ShowAll(); + }); + }; + + + CreateAbout (); + } + + + void CreateAbout () + { + CssProvider window_css_provider = new CssProvider (); + Image image = UserInterfaceHelpers.GetImage ("about.png"); + + window_css_provider.LoadFromData ("window, GtkWindow {" + + " background-image: url(\"/app/share/sparkleshare/pixmaps/about.png\");" + + " background-repeat: no-repeat;" + + " background-position: left bottom;" + + "}"); + + StyleContext.AddProvider (window_css_provider, 800); + + var layout_vertical = new VBox (false, 0); + var links_layout = new HBox (false, 16); + + CssProvider label_css_provider = new CssProvider (); + label_css_provider.LoadFromData ("label { color: #fff; font-size: 14pt; background-color: rgba(0, 0, 0, 0); }"); + + CssProvider label_highlight_css_provider = new CssProvider (); + label_highlight_css_provider.LoadFromData ("label { color: #a8bbcf; font-size: 12pt; }"); + + var version = new Label { + Text = "version " + Controller.RunningVersion, + Xalign = 0, Xpad = 0 + }; + + if (InstallationInfo.Directory.StartsWith ("/app", StringComparison.InvariantCulture)) + version.Text += " (Flatpak)"; + + updates = new Label ("Checking for updates…") { + Xalign = 0, Xpad = 0 + }; + + var copyright = new Label { + Markup = string.Format ("Copyright © 2010–{0} Hylke Bons and others", DateTime.Now.Year), + 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") { + + Xalign = 0, Xpad = 0 + }; + + license.StyleContext.AddProvider (label_css_provider, 800); + updates.StyleContext.AddProvider (label_highlight_css_provider, 800); + version.StyleContext.AddProvider (label_css_provider, 800); + copyright.StyleContext.AddProvider (label_css_provider, 800); + + var website_link = new Link ("Website", Controller.WebsiteLinkAddress); + var credits_link = new Link ("Credits", Controller.CreditsLinkAddress); + var report_problem_link = new Link ("Report a problem", Controller.ReportProblemLinkAddress); + var debug_log_link = new Link ("Debug log", Controller.DebugLogLinkAddress); + + layout_vertical.PackStart (new Label (""), true, true, 0); + layout_vertical.PackStart (version, false, false, 0); + 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); + + links_layout.PackStart (website_link, false, false, 0); + links_layout.PackStart (credits_link, false, false, 0); + links_layout.PackStart (report_problem_link, false, false, 0); + links_layout.PackStart (debug_log_link, false, false, 0); + + var layout_horizontal = new HBox (false, 0); + layout_horizontal.PackStart (new Label (""), false, false, 149); + layout_horizontal.PackStart (layout_vertical, false, false, 0); + + Add (layout_horizontal); + } + } + + + class Link : Label { + + public Link (string label, string url) + { + Markup = string.Format ("<a href=\"{0}\">{1}</a>", url, label); + CanFocus = false; + + CssProvider css_provider = new CssProvider (); + css_provider.LoadFromData ("label a { color: #729fcf; font-size: 14pt; }"); + StyleContext.AddProvider (css_provider, 800); + } + } +} diff --git a/SparkleShare/Linux/SparkleBubbles.cs b/SparkleShare/Linux/Bubbles.cs index 8ec6dfb..1269f27 100755 --- a/SparkleShare/Linux/SparkleBubbles.cs +++ b/SparkleShare/Linux/Bubbles.cs @@ -1,5 +1,5 @@ // SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com> +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -19,27 +19,28 @@ using System; using Gtk; using Notifications; -using SparkleLib; + +using Sparkles; namespace SparkleShare { - public class SparkleBubbles { + public class Bubbles { - public SparkleBubblesController Controller = new SparkleBubblesController (); + public BubblesController Controller = new BubblesController (); - public SparkleBubbles () + public Bubbles () { Controller.ShowBubbleEvent += ShowBubbleEvent; } - private void ShowBubbleEvent (string title, string subtext, string image_path) + void ShowBubbleEvent (string title, string subtext, string image_path) { - if (!Program.Controller.NotificationsEnabled) + if (!SparkleShare.Controller.NotificationsEnabled) return; - Application.Invoke (delegate { + Application.Invoke (delegate { Notification notification = new Notification () { Summary = title, Body = subtext, @@ -50,16 +51,15 @@ namespace SparkleShare { if (image_path != null) notification.Icon = new Gdk.Pixbuf (image_path); else - notification.IconName = "folder-sparkleshare"; + notification.IconName = "org.sparkleshare.SparkleShare"; try { notification.Show (); } catch (Exception e) { - SparkleLogger.LogInfo ("Notification", "Error showing notification: ", e); + Logger.LogInfo ("Notification", "Could not show notification: ", e); } }); } } } - diff --git a/SparkleShare/Linux/Controller.cs b/SparkleShare/Linux/Controller.cs new file mode 100644 index 0000000..5156a1b --- /dev/null +++ b/SparkleShare/Linux/Controller.cs @@ -0,0 +1,140 @@ +// SparkleShare, a collaboration and sharing tool. +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. + + +using System; +using System.Diagnostics; +using System.IO; + +using Gtk; +using Mono.Unix.Native; + +using Sparkles; + +namespace SparkleShare { + + public class Controller : BaseController { + + public Controller (Configuration config) + : base (config) + { + } + + + public override void CreateSparkleShareFolder () + { + if (!Directory.Exists (Configuration.DefaultConfiguration.FoldersPath)) { + Directory.CreateDirectory (Configuration.DefaultConfiguration.FoldersPath); + Syscall.chmod (Configuration.DefaultConfiguration.FoldersPath, (FilePermissions) 448); // 448 -> 700 + } + } + + + public override void SetFolderIcon () + { + var gvfs_set_attribute = new Command ("gvfs-set-attribute", "\"" + Configuration.DefaultConfiguration.FoldersPath + "\" " + + "metadata::custom-icon-name org.sparkleshare.SparkleShare"); + + gvfs_set_attribute.StartInfo.EnvironmentVariables ["XDG_DATA_HOME"] = + Path.Combine (Config.HomePath, ".local", "share"); + + gvfs_set_attribute.StartAndWaitForExit (); + } + + + public override void CreateStartupItem () + { + string autostart_file_path = Path.Combine (Path.GetDirectoryName (InstallationInfo.Directory), + "applications", "SparkleShare.Autostart.desktop"); + + string autostart_file_dest = Path.Combine (Config.HomePath, ".config", "autostart", "SparkleShare.Autostart.desktop"); + string autostart_path = Path.GetDirectoryName (autostart_file_dest); + + if (!Directory.Exists (autostart_path)) + Directory.CreateDirectory (autostart_path); + + if (File.Exists (autostart_file_dest)) + return; + + try { + File.Copy (autostart_file_path, autostart_file_dest); + Logger.LogInfo ("Controller", "Added SparkleShare to startup items"); + + } catch (Exception e) { + Logger.LogInfo ("Controller", "Failed to add SparkleShare to startup items", e); + } + } + + + public override void InstallProtocolHandler () + { + } + + + public override void CopyToClipboard (string text) + { + Clipboard.Get (Gdk.Atom.Intern ("CLIPBOARD", false)).Text = text; + } + + + public override void OpenFolder (string path) + { + OpenFile (path); + } + + + public override void OpenFile (string path) + { + Global.ShowUri (Gdk.Screen.Default, path); + } + + + public override string EventLogHTML { + get { + string html_path = Path.Combine (InstallationInfo.Directory, "html", "event-log.html"); + string jquery_file_path = Path.Combine (InstallationInfo.Directory, "html", "jquery.js"); + + string html = File.ReadAllText (html_path); + string jquery = File.ReadAllText (jquery_file_path); + + return html.Replace ("<!-- $jquery -->", jquery); + } + } + + + public override string DayEntryHTML { + get { + string path = Path.Combine (InstallationInfo.Directory, "html", "day-entry.html"); + return File.ReadAllText (path); + } + } + + + public override string EventEntryHTML { + get { + string path = Path.Combine (InstallationInfo.Directory, "html", "event-entry.html"); + return File.ReadAllText (path); + } + } + + + public override string PresetsPath { + get { + return Path.Combine (InstallationInfo.Directory, "presets"); + } + } + } +} diff --git a/SparkleShare/Linux/SparkleEventLog.cs b/SparkleShare/Linux/EventLog.cs index db6ff3f..b0c8b02 100755 --- a/SparkleShare/Linux/SparkleEventLog.cs +++ b/SparkleShare/Linux/EventLog.cs @@ -1,5 +1,5 @@ // SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com> +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -16,41 +16,43 @@ using System; +using IO = System.IO; using Gtk; -using WebKit; +using WebKit2; namespace SparkleShare { - public class SparkleEventLog : Window { + public class EventLog : Window { - public SparkleEventLogController Controller = new SparkleEventLogController (); + public EventLogController Controller = new EventLogController (); private Label size_label; private Label history_label; - private ComboBox combo_box; private EventBox content_wrapper; - private HBox combo_box_wrapper; - private HBox layout_horizontal; private ScrolledWindow scrolled_window; private VBox spinner_wrapper; private Spinner spinner; private WebView web_view; - private int pos_x, pos_y; + int pos_x, pos_y; - public SparkleEventLog () : base ("Recent Changes") + 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); - SetSizeRequest (480, (int) (monitor_0_rect.Height * 0.8)); + 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)); - IconName = "sparkleshare"; - this.pos_x = (int) (monitor_0_rect.Width * 0.61); - this.pos_y = (int) (monitor_0_rect.Height * 0.5 - (HeightRequest * 0.5)); - this.size_label = new Label () { Xalign = 0, Markup = "<b>Size:</b> …" }; this.history_label = new Label () { Xalign = 0, Markup = "<b>History:</b> …" }; @@ -66,12 +68,11 @@ namespace SparkleShare { this.content_wrapper = new EventBox (); this.scrolled_window = new ScrolledWindow (); - this.content_wrapper.OverrideBackgroundColor (StateFlags.Normal, - new Gdk.RGBA () { Red = 1, Green = 1, Blue=1, Alpha = 1 }); - - this.web_view = new WebView () { Editable = false }; - this.web_view.NavigationRequested += WebViewNavigationRequested; + CssProvider css_provider = new CssProvider (); + css_provider.LoadFromData ("GtkEventBox { background-color: #ffffff; }"); + this.content_wrapper.StyleContext.AddProvider (css_provider, 800); + this.web_view = CreateWebView (); this.scrolled_window.Add (this.web_view); this.spinner_wrapper = new VBox (false, 0); @@ -83,11 +84,6 @@ namespace SparkleShare { this.content_wrapper.Add (this.spinner_wrapper); - this.layout_horizontal = new HBox (false, 0); - this.layout_horizontal.PackStart (layout_sizes, true, true, 12); - - layout_vertical.PackStart (this.layout_horizontal, false, false, 0); - layout_vertical.PackStart (new HSeparator (), false, false, 0); layout_vertical.PackStart (this.content_wrapper, true, true, 0); Add (layout_vertical); @@ -104,7 +100,7 @@ namespace SparkleShare { Controller.ShowWindowEvent += delegate { Application.Invoke (delegate { - Move (this.pos_x, this.pos_y); + Move (pos_x, pos_y); ShowAll (); Present (); }); @@ -128,14 +124,6 @@ namespace SparkleShare { }); }; - Controller.UpdateChooserEvent += delegate (string [] folders) { - Application.Invoke (delegate { UpdateChooser (folders); }); - }; - - Controller.UpdateChooserEnablementEvent += delegate (bool enabled) { - Application.Invoke (delegate { this.combo_box.Sensitive = enabled; }); - }; - Controller.UpdateContentEvent += delegate (string html) { Application.Invoke (delegate { UpdateContent (html); }); }; @@ -170,120 +158,90 @@ namespace SparkleShare { } }; } - - - public void UpdateChooser (string [] folders) - { - if (folders == null) - folders = Controller.Folders; - - if (this.combo_box_wrapper != null && this.combo_box_wrapper.Parent != null) { - this.layout_horizontal.Remove (this.combo_box_wrapper); - this.combo_box_wrapper.Remove (this.combo_box); - } - - this.combo_box_wrapper = new HBox (false, 0); - this.combo_box = new ComboBox (); - - CellRendererText cell = new CellRendererText(); - this.combo_box.PackStart (cell, false); - this.combo_box.AddAttribute (cell, "text", 0); - - ListStore store = new ListStore (typeof (string)); - - store.AppendValues ("Summary"); - store.AppendValues ("---"); - - this.combo_box.Model = store; - this.combo_box.Active = 0; - - int row = 2; - foreach (string folder in folders) { - store.AppendValues (folder); - - if (folder.Equals (Controller.SelectedFolder)) - this.combo_box.Active = row; - - row++; - } - - this.combo_box.RowSeparatorFunc = delegate (ITreeModel model, TreeIter iter) { - string item = (string) this.combo_box.Model.GetValue (iter, 0); - return (item == "---"); - }; - - this.combo_box.Changed += delegate { - TreeIter iter; - this.combo_box.GetActiveIter (out iter); - string selection = (string) this.combo_box.Model.GetValue (iter, 0); - TreePath path = this.combo_box.Model.GetPath (iter); - - if (path.Indices [0] == 0) - Controller.SelectedFolder = null; - else - Controller.SelectedFolder = selection; - }; - - this.combo_box_wrapper.Add (this.combo_box); - this.combo_box.GrabFocus (); - - this.layout_horizontal.BorderWidth = 6; - this.layout_horizontal.PackStart (this.combo_box_wrapper, false, false, 0); - this.layout_horizontal.ShowAll (); - } public void UpdateContent (string html) { - string pixmaps_path = new string [] {SparkleUI.AssetsPath, "pixmaps"}.Combine (); - string icons_path = new string [] {SparkleUI.AssetsPath, "icons", "hicolor", "12x12", "status"}.Combine (); + string pixmaps_path = IO.Path.Combine (UserInterface.AssetsPath, "pixmaps"); + string icons_path = IO.Path.Combine (UserInterface.AssetsPath, "icons", "hicolor", "12x12", "status"); 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 -->", SparkleUIHelpers.RGBAToHex (StyleContext.GetColor (StateFlags.Normal))); - html = html.Replace ("<!-- $body-background-color -->", - SparkleUIHelpers.RGBAToHex (new TreeView ().StyleContext.GetBackgroundColor (StateFlags.Normal))); + 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 ("<!-- $day-entry-header-font-size -->", (StyleContext.GetFont (StateFlags.Normal).Size / 1024 + 3) + "px"); html = html.Replace ("<!-- $day-entry-header-background-color -->", - SparkleUIHelpers.RGBAToHex (StyleContext.GetBackgroundColor (StateFlags.Normal))); + UserInterfaceHelpers.RGBAToHex (StyleContext.GetBackgroundColor (StateFlags.Normal))); - html = html.Replace ("<!-- $secondary-font-color -->", SparkleUIHelpers.RGBAToHex (StyleContext.GetColor (StateFlags.Insensitive))); + html = html.Replace ("<!-- $secondary-font-color -->", UserInterfaceHelpers.RGBAToHex (StyleContext.GetColor (StateFlags.Insensitive))); - html = html.Replace ("<!-- $small-color -->", SparkleUIHelpers.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://" + new string [] {icons_path, "document-added.png"}.Combine ()); - html = html.Replace ("<!-- $document-edited-background-image -->", "file://" + new string [] {icons_path, "document-edited.png"}.Combine ()); - html = html.Replace ("<!-- $document-deleted-background-image -->", "file://" + new string [] {icons_path, "document-deleted.png"}.Combine ()); - html = html.Replace ("<!-- $document-moved-background-image -->", "file://" + new string [] {icons_path, "document-moved.png"}.Combine ()); + 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.web_view); + this.scrolled_window.Remove (this.scrolled_window.Child); this.web_view.Dispose (); - this.web_view = new WebView () { Editable = false }; - this.web_view.LoadString (html, "text/html", "UTF-8", "file://"); - this.web_view.NavigationRequested += WebViewNavigationRequested; + 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 () + { + var web_view = new SparkleWebView { Editable = false }; + web_view.Settings.EnablePlugins = false; + + web_view.LinkClicked += Controller.LinkClicked; + + return web_view; + } - private void WebViewNavigationRequested (object o, WebKit.NavigationRequestedArgs args) { - Controller.LinkClicked (args.Request.Uri); - // Don't follow HREFs (as this would cause a page refresh) - if (!args.Request.Uri.Equals ("file:")) - args.RetVal = 1; + class SparkleWebView : WebView { + + public event LinkClickedHandler LinkClicked = delegate { }; + public delegate void LinkClickedHandler (string href); + + + protected override bool OnDecidePolicy (PolicyDecision decision, PolicyDecisionType decision_type) + { + if (decision_type != PolicyDecisionType.NavigationAction) { + decision.Use (); + return false; + } + + string uri = (decision as NavigationPolicyDecision).Request.Uri; + + if (uri.Equals ("file:///")) { + decision.Use (); + return false; + } + + LinkClicked (uri); + decision.Ignore (); + + return true; + } } } } - diff --git a/SparkleShare/Linux/Pixmaps/Makefile.am b/SparkleShare/Linux/Images/Makefile.am index 91e7038..ebbcebc 100755 --- a/SparkleShare/Linux/Pixmaps/Makefile.am +++ b/SparkleShare/Linux/Images/Makefile.am @@ -7,3 +7,4 @@ pixmapsdir = $(pkgdatadir)/pixmaps/ MAINTAINERCLEANFILES = \ Makefile.in + diff --git a/SparkleShare/Linux/Images/icons/Makefile.am b/SparkleShare/Linux/Images/icons/Makefile.am new file mode 100755 index 0000000..7fccd42 --- /dev/null +++ b/SparkleShare/Linux/Images/icons/Makefile.am @@ -0,0 +1,4 @@ +SUBDIRS = hicolor \ + ubuntu-mono-dark \ + ubuntu-mono-light + diff --git a/SparkleShare/Linux/Pixmaps/icons/Makefile.am b/SparkleShare/Linux/Images/icons/hicolor/Makefile.am index 9d4fca7..aa9e46e 100755..100644 --- a/SparkleShare/Linux/Pixmaps/icons/Makefile.am +++ b/SparkleShare/Linux/Images/icons/hicolor/Makefile.am @@ -1,33 +1,31 @@ -SUBDIRS = ubuntu-mono-dark \ - ubuntu-mono-light\ - gnome - theme = hicolor -system_themedir = $(datadir)/icons/$(theme) app_themedir = $(pkgdatadir)/icons/$(theme) +system_themedir = $(datadir)/icons/$(theme) system_theme_icons = \ - apps,sparkleshare-16.png \ - apps,sparkleshare-22.png \ - apps,sparkleshare-24.png \ - apps,sparkleshare-256.png \ - apps,sparkleshare-32.png \ - apps,sparkleshare-48.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 + 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,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)" \ @@ -46,3 +44,4 @@ uninstall-hook: MAINTAINERCLEANFILES = Makefile.in EXTRA_DIST = $(wildcard *.png *.svg) + diff --git a/SparkleShare/Linux/Pixmaps/icons/document-added-12.png b/SparkleShare/Linux/Images/icons/hicolor/document-added-12.png Binary files differindex 7c4c1bd..7c4c1bd 100755 --- a/SparkleShare/Linux/Pixmaps/icons/document-added-12.png +++ b/SparkleShare/Linux/Images/icons/hicolor/document-added-12.png diff --git a/SparkleShare/Linux/Pixmaps/icons/document-deleted-12.png b/SparkleShare/Linux/Images/icons/hicolor/document-deleted-12.png Binary files differindex 06f4291..06f4291 100755 --- a/SparkleShare/Linux/Pixmaps/icons/document-deleted-12.png +++ b/SparkleShare/Linux/Images/icons/hicolor/document-deleted-12.png diff --git a/SparkleShare/Linux/Pixmaps/icons/document-edited-12.png b/SparkleShare/Linux/Images/icons/hicolor/document-edited-12.png Binary files differindex c8b8f66..c8b8f66 100755 --- a/SparkleShare/Linux/Pixmaps/icons/document-edited-12.png +++ b/SparkleShare/Linux/Images/icons/hicolor/document-edited-12.png diff --git a/SparkleShare/Linux/Pixmaps/icons/document-moved-12.png b/SparkleShare/Linux/Images/icons/hicolor/document-moved-12.png Binary files differindex 9306514..9306514 100755 --- a/SparkleShare/Linux/Pixmaps/icons/document-moved-12.png +++ b/SparkleShare/Linux/Images/icons/hicolor/document-moved-12.png diff --git a/SparkleShare/Linux/Pixmaps/icons/list-point-16.png b/SparkleShare/Linux/Images/icons/hicolor/list-point-16.png Binary files differindex fa89d31..fa89d31 100755 --- a/SparkleShare/Linux/Pixmaps/icons/list-point-16.png +++ b/SparkleShare/Linux/Images/icons/hicolor/list-point-16.png diff --git a/SparkleShare/Linux/Images/icons/hicolor/org.sparkleshare.SparkleShare-16.png b/SparkleShare/Linux/Images/icons/hicolor/org.sparkleshare.SparkleShare-16.png Binary files differnew file mode 100644 index 0000000..da499b9 --- /dev/null +++ b/SparkleShare/Linux/Images/icons/hicolor/org.sparkleshare.SparkleShare-16.png diff --git a/SparkleShare/Linux/Images/icons/hicolor/org.sparkleshare.SparkleShare-22.png b/SparkleShare/Linux/Images/icons/hicolor/org.sparkleshare.SparkleShare-22.png Binary files differnew file mode 100644 index 0000000..a7445bd --- /dev/null +++ b/SparkleShare/Linux/Images/icons/hicolor/org.sparkleshare.SparkleShare-22.png diff --git a/SparkleShare/Linux/Images/icons/hicolor/org.sparkleshare.SparkleShare-24.png b/SparkleShare/Linux/Images/icons/hicolor/org.sparkleshare.SparkleShare-24.png Binary files differnew file mode 100644 index 0000000..7c57122 --- /dev/null +++ b/SparkleShare/Linux/Images/icons/hicolor/org.sparkleshare.SparkleShare-24.png diff --git a/SparkleShare/Linux/Images/icons/hicolor/org.sparkleshare.SparkleShare-256.png b/SparkleShare/Linux/Images/icons/hicolor/org.sparkleshare.SparkleShare-256.png Binary files differnew file mode 100755 index 0000000..b79a223 --- /dev/null +++ b/SparkleShare/Linux/Images/icons/hicolor/org.sparkleshare.SparkleShare-256.png diff --git a/SparkleShare/Linux/Images/icons/hicolor/org.sparkleshare.SparkleShare-32.png b/SparkleShare/Linux/Images/icons/hicolor/org.sparkleshare.SparkleShare-32.png Binary files differnew file mode 100644 index 0000000..7c57122 --- /dev/null +++ b/SparkleShare/Linux/Images/icons/hicolor/org.sparkleshare.SparkleShare-32.png diff --git a/SparkleShare/Linux/Images/icons/hicolor/org.sparkleshare.SparkleShare-48.png b/SparkleShare/Linux/Images/icons/hicolor/org.sparkleshare.SparkleShare-48.png Binary files differnew file mode 100644 index 0000000..ed5013f --- /dev/null +++ b/SparkleShare/Linux/Images/icons/hicolor/org.sparkleshare.SparkleShare-48.png diff --git a/SparkleShare/Linux/Images/icons/hicolor/org.sparkleshare.SparkleShare-512.png b/SparkleShare/Linux/Images/icons/hicolor/org.sparkleshare.SparkleShare-512.png Binary files differnew file mode 100644 index 0000000..7f100e7 --- /dev/null +++ b/SparkleShare/Linux/Images/icons/hicolor/org.sparkleshare.SparkleShare-512.png diff --git a/SparkleShare/Linux/Pixmaps/icons/gnome/sparkleshare-symbolic.svg b/SparkleShare/Linux/Images/icons/hicolor/org.sparkleshare.SparkleShare-symbolic.svg index cf8b194..cf8b194 100644 --- a/SparkleShare/Linux/Pixmaps/icons/gnome/sparkleshare-symbolic.svg +++ b/SparkleShare/Linux/Images/icons/hicolor/org.sparkleshare.SparkleShare-symbolic.svg diff --git a/SparkleShare/Linux/Pixmaps/icons/process-syncing-24.png b/SparkleShare/Linux/Images/icons/hicolor/process-syncing-24.png Binary files differindex 55b836b..55b836b 100644 --- a/SparkleShare/Linux/Pixmaps/icons/process-syncing-24.png +++ b/SparkleShare/Linux/Images/icons/hicolor/process-syncing-24.png diff --git a/SparkleShare/Linux/Pixmaps/icons/process-syncing-48.png b/SparkleShare/Linux/Images/icons/hicolor/process-syncing-48.png Binary files differindex 46aef6a..46aef6a 100644 --- a/SparkleShare/Linux/Pixmaps/icons/process-syncing-48.png +++ b/SparkleShare/Linux/Images/icons/hicolor/process-syncing-48.png diff --git a/SparkleShare/Linux/Pixmaps/icons/process-syncing-down-24.png b/SparkleShare/Linux/Images/icons/hicolor/process-syncing-down-24.png Binary files differindex 384e259..384e259 100644 --- a/SparkleShare/Linux/Pixmaps/icons/process-syncing-down-24.png +++ b/SparkleShare/Linux/Images/icons/hicolor/process-syncing-down-24.png diff --git a/SparkleShare/Linux/Pixmaps/icons/process-syncing-down-48.png b/SparkleShare/Linux/Images/icons/hicolor/process-syncing-down-48.png Binary files differindex 8edbea1..8edbea1 100644 --- a/SparkleShare/Linux/Pixmaps/icons/process-syncing-down-48.png +++ b/SparkleShare/Linux/Images/icons/hicolor/process-syncing-down-48.png diff --git a/SparkleShare/Linux/Images/icons/hicolor/process-syncing-error-24.png b/SparkleShare/Linux/Images/icons/hicolor/process-syncing-error-24.png Binary files differnew file mode 100755 index 0000000..be9137e --- /dev/null +++ b/SparkleShare/Linux/Images/icons/hicolor/process-syncing-error-24.png diff --git a/SparkleShare/Linux/Pixmaps/icons/process-syncing-error-48.png b/SparkleShare/Linux/Images/icons/hicolor/process-syncing-error-48.png Binary files differindex 95e6b5a..95e6b5a 100644 --- a/SparkleShare/Linux/Pixmaps/icons/process-syncing-error-48.png +++ b/SparkleShare/Linux/Images/icons/hicolor/process-syncing-error-48.png diff --git a/SparkleShare/Linux/Pixmaps/icons/process-syncing-up-24.png b/SparkleShare/Linux/Images/icons/hicolor/process-syncing-up-24.png Binary files differindex 955cd6c..955cd6c 100644 --- a/SparkleShare/Linux/Pixmaps/icons/process-syncing-up-24.png +++ b/SparkleShare/Linux/Images/icons/hicolor/process-syncing-up-24.png diff --git a/SparkleShare/Linux/Pixmaps/icons/process-syncing-up-48.png b/SparkleShare/Linux/Images/icons/hicolor/process-syncing-up-48.png Binary files differindex 95eeb03..95eeb03 100644 --- a/SparkleShare/Linux/Pixmaps/icons/process-syncing-up-48.png +++ b/SparkleShare/Linux/Images/icons/hicolor/process-syncing-up-48.png diff --git a/SparkleShare/Linux/Pixmaps/icons/process-working-22.png b/SparkleShare/Linux/Images/icons/hicolor/process-working-22.png Binary files differindex 1b90a03..1b90a03 100644 --- a/SparkleShare/Linux/Pixmaps/icons/process-working-22.png +++ b/SparkleShare/Linux/Images/icons/hicolor/process-working-22.png diff --git a/SparkleShare/Linux/Pixmaps/icons/ubuntu-mono-dark/Makefile.am b/SparkleShare/Linux/Images/icons/ubuntu-mono-dark/Makefile.am index 48bc9ee..42b3e74 100644 --- a/SparkleShare/Linux/Pixmaps/icons/ubuntu-mono-dark/Makefile.am +++ b/SparkleShare/Linux/Images/icons/ubuntu-mono-dark/Makefile.am @@ -23,3 +23,4 @@ uninstall-hook: MAINTAINERCLEANFILES = Makefile.in EXTRA_DIST = $(wildcard *.png *.svg) + diff --git a/SparkleShare/Linux/Pixmaps/icons/ubuntu-mono-dark/process-syncing-24.png b/SparkleShare/Linux/Images/icons/ubuntu-mono-dark/process-syncing-24.png Binary files differindex 3cb78b5..3cb78b5 100644 --- a/SparkleShare/Linux/Pixmaps/icons/ubuntu-mono-dark/process-syncing-24.png +++ b/SparkleShare/Linux/Images/icons/ubuntu-mono-dark/process-syncing-24.png diff --git a/SparkleShare/Linux/Pixmaps/icons/ubuntu-mono-dark/process-syncing-down-24.png b/SparkleShare/Linux/Images/icons/ubuntu-mono-dark/process-syncing-down-24.png Binary files differindex 6a00865..6a00865 100644 --- a/SparkleShare/Linux/Pixmaps/icons/ubuntu-mono-dark/process-syncing-down-24.png +++ b/SparkleShare/Linux/Images/icons/ubuntu-mono-dark/process-syncing-down-24.png diff --git a/SparkleShare/Linux/Pixmaps/icons/ubuntu-mono-dark/process-syncing-error-24.png b/SparkleShare/Linux/Images/icons/ubuntu-mono-dark/process-syncing-error-24.png Binary files differindex cfe5261..cfe5261 100644 --- a/SparkleShare/Linux/Pixmaps/icons/ubuntu-mono-dark/process-syncing-error-24.png +++ b/SparkleShare/Linux/Images/icons/ubuntu-mono-dark/process-syncing-error-24.png diff --git a/SparkleShare/Linux/Pixmaps/icons/ubuntu-mono-dark/process-syncing-idle-24.png b/SparkleShare/Linux/Images/icons/ubuntu-mono-dark/process-syncing-idle-24.png Binary files differindex 32da58b..32da58b 100644 --- a/SparkleShare/Linux/Pixmaps/icons/ubuntu-mono-dark/process-syncing-idle-24.png +++ b/SparkleShare/Linux/Images/icons/ubuntu-mono-dark/process-syncing-idle-24.png diff --git a/SparkleShare/Linux/Pixmaps/icons/ubuntu-mono-dark/process-syncing-up-24.png b/SparkleShare/Linux/Images/icons/ubuntu-mono-dark/process-syncing-up-24.png Binary files differindex 6f129a6..6f129a6 100644 --- a/SparkleShare/Linux/Pixmaps/icons/ubuntu-mono-dark/process-syncing-up-24.png +++ b/SparkleShare/Linux/Images/icons/ubuntu-mono-dark/process-syncing-up-24.png diff --git a/SparkleShare/Linux/Pixmaps/icons/ubuntu-mono-light/Makefile.am b/SparkleShare/Linux/Images/icons/ubuntu-mono-light/Makefile.am index a4e77c8..a4e77c8 100644 --- a/SparkleShare/Linux/Pixmaps/icons/ubuntu-mono-light/Makefile.am +++ b/SparkleShare/Linux/Images/icons/ubuntu-mono-light/Makefile.am diff --git a/SparkleShare/Linux/Pixmaps/icons/ubuntu-mono-light/process-syncing-24.png b/SparkleShare/Linux/Images/icons/ubuntu-mono-light/process-syncing-24.png Binary files differindex 59df796..59df796 100644 --- a/SparkleShare/Linux/Pixmaps/icons/ubuntu-mono-light/process-syncing-24.png +++ b/SparkleShare/Linux/Images/icons/ubuntu-mono-light/process-syncing-24.png diff --git a/SparkleShare/Linux/Pixmaps/icons/ubuntu-mono-light/process-syncing-down-24.png b/SparkleShare/Linux/Images/icons/ubuntu-mono-light/process-syncing-down-24.png Binary files differindex 141243b..141243b 100644 --- a/SparkleShare/Linux/Pixmaps/icons/ubuntu-mono-light/process-syncing-down-24.png +++ b/SparkleShare/Linux/Images/icons/ubuntu-mono-light/process-syncing-down-24.png diff --git a/SparkleShare/Linux/Pixmaps/icons/ubuntu-mono-light/process-syncing-error-24.png b/SparkleShare/Linux/Images/icons/ubuntu-mono-light/process-syncing-error-24.png Binary files differindex 1f2dab5..1f2dab5 100644 --- a/SparkleShare/Linux/Pixmaps/icons/ubuntu-mono-light/process-syncing-error-24.png +++ b/SparkleShare/Linux/Images/icons/ubuntu-mono-light/process-syncing-error-24.png diff --git a/SparkleShare/Linux/Pixmaps/icons/ubuntu-mono-light/process-syncing-idle-24.png b/SparkleShare/Linux/Images/icons/ubuntu-mono-light/process-syncing-idle-24.png Binary files differindex b0fa246..b0fa246 100644 --- a/SparkleShare/Linux/Pixmaps/icons/ubuntu-mono-light/process-syncing-idle-24.png +++ b/SparkleShare/Linux/Images/icons/ubuntu-mono-light/process-syncing-idle-24.png diff --git a/SparkleShare/Linux/Pixmaps/icons/ubuntu-mono-light/process-syncing-up-24.png b/SparkleShare/Linux/Images/icons/ubuntu-mono-light/process-syncing-up-24.png Binary files differindex 79d5084..79d5084 100644 --- a/SparkleShare/Linux/Pixmaps/icons/ubuntu-mono-light/process-syncing-up-24.png +++ b/SparkleShare/Linux/Images/icons/ubuntu-mono-light/process-syncing-up-24.png diff --git a/SparkleShare/Linux/Pixmaps/tutorial-slide-3.png b/SparkleShare/Linux/Images/tutorial-slide-3.png Binary files differindex f3206ee..f3206ee 100755 --- a/SparkleShare/Linux/Pixmaps/tutorial-slide-3.png +++ b/SparkleShare/Linux/Images/tutorial-slide-3.png diff --git a/SparkleShare/Linux/Makefile.am b/SparkleShare/Linux/Makefile.am index b54a392..f56def6 100644 --- a/SparkleShare/Linux/Makefile.am +++ b/SparkleShare/Linux/Makefile.am @@ -1,4 +1,4 @@ -SUBDIRS = Pixmaps +SUBDIRS = Images ASSEMBLY = SparkleShare TARGET = exe @@ -6,42 +6,41 @@ TARGET = exe LINK = $(REF_SPARKLESHARE) $(NOTIFY_SHARP_LIBS) $(WEBKITGTK_SHARP_LIBS) if HAVE_APP_INDICATOR -BUILD_DEFINES="-define:HAVE_APP_INDICATOR" +BUILD_DEFINES = "-define:HAVE_APP_INDICATOR" endif SOURCES = \ - ../Program.cs \ - ../SparkleAboutController.cs \ - ../SparkleAvatars.cs \ - ../SparkleBubblesController.cs \ - ../SparkleControllerBase.cs \ - ../SparkleEventLogController.cs \ - ../SparkleExtensions.cs \ - ../SparkleInvite.cs \ - ../SparkleKeys.cs \ - ../SparkleNoteController.cs \ - ../SparklePlugin.cs \ - ../SparkleSetupController.cs \ - ../SparkleStatusIconController.cs \ - SparkleAbout.cs \ - SparkleBubbles.cs \ - SparkleController.cs \ - SparkleEventLog.cs \ - SparkleNote.cs \ - SparkleSetup.cs \ - SparkleSetupWindow.cs \ - SparkleStatusIcon.cs \ - SparkleUI.cs \ - SparkleUIHelpers.cs + ../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 = sparkleshare.desktop \ - sparkleshare-invite-opener.desktop +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 || : + diff --git a/SparkleShare/Linux/SparkleNote.cs b/SparkleShare/Linux/Note.cs index 410998b..e4ccd29 100755..100644 --- a/SparkleShare/Linux/SparkleNote.cs +++ b/SparkleShare/Linux/Note.cs @@ -1,5 +1,5 @@ // SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons (hylkebons@gmail.com) +// Copyright (C) 2010 Hylke Bons (hi@planetpeanut.uk) // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -15,23 +15,22 @@ // along with this program. If not, see (http://www.gnu.org/licenses/). -using System; using Gtk; namespace SparkleShare { - public class SparkleNote : Window { + public class Note : Window { - public SparkleNoteController Controller = new SparkleNoteController (); + public NoteController Controller = new NoteController (); - public SparkleNote () : base ("Add Note") + public Note () : base ("Add Note") { SetWmclass ("SparkleShare", "SparkleShare"); - IconName = "sparkleshare"; + IconName = "org.sparkleshare.SparkleShare"; Resizable = false; - WindowPosition = WindowPosition.Center; + WindowPosition = WindowPosition.CenterAlways; BorderWidth = 16; SetSizeRequest (480, 120); @@ -72,10 +71,10 @@ namespace SparkleShare { private void CreateNote () { - Image user_image = new Image (Controller.AvatarFilePath); + var user_image = new Image (Controller.AvatarFilePath); /* TODO: Style the entry neatly, multiple lines, and add placeholder text - string balloon_image_path = new string [] { SparkleUI.AssetsPath, "pixmaps", "text-balloon.png" }.Combine (); + string balloon_image_path = new string [] { UserInterface.AssetsPath, "pixmaps", "text-balloon.png" }.Combine (); Image balloon_image = new Image (balloon_image_path); CssProvider balloon_css_provider = new CssProvider (); @@ -88,32 +87,33 @@ namespace SparkleShare { balloon.StyleContext.AddProvider (balloon_css_provider, 800); */ - Label balloon_label = new Label ("<b>Anything to add?</b>") { + var balloon_label = new Label ("<b>Anything to add?</b>") { Xalign = 0, UseMarkup = true }; - Entry balloon = new Entry () { MaxLength = 144 }; + var balloon = new Entry { MaxLength = 144 }; - Button cancel_button = new Button ("Cancel"); - Button sync_button = new Button ("Sync"); // TODO: Make default button + var cancel_button = new Button ("Cancel"); + var sync_button = new Button ("Sync"); // TODO: Make default button + sync_button.CanDefault = true; cancel_button.Clicked += delegate { Controller.CancelClicked (); }; sync_button.Clicked += delegate { Controller.SyncClicked (balloon.Buffer.Text); }; - VBox layout_vertical = new VBox (false, 16); - HBox layout_horizontal = new HBox (false, 16); + var layout_vertical = new VBox (false, 16); + var layout_horizontal = new HBox (false, 16); - HBox buttons = new HBox () { + var buttons = new HBox { Homogeneous = false, Spacing = 6 }; - Label user_label = new Label () { - Markup = "<b>" + Program.Controller.CurrentUser.Name + "</b>\n" + - "<span fgcolor=\"" + Program.UI.SecondaryTextColor + "\">" + Program.Controller.CurrentUser.Email + + var user_label = new Label { + Markup = "<b>" + SparkleShare.Controller.CurrentUser.Name + "</b>\n" + + "<span fgcolor=\"" + SparkleShare.UI.SecondaryTextColor + "\">" + SparkleShare.Controller.CurrentUser.Email + "</span>" }; @@ -130,8 +130,6 @@ namespace SparkleShare { layout_vertical.PackStart (balloon, false, false, 0); layout_vertical.PackStart (buttons, false, false, 0); - // FIXME: Doesn't work - CanDefault = true; Default = sync_button; Add (layout_vertical); diff --git a/SparkleShare/Linux/Pixmaps/icons/gnome/Makefile.am b/SparkleShare/Linux/Pixmaps/icons/gnome/Makefile.am deleted file mode 100644 index 89edffb..0000000 --- a/SparkleShare/Linux/Pixmaps/icons/gnome/Makefile.am +++ /dev/null @@ -1,20 +0,0 @@ -gnome_theme = gnome -gnome_themedir = /usr/share/icons/$(gnome_theme) - -gnome_theme_icons = apps,sparkleshare-symbolic.svg - -install_icon_exec = $(top_srcdir)/build/icon-theme-installer \ - -t "$(gnome_theme)" \ - -s "$(srcdir)" \ - -d "x$(DESTDIR)" \ - -m "$(mkinstalldirs)" \ - -x "$(INSTALL_DATA)" - -install-data-local: - @-$(install_icon_exec) -i -b "$(gnome_themedir)" $(gnome_theme_icons) - -uninstall-hook: - @-$(install_icon_exec) -u -b "$(gnome_themedir)" $(gnome_theme_icons) - -MAINTAINERCLEANFILES = Makefile.in -EXTRA_DIST = $(wildcard *.png *.svg) diff --git a/SparkleShare/Linux/Pixmaps/icons/process-syncing-error-24.png b/SparkleShare/Linux/Pixmaps/icons/process-syncing-error-24.png Binary files differdeleted file mode 100755 index 6e54ce4..0000000 --- a/SparkleShare/Linux/Pixmaps/icons/process-syncing-error-24.png +++ /dev/null diff --git a/SparkleShare/Linux/Pixmaps/icons/sparkleshare-16.png b/SparkleShare/Linux/Pixmaps/icons/sparkleshare-16.png Binary files differdeleted file mode 100755 index b344e26..0000000 --- a/SparkleShare/Linux/Pixmaps/icons/sparkleshare-16.png +++ /dev/null diff --git a/SparkleShare/Linux/Pixmaps/icons/sparkleshare-22.png b/SparkleShare/Linux/Pixmaps/icons/sparkleshare-22.png Binary files differdeleted file mode 100755 index a8264ed..0000000 --- a/SparkleShare/Linux/Pixmaps/icons/sparkleshare-22.png +++ /dev/null diff --git a/SparkleShare/Linux/Pixmaps/icons/sparkleshare-24.png b/SparkleShare/Linux/Pixmaps/icons/sparkleshare-24.png Binary files differdeleted file mode 100755 index b8d8c34..0000000 --- a/SparkleShare/Linux/Pixmaps/icons/sparkleshare-24.png +++ /dev/null diff --git a/SparkleShare/Linux/Pixmaps/icons/sparkleshare-256.png b/SparkleShare/Linux/Pixmaps/icons/sparkleshare-256.png Binary files differdeleted file mode 100755 index 5f400dc..0000000 --- a/SparkleShare/Linux/Pixmaps/icons/sparkleshare-256.png +++ /dev/null diff --git a/SparkleShare/Linux/Pixmaps/icons/sparkleshare-32.png b/SparkleShare/Linux/Pixmaps/icons/sparkleshare-32.png Binary files differdeleted file mode 100755 index 9280fd8..0000000 --- a/SparkleShare/Linux/Pixmaps/icons/sparkleshare-32.png +++ /dev/null diff --git a/SparkleShare/Linux/Pixmaps/icons/sparkleshare-48.png b/SparkleShare/Linux/Pixmaps/icons/sparkleshare-48.png Binary files differdeleted file mode 100755 index 28a3d41..0000000 --- a/SparkleShare/Linux/Pixmaps/icons/sparkleshare-48.png +++ /dev/null diff --git a/SparkleShare/Linux/README.md b/SparkleShare/Linux/README.md index f98459c..197fec0 100644 --- a/SparkleShare/Linux/README.md +++ b/SparkleShare/Linux/README.md @@ -1,46 +1,56 @@ -## Building on Linux distributions +# SparkleShare for Linux -You can choose to build SparkleShare from source or to get the package through your distribution's repositories. -To run SparkleShare, you'll need the following packages: - -**Note:** Git 1.9 changed the way local projects without a history are handled, and may cause protocol errors. Until a solution is found, it's recommended to use Git 1.8. +To run SparkleShare, you'll need these packages: ``` -git 1.8.x +curl +git >= 2.3 +git-lfs >= 1.3.0 gtk-sharp3 -mono-core >= 2.8 +gvfs +mono-core >= 4.0 notify-sharp -webkitgtk-sharp +webkit2gtk-sharp ``` -**Note:** These packages may not overlap with the packages required to perform a build, so please make sure that at least the above packages are installed. - -Optional packages: +On Ubuntu you'll also need: ``` -gvfs (to change file/folder icons) -libappindicator (for Ubuntu integration) -curl (to make the "sparkleshare://" protocol handler work) +libappindicator-sharp ``` -### Installing common build requirements +## 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: -``` -desktop-file-utils -intltool -libtool -mono-devel -mono-gmcs -mono-mcs -monodevelop -nant +```shell +# On Ubuntu 16.04: +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 \ + libsoup2.4-dev \ + libtool-bin \ + libwebkit2gtk-4.0 \ + mono-devel \ + mono-mcs \ + nant \ + xsltproc + +# On Fedora 25: +sudo dnf install # TODO ``` -### Installing additional source build requirements +### Additional source build requirements Install the `gtk-sharp3` bindings from: https://github.com/mono/gtk-sharp @@ -50,24 +60,23 @@ 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 `webkitgtk-sharp` bindings from: -https://github.com/xDarkice/soup-sharp -https://github.com/xDarkice/webkitgtk-sharp +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: -``` +```bash ./autogen.sh make sudo make install ``` If you're using Ubuntu, also install the `appindicator-sharp` bindings from: -https://github.com/xDarkice/appindicator-sharp +https://github.com/hbons/appindicator-sharp - -### Starting the build +### Start the build You can build and install SparkleShare like this: @@ -78,16 +87,17 @@ $ sudo make install ``` -### Resetting SparkleShare settings +### Uninstall -``` -rm -Rf ~/SparkleShare -rm -Rf ~/.config/sparkleshare +```bash +sudo make uninstall ``` -### Uninstalling +### Reset SparkleShare settings +```bash +rm -Rf ~/SparkleShare +rm -Rf ~/.config/org.sparkleshare.SparkleShare ``` -sudo make uninstall -``` + diff --git a/SparkleShare/Linux/SparkleSetup.cs b/SparkleShare/Linux/Setup.cs index ad698c4..dd1aa4e 100755 --- a/SparkleShare/Linux/SparkleSetup.cs +++ b/SparkleShare/Linux/Setup.cs @@ -1,5 +1,5 @@ // SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com> +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General private License as published by @@ -20,14 +20,16 @@ using System; using Gtk; using Mono.Unix; +using Sparkles; + namespace SparkleShare { - public class SparkleSetup : SparkleSetupWindow { + public class Setup : SetupWindow { - public SparkleSetupController Controller = new SparkleSetupController (); + public SetupController Controller = new SetupController (); - public SparkleSetup () : base () + public Setup () { Controller.HideWindowEvent += delegate { Application.Invoke (delegate { Hide (); }); @@ -61,7 +63,7 @@ namespace SparkleShare { ColumnSpacing = 6 }; - Label name_label = new Label ("<b>" + "Full Name:" + "</b>") { + Label name_label = new Label ("<b>" + "Your Name:" + "</b>") { UseMarkup = true, Xalign = 1 }; @@ -71,11 +73,11 @@ namespace SparkleShare { ActivatesDefault = true }; - try { + try { UnixUserInfo user_info = UnixUserInfo.GetRealUser (); if (user_info != null && user_info.RealName != null) - // Some systems append a series of "," for some reason + // Some systems append a series of "," for some reason, TODO: Report upstream name_entry.Text = user_info.RealName.TrimEnd (",".ToCharArray ()); } catch (ArgumentException) { @@ -137,9 +139,14 @@ namespace SparkleShare { VBox layout_address = new VBox (true, 0); VBox layout_path = new VBox (true, 0); - ListStore store = new ListStore (typeof (string), typeof (Gdk.Pixbuf), typeof (string), typeof (SparklePlugin)); + ListStore store = new ListStore (typeof (string), typeof (Gdk.Pixbuf), typeof (string), typeof (Preset)); + + SparkleTreeView tree_view = new SparkleTreeView (store) { + HeadersVisible = false, + SearchColumn = -1, + EnableSearch = false + }; - SparkleTreeView tree_view = new SparkleTreeView (store) { HeadersVisible = false }; ScrolledWindow scrolled_window = new ScrolledWindow () { ShadowType = ShadowType.In }; scrolled_window.SetPolicy (PolicyType.Never, PolicyType.Automatic); @@ -157,11 +164,11 @@ namespace SparkleShare { service_column.PackStart (service_cell, true); service_column.SetCellDataFunc (service_cell, new TreeCellDataFunc (RenderServiceColumn)); - foreach (SparklePlugin plugin in Controller.Plugins) { - store.AppendValues ("", new Gdk.Pixbuf (plugin.ImagePath), - "<span size=\"small\"><b>" + plugin.Name + "</b>\n" + - "<span fgcolor=\"" + Program.UI.SecondaryTextColor + "\">" + plugin.Description + "</span>" + - "</span>", plugin); + 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>", preset); } tree_view.AppendColumn (service_column); @@ -169,33 +176,37 @@ namespace SparkleShare { Entry address_entry = new Entry () { Text = Controller.PreviousAddress, - Sensitive = (Controller.SelectedPlugin.Address == null), + Sensitive = (Controller.SelectedPreset.Address == null), ActivatesDefault = true }; Entry path_entry = new Entry () { Text = Controller.PreviousPath, - Sensitive = (Controller.SelectedPlugin.Path == null), + Sensitive = (Controller.SelectedPreset.Path == null), ActivatesDefault = true }; - + + tree_view.ButtonReleaseEvent += delegate { + path_entry.GrabFocus (); + }; + Label address_example = new Label () { Xalign = 0, UseMarkup = true, Markup = "<span size=\"small\" fgcolor=\"" + - Program.UI.SecondaryTextColor + "\">" + Controller.SelectedPlugin.AddressExample + "</span>" + SparkleShare.UI.SecondaryTextColor + "\">" + Controller.SelectedPreset.AddressExample + "</span>" }; Label path_example = new Label () { Xalign = 0, UseMarkup = true, Markup = "<span size=\"small\" fgcolor=\"" + - Program.UI.SecondaryTextColor + "\">" + Controller.SelectedPlugin.PathExample + "</span>" + SparkleShare.UI.SecondaryTextColor + "\">" + Controller.SelectedPreset.PathExample + "</span>" }; TreeSelection default_selection = tree_view.Selection; - TreePath default_path = new TreePath ("" + Controller.SelectedPluginIndex); + TreePath default_path = new TreePath ("" + Controller.SelectedPresetIndex); default_selection.SelectPath (default_path); tree_view.Model.Foreach (new TreeModelForeachFunc ( @@ -203,7 +214,7 @@ namespace SparkleShare { string address; try { - address = (model.GetValue (iter, 2) as SparklePlugin).Address; + address = (model.GetValue (iter, 2) as Preset).Address; } catch (NullReferenceException) { address = ""; @@ -213,12 +224,12 @@ namespace SparkleShare { address.Equals (Controller.PreviousAddress)) { tree_view.SetCursor (path, service_column, false); - SparklePlugin plugin = (SparklePlugin) model.GetValue (iter, 2); + Preset preset = (Preset) model.GetValue (iter, 2); - if (plugin.Address != null) + if (preset.Address != null) address_entry.Sensitive = false; - if (plugin.Path != null) + if (preset.Path != null) path_entry.Sensitive = false; return true; @@ -252,11 +263,10 @@ namespace SparkleShare { layout_fields.PackStart (layout_address, true, true, 0); layout_fields.PackStart (layout_path, true, true, 0); - layout_vertical.PackStart (new Label (""), false, false, 0); layout_vertical.PackStart (scrolled_window, true, true, 0); layout_vertical.PackStart (layout_fields, false, false, 0); - tree_view.ScrollToCell (new TreePath ("" + Controller.SelectedPluginIndex), null, true, 0, 0); + tree_view.ScrollToCell (new TreePath ("" + Controller.SelectedPresetIndex), null, true, 0, 0); Add (layout_vertical); @@ -280,7 +290,7 @@ namespace SparkleShare { address_entry.Text = text; address_entry.Sensitive = (state == FieldState.Enabled); address_example.Markup = "<span size=\"small\" fgcolor=\"" + - Program.UI.SecondaryTextColor + "\">" + example_text + "</span>"; + SparkleShare.UI.SecondaryTextColor + "\">" + example_text + "</span>"; }); }; @@ -291,7 +301,7 @@ namespace SparkleShare { path_entry.Text = text; path_entry.Sensitive = (state == FieldState.Enabled); path_example.Markup = "<span size=\"small\" fgcolor=\"" - + Program.UI.SecondaryTextColor + "\">" + example_text + "</span>"; + + SparkleShare.UI.SecondaryTextColor + "\">" + example_text + "</span>"; }); }; @@ -301,7 +311,7 @@ namespace SparkleShare { tree_view.CursorChanged += delegate (object sender, EventArgs e) { - Controller.SelectedPluginChanged (tree_view.SelectedRow); + Controller.SelectedPresetChanged (tree_view.SelectedRow); }; address_entry.Changed += delegate { @@ -312,7 +322,7 @@ namespace SparkleShare { add_button.Clicked += delegate { Controller.AddPageCompleted (address_entry.Text, path_entry.Text); }; - CheckButton check_button = new CheckButton ("Fetch prior revisions") { Active = true }; + CheckButton check_button = new CheckButton ("Fetch prior revisions") { Active = false }; check_button.Toggled += delegate { Controller.HistoryItemChanged (check_button.Active); }; AddOption (check_button); @@ -405,9 +415,9 @@ namespace SparkleShare { Header = "Oops! Something went wrong" + "…"; VBox points = new VBox (false, 0); - Image list_point_one = new Image (SparkleUIHelpers.GetIcon ("list-point", 16)); - Image list_point_two = new Image (SparkleUIHelpers.GetIcon ("list-point", 16)); - Image list_point_three = new Image (SparkleUIHelpers.GetIcon ("list-point", 16)); + Image list_point_one = new Image (UserInterfaceHelpers.GetIcon ("list-point", 16)); + Image list_point_two = new Image (UserInterfaceHelpers.GetIcon ("list-point", 16)); + Image list_point_three = new Image (UserInterfaceHelpers.GetIcon ("list-point", 16)); Label label_one = new Label () { Markup = "<b>" + Controller.PreviousUrl + "</b> is the address we’ve compiled. " + @@ -455,7 +465,7 @@ namespace SparkleShare { points.PackStart (new Label (""), true, true, 0); Button cancel_button = new Button ("Cancel"); - Button try_again_button = new Button ("Try Again…") { Sensitive = true }; + Button try_again_button = new Button ("Retry") { Sensitive = true }; cancel_button.Clicked += delegate { Controller.PageCancelled (); }; @@ -467,13 +477,63 @@ namespace SparkleShare { Add (points); } + if (type == PageType.StorageSetup) { + Header = string.Format ("Storage type for ‘{0}’", Controller.SyncingFolder); + Description = "What type of storage would you like to use?"; + + VBox layout_vertical = new VBox (false, 0); + VBox layout_radio_buttons = new VBox (false, 0) { BorderWidth = 12 }; + + foreach (StorageTypeInfo storage_type in SparkleShare.Controller.FetcherAvailableStorageTypes) { + RadioButton radio_button = new RadioButton (null, + storage_type.Name + "\n" + storage_type.Description); + + (radio_button.Child as Label).Markup = string.Format( + "<b>{0}</b>\n<span fgcolor=\"{1}\">{2}</span>", + storage_type.Name, SparkleShare.UI.SecondaryTextColor, storage_type.Description); + + (radio_button.Child as Label).Xpad = 9; + + layout_radio_buttons.PackStart (radio_button, false, false, 9); + radio_button.Group = (layout_radio_buttons.Children [0] as RadioButton).Group; + } + + layout_vertical.PackStart (new Label (""), true, true, 0); + layout_vertical.PackStart (layout_radio_buttons, false, false, 0); + layout_vertical.PackStart (new Label (""), true, true, 0); + Add (layout_vertical); + + Button cancel_button = new Button ("Cancel"); + Button continue_button = new Button ("Continue"); + + continue_button.Clicked += delegate { + int checkbox_index= 0; + foreach (RadioButton radio_button in layout_radio_buttons.Children) { + if (radio_button.Active) { + StorageTypeInfo selected_storage_type = SparkleShare.Controller.FetcherAvailableStorageTypes [checkbox_index]; + Controller.StoragePageCompleted (selected_storage_type.Type); + return; + } + + checkbox_index++; + } + }; + + cancel_button.Clicked += delegate { + Controller.SyncingCancelled (); + }; + + AddButton (cancel_button); + AddButton (continue_button); + } + if (type == PageType.CryptoSetup || type == PageType.CryptoPassword) { if (type == PageType.CryptoSetup) { - Header = "Set up file encryption"; + Header = string.Format ("Encryption password for ‘{0}’", Controller.SyncingFolder); Description = "Please a provide a strong password that you don’t use elsewhere."; } else { - Header = "This project contains encrypted files"; + Header = string.Format ("‘{0}’ contains encrypted files", Controller.SyncingFolder); Description = "Please enter the password to see their contents."; } @@ -488,7 +548,7 @@ namespace SparkleShare { ActivatesDefault = true }; - CheckButton show_password_check_button = new CheckButton ("Show password") { + CheckButton show_password_check_button = new CheckButton ("Make visible") { Active = false, Xalign = 0, }; @@ -507,7 +567,7 @@ namespace SparkleShare { wrapper.PackStart (table, true, false, 0); Image warning_image = new Image ( - SparkleUIHelpers.GetIcon ("dialog-information", 24)); + UserInterfaceHelpers.GetIcon ("dialog-information", 24)); Label warning_label = new Label () { Xalign = 0, @@ -572,7 +632,7 @@ namespace SparkleShare { UrgencyHint = true; - Button show_files_button = new Button ("Show Files…"); + Button show_files_button = new Button ("Show Files"); Button finish_button = new Button ("Finish"); @@ -581,7 +641,7 @@ namespace SparkleShare { if (warnings.Length > 0) { - Image warning_image = new Image (SparkleUIHelpers.GetIcon ("dialog-information", 24)); + Image warning_image = new Image (UserInterfaceHelpers.GetIcon ("dialog-information", 24)); Label warning_label = new Label (warnings [0]) { Xalign = 0, @@ -604,96 +664,6 @@ namespace SparkleShare { AddButton (show_files_button); AddButton (finish_button); } - - if (type == PageType.Tutorial) { - switch (Controller.TutorialPageNumber) { - case 1: { - Header = "What’s happening next?"; - Description = "SparkleShare creates a special folder on your computer " + - "that will keep track of your projects."; - - Button skip_tutorial_button = new Button ("Skip Tutorial"); - Button continue_button = new Button ("Continue"); - - skip_tutorial_button.Clicked += delegate { Controller.TutorialSkipped (); }; - continue_button.Clicked += delegate { Controller.TutorialPageCompleted (); }; - - AddButton (skip_tutorial_button); - AddButton (continue_button); - - break; - } - - case 2: { - Header = "Sharing files with others"; - Description = "All files added to your project folders are synced automatically with " + - "the host and your team members."; - - Button continue_button = new Button ("Continue"); - continue_button.Clicked += delegate { Controller.TutorialPageCompleted (); }; - AddButton (continue_button); - - break; - } - - case 3: { - Header = "The status icon helps you"; - Description = "It shows the syncing progress, provides easy access to " + - "your projects, and lets you view recent changes."; - - Button continue_button = new Button ("Continue"); - continue_button.Clicked += delegate { Controller.TutorialPageCompleted (); }; - AddButton (continue_button); - - break; - } - - case 4: { - Header = "Here’s your unique Client ID"; - Description = "You’ll need it whenever you want to link this computer to a host. " + - "You can also find it in the status icon menu."; - - Button finish_button = new Button ("Finish"); - VBox layout_vertical = new VBox (false, 0) { BorderWidth = 48 }; - HBox layout_horizontal = new HBox (false, 6); - - Entry link_code_entry = new Entry () { - Text = Program.Controller.CurrentUser.PublicKey, - Sensitive = false - }; - - Button copy_button = new Button (" Copy "); - - CheckButton check_button = new CheckButton ("Add SparkleShare to startup items"); - check_button.Active = true; - - - copy_button.Clicked += delegate { Controller.CopyToClipboardClicked (); }; - check_button.Toggled += delegate { Controller.StartupItemChanged (check_button.Active); }; - finish_button.Clicked += delegate { Controller.TutorialPageCompleted (); }; - - - layout_horizontal.PackStart (link_code_entry, true, true, 0); - layout_horizontal.PackStart (copy_button, false, false, 0); - - layout_vertical.PackStart (new Label (""), true, true, 0); - layout_vertical.PackStart (layout_horizontal, false, false, 0); - layout_vertical.PackStart (new Label (""), true, true, 18); - - Add (layout_vertical); - - AddOption (check_button); - AddButton (finish_button); - - break; - } - } - - if (Controller.TutorialPageNumber < 4) { - Image slide = SparkleUIHelpers.GetImage ("tutorial-slide-" + Controller.TutorialPageNumber + ".png"); - Add (slide); - } - } } @@ -704,9 +674,9 @@ namespace SparkleShare { TreeSelection selection = (column.TreeView as TreeView).Selection; if (selection.IterIsSelected (iter)) - markup = markup.Replace (Program.UI.SecondaryTextColor, Program.UI.SecondaryTextColorSelected); + markup = markup.Replace (SparkleShare.UI.SecondaryTextColor, SparkleShare.UI.SecondaryTextColorSelected); else - markup = markup.Replace (Program.UI.SecondaryTextColorSelected, Program.UI.SecondaryTextColor); + markup = markup.Replace (SparkleShare.UI.SecondaryTextColorSelected, SparkleShare.UI.SecondaryTextColor); (cell as CellRendererText).Markup = markup; } diff --git a/SparkleShare/Linux/SparkleSetupWindow.cs b/SparkleShare/Linux/SetupWindow.cs index 77b69f8..7320788 100755..100644 --- a/SparkleShare/Linux/SparkleSetupWindow.cs +++ b/SparkleShare/Linux/SetupWindow.cs @@ -1,5 +1,5 @@ // SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com> +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -20,7 +20,7 @@ using Gtk; namespace SparkleShare { - public class SparkleSetupWindow : Window { + public class SetupWindow : Window { private EventBox content_area; private EventBox option_area; @@ -30,45 +30,37 @@ namespace SparkleShare { public string Description; - public SparkleSetupWindow () : base ("SparkleShare Setup") + public SetupWindow () : base ("SparkleShare Setup") { SetWmclass ("SparkleShare", "SparkleShare"); - IconName = "sparkleshare"; + IconName = "org.sparkleshare.SparkleShare"; Resizable = false; - WindowPosition = WindowPosition.Center; + WindowPosition = WindowPosition.CenterAlways; Deletable = false; TypeHint = Gdk.WindowTypeHint.Dialog; - SetSizeRequest (680, 400); - + SetSizeRequest (400, 400); DeleteEvent += delegate (object sender, DeleteEventArgs args) { args.RetVal = true; }; - HBox layout_horizontal = new HBox (false, 0); - - VBox layout_vertical = new VBox (false, 0); - - this.content_area = new EventBox (); - this.option_area = new EventBox (); - - this.buttons = CreateButtonBox (); + VBox layout_vertical = new VBox (false, 16); + layout_vertical.BorderWidth = 16; - HBox layout_actions = new HBox (false , 48); + this.content_area = new EventBox (); + this.option_area = new EventBox (); - layout_actions.PackStart (this.option_area, true, true, 0); - layout_actions.PackStart (this.buttons, false, false, 0); + this.buttons = CreateButtonBox (); - layout_vertical.PackStart (this.content_area, true, true, 0); - layout_vertical.PackStart (layout_actions, false, false, 15); + HBox layout_actions = new HBox (false , 16); - Image side_splash = SparkleUIHelpers.GetImage ("side-splash.png"); - side_splash.Yalign = 1; + layout_actions.PackStart (this.option_area, true, true, 0); + layout_actions.PackStart (this.buttons, false, false, 0); - layout_horizontal.PackStart (side_splash, false, false, 0); - layout_horizontal.PackStart (layout_vertical, true, true, 30); + layout_vertical.PackStart (this.content_area, true, true, 0); + layout_vertical.PackStart (layout_actions, false, false, 0); - base.Add (layout_horizontal); + base.Add (layout_vertical); } @@ -97,14 +89,9 @@ namespace SparkleShare { new public void Add (Widget widget) { - Label header = new Label ("<span size='large'><b>" + Header + "</b></span>") { - UseMarkup = true, - Xalign = 0, - }; + Title = Header; VBox layout_vertical = new VBox (false, 0); - layout_vertical.PackStart (new Label (""), false, false, 6); - layout_vertical.PackStart (header, false, false, 0); if (!string.IsNullOrEmpty (Description)) { Label description = new Label (Description) { @@ -113,7 +100,7 @@ namespace SparkleShare { LineWrapMode = Pango.WrapMode.WordChar }; - layout_vertical.PackStart (description, false, false, 21); + layout_vertical.PackStart (description, false, false, 0); } if (widget != null) @@ -146,10 +133,12 @@ namespace SparkleShare { default_button.CanDefault = true; Default = default_button; + default_button.StyleContext.AddClass ("suggested-action"); } - + Present (); base.ShowAll (); } } } + diff --git a/SparkleShare/Linux/SparkleAbout.cs b/SparkleShare/Linux/SparkleAbout.cs deleted file mode 100755 index cc15b4d..0000000 --- a/SparkleShare/Linux/SparkleAbout.cs +++ /dev/null @@ -1,182 +0,0 @@ -// SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons (hylkebons@gmail.com) -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see (http://www.gnu.org/licenses/). - - -using System; -using Gtk; - -namespace SparkleShare { - - public class SparkleAbout : Window { - - public SparkleAboutController Controller = new SparkleAboutController (); - - private Label updates; - - - public SparkleAbout () : base ("About SparkleShare") - { - SetWmclass ("SparkleShare", "SparkleShare"); - - IconName = "sparkleshare"; - Resizable = false; - WindowPosition = WindowPosition.Center; - - SetSizeRequest (600, 260); - - - DeleteEvent += delegate (object o, DeleteEventArgs args) { - 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 (); - } - }; - - Controller.HideWindowEvent += delegate { - Application.Invoke (delegate { Hide (); }); - }; - - Controller.ShowWindowEvent += delegate { - Application.Invoke (delegate { - ShowAll (); - Present (); - }); - }; - - Controller.UpdateLabelEvent += delegate (string text) { - Application.Invoke (delegate { - this.updates.Text = text; - this.updates.ShowAll(); - }); - }; - - - CreateAbout (); - } - - - private void CreateAbout () - { - Gdk.RGBA white = new Gdk.RGBA (); - white.Parse ("#ffffff"); - - Gdk.RGBA highlight = new Gdk.RGBA (); - highlight.Parse ("#a8bbcf"); - - Pango.FontDescription font = StyleContext.GetFont (StateFlags.Normal); - font.Size = 9 * 1024; - - CssProvider css_provider = new CssProvider (); - string image_path = new string [] { SparkleUI.AssetsPath, "pixmaps", "about.png" }.Combine (); - - css_provider.LoadFromData ("GtkWindow {" + - "background-image: url('" + image_path + "');" + - "background-repeat: no-repeat;" + - "background-position: left bottom;" + - "}"); - - StyleContext.AddProvider (css_provider, 800); - - VBox layout_vertical = new VBox (false, 0); - HBox links_layout = new HBox (false, 16); - - - Label version = new Label () { - Text = "version " + Controller.RunningVersion, - Xalign = 0, Xpad = 0 - }; - - version.OverrideFont (font); - version.OverrideColor (StateFlags.Normal, white); - - - this.updates = new Label ("Checking for updates…") { - Xalign = 0, Xpad = 0 - }; - - this.updates.OverrideFont (font); - this.updates.OverrideColor (StateFlags.Normal, highlight); - - - Label copyright = new Label () { - Markup = string.Format ("Copyright © 2010–{0} Hylke Bons and others.", DateTime.Now.Year), - Xalign = 0, Xpad = 0 - }; - - copyright.OverrideFont (font); - copyright.OverrideColor (StateFlags.Normal, white); - - - TextView license = new TextView (); - TextBuffer license_buffer = license.Buffer; - license.WrapMode = WrapMode.Word; - license.Sensitive = false; - - license_buffer.Text = "SparkleShare is Open Source and you’re free to use, change, " + - "and share it under the GNU GPLv3."; - - license.OverrideBackgroundColor (StateFlags.Normal, new Gdk.RGBA () { Alpha = 0 }); - license.OverrideFont (font); - license.OverrideColor (StateFlags.Normal, white); - - - SparkleLink website_link = new SparkleLink ("Website", Controller.WebsiteLinkAddress); - SparkleLink credits_link = new SparkleLink ("Credits", Controller.CreditsLinkAddress); - SparkleLink report_problem_link = new SparkleLink ("Report a problem", Controller.ReportProblemLinkAddress); - SparkleLink debug_log_link = new SparkleLink ("Debug log", Controller.DebugLogLinkAddress); - - - layout_vertical.PackStart (new Label (""), true, true, 0); - layout_vertical.PackStart (version, false, false, 0); - layout_vertical.PackStart (this.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); - - links_layout.PackStart (website_link, false, false, 0); - links_layout.PackStart (credits_link, false, false, 0); - links_layout.PackStart (report_problem_link, false, false, 0); - links_layout.PackStart (debug_log_link, false, false, 0); - - HBox layout_horizontal = new HBox (false, 0); - layout_horizontal.PackStart (new Label (""), false, false, 149); - layout_horizontal.PackStart (layout_vertical, false, false, 0); - - Add (layout_horizontal); - } - } - - - public class SparkleLink : Label { - - public SparkleLink (string text, string url) - { - Markup = string.Format ("<a href=\"{0}\"><span fgcolor=\"#729fcf\">{1}</span></a>", url, text); - CanFocus = false; - - Pango.FontDescription font = StyleContext.GetFont (StateFlags.Normal); - font.Size = 9 * 1024; - - OverrideFont (font); - } - } -} diff --git a/SparkleShare/Linux/SparkleController.cs b/SparkleShare/Linux/SparkleController.cs deleted file mode 100755 index 3a68e39..0000000 --- a/SparkleShare/Linux/SparkleController.cs +++ /dev/null @@ -1,205 +0,0 @@ -// SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com> -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <http://www.gnu.org/licenses/>. - - -using System; -using System.Diagnostics; -using System.IO; - -using Gtk; -using Mono.Unix.Native; -using SparkleLib; - -namespace SparkleShare { - - public class SparkleController : SparkleControllerBase { - - public SparkleController () : base () - { - } - - - public override string PluginsPath { - get { - return new string [] { Defines.INSTALL_DIR, "plugins" }.Combine (); - } - } - - - // Creates a .desktop entry in autostart folder to - // start SparkleShare automatically at login - public override void CreateStartupItem () - { - string autostart_path = Path.Combine ( - Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData), "autostart"); - - string desktopfile_path = Path.Combine (autostart_path, "sparkleshare.desktop"); - - if (!Directory.Exists (autostart_path)) - Directory.CreateDirectory (autostart_path); - - if (!File.Exists (desktopfile_path)) { - try { - File.WriteAllText (desktopfile_path, - "[Desktop Entry]\n" + - "Type=Application\n" + - "Name=SparkleShare\n" + - "Exec=sparkleshare start\n" + - "Icon=folder-sparkleshare\n" + - "Terminal=false\n" + - "X-GNOME-Autostart-enabled=true\n" + - "Categories=Network"); - - SparkleLogger.LogInfo ("Controller", "Added SparkleShare to login items"); - - } catch (Exception e) { - SparkleLogger.LogInfo ("Controller", "Failed adding SparkleShare to login items: " + e.Message); - } - } - } - - - public override void InstallProtocolHandler () - { - // sparkleshare-invite-opener.desktop launches the handler on newer - // systems (like GNOME 3) that implement the last freedesktop.org specs. - // For GNOME 2 however we need to tell gconf about the protocol manually - - try { - // Add the handler to gconf... - Process process = new Process (); - process.StartInfo.FileName = "gconftool-2"; - process.StartInfo.Arguments = - "-s /desktop/gnome/url-handlers/sparkleshare/command 'sparkleshare open %s' --type String"; - - process.Start (); - process.WaitForExit (); - - // ...and enable it - process.StartInfo.Arguments = "-s /desktop/gnome/url-handlers/sparkleshare/enabled --type Boolean true"; - - process.Start (); - process.WaitForExit (); - - } catch { - // Pity... - } - } - - - // Adds the SparkleShare folder to the user's - // list of bookmarked places - public override void AddToBookmarks () - { - string bookmarks_file_path = Path.Combine (SparkleConfig.DefaultConfig.HomePath, ".gtk-bookmarks"); - string sparkleshare_bookmark = "file://" + FoldersPath + " SparkleShare"; - - if (File.Exists (bookmarks_file_path)) { - string bookmarks = File.ReadAllText (bookmarks_file_path); - - if (!bookmarks.Contains (sparkleshare_bookmark)) - File.AppendAllText (bookmarks_file_path, "file://" + FoldersPath + " SparkleShare"); - - } else { - File.WriteAllText (bookmarks_file_path, "file://" + FoldersPath + " SparkleShare"); - } - } - - - // Creates the SparkleShare folder in the user's home folder - public override bool CreateSparkleShareFolder () - { - bool folder_created = false; - - if (!Directory.Exists (SparkleConfig.DefaultConfig.FoldersPath)) { - Directory.CreateDirectory (SparkleConfig.DefaultConfig.FoldersPath); - Syscall.chmod (SparkleConfig.DefaultConfig.FoldersPath, (FilePermissions) 448); // 448 -> 700 - - SparkleLogger.LogInfo ("Controller", "Created '" + SparkleConfig.DefaultConfig.FoldersPath + "'"); - folder_created = true; - } - - string gvfs_command_path = new string [] { Path.VolumeSeparatorChar.ToString (), - "usr", "bin", "gvfs-set-attribute" }.Combine (); - - // Add a special icon to the SparkleShare folder - if (File.Exists (gvfs_command_path)) { - Process process = new Process (); - process.StartInfo.FileName = "gvfs-set-attribute"; - - // Give the SparkleShare folder an icon name, so that it scales - process.StartInfo.Arguments = SparkleConfig.DefaultConfig.FoldersPath + - " metadata::custom-icon-name 'sparkleshare'"; - - process.Start (); - process.WaitForExit (); - } - - return folder_created; - } - - - public override string EventLogHTML { - get { - string html_path = new string [] { Defines.INSTALL_DIR, "html", "event-log.html" }.Combine (); - string jquery_file_path = new string [] { Defines.INSTALL_DIR, "html", "jquery.js" }.Combine (); - - string html = File.ReadAllText (html_path); - string jquery = File.ReadAllText (jquery_file_path); - - return html.Replace ("<!-- $jquery -->", jquery); - } - } - - - public override string DayEntryHTML { - get { - string path = new string [] { Defines.INSTALL_DIR, "html", "day-entry.html" }.Combine (); - return File.ReadAllText (path); - } - } - - - public override string EventEntryHTML { - get { - string path = new string [] { Defines.INSTALL_DIR, "html", "event-entry.html" }.Combine (); - return File.ReadAllText (path); - } - } - - - public override void OpenFolder (string path) - { - OpenFile (path); - } - - - public override void OpenFile (string path) - { - Process process = new Process (); - process.StartInfo.FileName = "xdg-open"; - process.StartInfo.Arguments = "\"" + path + "\""; - process.Start (); - } - - - public override void CopyToClipboard (string text) - { - Clipboard clipboard = Clipboard.Get (Gdk.Atom.Intern ("CLIPBOARD", false)); - clipboard.Text = text; - } - } -} diff --git a/SparkleShare/Linux/SparkleShare.Autostart.desktop b/SparkleShare/Linux/SparkleShare.Autostart.desktop new file mode 100755 index 0000000..29ef7e0 --- /dev/null +++ b/SparkleShare/Linux/SparkleShare.Autostart.desktop @@ -0,0 +1,7 @@ +[Desktop Entry] +Name=SparkleShare +Type=Application +Exec=sh -c "type -P sparkleshare &>/dev/null && sparkleshare || flatpak run org.sparkleshare.SparkleShare" +Icon=org.sparkleshare.SparkleShare +Terminal=false +X-GNOME-Autostart-enabled=true diff --git a/SparkleShare/Linux/SparkleShare.Linux.csproj b/SparkleShare/Linux/SparkleShare.Linux.csproj new file mode 100644 index 0000000..3c048d4 --- /dev/null +++ b/SparkleShare/Linux/SparkleShare.Linux.csproj @@ -0,0 +1,173 @@ +<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>8.0.30703</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{5714D3CA-88A6-4330-A29D-4CA90D1D193C}</ProjectGuid>
+ <OutputType>Exe</OutputType>
+ <RootNamespace>SparkleShare.Linux</RootNamespace>
+ <AssemblyName>SparkleShare.Linux</AssemblyName>
+ <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+ <ReleaseVersion>
+ </ReleaseVersion>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug</OutputPath>
+ <DefineConstants>DEBUG;</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <ExternalConsole>true</ExternalConsole>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release</OutputPath>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <ExternalConsole>true</ExternalConsole>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseMac|AnyCPU' ">
+ <Optimize>true</Optimize>
+ <OutputPath>bin\ReleaseMac</OutputPath>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <ExternalConsole>true</ExternalConsole>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'DebugMac|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\DebugMac</OutputPath>
+ <DefineConstants>DEBUG;</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <ExternalConsole>true</ExternalConsole>
+ </PropertyGroup>
+ <ItemGroup>
+ <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" />
+ <Reference Include="glib-sharp, Version=3.0.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+ <Reference Include="gtk-sharp, Version=3.0.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+ <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" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\Sparkles\Git\Sparkles.Git.csproj">
+ <Project>{009FDCD7-1D57-4202-BB6D-8477D8C6B8EE}</Project>
+ <Name>Sparkles.Git</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\..\Sparkles\Sparkles.csproj">
+ <Project>{2C914413-B31C-4362-93C7-1AE34F09112A}</Project>
+ <Name>Sparkles</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <ItemGroup>
+ <Folder Include="Presets\" />
+ <Folder Include="UserInterface\" />
+ <Folder Include="UserInterface\" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="..\Common\HTML\day-entry.html">
+ <Link>HTML\day-entry.html</Link>
+ </None>
+ <None Include="..\Common\HTML\event-entry.html">
+ <Link>HTML\event-entry.html</Link>
+ </None>
+ <None Include="..\Common\HTML\event-log.html">
+ <Link>HTML\event-log.html</Link>
+ </None>
+ <None Include="..\Common\HTML\jquery.js">
+ <Link>HTML\jquery.js</Link>
+ </None>
+ <None Include="..\Common\Presets\bitbucket.png">
+ <Link>Presets\bitbucket.png</Link>
+ </None>
+ <None Include="..\Common\Presets\bitbucket.xml">
+ <Link>Presets\bitbucket.xml</Link>
+ </None>
+ <None Include="..\Common\Presets\bitbucket%402x.png">
+ <Link>Presets\bitbucket%402x.png</Link>
+ </None>
+ <None Include="..\Common\Presets\github.png">
+ <Link>Presets\github.png</Link>
+ </None>
+ <None Include="..\Common\Presets\github.xml">
+ <Link>Presets\github.xml</Link>
+ </None>
+ <None Include="..\Common\Presets\github%402x.png">
+ <Link>Presets\github%402x.png</Link>
+ </None>
+ <None Include="..\Common\Presets\gitlab.png">
+ <Link>Presets\gitlab.png</Link>
+ </None>
+ <None Include="..\Common\Presets\gitlab.xml">
+ <Link>Presets\gitlab.xml</Link>
+ </None>
+ <None Include="..\Common\Presets\gitlab%402x.png">
+ <Link>Presets\gitlab%402x.png</Link>
+ </None>
+ <None Include="..\Common\Presets\own-server.png">
+ <Link>Presets\own-server.png</Link>
+ </None>
+ <None Include="..\Common\Presets\own-server.xml">
+ <Link>Presets\own-server.xml</Link>
+ </None>
+ <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>
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Controller.cs" />
+ <Compile Include="About.cs">
+ <Link>UserInterface\About.cs</Link>
+ </Compile>
+ <Compile Include="Bubbles.cs">
+ <Link>UserInterface\Bubbles.cs</Link>
+ </Compile>
+ <Compile Include="Controller.cs">
+ <Link>UserInterface\Controller.cs</Link>
+ </Compile>
+ <Compile Include="EventLog.cs">
+ <Link>UserInterface\EventLog.cs</Link>
+ </Compile>
+ <Compile Include="Note.cs">
+ <Link>UserInterface\Note.cs</Link>
+ </Compile>
+ <Compile Include="Setup.cs">
+ <Link>UserInterface\Setup.cs</Link>
+ </Compile>
+ <Compile Include="SetupWindow.cs">
+ <Link>UserInterface\SetupWindow.cs</Link>
+ </Compile>
+ <Compile Include="StatusIcon.cs">
+ <Link>UserInterface\StatusIcon.cs</Link>
+ </Compile>
+ <Compile Include="UserInterface.cs">
+ <Link>UserInterface\UserInterface.cs</Link>
+ </Compile>
+ <Compile Include="UserInterfaceHelpers.cs">
+ <Link>UserInterface\UserInterfaceHelpers.cs</Link>
+ </Compile>
+ </ItemGroup>
+ <Import Project="..\Common\SparkleShare.projitems" Label="Shared" Condition="Exists('..\Common\SparkleShare.projitems')" />
+ <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+</Project>
\ No newline at end of file diff --git a/SparkleShare/Linux/SparkleUI.cs b/SparkleShare/Linux/SparkleUI.cs deleted file mode 100644 index 4c5b27b..0000000 --- a/SparkleShare/Linux/SparkleUI.cs +++ /dev/null @@ -1,99 +0,0 @@ -// SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com> -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <http://www.gnu.org/licenses/>. - - -using System; - -using GLib; -using Gtk; -using SparkleLib; - -namespace SparkleShare { - - public class SparkleUI { - - public static string AssetsPath = Defines.INSTALL_DIR; - - public SparkleStatusIcon StatusIcon; - public SparkleEventLog EventLog; - public SparkleBubbles Bubbles; - public SparkleSetup Setup; - public SparkleAbout About; - public SparkleNote Note; - - public readonly string SecondaryTextColor; - public readonly string SecondaryTextColorSelected; - - private Gtk.Application application; - - - public SparkleUI () - { - this.application = new Gtk.Application ("org.sparkleshare.sparkleshare", 0); - - this.application.Register (null); - this.application.Activated += ApplicationActivatedDelegate; - - Gdk.Color color = SparkleUIHelpers.RGBAToColor (new Label().StyleContext.GetColor (StateFlags.Insensitive)); - SecondaryTextColor = SparkleUIHelpers.ColorToHex (color); - - color = SparkleUIHelpers.MixColors ( - SparkleUIHelpers.RGBAToColor (new TreeView ().StyleContext.GetColor (StateFlags.Selected)), - SparkleUIHelpers.RGBAToColor (new TreeView ().StyleContext.GetBackgroundColor (StateFlags.Selected)), - 0.39); - - SecondaryTextColorSelected = SparkleUIHelpers.ColorToHex (color); - } - - - public void Run () - { - (this.application as GLib.Application).Run (null, null); - } - - - private void ApplicationActivatedDelegate (object sender, EventArgs args) - { - if (this.application.Windows.Length > 0) { - bool has_visible_windows = false; - - foreach (Window window in this.application.Windows) { - if (window.Visible) { - window.Present (); - has_visible_windows = true; - } - } - - if (!has_visible_windows) - Program.Controller.HandleReopen (); - - } else { - Setup = new SparkleSetup (); - EventLog = new SparkleEventLog (); - About = new SparkleAbout (); - Bubbles = new SparkleBubbles (); - StatusIcon = new SparkleStatusIcon (); - Note = new SparkleNote (); - - Setup.Application = this.application; - EventLog.Application = this.application; - About.Application = this.application; - - Program.Controller.UIHasLoaded (); - } - } - } -} diff --git a/SparkleShare/Linux/SparkleStatusIcon.cs b/SparkleShare/Linux/StatusIcon.cs index 1b7f2dd..c3384eb 100644 --- a/SparkleShare/Linux/SparkleStatusIcon.cs +++ b/SparkleShare/Linux/StatusIcon.cs @@ -1,5 +1,5 @@ // SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com> +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -17,54 +17,59 @@ using System; using System.Collections.Generic; +using System.IO; +using Sparkles; using Gtk; + #if HAVE_APP_INDICATOR using AppIndicator3; #endif namespace SparkleShare { - public class SparkleStatusIcon { + public class StatusIcon { + + public StatusIconController Controller = new StatusIconController (); - public SparkleStatusIconController Controller = new SparkleStatusIconController (); + Gtk.StatusIcon status_icon; - private Menu menu; - private MenuItem recent_events_item; - private MenuItem quit_item; - private MenuItem state_item; - private SparkleMenuItem [] state_menu_items; + Menu menu; + MenuItem recent_events_item; + MenuItem quit_item; + MenuItem state_item; + SparkleMenuItem [] state_menu_items; #if HAVE_APP_INDICATOR - private Indicator indicator; - #else - private StatusIcon status_icon; + Indicator indicator; #endif - public SparkleStatusIcon () + public StatusIcon () { - #if HAVE_APP_INDICATOR - this.indicator = new Indicator ("sparkleshare", "sparkleshare", (int) IndicatorCategory.ApplicationStatus); - this.indicator.IconName = "process-syncing-idle"; - this.indicator.Status = (int) IndicatorStatus.Active; - #else - this.status_icon = new StatusIcon (); - this.status_icon.IconName = "sparkleshare"; - - this.status_icon.Activate += ShowMenu; // Primary mouse button click - this.status_icon.PopupMenu += ShowMenu; // Secondary mouse button click - #endif + if (InstallationInfo.OperatingSystem == OS.Ubuntu) { + #if HAVE_APP_INDICATOR + indicator = new Indicator ("sparkleshare", "sparkleshare", (int) IndicatorCategory.ApplicationStatus) { + IconName = "process-syncing-idle", + Status = (int) IndicatorStatus.Active + }; + #endif + + } else { + this.status_icon = new Gtk.StatusIcon { IconName = "org.sparkleshare.SparkleShare" }; + this.status_icon.Activate += ShowMenu; // Primary mouse button click + this.status_icon.PopupMenu += ShowMenu; // Secondary mouse button click + } CreateMenu (); Controller.UpdateIconEvent += delegate (IconState state) { Application.Invoke (delegate { - #if HAVE_APP_INDICATOR - string icon_name = "process-syncing-idle"; - #else - string icon_name = "sparkleshare"; - #endif + string icon_name = "org.sparkleshare.SparkleShare"; + + if (InstallationInfo.OperatingSystem == OS.Ubuntu) { + icon_name = "process-syncing-idle"; + } if (state == IconState.SyncingUp) icon_name = "process-syncing-up"; @@ -75,15 +80,18 @@ namespace SparkleShare { else if (state == IconState.Error) icon_name = "process-syncing-error"; - #if HAVE_APP_INDICATOR - this.indicator.IconName = icon_name; + if (InstallationInfo.OperatingSystem == OS.Ubuntu) { + #if HAVE_APP_INDICATOR + indicator.IconName = icon_name; - // Force update of the status icon - this.indicator.Status = (int) IndicatorStatus.Attention; - this.indicator.Status = (int) IndicatorStatus.Active; - #else - this.status_icon.IconName = icon_name; - #endif + // Force update of the status icon + indicator.Status = (int) IndicatorStatus.Attention; + indicator.Status = (int) IndicatorStatus.Active; + #endif + + } else { + this.status_icon.IconName = icon_name; + } }); }; @@ -120,7 +128,7 @@ namespace SparkleShare { this.state_item = new MenuItem (Controller.StateText) { Sensitive = false }; ImageMenuItem folder_item = new SparkleMenuItem ("SparkleShare"); - folder_item.Image = new Image (SparkleUIHelpers.GetIcon ("sparkleshare", 16)); + folder_item.Image = new Image (UserInterfaceHelpers.GetIcon ("org.sparkleshare.SparkleShare", 16)); this.menu.Add (this.state_item); this.menu.Add (new SeparatorMenuItem ()); @@ -133,9 +141,7 @@ namespace SparkleShare { int i = 0; foreach (ProjectInfo project in Controller.Projects) { SparkleMenuItem item = new SparkleMenuItem (project.Name); - - Gdk.Pixbuf folder_icon; - folder_icon = IconTheme.Default.LoadIcon ("folder", 16, IconLookupFlags.GenericFallback); + Gdk.Pixbuf folder_icon = UserInterfaceHelpers.GetIcon ("folder", 16); item.Submenu = new Menu (); @@ -148,12 +154,10 @@ namespace SparkleShare { MenuItem resume_item; if (project.UnsyncedChangesInfo.Count > 0) { - string icons_path = new string [] { - SparkleUI.AssetsPath, "icons", "hicolor", "12x12", "status"}.Combine (); + string icons_path = Path.Combine (UserInterface.AssetsPath, "icons", "hicolor", "12x12", "status"); foreach (KeyValuePair<string, string> pair in project.UnsyncedChangesInfo) { - string icon_path = new string [] { - icons_path, pair.Value.Replace ("-12", "")}.Combine (); + string icon_path = Path.Combine (icons_path, pair.Value.Replace ("-12", "")); (item.Submenu as Menu).Add (new SparkleMenuItem (pair.Key) { Image = new Image (icon_path), @@ -181,7 +185,7 @@ namespace SparkleShare { if (Controller.Projects [i].HasError) { folder_icon = IconTheme.Default.LoadIcon ("dialog-warning", 16, IconLookupFlags.GenericFallback); - MenuItem try_again_item = new MenuItem ("Try Again"); + MenuItem try_again_item = new MenuItem ("Retry Sync"); try_again_item.Activated += Controller.TryAgainDelegate (project.Name); (item.Submenu as Menu).Add (try_again_item); @@ -200,37 +204,17 @@ namespace SparkleShare { }; } - this.recent_events_item = new MenuItem ("Recent Changes…"); + this.recent_events_item = new MenuItem ("History…"); this.recent_events_item.Sensitive = Controller.RecentEventsItemEnabled; this.quit_item = new MenuItem ("Quit") { Sensitive = Controller.QuitItemEnabled }; - MenuItem add_item = new MenuItem ("Add Hosted Project…"); - - #if HAVE_APP_INDICATOR - MenuItem notify_item; - - if (Program.Controller.NotificationsEnabled) - notify_item = new MenuItem ("Turn Notifications Off"); - else - notify_item = new MenuItem ("Turn Notifications On"); - - notify_item.Activated += delegate { - Program.Controller.ToggleNotifications (); - - Application.Invoke (delegate { - if (Program.Controller.NotificationsEnabled) - (notify_item.Child as Label).Text = "Turn Notifications Off"; - else - (notify_item.Child as Label).Text = "Turn Notifications On"; - }); - }; - #endif + MenuItem add_item = new MenuItem ("Sync Remote Project…"); + + MenuItem link_code_item = new MenuItem ("Computer ID"); - MenuItem link_code_item = new MenuItem ("Client ID"); - if (Controller.LinkCodeItemEnabled) { link_code_item.Submenu = new Menu (); - string link_code = Program.Controller.CurrentUser.PublicKey.Substring (0, 20) + "..."; + string link_code = SparkleShare.Controller.UserAuthenticationInfo.PublicKey.Substring (0, 20) + "..."; MenuItem code_item = new MenuItem (link_code) { Sensitive = false }; MenuItem copy_item = new MenuItem ("Copy to Clipboard"); @@ -250,40 +234,61 @@ namespace SparkleShare { folder_item.Submenu = new Menu (); (folder_item.Submenu as Menu).Add (this.recent_events_item); - (folder_item.Submenu as Menu).Add (add_item); - #if HAVE_APP_INDICATOR - (folder_item.Submenu as Menu).Add (new SeparatorMenuItem ()); - (folder_item.Submenu as Menu).Add (notify_item); - #endif + + if (InstallationInfo.OperatingSystem == OS.Ubuntu) { + MenuItem notify_item; + + if (SparkleShare.Controller.NotificationsEnabled) + notify_item = new MenuItem ("Turn Notifications Off"); + else + notify_item = new MenuItem ("Turn Notifications On"); + + notify_item.Activated += delegate { + SparkleShare.Controller.ToggleNotifications (); + + Application.Invoke (delegate { + if (SparkleShare.Controller.NotificationsEnabled) + (notify_item.Child as Label).Text = "Turn Notifications Off"; + else + (notify_item.Child as Label).Text = "Turn Notifications On"; + }); + }; + + (folder_item.Submenu as Menu).Add (new SeparatorMenuItem ()); + (folder_item.Submenu as Menu).Add (notify_item); + } + (folder_item.Submenu as Menu).Add (new SeparatorMenuItem ()); (folder_item.Submenu as Menu).Add (link_code_item); (folder_item.Submenu as Menu).Add (new SeparatorMenuItem ()); (folder_item.Submenu as Menu).Add (about_item); + this.menu.Add (new SeparatorMenuItem ()); + this.menu.Add (add_item); this.menu.Add (new SeparatorMenuItem ()); this.menu.Add (this.quit_item); this.menu.ShowAll (); - #if HAVE_APP_INDICATOR - this.indicator.Menu = this.menu; - #endif + if (InstallationInfo.OperatingSystem == OS.Ubuntu) { + #if HAVE_APP_INDICATOR + indicator.Menu = this.menu; + #endif + } } - #if !HAVE_APP_INDICATOR // Makes the menu visible - private void ShowMenu (object o, EventArgs args) + void ShowMenu (object o, EventArgs args) { - this.menu.Popup (null, null, SetPosition, 0, Global.CurrentEventTime); + this.menu.Popup (null, null, SetPosition, 0, Gtk.Global.CurrentEventTime); } // Makes sure the menu pops up in the right position - private void SetPosition (Menu menu, out int x, out int y, out bool push_in) + void SetPosition (Menu menu, out int x, out int y, out bool push_in) { - StatusIcon.PositionMenu (menu, out x, out y, out push_in, this.status_icon.Handle); + Gtk.StatusIcon.PositionMenu (menu, out x, out y, out push_in, this.status_icon.Handle); } - #endif } diff --git a/SparkleShare/Linux/UserInterface.cs b/SparkleShare/Linux/UserInterface.cs new file mode 100644 index 0000000..b6d687b --- /dev/null +++ b/SparkleShare/Linux/UserInterface.cs @@ -0,0 +1,114 @@ +// SparkleShare, a collaboration and sharing tool. +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. + + +using System; + +using Gtk; +using Sparkles; + +namespace SparkleShare +{ + + public class UserInterface + { + + public static string AssetsPath = InstallationInfo.Directory; + + public StatusIcon StatusIcon; + public EventLog EventLog; + public Bubbles Bubbles; + public Setup Setup; + public About About; + public Note Note; + + public readonly string SecondaryTextColor; + public readonly string SecondaryTextColorSelected; + + Application application; + + + public UserInterface () + { + application = new Application ("org.sparkleshare.SparkleShare", GLib.ApplicationFlags.None); + + application.Register (null); + application.Activated += ApplicationActivatedDelegate; + + var label = new Label (); + Gdk.Color color = UserInterfaceHelpers.RGBAToColor (label.StyleContext.GetColor (StateFlags.Insensitive)); + SecondaryTextColor = UserInterfaceHelpers.ColorToHex (color); + + var tree_view = new TreeView (); + + color = UserInterfaceHelpers.MixColors ( + UserInterfaceHelpers.RGBAToColor (tree_view.StyleContext.GetColor (StateFlags.Selected)), + UserInterfaceHelpers.RGBAToColor (tree_view.StyleContext.GetBackgroundColor (StateFlags.Selected)), + 0.39); + + SecondaryTextColorSelected = UserInterfaceHelpers.ColorToHex (color); + } + + + public void Run (string [] args) + { + // FIXME: Hack to cover API differences between Ubuntu and latest GNOME + if (InstallationInfo.OperatingSystem == OS.Ubuntu) { + #if HAVE_APP_INDICATOR + (application as GLib.Application).Run (0, null); + #endif + } else { + #if HAVE_APP_INDICATOR + #else + (application as GLib.Application).Run ("org.sparkleshare.SparkleShare", new string [0]); + #endif + } + } + + + void ApplicationActivatedDelegate (object sender, EventArgs args) + { + if (application.Windows.Length > 0) { + bool has_visible_windows = false; + + foreach (Window window in application.Windows) { + if (window.Visible) { + window.Present (); + has_visible_windows = true; + } + } + + if (!has_visible_windows) + SparkleShare.Controller.HandleReopen (); + + return; + } + + Setup = new Setup (); + EventLog = new EventLog (); + About = new About (); + Bubbles = new Bubbles (); + StatusIcon = new StatusIcon (); + Note = new Note (); + + Setup.Application = application; + EventLog.Application = application; + About.Application = application; + + SparkleShare.Controller.UIHasLoaded (); + } + } +} diff --git a/SparkleShare/Linux/SparkleUIHelpers.cs b/SparkleShare/Linux/UserInterfaceHelpers.cs index d147b00..aa08fa5 100755 --- a/SparkleShare/Linux/SparkleUIHelpers.cs +++ b/SparkleShare/Linux/UserInterfaceHelpers.cs @@ -1,5 +1,5 @@ // SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com> +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -16,16 +16,18 @@ using System; +using System.IO; + using Gtk; namespace SparkleShare { - public static class SparkleUIHelpers { + public static class UserInterfaceHelpers { public static Gdk.Pixbuf GetIcon (string name, int size) { IconTheme icon_theme = new IconTheme (); - icon_theme.AppendSearchPath (new string [] {SparkleUI.AssetsPath, "icons"}.Combine ()); + icon_theme.AppendSearchPath (Path.Combine (UserInterface.AssetsPath, "icons")); foreach (string search_path in IconTheme.Default.SearchPath) icon_theme.AppendSearchPath (search_path); @@ -46,7 +48,7 @@ namespace SparkleShare { public static Image GetImage (string name) { - string image_path = new string [] { SparkleUI.AssetsPath, "pixmaps", name }.Combine (); + string image_path = Path.Combine (UserInterface.AssetsPath, "pixmaps", name); return new Image (image_path); } @@ -55,7 +57,7 @@ namespace SparkleShare { // Example: from "rgb:0,0,0" to "#000000" public static string ColorToHex (Gdk.Color color) { - return String.Format ("#{0:X2}{1:X2}{2:X2}", + return string.Format ("#{0:X2}{1:X2}{2:X2}", (int) Math.Truncate (color.Red / 256.00), (int) Math.Truncate (color.Green / 256.00), (int) Math.Truncate (color.Blue / 256.00)); @@ -90,4 +92,3 @@ namespace SparkleShare { } } } - diff --git a/SparkleShare/Linux/sparkleshare-invite-opener.desktop b/SparkleShare/Linux/org.sparkleshare.SparkleShare.Invites.desktop index b2cc168..c34d1f1 100644 --- a/SparkleShare/Linux/sparkleshare-invite-opener.desktop +++ b/SparkleShare/Linux/org.sparkleshare.SparkleShare.Invites.desktop @@ -1,7 +1,8 @@ [Desktop Entry] Type=Application -Name=SparkleShareInviteOpener +Name=SparkleShare Exec=sparkleshare open %U Terminal=false MimeType=application/x-sparkleshare;x-scheme-handler/sparkleshare; NoDisplay=true + diff --git a/SparkleShare/Linux/sparkleshare.appdata.xml b/SparkleShare/Linux/org.sparkleshare.SparkleShare.appdata.xml index 3a451f1..a1f51d6 100644 --- a/SparkleShare/Linux/sparkleshare.appdata.xml +++ b/SparkleShare/Linux/org.sparkleshare.SparkleShare.appdata.xml @@ -1,7 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> -<application> - <id type="desktop">sparkleshare.desktop</id> - <licence>CC0</licence> +<component type="desktop"> + <id type="desktop">org.sparkleshare.SparkleShare.desktop</id> + <metadata_licence>CC0-1.0</metadata_licence> + <project_license>GPL-3.0</project_license> <name>SparkleShare</name> <summary>Self hosted, instant, secure file sync</summary> <description> @@ -23,4 +24,5 @@ <p>Have fun!</p> </description> <url type="homepage">http://www.sparkleshare.org/</url> -</application> +</component> + diff --git a/SparkleShare/Linux/org.sparkleshare.SparkleShare.desktop b/SparkleShare/Linux/org.sparkleshare.SparkleShare.desktop new file mode 100755 index 0000000..e458729 --- /dev/null +++ b/SparkleShare/Linux/org.sparkleshare.SparkleShare.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Type=Application +Name=SparkleShare +Exec=sparkleshare +Icon=org.sparkleshare.SparkleShare +Terminal=false +Categories=Network;FileTransfer;GNOME;GTK; +X-GNOME-UsesNotifications=true diff --git a/SparkleShare/Linux/sparkleshare.desktop b/SparkleShare/Linux/sparkleshare.desktop deleted file mode 100755 index a8cf52c..0000000 --- a/SparkleShare/Linux/sparkleshare.desktop +++ /dev/null @@ -1,9 +0,0 @@ -[Desktop Entry] -Type=Application -Name=SparkleShare -Comment=Self hosted, instant, secure file sync -Exec=sparkleshare start -Icon=sparkleshare -Terminal=false -X-GNOME-Autostart-enabled=true -Categories=Network; diff --git a/SparkleShare/Linux/sparkleshare.in b/SparkleShare/Linux/sparkleshare.in index 5af417c..fed7aec 100755 --- a/SparkleShare/Linux/sparkleshare.in +++ b/SparkleShare/Linux/sparkleshare.in @@ -1,29 +1,21 @@ #!/usr/bin/env bash if [[ $UID -eq 0 ]]; then - echo "SparkleShare can't be run as root. Things would go utterly wrong." + echo "Please don't run SparkleShare as root. Things would go utterly wrong." exit 1 fi -start() { - if [ -n "${SSH_AGENT_PID}" -o -n "${SSH_AUTH_SOCK}" ] ; then - mono "@expanded_libdir@/@PACKAGE@/SparkleShare.exe" $2 & - else - ssh-agent mono "@expanded_libdir@/@PACKAGE@/SparkleShare.exe" $2 & - fi -} - case $1 in - start|--start) - start - ;; open|--open) invite=`date -u +%N` open=`echo $2 | sed 's/sparkleshare:\/\/addProject\///'` curl --insecure --output ~/SparkleShare/.$invite.xml $open - start + mono "@expanded_libdir@/@PACKAGE@/SparkleShare.exe" + ;; + help|--help|version|--version) + mono "@expanded_libdir@/@PACKAGE@/SparkleShare.exe" help ;; *) - mono "@expanded_libdir@/@PACKAGE@/SparkleShare.exe" --help + mono "@expanded_libdir@/@PACKAGE@/SparkleShare.exe" $2 ;; esac diff --git a/SparkleShare/Mac/AppDelegate.cs b/SparkleShare/Mac/AppDelegate.cs index 9e246c1..f68c695 100755 --- a/SparkleShare/Mac/AppDelegate.cs +++ b/SparkleShare/Mac/AppDelegate.cs @@ -1,5 +1,5 @@ -// SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com> +// SparkleShare, a collaboration and sharing tool. +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -15,17 +15,11 @@ // along with this program. If not, see <http://www.gnu.org/licenses/>. -using System; -using System.Drawing; - -using MonoMac.Foundation; -using MonoMac.AppKit; -using MonoMac.ObjCRuntime; +using AppKit; namespace SparkleShare { public partial class AppDelegate : NSApplicationDelegate { - } } diff --git a/SparkleShare/Mac/Assets.xcassets/Contents.json b/SparkleShare/Mac/Assets.xcassets/Contents.json new file mode 100644 index 0000000..2d92bd5 --- /dev/null +++ b/SparkleShare/Mac/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/SparkleShare/Mac/SparkleController.cs b/SparkleShare/Mac/Controller.cs index 8f7a79e..67eae50 100755..100644 --- a/SparkleShare/Mac/SparkleController.cs +++ b/SparkleShare/Mac/Controller.cs @@ -1,5 +1,5 @@ -// SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com> +// SparkleShare, a collaboration and sharing tool. +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -16,142 +16,107 @@ using System; -using System.Diagnostics; +using System.Collections.Generic; using System.IO; using System.Threading; -using MonoMac.Foundation; -using MonoMac.AppKit; +using Foundation; +using AppKit; -using Mono.Unix.Native; -using SparkleLib; -using System.Collections.Generic; +using Sparkles; +using Sparkles.Git; namespace SparkleShare { - public class SparkleController : SparkleControllerBase { + public class Controller : BaseController { - public override string PluginsPath { + public override string PresetsPath { get { - return Path.Combine (NSBundle.MainBundle.ResourcePath, "Plugins"); + return Path.Combine (NSBundle.MainBundle.ResourcePath, "Presets"); } } - // We have to use our own custom made folder watcher, as - // System.IO.FileSystemWatcher fails watching subfolders on Mac - private SparkleMacWatcher watcher; - - public SparkleController () : base () + public Controller (Configuration config) + : base (config) { NSApplication.Init (); - // Let's use the bundled git first - SparkleLib.Git.SparkleGit.GitPath = Path.Combine (NSBundle.MainBundle.ResourcePath, "git", "libexec", "git-core", "git"); - SparkleLib.Git.SparkleGit.ExecPath = Path.Combine (NSBundle.MainBundle.ResourcePath, "git", "libexec", "git-core"); + GitCommand.GitPath = Path.Combine (NSBundle.MainBundle.ResourcePath, "git", "libexec", "git-core", "git"); + GitCommand.ExecPath = Path.Combine (NSBundle.MainBundle.ResourcePath, "git", "libexec", "git-core"); + + bool overwite = true; + + File.Copy ( + Path.Combine (GitCommand.ExecPath, "git-lfs"), + Path.Combine (Config.BinPath, "git-lfs"), + overwite); } - + public override void Initialize () { base.Initialize (); - SparkleRepoBase.UseCustomWatcher = true; - this.watcher = new SparkleMacWatcher (Program.Controller.FoldersPath); + BaseRepository.UseCustomWatcher = true; + this.watcher = new SparkleMacWatcher (SparkleShare.Controller.FoldersPath); this.watcher.Changed += OnFilesChanged; } - private void OnFilesChanged (List<string> changed_files_in_basedir) + public override void CreateSparkleShareFolder () { - List<string> triggered_repos = new List<string> (); - - foreach (string file in changed_files_in_basedir) { - string repo_name; - int path_sep_index = file.IndexOf (Path.DirectorySeparatorChar); - - if (path_sep_index >= 0) - repo_name = file.Substring (0, path_sep_index); - else - repo_name = file; - - repo_name = Path.GetFileNameWithoutExtension (repo_name); - SparkleRepoBase repo = GetRepoByName (repo_name); + if (Directory.Exists (SparkleShare.Controller.FoldersPath)) + return; - if (repo == null) - continue; - - if (!triggered_repos.Contains (repo_name)) { - triggered_repos.Add (repo_name); - - FileActivityTask task = MacActivityTask (repo, - new FileSystemEventArgs (WatcherChangeTypes.Changed, file, "Unknown")); - - task (); - } + Directory.CreateDirectory (SparkleShare.Controller.FoldersPath); - } + // TODO: Use proper API + var chmod = new Command ("chmod", "700 " + SparkleShare.Controller.FoldersPath); + chmod.StartAndWaitForExit (); } - private delegate void FileActivityTask (); - private FileActivityTask MacActivityTask (SparkleRepoBase repo, FileSystemEventArgs fse_args) { - return delegate { new Thread (() => { repo.OnFileActivity (fse_args); }).Start (); }; + public override void SetFolderIcon () + { + if (Environment.OSVersion.Version.Major >= 14) { + NSWorkspace.SharedWorkspace.SetIconforFile ( + NSImage.ImageNamed ("sparkleshare-folder-yosemite.icns"), + SparkleShare.Controller.FoldersPath, 0); + + } else { + NSWorkspace.SharedWorkspace.SetIconforFile ( + NSImage.ImageNamed ("sparkleshare-folder.icns"), + SparkleShare.Controller.FoldersPath, 0); + } } + // There aren't any bindings in Xamarin.Mac to support this yet, so + // we call out to an applescript to do the job public override void CreateStartupItem () { - // There aren't any bindings in MonoMac to support this yet, so - // we call out to an applescript to do the job - Process process = new Process (); - process.StartInfo.FileName = "osascript"; - process.StartInfo.UseShellExecute = false; - process.StartInfo.Arguments = "-e 'tell application \"System Events\" to " + - "make login item at end with properties {path:\"" + NSBundle.MainBundle.BundlePath + "\", hidden:false}'"; + string args = "-e 'tell application \"System Events\" to " + + "make login item at end with properties " + + "{path:\"" + NSBundle.MainBundle.BundlePath + "\", hidden:false}'"; - process.Start (); - process.WaitForExit (); + var process = new Command ("osascript", args); + process.StartAndWaitForExit (); - SparkleLogger.LogInfo ("Controller", "Added " + NSBundle.MainBundle.BundlePath + " to login items"); + Logger.LogInfo ("Controller", "Added " + NSBundle.MainBundle.BundlePath + " to login items"); } public override void InstallProtocolHandler () { - // We ship SparkleShareInviteHandler.app in the bundle - } - - - public override void AddToBookmarks () - { - // TODO } - public override bool CreateSparkleShareFolder () + public override void CopyToClipboard (string text) { - if (!Directory.Exists (Program.Controller.FoldersPath)) { - Directory.CreateDirectory (Program.Controller.FoldersPath); - - if (Environment.OSVersion.Version.Major >= 14) { - NSWorkspace.SharedWorkspace.SetIconforFile ( - NSImage.ImageNamed ("sparkleshare-folder-yosemite.icns"), - Program.Controller.FoldersPath, 0); - - } else { - NSWorkspace.SharedWorkspace.SetIconforFile ( - NSImage.ImageNamed ("sparkleshare-folder.icns"), - Program.Controller.FoldersPath, 0); - } - - Syscall.chmod (Program.Controller.FoldersPath, (FilePermissions) 448); // 448 -> 700 - - return true; - } - - return false; + NSPasteboard.GeneralPasteboard.ClearContents (); + NSPasteboard.GeneralPasteboard.SetStringForType (text, "NSStringPboardType"); } @@ -175,14 +140,7 @@ namespace SparkleShare { } - public override void CopyToClipboard (string text) - { - NSPasteboard.GeneralPasteboard.ClearContents (); - NSPasteboard.GeneralPasteboard.SetStringForType (text, "NSStringPboardType"); - } - - - private string event_log_html; + string event_log_html; public override string EventLogHTML { get { @@ -199,7 +157,7 @@ namespace SparkleShare { } - private string day_entry_html; + string day_entry_html; public override string DayEntryHTML { get { @@ -213,7 +171,7 @@ namespace SparkleShare { } - private string event_entry_html; + string event_entry_html; public override string EventEntryHTML { get { @@ -227,14 +185,47 @@ namespace SparkleShare { } + // We have to use our own custom made folder watcher, as + // System.IO.FileSystemWatcher fails watching subfolders on Mac + + SparkleMacWatcher watcher; + delegate void FileActivityTask (); + + FileActivityTask MacFileActivityTask (BaseRepository repo, FileSystemEventArgs fse_args) + { + return delegate { new Thread (() => { repo.OnFileActivity (fse_args); }).Start (); }; + } + + void OnFilesChanged (List<string> changed_files_in_basedir) + { + var triggered_repos = new List<string> (); + + foreach (string file_path in changed_files_in_basedir) { + string [] paths = file_path.Split (Path.DirectorySeparatorChar); + + if (paths.Length < 2) + continue; + + BaseRepository repo = GetRepoByName (paths [1]); + + if (repo != null && !triggered_repos.Contains (repo.Name)) { + FileActivityTask task = MacFileActivityTask (repo, + new FileSystemEventArgs (WatcherChangeTypes.Changed, file_path, "Unknown")); + + task (); + triggered_repos.Add (repo.Name); + } + } + } + + public delegate void Code (); - private NSObject obj = new NSObject (); public void Invoke (Code code) { using (var a = new NSAutoreleasePool ()) { - obj.InvokeOnMainThread (() => code ()); + new NSObject ().InvokeOnMainThread (() => code ()); } } } diff --git a/SparkleShare/Mac/Info.plist b/SparkleShare/Mac/Info.plist index 73f9a12..3df3ed2 100755 --- a/SparkleShare/Mac/Info.plist +++ b/SparkleShare/Mac/Info.plist @@ -5,17 +5,17 @@ <key>CFBundleIconFile</key> <string>sparkleshare-app</string> <key>CFBundleIdentifier</key> - <string>org.sparkleshare.sparkleshare</string> + <string>org.sparkleshare.SparkleShare</string> <key>CFBundleName</key> <string>SparkleShare</string> <key>CFBundleShortVersionString</key> - <string>1.5.0</string> + <string>2.0.1</string> <key>CFBundleVersion</key> - <string>1.5.0</string> + <string>2.0.1</string> <key>LSApplicationCategoryType</key> - <string>public.app-category.productivity</string> + <string>public.app-category.utilities</string> <key>LSMinimumSystemVersion</key> - <string>10.6</string> + <string>10.7</string> <key>LSUIElement</key> <string>1</string> <key>NSMainNibFile</key> diff --git a/SparkleShare/Mac/MainMenu.xib.designer.cs b/SparkleShare/Mac/MainMenu.xib.designer.cs index 1ce6227..90e749c 100755 --- a/SparkleShare/Mac/MainMenu.xib.designer.cs +++ b/SparkleShare/Mac/MainMenu.xib.designer.cs @@ -11,8 +11,8 @@ namespace SparkleShare { - // Should subclass MonoMac.AppKit.NSResponder - [MonoMac.Foundation.Register("AppDelegate")] + // Should subclass AppKit.NSResponder + [Foundation.Register("AppDelegate")] public partial class AppDelegate { } } diff --git a/SparkleShare/Mac/README.md b/SparkleShare/Mac/README.md index 60fea68..2ab5bb9 100644 --- a/SparkleShare/Mac/README.md +++ b/SparkleShare/Mac/README.md @@ -1,12 +1,12 @@ -## Building on Mac +## Building on macOS You can build SparkleShare from source or download the SparkleShare bundle. ### Installing build requirements - Install [Xcode](https://itunes.apple.com/gb/app/xcode/id497799835?mt=12) from the Mac App Store, or [download](https://developer.apple.com/xcode/) it manually. - Install [Xamarin Studio](http://monodevelop.com/download/). + Install [Xcode](https://itunes.apple.com/gb/app/xcode/id497799835?mt=12) from the macOS App Store, or [download](https://developer.apple.com/xcode/) it manually. + Install [Visual Studio](https://www.visualstudio.com/vs/visual-studio-mac/). The required `git` binaries are now built automatically. For doing this and for building the distribution release, where Mono libraries are merged into SparkleShare, we need the packes <tt>autoconf</tt> and <tt>pkg-config</tt>. You can install these in several ways, here's how it's done using [Homebrew](http://brew.sh/): @@ -19,7 +19,7 @@ brew install autoconf automake libtool pkg-config There are three build configurations available: -* Debug +* DebugMac with debug symbols and having the Symbol DEBUG defined. Requires an installed Mono framework. @@ -27,20 +27,21 @@ There are three build configurations available: without debug symbols. Requires an installed Mono framework. -* ReleaseDist +* ReleaseMac without debug symbols, the Mono framework is linked statically into the binary, so it does not require an installed Mono framework. To build any of these configurations, -* open `./SparkleShare/Mac/SparkleShare.sln` +* open `./SparkleShare.sln` in Visual Studio +* select the SparkleShare.Mac project in the Solution view * select the required configuration -* select `Build`, then `"Build SparkleShare"` from the menu +* select `Build`, then `"Build SparkleShare.Mac"` from the menu To build SparkleShare from a command line (e.g. for using a CI system), use this command: ```bash -/Applications/Xamarin\ Studio.app/Contents/MacOS/mdtool -v build "--configuration:ReleaseDist" "./SparkleShare/Mac/SparkleShare.sln" + /Applications/Visual\ Studio.app/Contents/MacOS/vstool build "--configuration:ReleaseMac" "SparkleShare.sln" ``` @@ -48,7 +49,7 @@ To build SparkleShare from a command line (e.g. for using a CI system), use this ``` rm -Rf ~/SparkleShare -rm -Rf ~/.config/sparkleshare +rm -Rf ~/.config/org.sparkleshare.SparkleShare ``` diff --git a/SparkleShare/Mac/Resources/sparkleshare-app.icns b/SparkleShare/Mac/Resources/sparkleshare-app.icns Binary files differindex c550166..c75b4f8 100755..100644 --- a/SparkleShare/Mac/Resources/sparkleshare-app.icns +++ b/SparkleShare/Mac/Resources/sparkleshare-app.icns diff --git a/SparkleShare/Mac/SparkleShare.Mac.csproj b/SparkleShare/Mac/SparkleShare.Mac.csproj new file mode 100644 index 0000000..6c46443 --- /dev/null +++ b/SparkleShare/Mac/SparkleShare.Mac.csproj @@ -0,0 +1,340 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>8.0.30703</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{8FCDF699-E2C3-4CB3-AF98-44198972AFC0}</ProjectGuid> + <ProjectTypeGuids>{A3F8F2AB-B479-4A4A-A458-A89E7DC349F1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> + <OutputType>Exe</OutputType> + <RootNamespace>SparkleShare</RootNamespace> + <AssemblyName>SparkleShare</AssemblyName> + <TargetFrameworkVersion>v4.5</TargetFrameworkVersion> + <MonoMacResourcePrefix>Resources</MonoMacResourcePrefix> + <ReleaseVersion></ReleaseVersion> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>none</DebugType> + <Optimize>False</Optimize> + <OutputPath>bin\Release</OutputPath> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + <CustomCommands> + <CustomCommands> + <Command> + <type>AfterBuild</type> + <command>${ProjectDir}/postBuild.sh ${TargetDir}/${SolutionName}.app</command> + </Command> + </CustomCommands> + </CustomCommands> + <EnableCodeSigning>False</EnableCodeSigning> + <CreatePackage>False</CreatePackage> + <EnablePackageSigning>False</EnablePackageSigning> + <IncludeMonoRuntime>false</IncludeMonoRuntime> + <ConsolePause>False</ConsolePause> + <UseSGen>false</UseSGen> + <UseRefCounting>false</UseRefCounting> + <Profiling>false</Profiling> + <HttpClientHandler>HttpClientHandler</HttpClientHandler> + <TlsProvider>Default</TlsProvider> + <LinkMode>None</LinkMode> + <UseMSBuildEngine>True</UseMSBuildEngine> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <Optimize>False</Optimize> + <OutputPath>bin\Debug</OutputPath> + <DefineConstants>DEBUG</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + <CustomCommands> + <CustomCommands> + <Command> + <type>AfterBuild</type> + <command>${ProjectDir}/postBuild.sh ${TargetDir}/${SolutionName}.app</command> + </Command> + </CustomCommands> + </CustomCommands> + <EnableCodeSigning>False</EnableCodeSigning> + <CreatePackage>False</CreatePackage> + <EnablePackageSigning>False</EnablePackageSigning> + <IncludeMonoRuntime>false</IncludeMonoRuntime> + <ConsolePause>False</ConsolePause> + <DebugSymbols>true</DebugSymbols> + <UseSGen>false</UseSGen> + <UseRefCounting>false</UseRefCounting> + <Profiling>false</Profiling> + <LinkMode>None</LinkMode> + <HttpClientHandler>HttpClientHandler</HttpClientHandler> + <TlsProvider>Default</TlsProvider> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseDist|AnyCPU' "> + <Optimize>false</Optimize> + <OutputPath>bin\ReleaseDist</OutputPath> + <WarningLevel>4</WarningLevel> + <UseSGen>false</UseSGen> + <IncludeMonoRuntime>false</IncludeMonoRuntime> + <EnablePackageSigning>false</EnablePackageSigning> + <CustomCommands> + <CustomCommands> + <Command> + <type>AfterBuild</type> + <command>${ProjectDir}/postBuild.sh ${TargetDir}/${SolutionName}.app</command> + </Command> + <Command> + <type>AfterBuild</type> + <command>${ProjectDir}/packReleaseDist.sh ${TargetDir}/${SolutionName}.app</command> + </Command> + </CustomCommands> + </CustomCommands> + <EnableCodeSigning>false</EnableCodeSigning> + <CreatePackage>false</CreatePackage> + <UseRefCounting>false</UseRefCounting> + <Profiling>false</Profiling> + <HttpClientHandler>HttpClientHandler</HttpClientHandler> + <TlsProvider>Default</TlsProvider> + <LinkMode>None</LinkMode> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseMac|AnyCPU' "> + <DebugType>none</DebugType> + <Optimize>False</Optimize> + <OutputPath>bin\ReleaseMac</OutputPath> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + <CustomCommands> + <CustomCommands> + <Command> + <type>AfterBuild</type> + <command>${ProjectDir}/postBuild.sh ${TargetDir}/${SolutionName}.app</command> + </Command> + </CustomCommands> + </CustomCommands> + <EnableCodeSigning>False</EnableCodeSigning> + <CreatePackage>False</CreatePackage> + <EnablePackageSigning>False</EnablePackageSigning> + <IncludeMonoRuntime>false</IncludeMonoRuntime> + <ConsolePause>False</ConsolePause> + <UseSGen>false</UseSGen> + <UseRefCounting>false</UseRefCounting> + <Profiling>false</Profiling> + <HttpClientHandler>HttpClientHandler</HttpClientHandler> + <TlsProvider>Default</TlsProvider> + <LinkMode>None</LinkMode> + <CodeSigningKey>Mac Developer</CodeSigningKey> + <PackageSigningKey>3rd Party Mac Developer Installer</PackageSigningKey> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'DebugMac|AnyCPU' "> + <Optimize>False</Optimize> + <OutputPath>bin\DebugMac</OutputPath> + <DefineConstants>DEBUG</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + <CustomCommands> + <CustomCommands> + <Command> + <type>AfterBuild</type> + <command>${ProjectDir}/postBuild.sh ${TargetDir}/${SolutionName}.app</command> + </Command> + </CustomCommands> + </CustomCommands> + <EnableCodeSigning>False</EnableCodeSigning> + <CreatePackage>False</CreatePackage> + <EnablePackageSigning>False</EnablePackageSigning> + <IncludeMonoRuntime>false</IncludeMonoRuntime> + <ConsolePause>False</ConsolePause> + <DebugSymbols>true</DebugSymbols> + <UseSGen>false</UseSGen> + <UseRefCounting>false</UseRefCounting> + <Profiling>false</Profiling> + <LinkMode>None</LinkMode> + <HttpClientHandler>HttpClientHandler</HttpClientHandler> + <TlsProvider>Default</TlsProvider> + </PropertyGroup> + <ItemGroup> + <Reference Include="System" /> + <Reference Include="Xamarin.Mac" /> + <Reference Include="System.Net" /> + <Reference Include="System.Xml" /> + </ItemGroup> + <ItemGroup> + <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Contents.json" /> + <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\AppIcon-128.png" /> + <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\AppIcon-128%402x.png" /> + <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\AppIcon-16.png" /> + <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\AppIcon-16%402x.png" /> + <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\AppIcon-256.png" /> + <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\AppIcon-256%402x.png" /> + <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\AppIcon-32.png" /> + <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\AppIcon-32%402x.png" /> + <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\AppIcon-512.png" /> + <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\AppIcon-512%402x.png" /> + <ImageAsset Include="Assets.xcassets\Contents.json" /> + </ItemGroup> + <ItemGroup> + <None Include="Info.plist" /> + </ItemGroup> + <ItemGroup> + <Compile Include="UserInterface\About.cs" /> + <Compile Include="UserInterface\Bubbles.cs" /> + <Compile Include="UserInterface\EventLog.cs" /> + <Compile Include="UserInterface\Note.cs" /> + <Compile Include="UserInterface\Setup.cs" /> + <Compile Include="UserInterface\SetupWindow.cs" /> + <Compile Include="UserInterface\StatusIcon.cs" /> + <Compile Include="UserInterface\UserInterface.cs" /> + <Compile Include="AppDelegate.cs"> + <DependentUpon>MainMenu.xib</DependentUpon> + </Compile> + <Compile Include="MainMenu.xib.designer.cs"> + <DependentUpon>MainMenu.xib</DependentUpon> + </Compile> + <Compile Include="Watcher.cs" /> + <Compile Include="Controller.cs" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\..\Sparkles\Sparkles.csproj"> + <Project>{2C914413-B31C-4362-93C7-1AE34F09112A}</Project> + <Name>Sparkles</Name> + </ProjectReference> + <ProjectReference Include="..\..\Sparkles\Git\Sparkles.Git.csproj"> + <Project>{009FDCD7-1D57-4202-BB6D-8477D8C6B8EE}</Project> + <Name>Sparkles.Git</Name> + </ProjectReference> + </ItemGroup> + <ItemGroup> + <BundleResource Include="..\Common\Images\about.png"> + <Link>Resources\about.png</Link> + </BundleResource> + <BundleResource Include="..\Common\Images\about%402x.png"> + <Link>Resources\about%402x.png</Link> + </BundleResource> + <BundleResource Include="..\Linux\Images\icons\hicolor\document-added-12.png"> + <Link>Resources\document-added-12.png</Link> + </BundleResource> + <BundleResource Include="..\Linux\Images\icons\hicolor\document-deleted-12.png"> + <Link>Resources\document-deleted-12.png</Link> + </BundleResource> + <BundleResource Include="..\Linux\Images\icons\hicolor\document-edited-12.png"> + <Link>Resources\document-edited-12.png</Link> + </BundleResource> + <BundleResource Include="..\Linux\Images\icons\hicolor\document-moved-12.png"> + <Link>Resources\document-moved-12.png</Link> + </BundleResource> + <BundleResource Include="Resources\process-syncing.png" /> + <BundleResource Include="Resources\process-syncing%402x.png" /> + <BundleResource Include="Resources\process-syncing-down.png" /> + <BundleResource Include="Resources\process-syncing-down%402x.png" /> + <BundleResource Include="Resources\process-syncing-error.png" /> + <BundleResource Include="Resources\process-syncing-error%402x.png" /> + <BundleResource Include="Resources\process-syncing-idle.png" /> + <BundleResource Include="Resources\process-syncing-idle%402x.png" /> + <BundleResource Include="Resources\process-syncing-up.png" /> + <BundleResource Include="Resources\process-syncing-up%402x.png" /> + <BundleResource Include="..\Common\Images\side-splash.png"> + <Link>Resources\side-splash.png</Link> + </BundleResource> + <BundleResource Include="..\Common\Images\side-splash%402x.png"> + <Link>Resources\side-splash%402x.png</Link> + </BundleResource> + <BundleResource Include="..\Mac\Resources\sparkleshare-app.icns"> + <Link>Resources\sparkleshare-app.icns</Link> + </BundleResource> + <BundleResource Include="..\Mac\Resources\sparkleshare-folder.icns"> + <Link>Resources\sparkleshare-folder.icns</Link> + </BundleResource> + <BundleResource Include="..\Mac\Resources\sparkleshare-folder-yosemite.icns"> + <Link>Resources\sparkleshare-folder-yosemite.icns</Link> + </BundleResource> + <BundleResource Include="..\Common\Images\text-balloon.png"> + <Link>Resources\text-balloon.png</Link> + </BundleResource> + <BundleResource Include="..\Common\Images\text-balloon%402x.png"> + <Link>Resources\text-balloon%402x.png</Link> + </BundleResource> + <BundleResource Include="..\Common\Images\tutorial-slide-1.png"> + <Link>Resources\tutorial-slide-1.png</Link> + </BundleResource> + <BundleResource Include="..\Common\Images\tutorial-slide-1%402x.png"> + <Link>Resources\tutorial-slide-1%402x.png</Link> + </BundleResource> + <BundleResource Include="..\Common\Images\tutorial-slide-2.png"> + <Link>Resources\tutorial-slide-2.png</Link> + </BundleResource> + <BundleResource Include="..\Common\Images\tutorial-slide-2%402x.png"> + <Link>Resources\tutorial-slide-2%402x.png</Link> + </BundleResource> + <BundleResource Include="..\Mac\Resources\tutorial-slide-3.png"> + <Link>Resources\tutorial-slide-3.png</Link> + </BundleResource> + <BundleResource Include="Resources\tutorial-slide-3%402x.png" /> + <BundleResource Include="..\Common\Images\user-icon-default.png"> + <Link>Resources\user-icon-default.png</Link> + </BundleResource> + <BundleResource Include="..\Common\Presets\bitbucket.png"> + <Link>Presets\bitbucket.png</Link> + </BundleResource> + <BundleResource Include="..\Common\Presets\bitbucket%402x.png"> + <Link>Presets\bitbucket%402x.png</Link> + </BundleResource> + <BundleResource Include="..\Common\Presets\github.png"> + <Link>Presets\github.png</Link> + </BundleResource> + <BundleResource Include="..\Common\Presets\github%402x.png"> + <Link>Presets\github%402x.png</Link> + </BundleResource> + <BundleResource Include="..\Common\Presets\gitlab.png"> + <Link>Presets\gitlab.png</Link> + </BundleResource> + <BundleResource Include="..\Common\Presets\gitlab%402x.png"> + <Link>Presets\gitlab%402x.png</Link> + </BundleResource> + <BundleResource Include="..\Common\Presets\own-server.png"> + <Link>Presets\own-server.png</Link> + </BundleResource> + <BundleResource Include="..\Common\Presets\own-server%402x.png"> + <Link>Presets\own-server%402x.png</Link> + </BundleResource> + <BundleResource Include="..\Common\Presets\planio.png"> + <Link>Presets\planio.png</Link> + </BundleResource> + <BundleResource Include="..\Common\Presets\planio%402x.png"> + <Link>Presets\planio%402x.png</Link> + </BundleResource> + <BundleResource Include="..\Common\Presets\bitbucket.xml"> + <Link>Presets\bitbucket.xml</Link> + </BundleResource> + <BundleResource Include="..\Common\Presets\github.xml"> + <Link>Presets\github.xml</Link> + </BundleResource> + <BundleResource Include="..\Common\Presets\gitlab.xml"> + <Link>Presets\gitlab.xml</Link> + </BundleResource> + <BundleResource Include="..\Common\Presets\own-server.xml"> + <Link>Presets\own-server.xml</Link> + </BundleResource> + <BundleResource Include="..\Common\Presets\planio.xml"> + <Link>Presets\planio.xml</Link> + </BundleResource> + <BundleResource Include="..\Common\HTML\day-entry.html"> + <Link>HTML\day-entry.html</Link> + </BundleResource> + <BundleResource Include="..\Common\HTML\event-entry.html"> + <Link>HTML\event-entry.html</Link> + </BundleResource> + <BundleResource Include="..\Common\HTML\event-log.html"> + <Link>HTML\event-log.html</Link> + </BundleResource> + <BundleResource Include="..\Common\HTML\jquery.js"> + <Link>HTML\jquery.js</Link> + </BundleResource> + </ItemGroup> + <ItemGroup> + <Folder Include="Resources\" /> + <Folder Include="UserInterface\" /> + </ItemGroup> + <ItemGroup> + <InterfaceDefinition Include="MainMenu.xib" /> + </ItemGroup> + <Import Project="..\Common\SparkleShare.projitems" Label="Shared" Condition="Exists('..\Common\SparkleShare.projitems')" /> + <Import Project="$(MSBuildExtensionsPath)\Xamarin\Mac\Xamarin.Mac.CSharp.targets" /> +</Project> diff --git a/SparkleShare/Mac/SparkleShare.csproj b/SparkleShare/Mac/SparkleShare.csproj deleted file mode 100644 index 04b8cbb..0000000 --- a/SparkleShare/Mac/SparkleShare.csproj +++ /dev/null @@ -1,296 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <PropertyGroup> - <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> - <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ProductVersion>8.0.30703</ProductVersion> - <SchemaVersion>2.0</SchemaVersion> - <ProjectGuid>{CF5BC8DB-A633-4FCC-8A3E-E3AC9B59FABC}</ProjectGuid> - <ProjectTypeGuids>{948B3504-5B70-4649-8FE4-BDE1FB46EC69};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> - <OutputType>Exe</OutputType> - <RootNamespace>SparkleShare</RootNamespace> - <AssemblyName>SparkleShare</AssemblyName> - <ReleaseVersion> - </ReleaseVersion> - <SuppressXamMacMigration>True</SuppressXamMacMigration> - <SuppressXamMacUpsell>True</SuppressXamMacUpsell> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> - <DebugType>none</DebugType> - <Optimize>False</Optimize> - <OutputPath>bin\Release</OutputPath> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - <CustomCommands> - <CustomCommands> - <Command type="AfterBuild" command="${ProjectDir}/postBuild.sh ${TargetDir}/${SolutionName}.app" /> - </CustomCommands> - </CustomCommands> - <EnableCodeSigning>False</EnableCodeSigning> - <CreatePackage>False</CreatePackage> - <EnablePackageSigning>False</EnablePackageSigning> - <IncludeMonoRuntime>false</IncludeMonoRuntime> - <ConsolePause>False</ConsolePause> - <UseSGen>false</UseSGen> - <UseRefCounting>false</UseRefCounting> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> - <Optimize>False</Optimize> - <OutputPath>bin\Debug</OutputPath> - <DefineConstants>DEBUG</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - <CustomCommands> - <CustomCommands> - <Command type="AfterBuild" command="${ProjectDir}/postBuild.sh ${TargetDir}/${SolutionName}.app" /> - </CustomCommands> - </CustomCommands> - <EnableCodeSigning>False</EnableCodeSigning> - <CreatePackage>False</CreatePackage> - <EnablePackageSigning>False</EnablePackageSigning> - <IncludeMonoRuntime>false</IncludeMonoRuntime> - <ConsolePause>False</ConsolePause> - <DebugSymbols>true</DebugSymbols> - <UseSGen>false</UseSGen> - <UseRefCounting>false</UseRefCounting> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseDist|AnyCPU' "> - <Optimize>false</Optimize> - <OutputPath>bin\ReleaseDist</OutputPath> - <WarningLevel>4</WarningLevel> - <UseSGen>false</UseSGen> - <IncludeMonoRuntime>false</IncludeMonoRuntime> - <EnablePackageSigning>false</EnablePackageSigning> - <CustomCommands> - <CustomCommands> - <Command type="AfterBuild" command="${ProjectDir}/postBuild.sh ${TargetDir}/${SolutionName}.app" /> - <Command type="AfterBuild" command="${ProjectDir}/packReleaseDist.sh ${TargetDir}/${SolutionName}.app" /> - </CustomCommands> - </CustomCommands> - <EnableCodeSigning>false</EnableCodeSigning> - <CreatePackage>false</CreatePackage> - </PropertyGroup> - <ItemGroup> - <Reference Include="System" /> - <Reference Include="System.Xml" /> - <Reference Include="System.Drawing" /> - <Reference Include="System.Net" /> - <Reference Include="Mono.Posix" /> - <Reference Include="MonoMac"> - <HintPath>..\..\..\monomac\src\MonoMac.dll</HintPath> - </Reference> - </ItemGroup> - <ItemGroup> - <Compile Include="AppDelegate.cs"> - <DependentUpon>MainMenu.xib</DependentUpon> - </Compile> - <Compile Include="MainMenu.xib.designer.cs"> - <DependentUpon>MainMenu.xib</DependentUpon> - </Compile> - <Compile Include="..\SparkleControllerBase.cs"> - <Link>SparkleControllerBase.cs</Link> - </Compile> - <Compile Include="SparkleStatusIcon.cs" /> - <Compile Include="SparkleUI.cs" /> - <Compile Include="..\Program.cs"> - <Link>Program.cs</Link> - </Compile> - <Compile Include="SparkleMacWatcher.cs" /> - <Compile Include="SparkleEventLog.cs" /> - <Compile Include="SparkleBubbles.cs" /> - <Compile Include="SparkleSetup.cs" /> - <Compile Include="SparkleSetupWindow.cs" /> - <Compile Include="..\SparkleBubblesController.cs"> - <Link>SparkleBubblesController.cs</Link> - </Compile> - <Compile Include="..\SparkleEventLogController.cs"> - <Link>SparkleEventLogController.cs</Link> - </Compile> - <Compile Include="..\SparkleSetupController.cs"> - <Link>SparkleSetupController.cs</Link> - </Compile> - <Compile Include="..\SparkleStatusIconController.cs"> - <Link>SparkleStatusIconController.cs</Link> - </Compile> - <Compile Include="..\SparkleAboutController.cs"> - <Link>SparkleAboutController.cs</Link> - </Compile> - <Compile Include="SparkleController.cs" /> - <Compile Include="..\SparklePlugin.cs"> - <Link>SparklePlugin.cs</Link> - </Compile> - <Compile Include="SparkleAbout.cs" /> - <Compile Include="..\SparkleInvite.cs"> - <Link>SparkleInvite.cs</Link> - </Compile> - <Compile Include="..\SparkleKeys.cs"> - <Link>SparkleKeys.cs</Link> - </Compile> - <Compile Include="..\SparkleAvatars.cs" /> - <Compile Include="..\SparkleNoteController.cs"> - <Link>SparkleNoteController.cs</Link> - </Compile> - <Compile Include="SparkleNote.cs" /> - </ItemGroup> - <ItemGroup> - <InterfaceDefinition Include="MainMenu.xib" xmlns="" /> - </ItemGroup> - <ItemGroup> - <None Include="Info.plist" /> - </ItemGroup> - <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> - <Import Project="$(MSBuildExtensionsPath)\Mono\MonoMac\v0.0\Mono.MonoMac.targets" /> - <ItemGroup> - <Content Include="..\Common\HTML\day-entry.html"> - <Link>HTML\day-entry.html</Link> - </Content> - <Content Include="..\Common\HTML\event-entry.html"> - <Link>HTML\event-entry.html</Link> - </Content> - <Content Include="..\Common\HTML\event-log.html"> - <Link>HTML\event-log.html</Link> - </Content> - <Content Include="Resources\sparkleshare-folder.icns"> - <Link>sparkleshare-folder.icns</Link> - </Content> - <Content Include="Resources\sparkleshare-app.icns"> - <Link>sparkleshare-app.icns</Link> - </Content> - <Content Include="..\Common\HTML\jquery.js"> - <Link>HTML\jquery.js</Link> - </Content> - <Content Include="Resources\sparkleshare-folder-yosemite.icns"> - <Link>sparkleshare-folder-yosemite.icns</Link> - </Content> - </ItemGroup> - <ItemGroup> - <Folder Include="Resources\" /> - <Folder Include="HTML\" /> - <Folder Include="Plugins\" /> - </ItemGroup> - <ItemGroup> - <ProjectReference Include="..\..\SparkleLib\SparkleLib.csproj"> - <Project>{2C914413-B31C-4362-93C7-1AE34F09112A}</Project> - <Name>SparkleLib</Name> - </ProjectReference> - <ProjectReference Include="..\..\SparkleLib\Git\SparkleLib.Git.csproj"> - <Project>{009FDCD7-1D57-4202-BB6D-8477D8C6B8EE}</Project> - <Name>SparkleLib.Git</Name> - </ProjectReference> - </ItemGroup> - <ItemGroup> - <BundleResource Include="..\Common\Pixmaps\side-splash.png"> - <Link>Resources\side-splash.png</Link> - </BundleResource> - <BundleResource Include="..\Linux\Pixmaps\icons\document-added-12.png"> - <Link>Resources\document-added-12.png</Link> - </BundleResource> - <BundleResource Include="..\Linux\Pixmaps\icons\document-edited-12.png"> - <Link>Resources\document-edited-12.png</Link> - </BundleResource> - <BundleResource Include="..\Linux\Pixmaps\icons\document-deleted-12.png"> - <Link>Resources\document-deleted-12.png</Link> - </BundleResource> - <BundleResource Include="..\Linux\Pixmaps\icons\document-moved-12.png"> - <Link>Resources\document-moved-12.png</Link> - </BundleResource> - <BundleResource Include="..\Common\Pixmaps\about.png"> - <Link>Resources\about.png</Link> - </BundleResource> - <BundleResource Include="Resources\tutorial-slide-3.png"> - <Link>Resources\tutorial-slide-3.png</Link> - </BundleResource> - <BundleResource Include="Resources\process-syncing-down.png" /> - <BundleResource Include="Resources\process-syncing-error.png" /> - <BundleResource Include="Resources\process-syncing-idle.png" /> - <BundleResource Include="Resources\process-syncing-up.png" /> - <BundleResource Include="Resources\process-syncing.png" /> - <BundleResource Include="..\Common\Pixmaps\user-icon-default.png"> - <Link>Resources\user-icon-default.png</Link> - </BundleResource> - <BundleResource Include="..\Common\Pixmaps\side-splash%402x.png"> - <Link>Resources\side-splash%402x.png</Link> - </BundleResource> - <BundleResource Include="Resources\process-syncing-down%402x.png" /> - <BundleResource Include="Resources\process-syncing-error%402x.png" /> - <BundleResource Include="Resources\process-syncing-idle%402x.png" /> - <BundleResource Include="Resources\process-syncing-up%402x.png" /> - <BundleResource Include="Resources\process-syncing%402x.png" /> - <BundleResource Include="..\Common\Pixmaps\about%402x.png"> - <Link>Resources\about%402x.png</Link> - </BundleResource> - <BundleResource Include="..\Common\Pixmaps\tutorial-slide-1.png"> - <Link>Resources\tutorial-slide-1.png</Link> - </BundleResource> - <BundleResource Include="..\Common\Pixmaps\tutorial-slide-1%402x.png"> - <Link>Resources\tutorial-slide-1%402x.png</Link> - </BundleResource> - <BundleResource Include="..\Common\Pixmaps\tutorial-slide-2.png"> - <Link>Resources\tutorial-slide-2.png</Link> - </BundleResource> - <BundleResource Include="..\Common\Pixmaps\tutorial-slide-2%402x.png"> - <Link>Resources\tutorial-slide-2%402x.png</Link> - </BundleResource> - <BundleResource Include="..\Common\Plugins\bitbucket%402x.png"> - <Link>Plugins\bitbucket%402x.png</Link> - </BundleResource> - <BundleResource Include="..\Common\Plugins\github%402x.png"> - <Link>Plugins\github%402x.png</Link> - </BundleResource> - <BundleResource Include="..\Common\Plugins\gitorious%402x.png"> - <Link>Plugins\gitorious%402x.png</Link> - </BundleResource> - <BundleResource Include="..\Common\Plugins\own-server%402x.png"> - <Link>Plugins\own-server%402x.png</Link> - </BundleResource> - <BundleResource Include="..\Common\Plugins\ssnet%402x.png"> - <Link>Plugins\ssnet%402x.png</Link> - </BundleResource> - <BundleResource Include="..\Common\Plugins\bitbucket.xml"> - <Link>Plugins\bitbucket.xml</Link> - </BundleResource> - <BundleResource Include="..\Common\Plugins\github.xml"> - <Link>Plugins\github.xml</Link> - </BundleResource> - <BundleResource Include="..\Common\Plugins\gitorious.xml"> - <Link>Plugins\gitorious.xml</Link> - </BundleResource> - <BundleResource Include="..\Common\Plugins\own-server.xml"> - <Link>Plugins\own-server.xml</Link> - </BundleResource> - <BundleResource Include="..\Common\Plugins\bitbucket.png"> - <Link>Plugins\bitbucket.png</Link> - </BundleResource> - <BundleResource Include="..\Common\Plugins\github.png"> - <Link>Plugins\github.png</Link> - </BundleResource> - <BundleResource Include="..\Common\Plugins\gitorious.png"> - <Link>Plugins\gitorious.png</Link> - </BundleResource> - <BundleResource Include="..\Common\Plugins\own-server.png"> - <Link>Plugins\own-server.png</Link> - </BundleResource> - <BundleResource Include="..\Common\Plugins\ssnet.png"> - <Link>Plugins\ssnet.png</Link> - </BundleResource> - <BundleResource Include="..\Common\Plugins\ssnet.xml"> - <Link>Plugins\ssnet.xml</Link> - </BundleResource> - <BundleResource Include="Resources\tutorial-slide-3%402x.png" /> - <BundleResource Include="..\Common\Plugins\planio.png"> - <Link>Plugins\planio.png</Link> - </BundleResource> - <BundleResource Include="..\Common\Plugins\planio.xml"> - <Link>Plugins\planio.xml</Link> - </BundleResource> - <BundleResource Include="..\Common\Plugins\planio%402x.png"> - <Link>Plugins\planio%402x.png</Link> - </BundleResource> - <BundleResource Include="..\Common\Pixmaps\text-balloon.png"> - <Link>Resources\text-balloon.png</Link> - </BundleResource> - <BundleResource Include="..\Common\Pixmaps\text-balloon%402x.png"> - <Link>Resources\text-balloon%402x.png</Link> - </BundleResource> - </ItemGroup> -</Project> diff --git a/SparkleShare/Mac/SparkleShare.sln b/SparkleShare/Mac/SparkleShare.sln deleted file mode 100644 index 8920b7f..0000000 --- a/SparkleShare/Mac/SparkleShare.sln +++ /dev/null @@ -1,56 +0,0 @@ -
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SparkleShare", "SparkleShare.csproj", "{CF5BC8DB-A633-4FCC-8A3E-E3AC9B59FABC}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SparkleLib", "..\..\SparkleLib\SparkleLib.csproj", "{2C914413-B31C-4362-93C7-1AE34F09112A}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SparkleLib.Git", "..\..\SparkleLib\Git\SparkleLib.Git.csproj", "{009FDCD7-1D57-4202-BB6D-8477D8C6B8EE}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Release|Any CPU = Release|Any CPU
- Debug|Any CPU = Debug|Any CPU
- ReleaseDist|Any CPU = ReleaseDist|Any CPU
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {009FDCD7-1D57-4202-BB6D-8477D8C6B8EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {009FDCD7-1D57-4202-BB6D-8477D8C6B8EE}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {009FDCD7-1D57-4202-BB6D-8477D8C6B8EE}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {009FDCD7-1D57-4202-BB6D-8477D8C6B8EE}.Release|Any CPU.Build.0 = Release|Any CPU
- {009FDCD7-1D57-4202-BB6D-8477D8C6B8EE}.ReleaseDist|Any CPU.ActiveCfg = Release|Any CPU
- {009FDCD7-1D57-4202-BB6D-8477D8C6B8EE}.ReleaseDist|Any CPU.Build.0 = Release|Any CPU
- {2C914413-B31C-4362-93C7-1AE34F09112A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {2C914413-B31C-4362-93C7-1AE34F09112A}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {2C914413-B31C-4362-93C7-1AE34F09112A}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {2C914413-B31C-4362-93C7-1AE34F09112A}.Release|Any CPU.Build.0 = Release|Any CPU
- {2C914413-B31C-4362-93C7-1AE34F09112A}.ReleaseDist|Any CPU.ActiveCfg = Release|Any CPU
- {2C914413-B31C-4362-93C7-1AE34F09112A}.ReleaseDist|Any CPU.Build.0 = Release|Any CPU
- {CF5BC8DB-A633-4FCC-8A3E-E3AC9B59FABC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {CF5BC8DB-A633-4FCC-8A3E-E3AC9B59FABC}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {CF5BC8DB-A633-4FCC-8A3E-E3AC9B59FABC}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {CF5BC8DB-A633-4FCC-8A3E-E3AC9B59FABC}.Release|Any CPU.Build.0 = Release|Any CPU
- {CF5BC8DB-A633-4FCC-8A3E-E3AC9B59FABC}.ReleaseDist|Any CPU.ActiveCfg = ReleaseDist|Any CPU
- {CF5BC8DB-A633-4FCC-8A3E-E3AC9B59FABC}.ReleaseDist|Any CPU.Build.0 = ReleaseDist|Any CPU
- EndGlobalSection
- GlobalSection(MonoDevelopProperties) = preSolution
- StartupItem = SparkleShare.csproj
- Policies = $0
- $0.DotNetNamingPolicy = $1
- $1.DirectoryNamespaceAssociation = None
- $1.ResourceNamePolicy = FileFormatDefault
- $0.TextStylePolicy = $2
- $2.inheritsSet = null
- $2.scope = text/x-csharp
- $0.CSharpFormattingPolicy = $3
- $3.inheritsSet = Mono
- $3.inheritsScope = text/x-csharp
- $3.scope = text/x-csharp
- $0.TextStylePolicy = $4
- $4.FileWidth = 120
- $4.inheritsSet = VisualStudio
- $4.inheritsScope = text/plain
- $4.scope = text/plain
- version =
- EndGlobalSection
-EndGlobal
diff --git a/SparkleShare/Mac/SparkleUI.cs b/SparkleShare/Mac/SparkleUI.cs deleted file mode 100755 index 508055a..0000000 --- a/SparkleShare/Mac/SparkleUI.cs +++ /dev/null @@ -1,97 +0,0 @@ -// SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com> -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <http://www.gnu.org/licenses/>. - - -using System; - -using MonoMac.Foundation; -using MonoMac.AppKit; - -namespace SparkleShare { - - public class SparkleUI : AppDelegate { - - public SparkleStatusIcon StatusIcon; - public SparkleEventLog EventLog; - public SparkleSetup Setup; - public SparkleBubbles Bubbles; - public SparkleAbout About; - public SparkleNote Note; - - public static string FontName = "Helvetica Neue"; - - public SparkleUI () - { - if (Environment.OSVersion.Version.Major < 14) - FontName = "Lucida Grande"; - - Program.Controller.Invoke (() => { - if (Environment.OSVersion.Version.Major >= 14) { - NSWorkspace.SharedWorkspace.SetIconforFile ( - NSImage.ImageNamed ("sparkleshare-folder-yosemite.icns"), - Program.Controller.FoldersPath, 0); - - } else { - NSWorkspace.SharedWorkspace.SetIconforFile ( - NSImage.ImageNamed ("sparkleshare-folder.icns"), - Program.Controller.FoldersPath, 0); - } - - NSApplication.SharedApplication.ApplicationIconImage = NSImage.ImageNamed ("sparkleshare-app.icns"); - - Setup = new SparkleSetup (); - EventLog = new SparkleEventLog (); - About = new SparkleAbout (); - Note = new SparkleNote (); - Bubbles = new SparkleBubbles (); - StatusIcon = new SparkleStatusIcon (); - }); - - Program.Controller.UIHasLoaded (); - } - - - public void Run () - { - NSApplication.Main (Program.Arguments); - } - - - public void UpdateDockIconVisibility () - { -// if (Setup.IsVisible || EventLog.IsVisible || About.IsVisible) -// NSApplication.SharedApplication.ActivationPolicy = NSApplicationActivationPolicy.Regular; - } - } - - - public partial class AppDelegate : NSApplicationDelegate { - - public override void WillTerminate (NSNotification notification) - { - Program.Controller.Quit (); - } - - - public override bool ApplicationShouldHandleReopen (NSApplication sender, bool has_visible_windows) - { - if (!has_visible_windows) - Program.Controller.HandleReopen (); - - return true; - } - } -} diff --git a/SparkleShare/Mac/SparkleAbout.cs b/SparkleShare/Mac/UserInterface/About.cs index 448f7a1..b9393ff 100755..100644 --- a/SparkleShare/Mac/SparkleAbout.cs +++ b/SparkleShare/Mac/UserInterface/About.cs @@ -1,5 +1,5 @@ -// SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com> +// SparkleShare, a collaboration and sharing tool. +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -16,17 +16,16 @@ using System; -using System.Drawing; -using System.IO; -using MonoMac.AppKit; -using MonoMac.Foundation; +using AppKit; +using CoreGraphics; +using Foundation; namespace SparkleShare { - public class SparkleAbout : NSWindow { + public class About : NSWindow { - public SparkleAboutController Controller = new SparkleAboutController (); + public AboutController Controller = new AboutController (); private NSTextField version_text_field, updates_text_field, credits_text_field; private SparkleLink website_link, credits_link, report_problem_link, debug_log_link; @@ -35,24 +34,25 @@ namespace SparkleShare { private NSButton hidden_close_button; - public SparkleAbout (IntPtr handle) : base (handle) { } + public About (IntPtr handle) : base (handle) { } - public SparkleAbout () : base () + public About () : base () { - SetFrame (new RectangleF (0, 0, 640, 281), true); + SetFrame (new CGRect (0, 0, 640, 281), true); Center (); Delegate = new SparkleAboutDelegate (); StyleMask = (NSWindowStyle.Closable | NSWindowStyle.Titled); Title = "About SparkleShare"; - MaxSize = new SizeF (640, 281); - MinSize = new SizeF (640, 281); + MaxSize = new CGSize (640, 281); + MinSize = new CGSize (640, 281); HasShadow = true; + IsOpaque = false; BackingType = NSBackingStore.Buffered; Level = NSWindowLevel.Floating; this.hidden_close_button = new NSButton () { - Frame = new RectangleF (0, 0, 0, 0), + Frame = new CGRect (0, 0, 0, 0), KeyEquivalentModifierMask = NSEventModifierMask.CommandKeyMask, KeyEquivalent = "w" }; @@ -63,15 +63,15 @@ namespace SparkleShare { this.hidden_close_button.Activated += delegate { Controller.WindowClosed (); }; Controller.HideWindowEvent += delegate { - Program.Controller.Invoke (() => PerformClose (this)); + SparkleShare.Controller.Invoke (() => PerformClose (this)); }; Controller.ShowWindowEvent += delegate { - Program.Controller.Invoke (() => OrderFrontRegardless ()); + SparkleShare.Controller.Invoke (() => OrderFrontRegardless ()); }; Controller.UpdateLabelEvent += delegate (string text) { - Program.Controller.Invoke (() => { this.updates_text_field.StringValue = text; }); + SparkleShare.Controller.Invoke (() => { this.updates_text_field.StringValue = text; }); }; @@ -82,52 +82,52 @@ namespace SparkleShare { private void CreateAbout () { this.about_image = NSImage.ImageNamed ("about"); - this.about_image.Size = new SizeF (720, 260); + this.about_image.Size = new CGSize (720, 260); this.about_image_view = new NSImageView () { Image = this.about_image, - Frame = new RectangleF (0, 0, 720, 260) + Frame = new CGRect (0, 0, 720, 260) }; this.version_text_field = new SparkleLabel ("version " + Controller.RunningVersion, NSTextAlignment.Left) { DrawsBackground = false, - Frame = new RectangleF (295, 140, 318, 22), + Frame = new CGRect (295, 140, 318, 22), TextColor = NSColor.White }; - this.updates_text_field = new SparkleLabel ("Checking for updates...", NSTextAlignment.Left) { + this.updates_text_field = new SparkleLabel ("Checking for updates…", NSTextAlignment.Left) { DrawsBackground = false, - Frame = new RectangleF (295, Frame.Height - 232, 318, 98), + Frame = new CGRect (295, Frame.Height - 232, 318, 98), TextColor = NSColor.FromCalibratedRgba (1.0f, 1.0f, 1.0f, 0.5f) }; this.credits_text_field = new SparkleLabel ( - @"Copyright © 2010–" + DateTime.Now.Year + " Hylke Bons and others." + + @"Copyright © 2010–" + DateTime.Now.Year + " Hylke Bons and others" + "\n\n" + "SparkleShare is Open Source. You are free to use, modify, and redistribute it " + - "under the GNU GPLv3.", NSTextAlignment.Left) { + "under the GNU GPLv3", NSTextAlignment.Left) { DrawsBackground = false, - Frame = new RectangleF (295, Frame.Height - 260, 318, 98), + Frame = new CGRect (295, Frame.Height - 260, 318, 98), TextColor = NSColor.White }; this.website_link = new SparkleLink ("Website", Controller.WebsiteLinkAddress); - this.website_link.Frame = new RectangleF (new PointF (295, 25), this.website_link.Frame.Size); + this.website_link.Frame = new CGRect (new CGPoint (295, 25), this.website_link.Frame.Size); this.credits_link = new SparkleLink ("Credits", Controller.CreditsLinkAddress); - this.credits_link.Frame = new RectangleF ( - new PointF (this.website_link.Frame.X + this.website_link.Frame.Width + 10, 25), + this.credits_link.Frame = new CGRect ( + new CGPoint (this.website_link.Frame.X + this.website_link.Frame.Width + 10, 25), this.credits_link.Frame.Size); this.report_problem_link = new SparkleLink ("Report a problem", Controller.ReportProblemLinkAddress); - this.report_problem_link.Frame = new RectangleF ( - new PointF (this.credits_link.Frame.X + this.credits_link.Frame.Width + 10, 25), + this.report_problem_link.Frame = new CGRect ( + new CGPoint (this.credits_link.Frame.X + this.credits_link.Frame.Width + 10, 25), this.report_problem_link.Frame.Size); this.debug_log_link = new SparkleLink ("Debug log", Controller.DebugLogLinkAddress); - this.debug_log_link.Frame = new RectangleF ( - new PointF (this.report_problem_link.Frame.X + this.report_problem_link.Frame.Width + 10, 25), + this.debug_log_link.Frame = new CGRect ( + new CGPoint (this.report_problem_link.Frame.X + this.report_problem_link.Frame.Width + 10, 25), this.debug_log_link.Frame.Size); ContentView.AddSubview (this.about_image_view); @@ -145,10 +145,6 @@ namespace SparkleShare { { NSApplication.SharedApplication.ActivateIgnoringOtherApps (true); MakeKeyAndOrderFront (this); - - if (Program.UI != null) - Program.UI.UpdateDockIconVisibility (); - base.OrderFrontRegardless (); } @@ -156,10 +152,6 @@ namespace SparkleShare { public override void PerformClose (NSObject sender) { base.OrderOut (this); - - if (Program.UI != null) - Program.UI.UpdateDockIconVisibility (); - return; } @@ -168,7 +160,7 @@ namespace SparkleShare { public override bool WindowShouldClose (NSObject sender) { - (sender as SparkleAbout).Controller.WindowClosed (); + (sender as About).Controller.WindowClosed (); return false; } } @@ -181,32 +173,27 @@ namespace SparkleShare { public SparkleLink (string text, string address) : base () { + StringValue = text; this.url = new NSUrl (address); - AllowsEditingTextAttributes = true; + Font = NSFont.SystemFontOfSize (11); + + TextColor = NSColor.FromCalibratedRgba (1.0f, 1.0f, 1.0f, 0.5f); BackgroundColor = NSColor.White; + + AllowsEditingTextAttributes = true; Bordered = false; DrawsBackground = false; Editable = false; Selectable = false; - - NSData name_data = NSData.FromString ("<a href='" + this.url + - "' style='font-size: 9pt; font-family: \"Helvetica Neue\"; color: #739ECF'>" + text + "</a></font>"); - - NSDictionary name_dictionary = new NSDictionary(); - NSAttributedString name_attributes = new NSAttributedString (name_data, new NSUrl ("file://"), out name_dictionary); - - NSMutableAttributedString s = new NSMutableAttributedString (); - s.Append (name_attributes); - - Cell.AttributedStringValue = s; - SizeToFit (); + + SizeToFit (); } public override void MouseUp (NSEvent e) { - Program.Controller.OpenWebsite (this.url.ToString ()); + SparkleShare.Controller.OpenWebsite (this.url.ToString ()); } diff --git a/SparkleShare/Mac/SparkleBubbles.cs b/SparkleShare/Mac/UserInterface/Bubbles.cs index 1ac44e4..d00fba7 100755 --- a/SparkleShare/Mac/SparkleBubbles.cs +++ b/SparkleShare/Mac/UserInterface/Bubbles.cs @@ -1,5 +1,5 @@ -// SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com> +// SparkleShare, a collaboration and sharing tool. +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -16,18 +16,16 @@ using System; - -using MonoMac.AppKit; -using MonoMac.Foundation; +using Foundation; namespace SparkleShare { - public class SparkleBubbles : NSObject { + public class Bubbles : NSObject { - public SparkleBubblesController Controller = new SparkleBubblesController (); + public BubblesController Controller = new BubblesController (); - public SparkleBubbles () + public Bubbles () { // The notification center was introduced in Mountain Lion if (Environment.OSVersion.Version.Major >= 12) @@ -35,18 +33,18 @@ namespace SparkleShare { } - private void ShowBubbleEvent (string title, string subtext, string image_path) { + void ShowBubbleEvent (string title, string subtext, string image_path) { InvokeOnMainThread (() => { - NSUserNotification notification = new NSUserNotification () { + var notification = new NSUserNotification { Title = title, InformativeText = subtext, - DeliveryDate = DateTime.Now + DeliveryDate = (NSDate) DateTime.Now }; NSUserNotificationCenter center = NSUserNotificationCenter.DefaultUserNotificationCenter; center.ShouldPresentNotification = delegate { return true; }; - center.DidActivateNotification += delegate { Controller.BubbleClicked (); }; + center.DidActivateNotification += delegate { Controller.BubbleClicked (); }; center.ScheduleNotification (notification); }); } diff --git a/SparkleShare/Mac/SparkleEventLog.cs b/SparkleShare/Mac/UserInterface/EventLog.cs index 6ea3c73..52aa690 100755..100644 --- a/SparkleShare/Mac/SparkleEventLog.cs +++ b/SparkleShare/Mac/UserInterface/EventLog.cs @@ -1,5 +1,5 @@ -// SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com> +// SparkleShare, a collaboration and sharing tool. +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -16,34 +16,34 @@ using System; -using System.Drawing; using System.IO; -using System.Threading; -using MonoMac.Foundation; -using MonoMac.AppKit; -using MonoMac.ObjCRuntime; -using MonoMac.WebKit; +using AppKit; +using CoreGraphics; +using Foundation; +using WebKit; namespace SparkleShare { - public class SparkleEventLog : NSWindow { + public class EventLog : NSWindow { - public SparkleEventLogController Controller = new SparkleEventLogController (); + public EventLogController Controller = new EventLogController (); public float TitlebarHeight; - private WebView web_view; - private NSBox background; - private NSBox cover; - private NSPopUpButton popup_button; - private NSProgressIndicator progress_indicator; - private NSTextField size_label, size_label_value, history_label, history_label_value; - private NSButton hidden_close_button; + WebView web_view; + NSBox background; + NSBox cover; + NSPopUpButton popup_button; + NSProgressIndicator progress_indicator; + NSTextField size_label, size_label_value, history_label, history_label_value; + NSButton hidden_close_button; - public SparkleEventLog (IntPtr handle) : base (handle) { } + public EventLog (IntPtr handle) : base (handle) + { + } - public SparkleEventLog () : base () + public EventLog () { Title = "Recent Changes"; Delegate = new SparkleEventsDelegate (); @@ -56,30 +56,33 @@ namespace SparkleShare { float y = (float) (NSScreen.MainScreen.Frame.Height * 0.5 - (height * 0.5)); SetFrame ( - new RectangleF ( - new PointF (x, y), - new SizeF (min_width, height)), + new CGRect ( + new CGPoint (x, y), + new CGSize (min_width, height)), true); StyleMask = (NSWindowStyle.Closable | NSWindowStyle.Miniaturizable | NSWindowStyle.Titled | NSWindowStyle.Resizable); - MinSize = new SizeF (min_width, min_height); + MinSize = new CGSize (min_width, min_height); HasShadow = true; + IsOpaque = false; BackingType = NSBackingStore.Buffered; - TitlebarHeight = Frame.Height - ContentView.Frame.Height; + TitlebarHeight = (float) (Frame.Height - ContentView.Frame.Height); Level = NSWindowLevel.Floating; - this.web_view = new WebView (new RectangleF (0, 0, 481, 579), "", "") { - Frame = new RectangleF (new PointF (0, 0), - new SizeF (ContentView.Frame.Width, ContentView.Frame.Height - 39)) + this.web_view = new WebView (new CGRect (0, 0, 481, 579), "", "") { + Frame = new CGRect (new CGPoint (0, 0), + new CGSize (ContentView.Frame.Width, ContentView.Frame.Height - 39)) }; + this.web_view.Preferences.PlugInsEnabled = false; + this.cover = new NSBox () { - Frame = new RectangleF ( - new PointF (-1, -1), - new SizeF (Frame.Width + 2, this.web_view.Frame.Height + 1)), + Frame = new CGRect ( + new CGPoint (-1, -1), + new CGSize (Frame.Width + 2, this.web_view.Frame.Height + 1)), FillColor = NSColor.White, BorderType = NSBorderType.NoBorder, BoxType = NSBoxType.NSBoxCustom @@ -100,9 +103,9 @@ namespace SparkleShare { BackgroundColor = NSColor.WindowBackground, Bordered = false, Editable = false, - Frame = new RectangleF ( - new PointF (0, ContentView.Frame.Height - 31), - new SizeF (60, 20)), + Frame = new CGRect ( + new CGPoint (0, ContentView.Frame.Height - 31), + new CGSize (60, 20)), StringValue = "Size:" }; @@ -111,11 +114,11 @@ namespace SparkleShare { BackgroundColor = NSColor.WindowBackground, Bordered = false, Editable = false, - Frame = new RectangleF ( - new PointF (60, ContentView.Frame.Height - 27), - new SizeF (60, 20)), + Frame = new CGRect ( + new CGPoint (60, ContentView.Frame.Height - 31), + new CGSize (60, 20)), StringValue = "…", - Font = NSFont.FromFontName (SparkleUI.FontName + " Bold", NSFont.SystemFontSize) + Font = NSFont.BoldSystemFontOfSize (12) }; @@ -124,9 +127,9 @@ namespace SparkleShare { BackgroundColor = NSColor.WindowBackground, Bordered = false, Editable = false, - Frame = new RectangleF ( - new PointF (130, ContentView.Frame.Height - 31), - new SizeF (60, 20)), + Frame = new CGRect ( + new CGPoint (130, ContentView.Frame.Height - 31), + new CGSize (60, 20)), StringValue = "History:" }; @@ -135,34 +138,34 @@ namespace SparkleShare { BackgroundColor = NSColor.WindowBackground, Bordered = false, Editable = false, - Frame = new RectangleF ( - new PointF (190, ContentView.Frame.Height - 27), - new SizeF (60, 20) + Frame = new CGRect ( + new CGPoint (190, ContentView.Frame.Height - 31), + new CGSize (60, 20) ), StringValue = "…", - Font = NSFont.FromFontName (SparkleUI.FontName + " Bold", NSFont.SystemFontSize) + Font = NSFont.BoldSystemFontOfSize (12) }; this.popup_button = new NSPopUpButton () { - Frame = new RectangleF ( - new PointF (ContentView.Frame.Width - 156 - 12, ContentView.Frame.Height - 33), - new SizeF (156, 26)), + Frame = new CGRect ( + new CGPoint (ContentView.Frame.Width - 156 - 12, ContentView.Frame.Height - 33), + new CGSize (156, 26)), PullsDown = false }; this.background = new NSBox () { - Frame = new RectangleF ( - new PointF (-1, -1), - new SizeF (Frame.Width + 2, this.web_view.Frame.Height + 2)), + Frame = new CGRect ( + new CGPoint (-1, -1), + new CGSize (Frame.Width + 2, this.web_view.Frame.Height + 2)), FillColor = NSColor.White, BorderColor = NSColor.LightGray, BoxType = NSBoxType.NSBoxCustom }; this.progress_indicator = new NSProgressIndicator () { - Frame = new RectangleF ( - new PointF (Frame.Width / 2 - 10, this.web_view.Frame.Height / 2 + 10), - new SizeF (20, 20)), + Frame = new CGRect ( + new CGPoint (Frame.Width / 2 - 10, this.web_view.Frame.Height / 2 + 10), + new CGSize (20, 20)), Style = NSProgressIndicatorStyle.Spinning }; @@ -177,33 +180,33 @@ namespace SparkleShare { ContentView.AddSubview (this.background); ContentView.AddSubview (this.hidden_close_button); - (Delegate as SparkleEventsDelegate).WindowResized += delegate (SizeF new_window_size) { - Program.Controller.Invoke (() => Relayout (new_window_size)); + (Delegate as SparkleEventsDelegate).WindowResized += delegate (CGSize new_window_size) { + SparkleShare.Controller.Invoke (() => Relayout (new_window_size)); }; // Hook up the controller events Controller.HideWindowEvent += delegate { - Program.Controller.Invoke (() => { + SparkleShare.Controller.Invoke (() => { this.progress_indicator.Hidden = true; PerformClose (this); }); }; Controller.ShowWindowEvent += delegate { - Program.Controller.Invoke (() => OrderFrontRegardless ()); + SparkleShare.Controller.Invoke (() => OrderFrontRegardless ()); }; Controller.UpdateChooserEvent += delegate (string [] folders) { - Program.Controller.Invoke (() => UpdateChooser (folders)); + SparkleShare.Controller.Invoke (() => UpdateChooser (folders)); }; Controller.UpdateChooserEnablementEvent += delegate (bool enabled) { - Program.Controller.Invoke (() => { this.popup_button.Enabled = enabled; }); + SparkleShare.Controller.Invoke (() => { this.popup_button.Enabled = enabled; }); }; Controller.UpdateContentEvent += delegate (string html) { - Program.Controller.Invoke (() => { + SparkleShare.Controller.Invoke (() => { this.cover.RemoveFromSuperview (); this.progress_indicator.Hidden = true; UpdateContent (html); @@ -211,7 +214,7 @@ namespace SparkleShare { }; Controller.ContentLoadingEvent += delegate { - Program.Controller.Invoke (() => { + SparkleShare.Controller.Invoke (() => { this.web_view.RemoveFromSuperview (); // FIXME: Hack to hide that the WebView sometimes doesn't disappear ContentView.AddSubview (this.cover); @@ -221,14 +224,14 @@ namespace SparkleShare { }; Controller.UpdateSizeInfoEvent += delegate (string size, string history_size) { - Program.Controller.Invoke (() => { + SparkleShare.Controller.Invoke (() => { this.size_label_value.StringValue = size; this.history_label_value.StringValue = history_size; }); }; Controller.ShowSaveDialogEvent += delegate (string file_name, string target_folder_path) { - Program.Controller.Invoke (() => { + SparkleShare.Controller.Invoke (() => { NSSavePanel panel = new NSSavePanel () { DirectoryUrl = new NSUrl (target_folder_path, true), NameFieldStringValue = file_name, @@ -237,7 +240,7 @@ namespace SparkleShare { PreventsApplicationTerminationWhenModal = false }; - if ((NSPanelButtonType) panel.RunModal () == NSPanelButtonType.Ok) { + if ((NSPanelButtonType) (int) panel.RunModal () == NSPanelButtonType.Ok) { string target_file_path = Path.Combine (panel.DirectoryUrl.RelativePath, panel.NameFieldStringValue); Controller.SaveDialogCompleted (target_file_path); @@ -249,41 +252,41 @@ namespace SparkleShare { } - public void Relayout (SizeF new_window_size) + public void Relayout (CGSize new_window_size) { - this.web_view.Frame = new RectangleF (this.web_view.Frame.Location, - new SizeF (new_window_size.Width, new_window_size.Height - TitlebarHeight - 39)); + this.web_view.Frame = new CGRect (this.web_view.Frame.Location, + new CGSize (new_window_size.Width, new_window_size.Height - TitlebarHeight - 39)); - this.cover.Frame = new RectangleF (this.cover.Frame.Location, - new SizeF (new_window_size.Width, new_window_size.Height - TitlebarHeight - 39)); + this.cover.Frame = new CGRect (this.cover.Frame.Location, + new CGSize (new_window_size.Width, new_window_size.Height - TitlebarHeight - 39)); - this.background.Frame = new RectangleF (this.background.Frame.Location, - new SizeF (new_window_size.Width, new_window_size.Height - TitlebarHeight - 37)); + this.background.Frame = new CGRect (this.background.Frame.Location, + new CGSize (new_window_size.Width, new_window_size.Height - TitlebarHeight - 37)); - this.size_label.Frame = new RectangleF ( - new PointF (this.size_label.Frame.X, new_window_size.Height - TitlebarHeight - 30), + this.size_label.Frame = new CGRect ( + new CGPoint (this.size_label.Frame.X, new_window_size.Height - TitlebarHeight - 30), this.size_label.Frame.Size); - this.size_label_value.Frame = new RectangleF ( - new PointF (this.size_label_value.Frame.X, new_window_size.Height - TitlebarHeight - 27), + this.size_label_value.Frame = new CGRect ( + new CGPoint (this.size_label_value.Frame.X, new_window_size.Height - TitlebarHeight - 27), this.size_label_value.Frame.Size); - this.history_label.Frame = new RectangleF ( - new PointF (this.history_label.Frame.X, new_window_size.Height - TitlebarHeight - 30), + this.history_label.Frame = new CGRect ( + new CGPoint (this.history_label.Frame.X, new_window_size.Height - TitlebarHeight - 30), this.history_label.Frame.Size); - this.history_label_value.Frame = new RectangleF ( - new PointF (this.history_label_value.Frame.X, new_window_size.Height - TitlebarHeight - 27), + this.history_label_value.Frame = new CGRect ( + new CGPoint (this.history_label_value.Frame.X, new_window_size.Height - TitlebarHeight - 27), this.history_label_value.Frame.Size); - this.progress_indicator.Frame = new RectangleF ( - new PointF (new_window_size.Width / 2 - 10, this.web_view.Frame.Height / 2 + 10), + this.progress_indicator.Frame = new CGRect ( + new CGPoint (new_window_size.Width / 2 - 10, this.web_view.Frame.Height / 2 + 10), this.progress_indicator.Frame.Size); this.popup_button.RemoveFromSuperview (); // Needed to prevent redraw glitches - this.popup_button.Frame = new RectangleF ( - new PointF (new_window_size.Width - this.popup_button.Frame.Width - 12, new_window_size.Height - TitlebarHeight - 33), + this.popup_button.Frame = new CGRect ( + new CGPoint (new_window_size.Width - this.popup_button.Frame.Width - 12, new_window_size.Height - TitlebarHeight - 33), this.popup_button.Frame.Size); ContentView.AddSubview (this.popup_button); @@ -299,21 +302,21 @@ namespace SparkleShare { this.popup_button.AddItem ("Summary"); this.popup_button.Menu.AddItem (NSMenuItem.SeparatorItem); - - int row = 2; - foreach (string folder in folders) { + + int row = 2; + foreach (string folder in folders) { this.popup_button.AddItem (folder); - - if (folder.Equals (Controller.SelectedFolder)) - this.popup_button.SelectItem (row); - - row++; - } - + + if (folder.Equals (Controller.SelectedFolder)) + this.popup_button.SelectItem (row); + + row++; + } + this.popup_button.AddItems (folders); this.popup_button.Activated += delegate { - Program.Controller.Invoke (() => { + SparkleShare.Controller.Invoke (() => { if (this.popup_button.IndexOfSelectedItem == 0) Controller.SelectedFolder = null; else @@ -325,9 +328,9 @@ namespace SparkleShare { public void UpdateContent (string html) { - string pixmaps_path = "file://" + NSBundle.MainBundle.ResourcePath; - - html = html.Replace ("<!-- $body-font-family -->", "Helvetica Neue"); + string pixmaps_path = "file://" + NSBundle.MainBundle.ResourcePath; + + html = html.Replace ("<!-- $body-font-family -->", UserInterface.FontName); html = html.Replace ("<!-- $day-entry-header-font-size -->", "13.6px"); html = html.Replace ("<!-- $body-font-size -->", "13.4px"); html = html.Replace ("<!-- $secondary-font-color -->", "#bbb"); @@ -341,9 +344,9 @@ namespace SparkleShare { html = html.Replace ("<!-- $document-deleted-background-image -->", pixmaps_path + "/document-deleted-12.png"); html = html.Replace ("<!-- $document-edited-background-image -->", pixmaps_path + "/document-edited-12.png"); html = html.Replace ("<!-- $document-moved-background-image -->", pixmaps_path + "/document-moved-12.png"); - - this.web_view = new WebView (new RectangleF (0, 0, 481, 579), "", "") { - Frame = new RectangleF (new PointF (0, 0), new SizeF (ContentView.Frame.Width, ContentView.Frame.Height - 39)) + + this.web_view = new WebView (new CGRect (0, 0, 481, 579), "", "") { + Frame = new CGRect (new CGPoint (0, 0), new CGSize (ContentView.Frame.Width, ContentView.Frame.Height - 39)) }; this.web_view.MainFrame.LoadHtmlString (html, new NSUrl ("")); @@ -351,12 +354,7 @@ namespace SparkleShare { this.web_view.PolicyDelegate = new SparkleWebPolicyDelegate (); ContentView.AddSubview (this.web_view); - (this.web_view.PolicyDelegate as SparkleWebPolicyDelegate).LinkClicked += delegate (string href) { - if (href.StartsWith ("file:///")) - href = href.Substring (7); - - Controller.LinkClicked (href); - }; + (this.web_view.PolicyDelegate as SparkleWebPolicyDelegate).LinkClicked += Controller.LinkClicked; this.progress_indicator.Hidden = true; } @@ -366,10 +364,6 @@ namespace SparkleShare { { NSApplication.SharedApplication.ActivateIgnoringOtherApps (true); MakeKeyAndOrderFront (this); - - if (Program.UI != null) - Program.UI.UpdateDockIconVisibility (); - base.OrderFrontRegardless (); } @@ -377,10 +371,6 @@ namespace SparkleShare { public override void PerformClose (NSObject sender) { base.OrderOut (this); - - if (Program.UI != null) - Program.UI.UpdateDockIconVisibility (); - return; } } @@ -389,9 +379,9 @@ namespace SparkleShare { public class SparkleEventsDelegate : NSWindowDelegate { public event WindowResizedHandler WindowResized = delegate { }; - public delegate void WindowResizedHandler (SizeF new_window_size); + public delegate void WindowResizedHandler (CGSize new_window_size); - public override SizeF WillResize (NSWindow sender, SizeF to_frame_size) + public override CGSize WillResize (NSWindow sender, CGSize to_frame_size) { WindowResized (to_frame_size); return to_frame_size; @@ -399,7 +389,7 @@ namespace SparkleShare { public override bool WindowShouldClose (NSObject sender) { - (sender as SparkleEventLog).Controller.WindowClosed (); + (sender as EventLog).Controller.WindowClosed (); return false; } } diff --git a/SparkleShare/Mac/SparkleNote.cs b/SparkleShare/Mac/UserInterface/Note.cs index 9b9cbf2..9e5c247 100755..100644 --- a/SparkleShare/Mac/SparkleNote.cs +++ b/SparkleShare/Mac/UserInterface/Note.cs @@ -1,5 +1,5 @@ -// SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com> +// SparkleShare, a collaboration and sharing tool. +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -16,16 +16,16 @@ using System; -using System.Drawing; -using MonoMac.AppKit; -using MonoMac.Foundation; +using AppKit; +using CoreGraphics; +using Foundation; namespace SparkleShare { - public class SparkleNote : NSWindow { + public class Note : NSWindow { - public SparkleNoteController Controller = new SparkleNoteController (); + public NoteController Controller = new NoteController (); private NSImage user_image, balloon_image; private NSImageView user_image_view, balloon_image_view; @@ -34,24 +34,25 @@ namespace SparkleShare { private NSTextField user_name_text_field, user_email_text_field, balloon_text_field; - public SparkleNote (IntPtr handle) : base (handle) { } + public Note (IntPtr handle) : base (handle) { } - public SparkleNote () : base () + public Note () : base () { - SetFrame (new RectangleF (0, 0, 480, 240), true); + SetFrame (new CGRect (0, 0, 480, 240), true); Center (); Delegate = new SparkleNoteDelegate (); StyleMask = (NSWindowStyle.Closable | NSWindowStyle.Titled); Title = "Add Note"; - MaxSize = new SizeF (480, 240); - MinSize = new SizeF (480, 240); + MaxSize = new CGSize (480, 240); + MinSize = new CGSize (480, 240); HasShadow = true; + IsOpaque = false; BackingType = NSBackingStore.Buffered; Level = NSWindowLevel.Floating; this.hidden_close_button = new NSButton () { - Frame = new RectangleF (0, 0, 0, 0), + Frame = new CGRect (0, 0, 0, 0), KeyEquivalentModifierMask = NSEventModifierMask.CommandKeyMask, KeyEquivalent = "w" }; @@ -62,16 +63,16 @@ namespace SparkleShare { this.hidden_close_button.Activated += delegate { Controller.WindowClosed (); }; Controller.HideWindowEvent += delegate { - Program.Controller.Invoke (() => PerformClose (this)); + SparkleShare.Controller.Invoke (() => PerformClose (this)); }; Controller.ShowWindowEvent += delegate { - Program.Controller.Invoke (() => OrderFrontRegardless ()); + SparkleShare.Controller.Invoke (() => OrderFrontRegardless ()); CreateNote (); }; Controller.UpdateTitleEvent += delegate (string title) { - Program.Controller.Invoke (() => { Title = title; }); + SparkleShare.Controller.Invoke (() => { Title = title; }); }; @@ -82,9 +83,9 @@ namespace SparkleShare { private void CreateNote () { this.cover = new NSBox () { - Frame = new RectangleF ( - new PointF (-1, 58), - new SizeF (Frame.Width + 2, this.ContentView.Frame.Height + 1)), + Frame = new CGRect ( + new CGPoint (-1, 58), + new CGSize (Frame.Width + 2, this.ContentView.Frame.Height + 1)), FillColor = NSColor.FromCalibratedRgba (0.77f, 0.77f, 0.75f, 1.0f), BorderColor = NSColor.LightGray, BoxType = NSBoxType.NSBoxCustom @@ -96,11 +97,11 @@ namespace SparkleShare { BackgroundColor = NSColor.FromCalibratedRgba (0.77f, 0.77f, 0.75f, 1.0f), Bordered = false, Editable = false, - Frame = new RectangleF ( - new PointF (85, ContentView.Frame.Height - 41), - new SizeF (320, 22)), - StringValue = Program.Controller.CurrentUser.Name, - Font = NSFont.FromFontName (SparkleUI.FontName + " Bold", NSFont.SystemFontSize) + Frame = new CGRect ( + new CGPoint (85, ContentView.Frame.Height - 41), + new CGSize (320, 22)), + StringValue = SparkleShare.Controller.CurrentUser.Name, + Font = NSFont.BoldSystemFontOfSize (12) }; this.user_email_text_field = new NSTextField () { @@ -109,10 +110,10 @@ namespace SparkleShare { TextColor = NSColor.DisabledControlText, Bordered = false, Editable = false, - Frame = new RectangleF ( - new PointF (85, ContentView.Frame.Height - 60), - new SizeF (320, 20)), - StringValue = Program.Controller.CurrentUser.Email, + Frame = new CGRect ( + new CGPoint (85, ContentView.Frame.Height - 60), + new CGSize (320, 20)), + StringValue = SparkleShare.Controller.CurrentUser.Email, }; @@ -121,9 +122,9 @@ namespace SparkleShare { BackgroundColor = NSColor.White, Bordered = false, Editable = true, - Frame = new RectangleF ( - new PointF (30, ContentView.Frame.Height - 137), - new SizeF (418, 48)) + Frame = new CGRect ( + new CGPoint (30, ContentView.Frame.Height - 137), + new CGSize (418, 48)) }; (this.balloon_text_field.Cell as NSTextFieldCell).PlaceholderString = "Anything to add?"; @@ -136,13 +137,13 @@ namespace SparkleShare { this.cancel_button = new NSButton () { Title = "Cancel", BezelStyle = NSBezelStyle.Rounded, - Frame = new RectangleF (Frame.Width - 15 - 105 * 2, 12, 105, 32), + Frame = new CGRect (Frame.Width - 15 - 105 * 2, 12, 105, 32), }; this.sync_button = new NSButton () { Title = "Sync", BezelStyle = NSBezelStyle.Rounded, - Frame = new RectangleF (Frame.Width - 15 - 105, 12, 105, 32), + Frame = new CGRect (Frame.Width - 15 - 105, 12, 105, 32), }; this.cancel_button.Activated += delegate { Controller.CancelClicked (); }; @@ -156,10 +157,10 @@ namespace SparkleShare { else this.balloon_image = NSImage.ImageNamed ("text-balloon"); - this.balloon_image.Size = new SizeF (438, 72); + this.balloon_image.Size = new CGSize (438, 72); this.balloon_image_view = new NSImageView () { Image = this.balloon_image, - Frame = new RectangleF (21, ContentView.Frame.Height - 145, 438, 72) + Frame = new CGRect (21, ContentView.Frame.Height - 145, 438, 72) }; @@ -168,10 +169,10 @@ namespace SparkleShare { else this.user_image = NSImage.ImageNamed ("user-icon-default"); - this.user_image.Size = new SizeF (48, 48); + this.user_image.Size = new CGSize (48, 48); this.user_image_view = new NSImageView () { Image = this.user_image, - Frame = new RectangleF (21, ContentView.Frame.Height - 65, 48, 48) + Frame = new CGRect (21, ContentView.Frame.Height - 65, 48, 48) }; this.user_image_view.WantsLayer = true; @@ -197,10 +198,6 @@ namespace SparkleShare { { NSApplication.SharedApplication.ActivateIgnoringOtherApps (true); MakeKeyAndOrderFront (this); - - if (Program.UI != null) - Program.UI.UpdateDockIconVisibility (); - base.OrderFrontRegardless (); } @@ -208,24 +205,21 @@ namespace SparkleShare { public override void PerformClose (NSObject sender) { base.OrderOut (this); - - if (Program.UI != null) - Program.UI.UpdateDockIconVisibility (); - return; } + public override bool AcceptsFirstResponder () { return true; } - private class SparkleNoteDelegate : NSWindowDelegate { + class SparkleNoteDelegate : NSWindowDelegate { public override bool WindowShouldClose (NSObject sender) { - (sender as SparkleNote).Controller.WindowClosed (); + (sender as Note).Controller.WindowClosed (); return false; } } diff --git a/SparkleShare/Mac/SparkleSetup.cs b/SparkleShare/Mac/UserInterface/Setup.cs index d544627..75aca2a 100755..100644 --- a/SparkleShare/Mac/SparkleSetup.cs +++ b/SparkleShare/Mac/UserInterface/Setup.cs @@ -1,5 +1,5 @@ -// SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com> +// SparkleShare, a collaboration and sharing tool. +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -17,55 +17,63 @@ using System; using System.Collections.Generic; -using System.Drawing; using System.IO; -using MonoMac.Foundation; -using MonoMac.AppKit; -using MonoMac.WebKit; +using AppKit; +using CoreGraphics; +using Foundation; +using WebKit; -using Mono.Unix; +using Sparkles; namespace SparkleShare { - public class SparkleSetup : SparkleSetupWindow { + public class Setup : SetupWindow { - public SparkleSetupController Controller = new SparkleSetupController (); + public SetupController Controller = new SetupController (); - private NSButton ContinueButton, AddButton, CopyButton, TryAgainButton, CancelButton, - SkipTutorialButton, FinishButton, ShowFilesButton; + private NSButton ContinueButton, AddButton, TryAgainButton, CancelButton, FinishButton, ShowFilesButton; - private NSTextField FullNameTextField, FullNameLabel, EmailLabel, EmailTextField, - LinkCodeTextField, AddressTextField, AddressLabel, AddressHelpLabel, PathTextField, PathLabel, - PathHelpLabel, ProgressLabel, PasswordTextField, VisiblePasswordTextField, PasswordLabel, WarningTextField; + private NSTextField FullNameTextField, FullNameLabel, EmailLabel, EmailTextField; - private NSButton StartupCheckButton, HistoryCheckButton, ShowPasswordCheckButton; + private NSTextField AddressTextField, AddressLabel, AddressHelpLabel; + private NSTextField PathLabel, PathTextField, PathHelpLabel; + + private NSTextField ProgressLabel, PasswordTextField, VisiblePasswordTextField, PasswordLabel, WarningTextField; + + private NSImage WarningImage; + private NSImageView WarningImageView; + + private NSButton HistoryCheckButton, ShowPasswordCheckButton; private NSProgressIndicator ProgressIndicator; - private NSImage WarningImage, SlideImage; - private NSImageView WarningImageView, SlideImageView; private NSTableColumn IconColumn, DescriptionColumn; private NSTableView TableView; private NSScrollView ScrollView; private SparkleDataSource DataSource; + private NSButtonCell ButtonCellProto; + private NSMatrix Matrix; + List<NSTextField> storage_type_descriptions; - public SparkleSetup () : base () + + public Setup () : base () { Controller.HideWindowEvent += delegate { - Program.Controller.Invoke (() => PerformClose (this)); + SparkleShare.Controller.Invoke (() => PerformClose (this)); }; Controller.ShowWindowEvent += delegate { - Program.Controller.Invoke (() => OrderFrontRegardless ()); + SparkleShare.Controller.Invoke (() => OrderFrontRegardless ()); }; Controller.ChangePageEvent += delegate (PageType type, string [] warnings) { - Program.Controller.Invoke (() => { + SparkleShare.Controller.Invoke (() => { Reset (); ShowPage (type, warnings); ShowAll (); }); }; + } @@ -76,19 +84,19 @@ namespace SparkleShare { Description = "First off, what’s your name and email?\n(visible only to team members)"; FullNameLabel = new SparkleLabel ("Full Name:", NSTextAlignment.Right); - FullNameLabel.Frame = new RectangleF (165, Frame.Height - 234, 160, 17); + FullNameLabel.Frame = new CGRect (165, Frame.Height - 234, 160, 17); FullNameTextField = new NSTextField () { - Frame = new RectangleF (330, Frame.Height - 238, 196, 22), - StringValue = UnixUserInfo.GetRealUser ().RealName, + Frame = new CGRect (330, Frame.Height - 238, 196, 22), + StringValue = new NSProcessInfo ().GetFullUserName (), Delegate = new SparkleTextFieldDelegate () }; EmailLabel = new SparkleLabel ("Email:", NSTextAlignment.Right); - EmailLabel.Frame = new RectangleF (165, Frame.Height - 264, 160, 17); + EmailLabel.Frame = new CGRect (165, Frame.Height - 264, 160, 17); EmailTextField = new NSTextField () { - Frame = new RectangleF (330, Frame.Height - 268, 196, 22), + Frame = new CGRect (330, Frame.Height - 268, 196, 22), Delegate = new SparkleTextFieldDelegate () }; @@ -118,7 +126,7 @@ namespace SparkleShare { CancelButton.Activated += delegate { Controller.SetupPageCancelled (); }; Controller.UpdateSetupContinueButtonEvent += delegate (bool button_enabled) { - Program.Controller.Invoke (() => { + SparkleShare.Controller.Invoke (() => { ContinueButton.Enabled = button_enabled; }); }; @@ -145,20 +153,19 @@ namespace SparkleShare { Description = "Do you want to add this project to SparkleShare?"; AddressLabel = new SparkleLabel ("Address:", NSTextAlignment.Right); - AddressLabel.Frame = new RectangleF (165, Frame.Height - 238, 160, 17); - AddressLabel.Font = NSFont.FromFontName (SparkleUI.FontName + " Bold", NSFont.SystemFontSize); - + AddressLabel.Frame = new CGRect (165, Frame.Height - 238, 160, 17); + AddressLabel.Font = NSFont.BoldSystemFontOfSize (12); + AddressTextField = new SparkleLabel (Controller.PendingInvite.Address, NSTextAlignment.Left) { - Frame = new RectangleF (330, Frame.Height - 240, 260, 17) + Frame = new CGRect (330, Frame.Height - 240, 260, 17) }; PathLabel = new SparkleLabel ("Remote Path:", NSTextAlignment.Right); - PathLabel.Frame = new RectangleF (165, Frame.Height - 262, 160, 17); - PathLabel.Font = NSFont.FromFontName (SparkleUI.FontName + " Bold", NSFont.SystemFontSize); - + PathLabel.Frame = new CGRect (165, Frame.Height - 262, 160, 17); + PathLabel.Font = NSFont.BoldSystemFontOfSize (12); PathTextField = new SparkleLabel (Controller.PendingInvite.RemotePath, NSTextAlignment.Left) { - Frame = new RectangleF (330, Frame.Height - 264, 260, 17) + Frame = new CGRect (330, Frame.Height - 264, 260, 17) }; CancelButton = new NSButton () { Title = "Cancel" }; @@ -183,13 +190,13 @@ namespace SparkleShare { Description = ""; AddressLabel = new SparkleLabel ("Address:", NSTextAlignment.Left) { - Frame = new RectangleF (190, Frame.Height - 308, 160, 17), - Font = NSFont.FromFontName (SparkleUI.FontName + " Bold", NSFont.SystemFontSize) + Frame = new CGRect (190, Frame.Height - 310, 160, 17), + Font = NSFont.BoldSystemFontOfSize (12) }; AddressTextField = new NSTextField () { - Frame = new RectangleF (190, Frame.Height - 336, 196, 22), - Enabled = (Controller.SelectedPlugin.Address == null), + Frame = new CGRect (190, Frame.Height - 336, 196, 22), + Enabled = (Controller.SelectedPreset.Address == null), Delegate = new SparkleTextFieldDelegate (), StringValue = "" + Controller.PreviousAddress }; @@ -197,40 +204,40 @@ namespace SparkleShare { AddressTextField.Cell.LineBreakMode = NSLineBreakMode.TruncatingTail; PathLabel = new SparkleLabel ("Remote Path:", NSTextAlignment.Left) { - Frame = new RectangleF (190 + 196 + 16, Frame.Height - 308, 160, 17), - Font = NSFont.FromFontName (SparkleUI.FontName + " Bold", NSFont.SystemFontSize) + Frame = new CGRect (190 + 196 + 16, Frame.Height - 310, 160, 17), + Font = NSFont.BoldSystemFontOfSize (12) }; PathTextField = new NSTextField () { - Frame = new RectangleF (190 + 196 + 16, Frame.Height - 336, 196, 22), - Enabled = (Controller.SelectedPlugin.Path == null), + Frame = new CGRect (190 + 196 + 16, Frame.Height - 336, 196, 22), + Enabled = (Controller.SelectedPreset.Path == null), Delegate = new SparkleTextFieldDelegate (), StringValue = "" + Controller.PreviousPath }; PathTextField.Cell.LineBreakMode = NSLineBreakMode.TruncatingTail; - PathHelpLabel = new SparkleLabel (Controller.SelectedPlugin.PathExample, NSTextAlignment.Left) { - TextColor = NSColor.DisabledControlText, - Frame = new RectangleF (190 + 196 + 16, Frame.Height - 358, 204, 19) + PathHelpLabel = new SparkleLabel (Controller.SelectedPreset.PathExample, NSTextAlignment.Left) { + TextColor = NSColor.DisabledControlText, + Frame = new CGRect (190 + 196 + 16, Frame.Height - 358, 204, 19) }; - AddressHelpLabel = new SparkleLabel (Controller.SelectedPlugin.AddressExample, NSTextAlignment.Left) { - TextColor = NSColor.DisabledControlText, - Frame = new RectangleF (190, Frame.Height - 358, 204, 19) + AddressHelpLabel = new SparkleLabel (Controller.SelectedPreset.AddressExample, NSTextAlignment.Left) { + TextColor = NSColor.DisabledControlText, + Frame = new CGRect (190, Frame.Height - 358, 204, 19) }; - if (TableView == null || TableView.RowCount != Controller.Plugins.Count) { + if (TableView == null || TableView.RowCount != Controller.Presets.Count) { TableView = new NSTableView () { - Frame = new RectangleF (0, 0, 0, 0), + Frame = new CGRect (0, 0, 0, 0), RowHeight = 38, - IntercellSpacing = new SizeF (8, 12), + IntercellSpacing = new CGSize (8, 12), HeaderView = null, Delegate = new SparkleTableViewDelegate () }; ScrollView = new NSScrollView () { - Frame = new RectangleF (190, Frame.Height - 280, 408, 185), + Frame = new CGRect (190, Frame.Height - 280, 408, 185), DocumentView = TableView, HasVerticalScroller = true, BorderType = NSBorderType.BezelBorder @@ -248,33 +255,30 @@ namespace SparkleShare { Editable = false }; - DescriptionColumn.DataCell.Font = NSFontManager.SharedFontManager.FontWithFamily ( - SparkleUI.FontName, NSFontTraitMask.Condensed, 0, 11); - TableView.AddColumn (IconColumn); TableView.AddColumn (DescriptionColumn); // Hi-res display support was added after Snow Leopard if (Environment.OSVersion.Version.Major < 11) - DataSource = new SparkleDataSource (1, Controller.Plugins); + DataSource = new SparkleDataSource (1, Controller.Presets); else - DataSource = new SparkleDataSource (BackingScaleFactor, Controller.Plugins); + DataSource = new SparkleDataSource ((float) BackingScaleFactor, Controller.Presets); TableView.DataSource = DataSource; TableView.ReloadData (); (TableView.Delegate as SparkleTableViewDelegate).SelectionChanged += delegate { - Controller.SelectedPluginChanged (TableView.SelectedRow); - Controller.CheckAddPage (AddressTextField.StringValue, PathTextField.StringValue, TableView.SelectedRow); + Controller.SelectedPresetChanged ((int) TableView.SelectedRow); + Controller.CheckAddPage (AddressTextField.StringValue, PathTextField.StringValue, (int) TableView.SelectedRow); }; } - TableView.SelectRow (Controller.SelectedPluginIndex, false); - TableView.ScrollRowToVisible (Controller.SelectedPluginIndex); + TableView.SelectRow (Controller.SelectedPresetIndex, false); + TableView.ScrollRowToVisible (Controller.SelectedPresetIndex); MakeFirstResponder ((NSResponder) TableView); HistoryCheckButton = new NSButton () { - Frame = new RectangleF (190, Frame.Height - 400, 300, 18), + Frame = new CGRect (190, Frame.Height - 400, 300, 18), Title = "Fetch prior revisions" }; @@ -292,7 +296,7 @@ namespace SparkleShare { Controller.ChangeAddressFieldEvent += delegate (string text, string example_text, FieldState state) { - Program.Controller.Invoke (() => { + SparkleShare.Controller.Invoke (() => { AddressTextField.StringValue = text; AddressTextField.Enabled = (state == FieldState.Enabled); AddressHelpLabel.StringValue = example_text; @@ -300,7 +304,7 @@ namespace SparkleShare { }; Controller.ChangePathFieldEvent += delegate (string text, string example_text, FieldState state) { - Program.Controller.Invoke (() => { + SparkleShare.Controller.Invoke (() => { PathTextField.StringValue = text; PathTextField.Enabled = (state == FieldState.Enabled); PathHelpLabel.StringValue = example_text; @@ -309,11 +313,11 @@ namespace SparkleShare { (AddressTextField.Delegate as SparkleTextFieldDelegate).StringValueChanged += delegate { - Controller.CheckAddPage (AddressTextField.StringValue, PathTextField.StringValue, TableView.SelectedRow); + Controller.CheckAddPage (AddressTextField.StringValue, PathTextField.StringValue, (int) TableView.SelectedRow); }; (PathTextField.Delegate as SparkleTextFieldDelegate).StringValueChanged += delegate { - Controller.CheckAddPage (AddressTextField.StringValue, PathTextField.StringValue, TableView.SelectedRow); + Controller.CheckAddPage (AddressTextField.StringValue, PathTextField.StringValue, (int) TableView.SelectedRow); }; @@ -328,7 +332,7 @@ namespace SparkleShare { CancelButton.Activated += delegate { Controller.PageCancelled (); }; Controller.UpdateAddProjectButtonEvent += delegate (bool button_enabled) { - Program.Controller.Invoke (() => { + SparkleShare.Controller.Invoke (() => { AddButton.Enabled = button_enabled; }); }; @@ -345,7 +349,7 @@ namespace SparkleShare { Buttons.Add (AddButton); Buttons.Add (CancelButton); - Controller.CheckAddPage (AddressTextField.StringValue, PathTextField.StringValue, TableView.SelectedRow); + Controller.CheckAddPage (AddressTextField.StringValue, PathTextField.StringValue, (int) TableView.SelectedRow); } if (type == PageType.Syncing) { @@ -353,7 +357,7 @@ namespace SparkleShare { Description = "This may take a while for large projects.\nIsn’t it coffee-o’clock?"; ProgressIndicator = new NSProgressIndicator () { - Frame = new RectangleF (190, Frame.Height - 200, 640 - 150 - 80, 20), + Frame = new CGRect (190, Frame.Height - 200, 640 - 150 - 80, 20), Style = NSProgressIndicatorStyle.Bar, MinValue = 0.0, MaxValue = 100.0, @@ -371,11 +375,11 @@ namespace SparkleShare { }; ProgressLabel = new SparkleLabel ("Preparing to fetch files…", NSTextAlignment.Right); - ProgressLabel.Frame = new RectangleF (Frame.Width - 40 - 250, 185, 250, 25); + ProgressLabel.Frame = new CGRect (Frame.Width - 40 - 250, 185, 250, 25); Controller.UpdateProgressBarEvent += delegate (double percentage, string speed) { - Program.Controller.Invoke (() => { + SparkleShare.Controller.Invoke (() => { ProgressIndicator.DoubleValue = percentage; ProgressLabel.StringValue = speed; }); @@ -399,11 +403,11 @@ namespace SparkleShare { // Displaying marked up text with Cocoa is // a pain, so we just use a webview instead WebView web_view = new WebView (); - web_view.Frame = new RectangleF (190, Frame.Height - 525, 375, 400); + web_view.Frame = new CGRect (190, Frame.Height - 525, 375, 400); string html = "<style>" + "* {" + - " font-family: '" + SparkleUI.FontName + "';" + + " font-family: -apple-system, '" + UserInterface.FontName + "';" + " font-size: 12px; cursor: default;" + "}" + "body {" + @@ -440,7 +444,7 @@ namespace SparkleShare { web_view.DrawsBackground = false; CancelButton = new NSButton () { Title = "Cancel" }; - TryAgainButton = new NSButton () { Title = "Try Again…" }; + TryAgainButton = new NSButton () { Title = "Retry" }; CancelButton.Activated += delegate { Controller.PageCancelled (); }; @@ -453,6 +457,58 @@ namespace SparkleShare { Buttons.Add (CancelButton); } + if (type == PageType.StorageSetup) { + Header = string.Format ("Storage type for ‘{0}’", Controller.SyncingFolder); + Description = "What type of storage would you like to use?"; + + + storage_type_descriptions = new List<NSTextField> (); + + ButtonCellProto = new NSButtonCell (); + ButtonCellProto.SetButtonType (NSButtonType.Radio); + ButtonCellProto.Font = NSFont.BoldSystemFontOfSize (12); + + Matrix = new NSMatrix (new CGRect (202, Frame.Height - 256 - 128, 256, 256), NSMatrixMode.Radio, + ButtonCellProto, SparkleShare.Controller.FetcherAvailableStorageTypes.Count, 1); + + Matrix.CellSize = new CGSize (256, 36); + Matrix.IntercellSpacing = new CGSize (32, 32); + + int i = 0; + foreach (StorageTypeInfo storage_type in SparkleShare.Controller.FetcherAvailableStorageTypes) { + Matrix.Cells [i].Title = " " + storage_type.Name; + + NSTextField storage_type_description = new SparkleLabel (storage_type.Description, NSTextAlignment.Left) { + TextColor = NSColor.DisabledControlText, + Frame = new CGRect (223, Frame.Height - 190 - (68 * i), 256, 32) + }; + + storage_type_descriptions.Add (storage_type_description); + ContentView.AddSubview (storage_type_description); + + i++; + } + + ContentView.AddSubview (Matrix); + + + CancelButton = new NSButton () { Title = "Cancel" }; + ContinueButton = new NSButton () { Title = "Continue" }; + + ContinueButton.Activated += delegate { + StorageTypeInfo selected_storage_type = SparkleShare.Controller.FetcherAvailableStorageTypes [(int) Matrix.SelectedRow]; + Controller.StoragePageCompleted (selected_storage_type.Type); + }; + + CancelButton.Activated += delegate { Controller.SyncingCancelled (); }; + + Buttons.Add (ContinueButton); + Buttons.Add (CancelButton); + + + NSApplication.SharedApplication.RequestUserAttention (NSRequestUserAttentionType.CriticalRequest); + } + if (type == PageType.CryptoSetup || type == PageType.CryptoPassword) { if (type == PageType.CryptoSetup) { Header = "Set up file encryption"; @@ -469,22 +525,22 @@ namespace SparkleShare { extra_pos_y = 20; PasswordLabel = new SparkleLabel ("Password:", NSTextAlignment.Right) { - Frame = new RectangleF (155, Frame.Height - 202 - extra_pos_y, 160, 17), - Font = NSFont.FromFontName (SparkleUI.FontName + " Bold", NSFont.SystemFontSize) + Frame = new CGRect (155, Frame.Height - 204 - extra_pos_y, 160, 17), + Font = NSFont.BoldSystemFontOfSize (12) }; PasswordTextField = new NSSecureTextField () { - Frame = new RectangleF (320, Frame.Height - 208 - extra_pos_y, 196, 22), + Frame = new CGRect (320, Frame.Height - 208 - extra_pos_y, 196, 22), Delegate = new SparkleTextFieldDelegate () }; VisiblePasswordTextField = new NSTextField () { - Frame = new RectangleF (320, Frame.Height - 208 - extra_pos_y, 196, 22), + Frame = new CGRect (320, Frame.Height - 208 - extra_pos_y, 196, 22), Delegate = new SparkleTextFieldDelegate () }; ShowPasswordCheckButton = new NSButton () { - Frame = new RectangleF (318, Frame.Height - 235 - extra_pos_y, 300, 18), + Frame = new CGRect (318, Frame.Height - 235 - extra_pos_y, 300, 18), Title = "Show password", State = NSCellStateValue.Off }; @@ -492,15 +548,15 @@ namespace SparkleShare { ShowPasswordCheckButton.SetButtonType (NSButtonType.Switch); WarningImage = NSImage.ImageNamed ("NSInfo"); - WarningImage.Size = new SizeF (24, 24); + WarningImage.Size = new CGSize (24, 24); WarningImageView = new NSImageView () { Image = WarningImage, - Frame = new RectangleF (200, Frame.Height - 320, 24, 24) + Frame = new CGRect (200, Frame.Height - 320, 24, 24) }; WarningTextField = new SparkleLabel ("This password can’t be changed later, and your files can’t be recovered if it’s forgotten.", NSTextAlignment.Left) { - Frame = new RectangleF (235, Frame.Height - 390, 325, 100), + Frame = new CGRect (235, Frame.Height - 390, 325, 100), }; CancelButton = new NSButton () { Title = "Cancel" }; @@ -512,11 +568,11 @@ namespace SparkleShare { Controller.UpdateCryptoPasswordContinueButtonEvent += delegate (bool button_enabled) { - Program.Controller.Invoke (() => { ContinueButton.Enabled = button_enabled; }); + SparkleShare.Controller.Invoke (() => { ContinueButton.Enabled = button_enabled; }); }; Controller.UpdateCryptoSetupContinueButtonEvent += delegate (bool button_enabled) { - Program.Controller.Invoke (() => { ContinueButton.Enabled = button_enabled; }); + SparkleShare.Controller.Invoke (() => { ContinueButton.Enabled = button_enabled; }); }; ShowPasswordCheckButton.Activated += delegate { @@ -581,21 +637,21 @@ namespace SparkleShare { if (warnings.Length > 0) { WarningImage = NSImage.ImageNamed ("NSInfo"); - WarningImage.Size = new SizeF (24, 24); + WarningImage.Size = new CGSize (24, 24); WarningImageView = new NSImageView () { Image = WarningImage, - Frame = new RectangleF (200, Frame.Height - 175, 24, 24) + Frame = new CGRect (200, Frame.Height - 175, 24, 24) }; WarningTextField = new SparkleLabel (warnings [0], NSTextAlignment.Left); - WarningTextField.Frame = new RectangleF (235, Frame.Height - 245, 325, 100); + WarningTextField.Frame = new CGRect (235, Frame.Height - 245, 325, 100); ContentView.AddSubview (WarningImageView); ContentView.AddSubview (WarningTextField); } - ShowFilesButton = new NSButton () { Title = "Show Files…" }; + ShowFilesButton = new NSButton () { Title = "Show Files" }; FinishButton = new NSButton () { Title = "Finish" }; @@ -608,116 +664,6 @@ namespace SparkleShare { NSApplication.SharedApplication.RequestUserAttention (NSRequestUserAttentionType.CriticalRequest); } - - if (type == PageType.Tutorial) { - SlideImage = NSImage.ImageNamed ("tutorial-slide-" + Controller.TutorialPageNumber); - if (SlideImage != null) { - SlideImage.Size = new SizeF (324, 200); - - SlideImageView = new NSImageView () { - Image = SlideImage, - Frame = new RectangleF (228, Frame.Height - 350, 324, 200) - }; - - ContentView.AddSubview (SlideImageView); - } - - switch (Controller.TutorialPageNumber) { - case 1: { - Header = "What’s happening next?"; - Description = "SparkleShare creates a special folder on your computer " + - "that will keep track of your projects."; - - SkipTutorialButton = new NSButton () { Title = "Skip Tutorial" }; - ContinueButton = new NSButton () { Title = "Continue" }; - - - SkipTutorialButton.Activated += delegate { Controller.TutorialSkipped (); }; - ContinueButton.Activated += delegate { Controller.TutorialPageCompleted (); }; - - - ContentView.AddSubview (SlideImageView); - - Buttons.Add (ContinueButton); - Buttons.Add (SkipTutorialButton); - - break; - } - - case 2: { - Header = "Sharing files with others"; - Description = "All files added to your project folders are synced automatically with " + - "the host and your team members."; - - ContinueButton = new NSButton () { Title = "Continue" }; - ContinueButton.Activated += delegate { Controller.TutorialPageCompleted (); }; - Buttons.Add (ContinueButton); - - break; - } - - case 3: { - Header = "The status icon helps you"; - Description = "It shows the syncing progress, provides easy access to " + - "your projects, and lets you view recent changes."; - - ContinueButton = new NSButton () { Title = "Continue" }; - ContinueButton.Activated += delegate { Controller.TutorialPageCompleted (); }; - Buttons.Add (ContinueButton); - - break; - } - - case 4: { - Header = "Here’s your unique Client ID"; - Description = "You’ll need it whenever you want to link this computer to a host. " + - "You can also find it in the status icon menu."; - - LinkCodeTextField = new NSTextField () { - StringValue = Program.Controller.CurrentUser.PublicKey, - Enabled = false, - Selectable = false, - Frame = new RectangleF (230, Frame.Height - 238, 246, 22) - }; - - LinkCodeTextField.Cell.UsesSingleLineMode = true; - LinkCodeTextField.Cell.LineBreakMode = NSLineBreakMode.TruncatingTail; - - CopyButton = new NSButton () { - Title = "Copy", - BezelStyle = NSBezelStyle.RoundRect, - Frame = new RectangleF (480, Frame.Height - 238, 60, 22) - }; - - StartupCheckButton = new NSButton () { - Frame = new RectangleF (190, Frame.Height - 400, 300, 18), - Title = "Add SparkleShare to startup items", - State = NSCellStateValue.On - }; - - StartupCheckButton.SetButtonType (NSButtonType.Switch); - - FinishButton = new NSButton () { Title = "Finish" }; - - - StartupCheckButton.Activated += delegate { - Controller.StartupItemChanged (StartupCheckButton.State == NSCellStateValue.On); - }; - - CopyButton.Activated += delegate { Controller.CopyToClipboardClicked (); }; - FinishButton.Activated += delegate { Controller.TutorialPageCompleted (); }; - - - ContentView.AddSubview (LinkCodeTextField); - ContentView.AddSubview (CopyButton); - ContentView.AddSubview (StartupCheckButton); - - Buttons.Add (FinishButton); - - break; - } - } - } } } @@ -730,28 +676,29 @@ namespace SparkleShare { int backing_scale_factor; - public SparkleDataSource (float backing_scale_factor, List<SparklePlugin> plugins) + public SparkleDataSource (float backing_scale_factor, List<Preset> presets) { Items = new List <object> (); - Cells = new NSAttributedString [plugins.Count]; - SelectedCells = new NSAttributedString [plugins.Count]; + Cells = new NSAttributedString [presets.Count]; + SelectedCells = new NSAttributedString [presets.Count]; this.backing_scale_factor = (int) backing_scale_factor; int i = 0; - foreach (SparklePlugin plugin in plugins) { - Items.Add (plugin); + foreach (Preset preset in presets) { + Items.Add (preset); NSTextFieldCell cell = new NSTextFieldCell (); - NSData name_data = NSData.FromString ("<font face='" + SparkleUI.FontName + "'><b>" + plugin.Name + "</b></font>"); + NSData name_data = NSData.FromString ( + "<font face='-apple-system, sans-serif' style='line-height: 140%'><b>" + preset.Name + "</b></font>"); NSDictionary name_dictionary = new NSDictionary(); NSAttributedString name_attributes = new NSAttributedString ( name_data, new NSUrl ("file://"), out name_dictionary); NSData description_data = NSData.FromString ( - "<small><font style='line-height: 150%' color='#aaa' face='" + SparkleUI.FontName + "'>" + plugin.Description + "</font></small>"); + "<small><font style='line-height: 150%' color='#aaa' face='-apple-system, sans-serif'>" + preset.Description + "</font></small>"); NSDictionary description_dictionary = new NSDictionary(); NSAttributedString description_attributes = new NSAttributedString ( @@ -767,15 +714,14 @@ namespace SparkleShare { NSTextFieldCell selected_cell = new NSTextFieldCell (); NSData selected_name_data = NSData.FromString ( - "<font color='white' face='" + SparkleUI.FontName +"'><b>" + plugin.Name + "</b></font>"); + "<font color='white' face='-apple-system, sans-serif' style='line-height: 140%'><b>" + preset.Name + "</b></font>"); NSDictionary selected_name_dictionary = new NSDictionary (); NSAttributedString selected_name_attributes = new NSAttributedString ( selected_name_data, new NSUrl ("file://"), out selected_name_dictionary); NSData selected_description_data = NSData.FromString ( - "<small><font style='line-height: 150%' color='#9bbaeb' face='" + SparkleUI.FontName + "'>" + - plugin.Description + "</font></small>"); + "<small><font style='line-height: 150%' color='#9bbaeb' face='-apple-system, sans-serif'>" + preset.Description + "</font></small>"); NSDictionary selected_description_dictionary = new NSDictionary (); NSAttributedString selected_description_attributes = new NSAttributedString ( @@ -811,31 +757,28 @@ namespace SparkleShare { { if (table_column.HeaderToolTip.Equals ("Description")) { if (table_view.SelectedRow == row_index && - Program.UI.Setup.IsKeyWindow && - Program.UI.Setup.FirstResponder == table_view) { + SparkleShare.UI.Setup.IsKeyWindow && + SparkleShare.UI.Setup.FirstResponder == table_view) { return SelectedCells [row_index]; - - } else { - return Cells [row_index]; } - } else { - SparklePlugin plugin = (SparklePlugin) Items [row_index]; - string path = plugin.ImagePath; + return Cells [row_index]; + } - if (backing_scale_factor >= 2) { - string hi_path = String.Format ("{0}@{1}x{2}", - Path.Combine (Path.GetDirectoryName (path), Path.GetFileNameWithoutExtension (path)), - backing_scale_factor, Path.GetExtension (path) - ); + string image_path = (Items [row_index] as Preset).ImagePath; - if (File.Exists (hi_path)) - path = hi_path; - } + if (backing_scale_factor >= 2) { + string hi_path = String.Format ("{0}@{1}x{2}", + Path.Combine (Path.GetDirectoryName (image_path), Path.GetFileNameWithoutExtension (image_path)), + backing_scale_factor, Path.GetExtension (image_path) + ); - return new NSImage (path) { Size = new SizeF (24, 24) }; + if (File.Exists (hi_path)) + image_path = hi_path; } + + return new NSImage (image_path) { Size = new CGSize (24, 24) }; } } diff --git a/SparkleShare/Mac/SparkleSetupWindow.cs b/SparkleShare/Mac/UserInterface/SetupWindow.cs index a0dcb8a..83ffa54 100755..100644 --- a/SparkleShare/Mac/SparkleSetupWindow.cs +++ b/SparkleShare/Mac/UserInterface/SetupWindow.cs @@ -1,5 +1,5 @@ -// SparkleShare, an instant update workflow to Git. -// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com> +// SparkleShare, an instant update workflow to Git. +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -15,64 +15,59 @@ // along with this program. If not, see <http://www.gnu.org/licenses/>. -using System; using System.Collections.Generic; -using System.Drawing; -using System.IO; -using MonoMac.Foundation; -using MonoMac.AppKit; +using CoreGraphics; +using Foundation; +using AppKit; namespace SparkleShare { - public class SparkleSetupWindow : NSWindow { + public class SetupWindow : NSWindow { public List <NSButton> Buttons = new List <NSButton> (); public string Header; new public string Description; - private NSImage side_splash; - private NSImageView side_splash_view; - private NSTextField header_text_field, description_text_field; + NSImage side_splash; + NSImageView side_splash_view; + NSTextField header_text_field; + NSTextField description_text_field; - public SparkleSetupWindow (IntPtr handle) : base (handle) { } - public SparkleSetupWindow () : base () + public SetupWindow () { - SetFrame (new RectangleF (0, 0, 640, 420), true); + SetFrame (new CGRect (0, 0, 640, 420), true); StyleMask = NSWindowStyle.Titled; - MaxSize = new SizeF (640, 420); - MinSize = new SizeF (640, 420); + MaxSize = new CGSize (640, 420); + MinSize = new CGSize (640, 420); HasShadow = true; + IsOpaque = false; BackingType = NSBackingStore.Buffered; Level = NSWindowLevel.Floating; Center (); this.side_splash = NSImage.ImageNamed ("side-splash"); - this.side_splash.Size = new SizeF (150, 482); + this.side_splash.Size = new CGSize (150, 482); this.side_splash_view = new NSImageView () { Image = this.side_splash, - Frame = new RectangleF (0, 0, 150, 482) + Frame = new CGRect (0, 0, 150, 482) }; this.header_text_field = new SparkleLabel ("", NSTextAlignment.Left) { - Frame = new RectangleF (190, Frame.Height - 80, Frame.Width, 24), - Font = NSFontManager.SharedFontManager.FontWithFamily ( - SparkleUI.FontName, NSFontTraitMask.Bold, 0, 16) + Frame = new CGRect (190, Frame.Height - 80, Frame.Width, 24), + Font = NSFont.BoldSystemFontOfSize (16) }; this.description_text_field = new SparkleLabel ("", NSTextAlignment.Left) { - Frame = new RectangleF (190, Frame.Height - 130, 640 - 240, 44) + Frame = new CGRect (190, Frame.Height - 130, 640 - 240, 44) }; this.header_text_field.Cell.LineBreakMode = NSLineBreakMode.TruncatingTail; - - if (Program.UI != null) - Program.UI.UpdateDockIconVisibility (); } @@ -103,12 +98,12 @@ namespace SparkleShare { foreach (NSButton button in Buttons) { button.BezelStyle = NSBezelStyle.Rounded; - button.Frame = new RectangleF (Frame.Width - 15 - x - (105 * i), 12, 105, 32); + button.Frame = new CGRect (Frame.Width - 15 - x - (105 * i), 12, 105, 32); // Make the button a bit wider if the text is likely to be longer if (button.Title.Contains (" ")) { button.SizeToFit (); - button.Frame = new RectangleF (Frame.Width - 30 - 15 - (105 * (i - 1)) - button.Frame.Width, + button.Frame = new CGRect (Frame.Width - 30 - 15 - (105 * (i - 1)) - button.Frame.Width, 12, button.Frame.Width + 30, 32); x += 22; @@ -129,21 +124,15 @@ namespace SparkleShare { NSApplication.SharedApplication.ActivateIgnoringOtherApps (true); MakeKeyAndOrderFront (this); - if (Program.UI != null) - Program.UI.UpdateDockIconVisibility (); - base.OrderFrontRegardless (); } public override void PerformClose (NSObject sender) { - base.OrderOut (this); + OrderOut (this); NSApplication.SharedApplication.RemoveWindowsItem (this); - if (Program.UI != null) - Program.UI.UpdateDockIconVisibility (); - return; } diff --git a/SparkleShare/Mac/SparkleStatusIcon.cs b/SparkleShare/Mac/UserInterface/StatusIcon.cs index a925366..2e857b3 100755..100644 --- a/SparkleShare/Mac/SparkleStatusIcon.cs +++ b/SparkleShare/Mac/UserInterface/StatusIcon.cs @@ -1,5 +1,5 @@ -// SparkleShare, an instant update workflow to Git. -// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com> +// SparkleShare, an instant update workflow to Git. +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -17,17 +17,15 @@ using System; using System.Collections.Generic; -using System.Drawing; -using System.IO; -using MonoMac.Foundation; -using MonoMac.AppKit; +using AppKit; +using CoreGraphics; namespace SparkleShare { - public class SparkleStatusIcon { + public class StatusIcon { - public SparkleStatusIconController Controller = new SparkleStatusIconController (); + public StatusIconController Controller = new StatusIconController (); private NSStatusItem status_item = NSStatusBar.SystemStatusBar.CreateStatusItem (28); private NSMenu menu, submenu, link_code_submenu; @@ -45,12 +43,12 @@ namespace SparkleShare { private NSImage syncing_image = NSImage.ImageNamed ("process-syncing"); private NSImage syncing_error_image = NSImage.ImageNamed ("process-syncing-error"); - private NSImage folder_image = NSImage.ImageNamed ("NSFolder"); - private NSImage caution_image = NSImage.ImageNamed ("NSCaution"); + private NSImage folder_image = NSImage.ImageNamed ("NSFolder"); + private NSImage caution_image = NSImage.ImageNamed ("NSCaution"); private NSImage sparkleshare_image; - public SparkleStatusIcon () + public StatusIcon () { this.status_item.HighlightMode = true; this.status_item.Image = this.syncing_idle_image; @@ -64,7 +62,7 @@ namespace SparkleShare { CreateMenu (); Controller.UpdateIconEvent += delegate (IconState state) { - Program.Controller.Invoke (() => { + SparkleShare.Controller.Invoke (() => { switch (state) { case IconState.Idle: { this.status_item.Image = this.syncing_idle_image; break; } case IconState.SyncingUp: { this.status_item.Image = this.syncing_up_image; break; } @@ -78,7 +76,7 @@ namespace SparkleShare { }; Controller.UpdateStatusItemEvent += delegate (string state_text) { - Program.Controller.Invoke (() => { + SparkleShare.Controller.Invoke (() => { this.state_item.Title = state_text; if (Controller.Projects.Length == this.state_menu_items.Length) { @@ -92,11 +90,11 @@ namespace SparkleShare { while (this.menu_delegate.MenuIsOpen) System.Threading.Thread.Sleep (100); - Program.Controller.Invoke (() => CreateMenu ()); + SparkleShare.Controller.Invoke (() => CreateMenu ()); }; Controller.UpdateQuitItemEvent += delegate (bool quit_item_enabled) { - Program.Controller.Invoke (() => { this.quit_item.Enabled = quit_item_enabled; }); + SparkleShare.Controller.Invoke (() => { this.quit_item.Enabled = quit_item_enabled; }); }; } @@ -116,10 +114,10 @@ namespace SparkleShare { }; this.folder_item.Image = this.sparkleshare_image; - this.folder_item.Image.Size = new SizeF (16, 16); + this.folder_item.Image.Size = new CGSize (16, 16); this.add_item = new NSMenuItem () { - Title = "Add Hosted Project…", + Title = "Sync Remote Project…", Enabled = true }; @@ -129,13 +127,13 @@ namespace SparkleShare { }; this.link_code_item = new NSMenuItem (); - this.link_code_item.Title = "Client ID"; + this.link_code_item.Title = "Computer ID"; if (Controller.LinkCodeItemEnabled) { this.link_code_submenu = new NSMenu (); this.code_item = new NSMenuItem (); - this.code_item.Title = Program.Controller.CurrentUser.PublicKey.Substring (0, 20) + "..."; + this.code_item.Title = SparkleShare.Controller.UserAuthenticationInfo.PublicKey.Substring (0, 20) + "..."; this.copy_item = new NSMenuItem (); this.copy_item.Title = "Copy to Clipboard"; @@ -203,7 +201,7 @@ namespace SparkleShare { item.Image = this.caution_image; this.try_again_menu_items [i] = new NSMenuItem (); - this.try_again_menu_items [i].Title = "Try Again"; + this.try_again_menu_items [i].Title = "Retry Sync"; this.try_again_menu_items [i].Activated += Controller.TryAgainDelegate (project.Name); item.Submenu.AddItem (this.try_again_menu_items [i]); @@ -219,7 +217,7 @@ namespace SparkleShare { if (!Controller.Projects [i].HasError) this.folder_menu_items [i].Activated += Controller.OpenFolderDelegate (project.Name); - item.Image.Size = new SizeF (16, 16); + item.Image.Size = new CGSize (16, 16); i++; }; } diff --git a/SparkleShare/Mac/UserInterface/UserInterface.cs b/SparkleShare/Mac/UserInterface/UserInterface.cs new file mode 100755 index 0000000..876a178 --- /dev/null +++ b/SparkleShare/Mac/UserInterface/UserInterface.cs @@ -0,0 +1,89 @@ +// SparkleShare, a collaboration and sharing tool. +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. + + +using System; + +using AppKit; +using Foundation; + +namespace SparkleShare { + + public class UserInterface : AppDelegate { + + public StatusIcon StatusIcon; + public EventLog EventLog; + public Setup Setup; + public Bubbles Bubbles; + public About About; + public Note Note; + + + public UserInterface () + { + SparkleShare.Controller.Invoke (() => { + NSApplication.SharedApplication.ApplicationIconImage = NSImage.ImageNamed ("sparkleshare-app.icns"); + + Setup = new Setup (); + EventLog = new EventLog (); + About = new About (); + Note = new Note (); + Bubbles = new Bubbles (); + StatusIcon = new StatusIcon (); + }); + + SparkleShare.Controller.UIHasLoaded (); + } + + + public void Run (string [] args) + { + NSApplication.Main (args); + } + + + // To provide the right font in web views + public static string FontName { + get { + if (Environment.OSVersion.Version.Major < 14) + return "Lucida Grande"; + + if (Environment.OSVersion.Version.Major <= 15) + return "Helvetica Neue"; + + return "SF UI Text"; + } + } + } + + + public partial class AppDelegate : NSApplicationDelegate { + + public override void WillTerminate (NSNotification notification) + { + SparkleShare.Controller.Quit (); + } + + + public override bool ApplicationShouldHandleReopen (NSApplication sender, bool has_visible_windows) + { + if (!has_visible_windows) + SparkleShare.Controller.HandleReopen (); + + return true; + } + } +} diff --git a/SparkleShare/Mac/SparkleMacWatcher.cs b/SparkleShare/Mac/Watcher.cs index 0046cb3..e8de3ae 100755 --- a/SparkleShare/Mac/SparkleMacWatcher.cs +++ b/SparkleShare/Mac/Watcher.cs @@ -1,6 +1,6 @@ -// Originally taken from: +// Originally taken from: // https://github.com/jesse99/Continuum/blob/master/source/shared/DirectoryWatcher.cs -// Modified to use MonoMac and integrate into SparkleShare +// Modified to use Xamarin.Mac and integrate into SparkleShare // // Copyright (C) 2008 Jesse Jones // Copyright (C) 2012 Hylke Bons @@ -27,14 +27,10 @@ using System; using System.Collections.Generic; -using System.Diagnostics; using System.Runtime.InteropServices; using System.IO; -using System.Threading; -using System.Timers; -using MonoMac.AppKit; -using MonoMac.Foundation; +using Foundation; namespace SparkleShare { diff --git a/SparkleShare/Mac/checkGit.sh b/SparkleShare/Mac/checkGit.sh index d64a083..c882fbe 100755 --- a/SparkleShare/Mac/checkGit.sh +++ b/SparkleShare/Mac/checkGit.sh @@ -13,25 +13,17 @@ function abspath() export projectFolder=$(dirname $0) export projectFolder=$(abspath ${projectFolder}) - -export gitVersion=$(cat ${projectFolder}/git.version) +export gitDownload=$(cat ${projectFolder}/git.download) set -e -if [ ! -f ${projectFolder}/git-${gitVersion}.tar.gz ] +if [ ! -f ${projectFolder}/git.tar.gz ] then - curl -s https://codeload.github.com/git/git/zip/v${gitVersion} > git.zip - unzip -q git.zip - - cd git-${gitVersion} - - make configure - ./configure --prefix=${projectFolder}/git - make install - cd .. + curl -s -L ${gitDownload} > git.tar.gz + test -e git.tar.gz || { echo "Failed to download git"; exit 1; } - tar cfz git-${gitVersion}.tar.gz git - rm -rf git - rm -rf git-${gitVersion} - rm git.zip + mkdir git/ + tar xzf git.tar.gz --directory git/ + tar czf git.tar.gz git/ + rm -rf git/ fi diff --git a/SparkleShare/Mac/config b/SparkleShare/Mac/config index e15ba99..8313843 100644 --- a/SparkleShare/Mac/config +++ b/SparkleShare/Mac/config @@ -1,30 +1,2 @@ <configuration> - <dllmap dll="i:cygwin1.dll" target="libc.dylib" os="!windows" /> - <dllmap dll="libc" target="libc.dylib" os="!windows"/> - <dllmap dll="intl" target="libintl.dylib" os="!windows"/> - <dllmap dll="intl" name="bind_textdomain_codeset" target="libc.dylib" os="solaris"/> - <dllmap dll="libintl" name="bind_textdomain_codeset" target="libc.dylib" os="solaris"/> - <dllmap dll="libintl" target="libintl.dylib" os="!windows"/> - <dllmap dll="i:libxslt.dll" target="libxslt.dylib" os="!windows"/> - <dllmap dll="i:odbc32.dll" target="libodbc.dylib" os="!windows"/> - <dllmap dll="i:odbc32.dll" target="libiodbc.dylib" os="osx"/> - <dllmap dll="oci" target="libclntsh.dylib" os="!windows"/> - <dllmap dll="db2cli" target="libdb2_36.dylib" os="!windows"/> - <dllmap dll="MonoPosixHelper" target="libMonoPosixHelper.dylib" os="!windows" /> - <dllmap dll="i:msvcrt" target="libc.dylib" os="!windows"/> - <dllmap dll="i:msvcrt.dll" target="libc.dylib" os="!windows"/> - <dllmap dll="sqlite" target="libsqlite.0.dylib" os="!windows"/> - <dllmap dll="sqlite3" target="libsqlite3.0.dylib" os="!windows"/> - <dllmap dll="libX11" target="/usr/X11R6/lib/libX11.dylib" os="!windows" /> - <dllmap dll="libcairo-2.dll" target="libcairo.2.dylib" os="!windows"/> - <dllmap dll="libcups" target="libcups.so.2" os="!windows"/> - <dllmap dll="i:kernel32.dll"> - <dllentry dll="__Internal" name="CopyMemory" target="mono_win32_compat_CopyMemory"/> - <dllentry dll="__Internal" name="FillMemory" target="mono_win32_compat_FillMemory"/> - <dllentry dll="__Internal" name="MoveMemory" target="mono_win32_compat_MoveMemory"/> - <dllentry dll="__Internal" name="ZeroMemory" target="mono_win32_compat_ZeroMemory"/> - </dllmap> - <dllmap dll="gdiplus.dll" target="libgdiplus.dylib" /> - <dllmap dll="gdiplus" target="libgdiplus.dylib" /> </configuration> - diff --git a/SparkleShare/Mac/git.download b/SparkleShare/Mac/git.download new file mode 100644 index 0000000..556ff9a --- /dev/null +++ b/SparkleShare/Mac/git.download @@ -0,0 +1 @@ +https://github.com/desktop/dugite-native/releases/download/v2.15.1-rc2/dugite-native-v2.15.1-macOS-56.tar.gz diff --git a/SparkleShare/Mac/git.version b/SparkleShare/Mac/git.version deleted file mode 100644 index 05fc3da..0000000 --- a/SparkleShare/Mac/git.version +++ /dev/null @@ -1 +0,0 @@ -1.8.5.5 diff --git a/SparkleShare/Mac/packReleaseDist.sh b/SparkleShare/Mac/packReleaseDist.sh index 171811d..6305f7b 100755 --- a/SparkleShare/Mac/packReleaseDist.sh +++ b/SparkleShare/Mac/packReleaseDist.sh @@ -14,11 +14,6 @@ export PATH=/usr/local/bin:/opt/local/bin:/Library/Frameworks/Mono.framework/Ver cd ${bundle}/Contents/MonoBundle/ -# add / fix dependency libMonoPosixHelper -cp ${MONO_PATH}/lib/libMonoPosixHelper.dylib ../MacOS/ -sed -i .bak 's/libMonoPosixHelper.dylib/@executable_path\/libMonoPosixHelper.dylib/' ./config - # merge all Assemblies into one Mac binary -mkbundle --static --deps --config ./config -o ../MacOS/SparkleShare SparkleShare.exe SparkleLib.dll MonoMac.dll SparkleLib.Git.dll +mkbundle --static --deps --config ./config -o ../MacOS/SparkleShare SparkleShare.exe Sparkles.dll Xamarin.Mac.dll Sparkles.Git.dll rm *.dll *.exe - diff --git a/SparkleShare/Mac/postBuild.sh b/SparkleShare/Mac/postBuild.sh index 643f33a..6fe1222 100755 --- a/SparkleShare/Mac/postBuild.sh +++ b/SparkleShare/Mac/postBuild.sh @@ -1,15 +1,14 @@ #!/bin/sh -# expect path to app bundle argument +# Expect path to app bundle argument export bundle=$1 export projectFolder=$(dirname $0) -export gitVersion=$(cat ${projectFolder}/git.version) -echo postprocessing ${bundle} +echo Postprocessing ${bundle}... export PATH=/usr/local/bin:/opt/local/bin:/Library/Frameworks/Mono.framework/Versions/Current/bin:/usr/bin:/bin ${projectFolder}/checkGit.sh -tar -x -f ${projectFolder}/git-${gitVersion}.tar.gz -C ${bundle}/Contents/Resources +tar -x -f ${projectFolder}/git.tar.gz --directory ${bundle}/Contents/Resources cp -R SparkleShareInviteOpener.app ${bundle}/Contents/Resources cp config ${bundle}/Contents/MonoBundle diff --git a/SparkleShare/SparkleExtensions.cs b/SparkleShare/SparkleExtensions.cs deleted file mode 100644 index 2ae8660..0000000 --- a/SparkleShare/SparkleExtensions.cs +++ /dev/null @@ -1,35 +0,0 @@ -// SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons (hylkebons@gmail.com) -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see (http://www.gnu.org/licenses/). - - -using System; -using System.IO; - -namespace SparkleShare { - - public static class Extensions { - - public static string Combine (this string [] parts) - { - string new_path = ""; - - foreach (string part in parts) - new_path = Path.Combine (new_path, part); - - return new_path; - } - } -} diff --git a/SparkleShare/SparkleInvite.cs b/SparkleShare/SparkleInvite.cs deleted file mode 100644 index 7ce67eb..0000000 --- a/SparkleShare/SparkleInvite.cs +++ /dev/null @@ -1,120 +0,0 @@ -// SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons (hylkebons@gmail.com) -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see (http://www.gnu.org/licenses/). - - -using System; -using System.IO; -using System.Net; -using System.Text; -using System.Xml; - -using SparkleLib; - -namespace SparkleShare { - - public class SparkleInvite : XmlDocument { - - public string Address { get; private set; } - public string RemotePath { get; private set; } - public string Fingerprint { get; private set; } - public string AcceptUrl { get; private set; } - public string AnnouncementsUrl { get; private set; } - - public bool IsValid { - get { - return (!string.IsNullOrEmpty (Address) && !string.IsNullOrEmpty (RemotePath)); - } - } - - - public SparkleInvite (string xml_file_path) : base () - { - try { - Load (xml_file_path); - - } catch (XmlException e) { - SparkleLogger.LogInfo ("Invite", "Error parsing XML", e); - return; - } - - Address = ReadField ("address"); - RemotePath = ReadField ("remote_path"); - AcceptUrl = ReadField ("accept_url"); - AnnouncementsUrl = ReadField ("announcements_url"); - Fingerprint = ReadField ("fingerprint"); - } - - - public bool Accept (string public_key) - { - #if __MonoCS__ - ServicePointManager.ServerCertificateValidationCallback = delegate { - return true; - }; - #endif - - if (string.IsNullOrEmpty (AcceptUrl)) - return true; - - string post_data = "public_key=" + Uri.EscapeDataString (public_key); - byte [] post_bytes = Encoding.UTF8.GetBytes (post_data); - - WebRequest request = WebRequest.Create (AcceptUrl); - request.Method = "POST"; - request.ContentType = "application/x-www-form-urlencoded"; - request.ContentLength = post_bytes.Length; - - Stream data_stream = request.GetRequestStream (); - data_stream.Write (post_bytes, 0, post_bytes.Length); - data_stream.Close (); - - HttpWebResponse response = null; - - try { - response = (HttpWebResponse) request.GetResponse (); - response.Close (); - - } catch (WebException e) { - SparkleLogger.LogInfo ("Invite", "Failed uploading public key to " + AcceptUrl + "", e); - return false; - } - - if (response != null && response.StatusCode == HttpStatusCode.OK) { - SparkleLogger.LogInfo ("Invite", "Uploaded public key to " + AcceptUrl); - return true; - } - - return false; - } - - - private string ReadField (string name) - { - try { - XmlNode node = SelectSingleNode ("/sparkleshare/invite/" + name + "/text()"); - - if (node != null) - return node.Value; - else - return ""; - - } catch (XmlException e) { - SparkleLogger.LogInfo ("Invite", "Error reading field '" + name + "'", e); - return ""; - } - } - } -}
\ No newline at end of file diff --git a/SparkleShare/SparkleKeys.cs b/SparkleShare/SparkleKeys.cs deleted file mode 100644 index c30b575..0000000 --- a/SparkleShare/SparkleKeys.cs +++ /dev/null @@ -1,105 +0,0 @@ -// SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com> -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <http://www.gnu.org/licenses/>. - - -using System; -using System.Diagnostics; -using System.IO; - -using SparkleLib; - -namespace SparkleShare { - - public static class SparkleKeys { - - public static string [] GenerateKeyPair (string output_path, string key_name) - { - key_name += ".key"; - string key_file_path = Path.Combine (output_path, key_name); - - if (File.Exists (key_file_path)) { - SparkleLogger.LogInfo ("Auth", "A key pair exists ('" + key_name + "'), leaving it untouched"); - return new string [] { key_file_path, key_file_path + ".pub" }; - } - - string computer_name = System.Net.Dns.GetHostName (); - - if (computer_name.EndsWith (".local")) - computer_name = computer_name.Substring (0, computer_name.Length - 6); - - string arguments = "-t rsa " + // crypto type - "-b 4096 " + // key size - "-P \"\" " + // empty password - "-C \"" + computer_name + " (SparkleShare)\" " + // key comment - "-f \"" + key_name + "\""; // file name - - SparkleKeyProcess process = new SparkleKeyProcess ("ssh-keygen", arguments); - process.StartInfo.WorkingDirectory = output_path; - process.Start (); - process.WaitForExit (); - - if (process.ExitCode == 0) - SparkleLogger.LogInfo ("Auth", "Created keypair '" + key_file_path + "'"); - else - SparkleLogger.LogInfo ("Auth", "Could not create key pair '" + key_file_path + "'"); - - return new string [] { key_file_path, key_file_path + ".pub" }; - } - - - public static void ImportPrivateKey (string key_file_path) - { - // Use forward slashes when dealing with Windows domain accounts - if (key_file_path.StartsWith ("\\\\")) - key_file_path = key_file_path.Replace ("\\", "/"); - - SparkleKeyProcess process = new SparkleKeyProcess ("ssh-add", "\"" + key_file_path + "\""); - process.Start (); - process.WaitForExit (); - - if (process.ExitCode == 0) - SparkleLogger.LogInfo ("Auth", "Imported key '" + key_file_path + "'"); - else - SparkleLogger.LogInfo ("Auth", "Could not import key '" + key_file_path + "', " + - process.StandardError.ReadToEnd ()); - } - - - public static void ListPrivateKeys () - { - SparkleKeyProcess process = new SparkleKeyProcess ("ssh-add", "-l"); - process.Start (); - string keys_in_use = process.StandardOutput.ReadToEnd (); - process.WaitForExit (); - - SparkleLogger.LogInfo ("Auth", "The following keys may be used:\n" + keys_in_use.Trim ()); - } - - - private class SparkleKeyProcess : Process { - - public SparkleKeyProcess (string command, string arguments) : base () - { - StartInfo.FileName = command; - StartInfo.Arguments = arguments; - StartInfo.UseShellExecute = false; - StartInfo.RedirectStandardOutput = true; - StartInfo.RedirectStandardError = true; - StartInfo.CreateNoWindow = true; - } - } - } -} diff --git a/SparkleShare/SparklePlugin.cs b/SparkleShare/SparklePlugin.cs deleted file mode 100644 index c80d2d8..0000000 --- a/SparkleShare/SparklePlugin.cs +++ /dev/null @@ -1,123 +0,0 @@ -// SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons (hylkebons@gmail.com) -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see (http://www.gnu.org/licenses/). - - -using System; -using System.Xml; - -using IO = System.IO; - -namespace SparkleShare { - - public class SparklePlugin : XmlDocument { - - public static string PluginsPath = ""; - - public static string LocalPluginsPath = IO.Path.Combine ( - Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData), "sparkleshare", "plugins"); - - new public string Name { get { return GetValue ("info", "name"); } } - public string Description { get { return GetValue ("info", "description"); } } - public string Backend { get { return GetValue ("info", "backend"); } } - public string Fingerprint { get { return GetValue ("info", "fingerprint"); } } - public string AnnouncementsUrl { get { return GetValue ("info", "announcements_url"); } } - public string Address { get { return GetValue ("address", "value"); } } - public string AddressExample { get { return GetValue ("address", "example"); } } - public string Path { get { return GetValue ("path", "value"); } } - public string PathExample { get { return GetValue ("path", "example"); } } - - public string ImagePath { - get { - string image_file_name = GetValue ("info", "icon"); - string image_path = IO.Path.Combine (this.plugin_directory, image_file_name); - - if (IO.File.Exists (image_path)) - return image_path; - else - return IO.Path.Combine (PluginsPath, image_file_name); - } - } - - public bool PathUsesLowerCase { - get { - string uses_lower_case = GetValue ("path", "uses_lower_case"); - - if (!string.IsNullOrEmpty (uses_lower_case)) - return uses_lower_case.Equals (bool.TrueString); - else - return false; - } - } - - private string plugin_directory; - - - public SparklePlugin (string plugin_path) - { - this.plugin_directory = System.IO.Path.GetDirectoryName (plugin_path); - Load (plugin_path); - } - - - public static SparklePlugin Create (string name, string description, string address_value, - string address_example, string path_value, string path_example) - { - string plugin_path = System.IO.Path.Combine (LocalPluginsPath, name + ".xml"); - - if (IO.File.Exists (plugin_path)) - return null; - - string plugin_xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + - "<sparkleshare>" + - " <plugin>" + - " <info>" + - " <name>" + name + "</name>" + - " <description>" + description + "</description>" + - " <icon>own-server.png</icon>" + - " </info>" + - " <address>" + - " <value>" + address_value + "</value>" + - " <example>" + address_example + "</example>" + - " </address>" + - " <path>" + - " <value>" + path_value + "</value>" + - " <example>" + path_example + "</example>" + - " </path>" + - " </plugin>" + - "</sparkleshare>"; - - plugin_xml = plugin_xml.Replace ("<value></value>", "<value/>"); - plugin_xml = plugin_xml.Replace ("<example></example>", "<example/>"); - - if (!IO.Directory.Exists (LocalPluginsPath)) - IO.Directory.CreateDirectory (LocalPluginsPath); - - IO.File.WriteAllText (plugin_path, plugin_xml); - return new SparklePlugin (plugin_path); - } - - - private string GetValue (string a, string b) - { - XmlNode node = SelectSingleNode ("/sparkleshare/plugin/" + a + "/" + b + "/text()"); - - if (node != null && !string.IsNullOrEmpty (node.Value)) - return node.Value; - else - return null; - } - } -}
\ No newline at end of file diff --git a/SparkleShare/Windows/Pixmaps/folder.png b/SparkleShare/Windows/Images/folder.png Binary files differindex 46fa475..46fa475 100644 --- a/SparkleShare/Windows/Pixmaps/folder.png +++ b/SparkleShare/Windows/Images/folder.png diff --git a/SparkleShare/Windows/Pixmaps/process-syncing-down.png b/SparkleShare/Windows/Images/process-syncing-down.png Binary files differindex f5bd436..f5bd436 100644 --- a/SparkleShare/Windows/Pixmaps/process-syncing-down.png +++ b/SparkleShare/Windows/Images/process-syncing-down.png diff --git a/SparkleShare/Windows/Pixmaps/process-syncing-error.png b/SparkleShare/Windows/Images/process-syncing-error.png Binary files differindex ee81060..ee81060 100644 --- a/SparkleShare/Windows/Pixmaps/process-syncing-error.png +++ b/SparkleShare/Windows/Images/process-syncing-error.png diff --git a/SparkleShare/Windows/Pixmaps/process-syncing-idle.png b/SparkleShare/Windows/Images/process-syncing-idle.png Binary files differindex 7856e12..7856e12 100644 --- a/SparkleShare/Windows/Pixmaps/process-syncing-idle.png +++ b/SparkleShare/Windows/Images/process-syncing-idle.png diff --git a/SparkleShare/Windows/Pixmaps/process-syncing-up.png b/SparkleShare/Windows/Images/process-syncing-up.png Binary files differindex 56b8f23..56b8f23 100644 --- a/SparkleShare/Windows/Pixmaps/process-syncing-up.png +++ b/SparkleShare/Windows/Images/process-syncing-up.png diff --git a/SparkleShare/Windows/Pixmaps/process-syncing.png b/SparkleShare/Windows/Images/process-syncing.png Binary files differindex 9f9df04..9f9df04 100644 --- a/SparkleShare/Windows/Pixmaps/process-syncing.png +++ b/SparkleShare/Windows/Images/process-syncing.png diff --git a/SparkleShare/Windows/Pixmaps/sparkleshare-app.ico b/SparkleShare/Windows/Images/sparkleshare-app.ico Binary files differindex 73917b1..73917b1 100644 --- a/SparkleShare/Windows/Pixmaps/sparkleshare-app.ico +++ b/SparkleShare/Windows/Images/sparkleshare-app.ico diff --git a/SparkleShare/Windows/Pixmaps/sparkleshare-folder.ico b/SparkleShare/Windows/Images/sparkleshare-folder.ico Binary files differindex e00ebf4..e00ebf4 100644 --- a/SparkleShare/Windows/Pixmaps/sparkleshare-folder.ico +++ b/SparkleShare/Windows/Images/sparkleshare-folder.ico diff --git a/SparkleShare/Windows/Pixmaps/sparkleshare-folder.png b/SparkleShare/Windows/Images/sparkleshare-folder.png Binary files differindex f44e363..f44e363 100644 --- a/SparkleShare/Windows/Pixmaps/sparkleshare-folder.png +++ b/SparkleShare/Windows/Images/sparkleshare-folder.png diff --git a/SparkleShare/Windows/Pixmaps/tutorial-slide-3.png b/SparkleShare/Windows/Images/tutorial-slide-3.png Binary files differindex be651b0..be651b0 100644 --- a/SparkleShare/Windows/Pixmaps/tutorial-slide-3.png +++ b/SparkleShare/Windows/Images/tutorial-slide-3.png diff --git a/SparkleShare/Windows/README.md b/SparkleShare/Windows/README.md index 17ff4a6..c85784e 100644 --- a/SparkleShare/Windows/README.md +++ b/SparkleShare/Windows/README.md @@ -6,7 +6,7 @@ You can choose to build SparkleShare from source or to run the Windows installer Install version 4.0 of the [.NET Framework](http://www.microsoft.com/download/en/details.aspx?id=17851) if you haven't already. -Install [msysGit](http://msysgit.github.io/) and copy the contents of the install folder +Install [msysGit](https://github.com/msysgit/msysgit/releases) and copy the contents of the install folder (`C:\Program Files (x86)\Git` by default) to `C:\path\to\SparkleShare-sources\bin\msysgit\` (create the "bin"-folder in the SparkleShare source directory). Open a command prompt and execute the following: @@ -34,7 +34,7 @@ This will create `SparkleShare.msi` in the same directory. ### Resetting SparkleShare settings -Remove `My Documents\SparkleShare` and `AppData\Roaming\sparkleshare` (`AppData` is hidden by default). +Remove `My Documents\SparkleShare` and `AppData\Roaming\org.sparkleshare.SparkleShare` (`AppData` is hidden by default). ### Uninstalling diff --git a/SparkleShare/Windows/SparkleController.cs b/SparkleShare/Windows/SparkleController.cs deleted file mode 100644 index ed9a65f..0000000 --- a/SparkleShare/Windows/SparkleController.cs +++ /dev/null @@ -1,270 +0,0 @@ -// SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com> -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <http://www.gnu.org/licenses/>. - - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using System.Reflection; -using System.Runtime.InteropServices; -using System.Text; -using System.Text.RegularExpressions; -using System.Threading; -using Forms = System.Windows.Forms; - -using Microsoft.Win32; -using SparkleLib; -using System.Windows; - - -namespace SparkleShare { - - public class SparkleController : SparkleControllerBase { - - private int ssh_agent_pid; - - - public SparkleController () : base () - { - } - - - public override string PluginsPath - { - get { - return Path.Combine (Path.GetDirectoryName (Assembly.GetExecutingAssembly ().Location), "plugins"); - } - } - - - public override void Initialize () - { - // Add msysgit to path, as we cannot asume it is added to the path - // Asume it is installed in @"<exec dir>\msysgit\bin" - string executable_path = Path.GetDirectoryName (Forms.Application.ExecutablePath); - string msysgit_path = Path.Combine (executable_path, "msysgit"); - - - string new_PATH = msysgit_path + @"\bin" + ";" + - msysgit_path + @"\mingw\bin" + ";" + - msysgit_path + @"\cmd" + ";" + - Environment.ExpandEnvironmentVariables ("%PATH%"); - - Environment.SetEnvironmentVariable ("PATH", new_PATH); - Environment.SetEnvironmentVariable ("HOME", Environment.GetFolderPath (Environment.SpecialFolder.UserProfile)); - - StartSSH (); - SparkleLib.Git.SparkleGit.SSHPath = Path.Combine (msysgit_path, "bin", "ssh.exe"); - - base.Initialize (); - } - - - public override string EventLogHTML { - get { - string html = SparkleUIHelpers.GetHTML ("event-log.html"); - return html.Replace ("<!-- $jquery -->", SparkleUIHelpers.GetHTML ("jquery.js")); - } - } - - - public override string DayEntryHTML { - get { - return SparkleUIHelpers.GetHTML ("day-entry.html"); - } - } - - - public override string EventEntryHTML { - get { - return SparkleUIHelpers.GetHTML ("event-entry.html"); - } - } - - - public override void CreateStartupItem () - { - string startup_folder_path = Environment.GetFolderPath (Environment.SpecialFolder.Startup); - string shortcut_path = Path.Combine (startup_folder_path, "SparkleShare.lnk"); - - if (File.Exists (shortcut_path)) - File.Delete (shortcut_path); - - string shortcut_target = Forms.Application.ExecutablePath; - - Shortcut shortcut = new Shortcut (); - shortcut.Create (shortcut_path, shortcut_target); - } - - - public override void InstallProtocolHandler () - { - // We ship a separate .exe for this - } - - - public override void AddToBookmarks () - { - string user_profile_path = Environment.GetFolderPath (Environment.SpecialFolder.UserProfile); - string shortcut_path = Path.Combine (user_profile_path, "Links", "SparkleShare.lnk"); - - if (File.Exists (shortcut_path)) - File.Delete (shortcut_path); - - Shortcut shortcut = new Shortcut (); - shortcut.Create (FoldersPath, shortcut_path); - } - - - public override bool CreateSparkleShareFolder () - { - if (Directory.Exists (FoldersPath)) - return false; - - Directory.CreateDirectory (FoldersPath); - - File.SetAttributes (FoldersPath, File.GetAttributes (FoldersPath) | FileAttributes.System); - SparkleLogger.LogInfo ("Config", "Created '" + FoldersPath + "'"); - - string app_path = Path.GetDirectoryName (Forms.Application.ExecutablePath); - string icon_file_path = Path.Combine (app_path, "Pixmaps", "sparkleshare-folder.ico"); - - if (!File.Exists (icon_file_path)) { - string ini_file_path = Path.Combine (FoldersPath, "desktop.ini"); - string n = Environment.NewLine; - - string ini_file = "[.ShellClassInfo]" + n + - "IconFile=" + icon_file_path + n + - "IconIndex=0" + n + - "InfoTip=SparkleShare"; - - try { - File.Create (ini_file_path).Close (); - File.WriteAllText (ini_file_path, ini_file); - - File.SetAttributes (ini_file_path, - File.GetAttributes (ini_file_path) | FileAttributes.Hidden | FileAttributes.System); - - } catch (IOException e) { - SparkleLogger.LogInfo ("Config", "Failed setting icon for '" + FoldersPath + "': " + e.Message); - } - - return true; - } - - return false; - } - - - public override void OpenFile (string path) - { - Process.Start (path); - } - - - public override void OpenFolder (string path) - { - Process.Start (path); - } - - - public override void OpenWebsite (string url) - { - Process.Start (new ProcessStartInfo (url)); - } - - - public override void CopyToClipboard (string text) - { - try { - Clipboard.SetData (DataFormats.Text, text); - - } catch (COMException e) { - SparkleLogger.LogInfo ("Controller", "Copy to clipboard failed", e); - } - } - - - public override void Quit () - { - StopSSH (); - base.Quit (); - } - - - private void StartSSH () - { - string auth_agent_pid = Environment.GetEnvironmentVariable ("SSH_AGENT_PID"); - - if (!string.IsNullOrEmpty (auth_agent_pid)) { - SparkleLogger.LogInfo ("Controller", "Trying to use existing ssh-agent with PID=" + auth_agent_pid + "..."); - this.ssh_agent_pid = Convert.ToInt32 (auth_agent_pid); - - try { - Process ssh_agent = Process.GetProcessById (this.ssh_agent_pid); - SparkleLogger.LogInfo ("Controller", "Using existing ssh-agent with PID=" + this.ssh_agent_pid); - - return; - - } catch (ArgumentException) { - SparkleLogger.LogInfo ("Controller", "ssh-agent with PID=" + auth_agent_pid + " does not exist. Starting a new one..."); - } - } - - Process process = new Process (); - process.StartInfo.FileName = "ssh-agent"; - process.StartInfo.UseShellExecute = false; - process.StartInfo.RedirectStandardOutput = true; - process.StartInfo.CreateNoWindow = true; - - process.Start (); - - string output = process.StandardOutput.ReadToEnd (); - process.WaitForExit (); - - Match auth_sock_match = new Regex (@"SSH_AUTH_SOCK=([^;\n\r]*)").Match (output); - Match ssh_pid_match = new Regex (@"SSH_AGENT_PID=([^;\n\r]*)").Match (output); - - if (auth_sock_match.Success) - Environment.SetEnvironmentVariable ("SSH_AUTH_SOCK", auth_sock_match.Groups [1].Value); - - if (ssh_pid_match.Success) { - Int32.TryParse (ssh_pid_match.Groups [1].Value, out this.ssh_agent_pid); - Environment.SetEnvironmentVariable ("SSH_AGENT_PID", "" + this.ssh_agent_pid); - - SparkleLogger.LogInfo ("Controller", "ssh-agent started, PID=" + this.ssh_agent_pid); - - } else { - SparkleLogger.LogInfo ("Controller", "Could not start ssh-agent:" + output); - } - } - - - private void StopSSH () - { - if (this.ssh_agent_pid == 0) - return; - - try { - Process.GetProcessById (this.ssh_agent_pid).Kill (); - - } catch (ArgumentException e) { - SparkleLogger.LogInfo ("SSH", "Could not stop ssh-agent: " + e.Message); - } - } - } -} diff --git a/SparkleShare/Windows/SparkleEventLog.cs b/SparkleShare/Windows/SparkleEventLog.cs deleted file mode 100644 index 7938d77..0000000 --- a/SparkleShare/Windows/SparkleEventLog.cs +++ /dev/null @@ -1,372 +0,0 @@ -// SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons (hylkebons@gmail.com) -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see (http://www.gnu.org/licenses/). - -using System; -using System.ComponentModel; -using System.IO; -using System.Runtime.InteropServices; -using System.Security.Permissions; -using System.Threading; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Media; -using System.Windows.Media.Imaging; - -using Microsoft.Win32; -using Shapes = System.Windows.Shapes; - -using SparkleLib; - -namespace SparkleShare { - - public class SparkleEventLog : Window { - - public SparkleEventLogController Controller = new SparkleEventLogController (); - - private Canvas canvas; - private Label size_label_value; - private Label history_label_value; - private ComboBox combo_box; - private WebBrowser web_browser; - private SparkleSpinner spinner; - - - public SparkleEventLog () - { - Title = "Recent Changes"; - Height = 640; - Width = 480; - ResizeMode = ResizeMode.NoResize; // TODO - Background = new SolidColorBrush (Color.FromRgb (240, 240, 240)); - AllowsTransparency = false; - Icon = SparkleUIHelpers.GetImageSource ("sparkleshare-app", "ico"); - - int x = (int) (SystemParameters.PrimaryScreenWidth * 0.61); - int y = (int) (SystemParameters.PrimaryScreenHeight * 0.5 - (Height * 0.5)); - - WindowStartupLocation = WindowStartupLocation.Manual; - Left = x; - Top = y; - - WriteOutImages (); - - Label size_label = new Label () { - Content = "Size:", - FontWeight = FontWeights.Bold - }; - - this.size_label_value = new Label () { - Content = Controller.Size - }; - - size_label.Measure (new Size (Double.PositiveInfinity, Double.PositiveInfinity)); - Rect size_label_rect = new Rect (size_label.DesiredSize); - - Label history_label = new Label () { - Content = "History:", - FontWeight = FontWeights.Bold - }; - - this.history_label_value = new Label () { - Content = Controller.HistorySize, - }; - - history_label.Measure (new Size (Double.PositiveInfinity, Double.PositiveInfinity)); - Rect history_label_rect = new Rect (history_label.DesiredSize); - - Shapes.Rectangle line = new Shapes.Rectangle () { - Width = Width, - Height = 1, - Fill = new SolidColorBrush (Color.FromRgb (223, 223, 223)) - }; - - Shapes.Rectangle background = new Shapes.Rectangle () { - Width = Width, - Height = Height, - Fill = new SolidColorBrush (Color.FromRgb (250, 250, 250)) - }; - - this.web_browser = new WebBrowser () { - Width = Width - 6, - Height = Height - 64 - }; - - this.web_browser.ObjectForScripting = new SparkleScriptingObject (); - - - spinner = new SparkleSpinner (22); - - // Disable annoying IE clicking sound - CoInternetSetFeatureEnabled (21, 0x00000002, true); - - - this.canvas = new Canvas (); - Content = this.canvas; - - this.canvas.Children.Add (size_label); - Canvas.SetLeft (size_label, 24); - Canvas.SetTop (size_label, 4); - - this.canvas.Children.Add (this.size_label_value); - Canvas.SetLeft (this.size_label_value, 22 + size_label_rect.Width); - Canvas.SetTop (this.size_label_value, 4); - - this.canvas.Children.Add (history_label); - Canvas.SetLeft (history_label, 130); - Canvas.SetTop (history_label, 4); - - this.canvas.Children.Add (this.history_label_value); - Canvas.SetLeft (this.history_label_value, 130 + history_label_rect.Width); - Canvas.SetTop (this.history_label_value, 4); - - this.canvas.Children.Add (background); - Canvas.SetLeft (background, 0); - Canvas.SetTop (background, 36); - - this.canvas.Children.Add (spinner); - Canvas.SetLeft (spinner, (Width / 2) - 15); - Canvas.SetTop (spinner, (Height / 2) - 22); - - this.canvas.Children.Add (line); - Canvas.SetLeft (line, 0); - Canvas.SetTop (line, 35); - - - Closing += Close; - - Controller.ShowWindowEvent += delegate { - Dispatcher.BeginInvoke ((Action) delegate { - Show (); - Activate (); - BringIntoView (); - }); - }; - - Controller.HideWindowEvent += delegate { - Dispatcher.BeginInvoke ((Action) delegate { - Hide (); - - if (this.canvas.Children.Contains (this.web_browser)) - this.canvas.Children.Remove (this.web_browser); - }); - }; - - Controller.UpdateSizeInfoEvent += delegate (string size, string history_size) { - Dispatcher.BeginInvoke ((Action) delegate { - this.size_label_value.Content = size; - this.size_label_value.UpdateLayout (); - - this.history_label_value.Content = history_size; - this.history_label_value.UpdateLayout (); - }); - }; - - Controller.UpdateChooserEvent += delegate (string [] folders) { - Dispatcher.BeginInvoke ((Action) delegate { - UpdateChooser (folders); - }); - }; - - Controller.UpdateChooserEnablementEvent += delegate (bool enabled) { - Dispatcher.BeginInvoke ((Action) delegate { - this.combo_box.IsEnabled = enabled; - }); - }; - - Controller.UpdateContentEvent += delegate (string html) { - Dispatcher.BeginInvoke ((Action) delegate { - UpdateContent (html); - }); - }; - - Controller.ContentLoadingEvent += delegate { - Dispatcher.BeginInvoke ((Action) delegate { - this.spinner.Start (); - - if (this.canvas.Children.Contains (this.web_browser)) - this.canvas.Children.Remove (this.web_browser); - }); - }; - - Controller.ShowSaveDialogEvent += delegate (string file_name, string target_folder_path) { - Dispatcher.BeginInvoke ((Action) delegate { - SaveFileDialog dialog = new SaveFileDialog () { - FileName = file_name, - InitialDirectory = target_folder_path, - Title = "Restore from History", - DefaultExt = "." + Path.GetExtension (file_name), - Filter = "All Files|*.*" - }; - - Nullable<bool> result = dialog.ShowDialog (this); - - if (result == true) - Controller.SaveDialogCompleted (dialog.FileName); - else - Controller.SaveDialogCancelled (); - }); - }; - } - - - public void UpdateChooser (string [] folders) - { - if (folders == null) - folders = Controller.Folders; - - if (this.combo_box != null) - this.canvas.Children.Remove (this.combo_box); - - this.combo_box = new ComboBox () { - Width = 160 - }; - - ComboBoxItem item = new ComboBoxItem () { - Content = "Summary" - }; - - this.combo_box.Items.Add (item); - this.combo_box.Items.Add (new Separator ()); - - this.combo_box.SelectedItem = combo_box.Items [0]; - - int row = 2; - foreach (string folder in folders) { - this.combo_box.Items.Add ( - new ComboBoxItem () { Content = folder } - ); - - if (folder.Equals (Controller.SelectedFolder)) - this.combo_box.SelectedItem = combo_box.Items [row]; - - row++; - } - - this.combo_box.SelectionChanged += delegate { - Dispatcher.BeginInvoke ((Action) delegate { - int index = this.combo_box.SelectedIndex; - - if (index == 0) - Controller.SelectedFolder = null; - else - Controller.SelectedFolder = (string) - (this.combo_box.Items [index] as ComboBoxItem).Content; - }); - }; - - this.canvas.Children.Add (combo_box); - Canvas.SetLeft (this.combo_box, Width - 24 - this.combo_box.Width); - Canvas.SetTop (this.combo_box, 6); - } - - - public void UpdateContent (string html) - { - string pixmaps_path = Path.Combine (SparkleLib.SparkleConfig.DefaultConfig.TmpPath, "Pixmaps".SHA1 ()); - pixmaps_path = pixmaps_path.Replace ("\\", "/"); - - html = html.Replace ("<a href=", "<a class='windows' href="); - html = html.Replace ("<!-- $body-font-family -->", "'Segoe UI', sans-serif"); - html = html.Replace ("<!-- $day-entry-header-font-size -->", "13px"); - html = html.Replace ("<!-- $body-font-size -->", "12px"); - html = html.Replace ("<!-- $secondary-font-color -->", "#bbb"); - html = html.Replace ("<!-- $small-color -->", "#ddd"); - html = html.Replace ("<!-- $small-font-size -->", "90%"); - html = html.Replace ("<!-- $day-entry-header-background-color -->", "#f5f5f5"); - html = html.Replace ("<!-- $a-color -->", "#0085cf"); - html = html.Replace ("<!-- $a-hover-color -->", "#009ff8"); - html = html.Replace ("<!-- $pixmaps-path -->", pixmaps_path); - html = html.Replace ("<!-- $document-added-background-image -->", pixmaps_path + "/document-added-12.png"); - html = html.Replace ("<!-- $document-edited-background-image -->", pixmaps_path + "/document-edited-12.png"); - html = html.Replace ("<!-- $document-deleted-background-image -->", pixmaps_path + "/document-deleted-12.png"); - html = html.Replace ("<!-- $document-moved-background-image -->", pixmaps_path + "/document-moved-12.png"); - - this.spinner.Stop (); - - this.web_browser.ObjectForScripting = new SparkleScriptingObject (); - this.web_browser.NavigateToString (html); - - if (!this.canvas.Children.Contains (this.web_browser)) { - this.canvas.Children.Add (this.web_browser); - Canvas.SetLeft (this.web_browser, 0); - Canvas.SetTop (this.web_browser, 36); - } - } - - - private void WriteOutImages () - { - string tmp_path = SparkleLib.SparkleConfig.DefaultConfig.TmpPath; - string pixmaps_path = Path.Combine (tmp_path, "Pixmaps".SHA1 ()); - - if (!Directory.Exists (pixmaps_path)) { - Directory.CreateDirectory (pixmaps_path); - - File.SetAttributes (tmp_path, - File.GetAttributes (tmp_path) | FileAttributes.Hidden); - } - - BitmapSource image = SparkleUIHelpers.GetImageSource ("user-icon-default"); - string file_path = Path.Combine (pixmaps_path, "user-icon-default.png"); - - using (FileStream stream = new FileStream (file_path, FileMode.Create)) - { - BitmapEncoder encoder = new PngBitmapEncoder (); - encoder.Frames.Add (BitmapFrame.Create (image)); - encoder.Save (stream); - } - - string [] actions = new string [] {"added", "deleted", "edited", "moved"}; - - foreach (string action in actions) { - image = SparkleUIHelpers.GetImageSource ("document-" + action + "-12"); - file_path = Path.Combine (pixmaps_path, "document-" + action + "-12.png"); - - using (FileStream stream = new FileStream (file_path, FileMode.Create)) - { - BitmapEncoder encoder = new PngBitmapEncoder (); - encoder.Frames.Add (BitmapFrame.Create (image)); - encoder.Save (stream); - } - } - } - - - private void Close (object sender, CancelEventArgs args) - { - Controller.WindowClosed (); - args.Cancel = true; - } - - - [DllImport ("urlmon.dll")] - [PreserveSig] - [return:MarshalAs (UnmanagedType.Error)] - static extern int CoInternetSetFeatureEnabled (int feature, - [MarshalAs (UnmanagedType.U4)] int flags, bool enable); - } - - - [PermissionSet(SecurityAction.Demand, Name = "FullTrust")] - [ComVisible(true)] - public class SparkleScriptingObject { - - public void LinkClicked (string url) - { - Program.UI.EventLog.Controller.LinkClicked (url); - } - } -} diff --git a/SparkleShare/Windows/SparkleEventLogWindow.xaml b/SparkleShare/Windows/SparkleEventLogWindow.xaml deleted file mode 100644 index a43d38f..0000000 --- a/SparkleShare/Windows/SparkleEventLogWindow.xaml +++ /dev/null @@ -1,38 +0,0 @@ -<Window x:Class="SparkleShare.SparkleEventLogWindow" - xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:sparkleShare="clr-namespace:SparkleShare" - mc:Ignorable="d" - Height="640" SizeToContent="WidthAndHeight" Title="Recent Changes" MinHeight="640" MinWidth="490"> - <Grid x:Name="grid_Base" Background="White"> - <Border VerticalAlignment="Top" Height="35" Background="#FFF0F0F0" BorderBrush="#FFDFDFDF" BorderThickness="0,0,0,1"> - <Grid> - <Label Content="Size: ?" Height="28" Name="label_Size" HorizontalAlignment="Left" Margin="20,0,0,0" FontWeight="Bold" /> - <Label Content="History: ?" Height="28" Name="label_History" HorizontalAlignment="Left" Margin="100,0,0,0" FontWeight="Bold" /> - <ComboBox HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,6,0" MinWidth="120" x:Name="combobox" /> - </Grid> - </Border> - - <Grid Margin="0, 35, 0, 0"> - <Grid.RowDefinitions> - <RowDefinition Height="*"/> - <RowDefinition Height="Auto"/> - </Grid.RowDefinitions> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="*"></ColumnDefinition> - <ColumnDefinition Width="Auto"></ColumnDefinition> - </Grid.ColumnDefinitions> - - <sparkleShare:SparkleSpinner x:Name="spinner" /> - <WebBrowser x:Name="webbrowser" Height="{Binding ElementName=sizingControlHeight, Path=ActualHeight}" Width="{Binding ElementName=sizingControlWidth, Path=ActualWidth}" /> - - <!-- WPF always resizes from child to parent. Unfortunately the webbrowser takes all space it gets. - To correct this "feature" we use a dummy control in a different column to bind the height to. - See: http://stackoverflow.com/questions/7300975/prevent-parent-from-being-resized-by-child --> - <Rectangle Name="sizingControlHeight" Grid.Column="1" Visibility="Hidden" /> - <Rectangle Name="sizingControlWidth" Grid.Column="0" Grid.Row="1" Visibility="Hidden" /> - </Grid> - </Grid> -</Window>
\ No newline at end of file diff --git a/SparkleShare/Windows/SparkleEventLogWindow.xaml.cs b/SparkleShare/Windows/SparkleEventLogWindow.xaml.cs deleted file mode 100644 index ac6b581..0000000 --- a/SparkleShare/Windows/SparkleEventLogWindow.xaml.cs +++ /dev/null @@ -1,262 +0,0 @@ -// SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com> -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <http://www.gnu.org/licenses/>. - - -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.IO; -using System.Linq; -using System.Security.Permissions; -using System.Text; -using System.Runtime.InteropServices; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Media; -using System.Windows.Media.Imaging; - -using Microsoft.Win32; - -namespace SparkleShare -{ - public partial class SparkleEventLogWindow : Window - { - public SparkleEventLogController Controller = new SparkleEventLogController (); - - [DllImport("urlmon.dll")] - [PreserveSig] - [return: MarshalAs(UnmanagedType.Error)] - static extern int CoInternetSetFeatureEnabled (int feature, [MarshalAs(UnmanagedType.U4)] int flags, bool enable); - - - public SparkleEventLogWindow () - { - InitializeComponent (); - - - Background = new SolidColorBrush (Color.FromRgb(240, 240, 240)); - AllowsTransparency = false; - Icon = SparkleUIHelpers.GetImageSource ("sparkleshare-app", "ico"); - WindowStartupLocation = WindowStartupLocation.CenterScreen; - - WriteOutImages (); - - this.label_Size.Content = "Size: " + Controller.Size; - this.label_History.Content = "History: " + Controller.HistorySize; - - this.webbrowser.ObjectForScripting = new SparkleScriptingObject (); - - // Disable annoying IE clicking sound - CoInternetSetFeatureEnabled (21, 0x00000002, true); - - Closing += this.OnClosing; - - Controller.ShowWindowEvent += delegate { - Dispatcher.BeginInvoke ((Action) (() => { - Show (); - Activate (); - BringIntoView (); - })); - }; - - Controller.HideWindowEvent += delegate { - Dispatcher.BeginInvoke ((Action) (() => { - Hide (); - this.spinner.Visibility = Visibility.Visible; - this.webbrowser.Visibility = Visibility.Collapsed; - })); - }; - - Controller.UpdateSizeInfoEvent += delegate (string size, string history_size) { - Dispatcher.BeginInvoke ((Action) (() => { - this.label_Size.Content = "Size: " + size; - this.label_History.Content = "History: " + history_size; - })); - }; - - Controller.UpdateChooserEvent += delegate (string [] folders) { - Dispatcher.BeginInvoke ((Action) (() => - UpdateChooser (folders)) - ); - }; - - Controller.UpdateChooserEnablementEvent += delegate (bool enabled) { - Dispatcher.BeginInvoke ((Action) (() => - this.combobox.IsEnabled = enabled - )); - }; - - Controller.UpdateContentEvent += delegate (string html) { - Dispatcher.BeginInvoke ((Action) (() => { - UpdateContent (html); - - this.spinner.Visibility = Visibility.Collapsed; - this.webbrowser.Visibility = Visibility.Visible; - })); - }; - - Controller.ContentLoadingEvent += () => this.Dispatcher.BeginInvoke ( - (Action)(() => { - this.spinner.Visibility = Visibility.Visible; - this.spinner.Start (); - this.webbrowser.Visibility = Visibility.Collapsed; - })); - - Controller.ShowSaveDialogEvent += delegate (string file_name, string target_folder_path) { - Dispatcher.BeginInvoke ((Action) (() => { - SaveFileDialog dialog = new SaveFileDialog () { - FileName = file_name, - InitialDirectory = target_folder_path, - Title = "Restore from History", - DefaultExt = "." + Path.GetExtension (file_name), - Filter = "All Files|*.*" - }; - - bool? result = dialog.ShowDialog (this); - - if (result == true) - Controller.SaveDialogCompleted (dialog.FileName); - else - Controller.SaveDialogCancelled (); - })); - }; - } - - - private void OnClosing (object sender, CancelEventArgs cancel_event_args) - { - Controller.WindowClosed (); - cancel_event_args.Cancel = true; - } - - - private void UpdateContent (string html) - { - string pixmaps_path = Path.Combine (SparkleLib.SparkleConfig.DefaultConfig.TmpPath, "Pixmaps"); - pixmaps_path = pixmaps_path.Replace ("\\", "/"); - - html = html.Replace ("<a href=", "<a class='windows' href="); - html = html.Replace ("<!-- $body-font-family -->", "Segoe UI"); - html = html.Replace ("<!-- $day-entry-header-font-size -->", "13px"); - html = html.Replace ("<!-- $body-font-size -->", "12px"); - html = html.Replace ("<!-- $secondary-font-color -->", "#bbb"); - html = html.Replace ("<!-- $small-color -->", "#ddd"); - html = html.Replace ("<!-- $small-font-size -->", "90%"); - html = html.Replace ("<!-- $day-entry-header-background-color -->", "#f5f5f5"); - html = html.Replace ("<!-- $a-color -->", "#0085cf"); - html = html.Replace ("<!-- $a-hover-color -->", "#009ff8"); - html = html.Replace ("<!-- $pixmaps-path -->", pixmaps_path); - html = html.Replace ("<!-- $document-added-background-image -->", pixmaps_path + "/document-added-12.png"); - html = html.Replace ("<!-- $document-edited-background-image -->", pixmaps_path + "/document-edited-12.png"); - html = html.Replace ("<!-- $document-deleted-background-image -->", pixmaps_path + "/document-deleted-12.png"); - html = html.Replace ("<!-- $document-moved-background-image -->", pixmaps_path + "/document-moved-12.png"); - - this.spinner.Stop (); - - this.webbrowser.ObjectForScripting = new SparkleScriptingObject (); - this.webbrowser.NavigateToString (html); - } - - - public void UpdateChooser (string [] folders) - { - if (folders == null) { - folders = Controller.Folders; - } - - this.combobox.Items.Clear (); - this.combobox.Items.Add (new ComboBoxItem () { Content = "Summary" }); - this.combobox.Items.Add (new Separator ()); - this.combobox.SelectedItem = combobox.Items [0]; - - int row = 2; - foreach (string folder in folders) { - this.combobox.Items.Add (new ComboBoxItem () { Content = folder } ); - - if (folder.Equals (Controller.SelectedFolder)) - this.combobox.SelectedItem = this.combobox.Items [row]; - - row++; - } - - this.combobox.SelectionChanged += delegate { - Dispatcher.BeginInvoke ((Action) delegate { - int index = this.combobox.SelectedIndex; - - if (index == 0) - Controller.SelectedFolder = null; - else - Controller.SelectedFolder = (string) ((ComboBoxItem) this.combobox.Items [index]).Content; - }); - }; - } - - - private void WriteOutImages () - { - string tmp_path = SparkleLib.SparkleConfig.DefaultConfig.TmpPath; - string pixmaps_path = Path.Combine (tmp_path, "Pixmaps"); - - if (!Directory.Exists (pixmaps_path)) - { - Directory.CreateDirectory (pixmaps_path); - - File.SetAttributes (tmp_path, File.GetAttributes (tmp_path) | FileAttributes.Hidden); - } - - BitmapSource image = SparkleUIHelpers.GetImageSource ("user-icon-default"); - string file_path = Path.Combine (pixmaps_path, "user-icon-default.png"); - - using (FileStream stream = new FileStream (file_path, FileMode.Create)) - { - BitmapEncoder encoder = new PngBitmapEncoder (); - encoder.Frames.Add (BitmapFrame.Create (image)); - encoder.Save (stream); - } - - string[] actions = new string [] { "added", "deleted", "edited", "moved" }; - - foreach (string action in actions) - { - image = SparkleUIHelpers.GetImageSource ("document-" + action + "-12"); - file_path = Path.Combine (pixmaps_path, "document-" + action + "-12.png"); - - using (FileStream stream = new FileStream (file_path, FileMode.Create)) - { - BitmapEncoder encoder = new PngBitmapEncoder (); - encoder.Frames.Add (BitmapFrame.Create(image)); - encoder.Save (stream); - } - } - } - } - - - - - - [PermissionSet(SecurityAction.Demand, Name = "FullTrust")] - [ComVisible(true)] - public class SparkleScriptingObject - { - public void LinkClicked(string url) - { - Program.UI.EventLog.Controller.LinkClicked(url); - } - } - - -} diff --git a/SparkleShare/Windows/SparkleLib/Git/SparkleLib.Git.csproj b/SparkleShare/Windows/SparkleLib/Git/SparkleLib.Git.csproj deleted file mode 100644 index 473b4dc..0000000 --- a/SparkleShare/Windows/SparkleLib/Git/SparkleLib.Git.csproj +++ /dev/null @@ -1,71 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> - <PropertyGroup> - <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> - <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ProjectGuid>{7F0DB8D0-E278-4955-8204-FC391B99F7C1}</ProjectGuid> - <OutputType>Library</OutputType> - <AppDesignerFolder>Properties</AppDesignerFolder> - <RootNamespace>SparkleLib.Git</RootNamespace> - <AssemblyName>SparkleLib.Git</AssemblyName> - <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> - <FileAlignment>512</FileAlignment> - <TargetFrameworkProfile /> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> - <DebugSymbols>true</DebugSymbols> - <DebugType>full</DebugType> - <Optimize>false</Optimize> - <OutputPath>..\..\..\..\bin\</OutputPath> - <DefineConstants>DEBUG;TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> - <DebugType>pdbonly</DebugType> - <Optimize>true</Optimize> - <OutputPath>..\..\..\..\bin\</OutputPath> - <DefineConstants>TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - </PropertyGroup> - <ItemGroup> - <Reference Include="System" /> - <Reference Include="System.Core" /> - <Reference Include="System.Xml.Linq" /> - <Reference Include="System.Data.DataSetExtensions" /> - <Reference Include="Microsoft.CSharp" /> - <Reference Include="System.Data" /> - <Reference Include="System.Xml" /> - </ItemGroup> - <ItemGroup> - <Compile Include="..\..\..\..\SparkleLib\Git\SparkleFetcherGit.cs"> - <Link>SparkleFetcherGit.cs</Link> - </Compile> - <Compile Include="..\..\..\..\SparkleLib\Git\SparkleGit.cs"> - <Link>SparkleGit.cs</Link> - <SubType>Component</SubType> - </Compile> - <Compile Include="..\..\..\..\SparkleLib\Git\SparkleRepoGit.cs"> - <Link>SparkleRepoGit.cs</Link> - </Compile> - </ItemGroup> - <ItemGroup> - <Folder Include="Properties\" /> - </ItemGroup> - <ItemGroup> - <ProjectReference Include="..\SparkleLib.csproj"> - <Project>{748f6316-37b4-46fd-a011-af073bc7c02d}</Project> - <Name>SparkleLib</Name> - </ProjectReference> - </ItemGroup> - <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> - <!-- To modify your build process, add your task inside one of the targets below and uncomment it. - Other similar extension points exist, see Microsoft.Common.targets. - <Target Name="BeforeBuild"> - </Target> - <Target Name="AfterBuild"> - </Target> - --> -</Project>
\ No newline at end of file diff --git a/SparkleShare/Windows/SparkleLib/SparkleLib.csproj b/SparkleShare/Windows/SparkleLib/SparkleLib.csproj deleted file mode 100644 index 4c5eaff..0000000 --- a/SparkleShare/Windows/SparkleLib/SparkleLib.csproj +++ /dev/null @@ -1,97 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> - <PropertyGroup> - <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> - <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ProjectGuid>{748F6316-37B4-46FD-A011-AF073BC7C02D}</ProjectGuid> - <OutputType>Library</OutputType> - <AppDesignerFolder>Properties</AppDesignerFolder> - <RootNamespace>SparkleLib</RootNamespace> - <AssemblyName>SparkleLib</AssemblyName> - <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> - <FileAlignment>512</FileAlignment> - <TargetFrameworkProfile /> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> - <DebugSymbols>true</DebugSymbols> - <DebugType>full</DebugType> - <Optimize>false</Optimize> - <OutputPath>..\..\..\bin\</OutputPath> - <DefineConstants>DEBUG;TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> - <DebugType>pdbonly</DebugType> - <Optimize>true</Optimize> - <OutputPath>..\..\..\bin\</OutputPath> - <DefineConstants>TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - </PropertyGroup> - <ItemGroup> - <Reference Include="System" /> - <Reference Include="System.Core" /> - <Reference Include="System.Xml.Linq" /> - <Reference Include="System.Data.DataSetExtensions" /> - <Reference Include="Microsoft.CSharp" /> - <Reference Include="System.Data" /> - <Reference Include="System.Xml" /> - </ItemGroup> - <ItemGroup> - <Folder Include="Properties\" /> - </ItemGroup> - <ItemGroup> - <Compile Include="..\..\..\SparkleLib\Defines.cs"> - <Link>Defines.cs</Link> - </Compile> - <Compile Include="..\..\..\SparkleLib\SparkleBackend.cs"> - <Link>SparkleBackend.cs</Link> - </Compile> - <Compile Include="..\..\..\SparkleLib\SparkleConfig.cs"> - <Link>SparkleConfig.cs</Link> - </Compile> - <Compile Include="..\..\..\SparkleLib\SparkleExtensions.cs"> - <Link>SparkleExtensions.cs</Link> - </Compile> - <Compile Include="..\..\..\SparkleLib\SparkleFetcherBase.cs"> - <Link>SparkleFetcherBase.cs</Link> - </Compile> - <Compile Include="..\..\..\SparkleLib\SparkleFetcherSSH.cs"> - <Link>SparkleFetcherSSH.cs</Link> - </Compile> - <Compile Include="..\..\..\SparkleLib\SparkleListenerBase.cs"> - <Link>SparkleListenerBase.cs</Link> - </Compile> - <Compile Include="..\..\..\SparkleLib\SparkleListenerFactory.cs"> - <Link>SparkleListenerFactory.cs</Link> - </Compile> - <Compile Include="..\..\..\SparkleLib\SparkleListenerTcp.cs"> - <Link>SparkleListenerTcp.cs</Link> - </Compile> - <Compile Include="..\..\..\SparkleLib\SparkleLogger.cs"> - <Link>SparkleLogger.cs</Link> - </Compile> - <Compile Include="..\..\..\SparkleLib\SparkleRepoBase.cs"> - <Link>SparkleRepoBase.cs</Link> - </Compile> - <Compile Include="..\..\..\SparkleLib\SparkleUser.cs"> - <Link>SparkleUser.cs</Link> - </Compile> - <Compile Include="..\..\..\SparkleLib\SparkleWatcher.cs"> - <Link>SparkleWatcher.cs</Link> - </Compile> - <Compile Include="..\..\..\SparkleLib\SparkleWrappers.cs"> - <Link>SparkleWrappers.cs</Link> - </Compile> - </ItemGroup> - <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> - <!-- To modify your build process, add your task inside one of the targets below and uncomment it. - Other similar extension points exist, see Microsoft.Common.targets. - <Target Name="BeforeBuild"> - </Target> - <Target Name="AfterBuild"> - </Target> - --> -</Project>
\ No newline at end of file diff --git a/SparkleShare/Windows/SparkleShare.Windows.csproj b/SparkleShare/Windows/SparkleShare.Windows.csproj new file mode 100644 index 0000000..a3c32c1 --- /dev/null +++ b/SparkleShare/Windows/SparkleShare.Windows.csproj @@ -0,0 +1,337 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>8.0.30703</ProductVersion> + <ProjectGuid>{728483AA-E34B-4441-BF2C-C8BC2901E4E0}</ProjectGuid> + <OutputType>WinExe</OutputType> + <AssemblyName>SparkleShare.Windows</AssemblyName> + <SchemaVersion>2.0</SchemaVersion> + <RootNamespace>SparkleShare.Windows</RootNamespace> + <FileUpgradeFlags> + </FileUpgradeFlags> + <OldToolsVersion>3.5</OldToolsVersion> + <UpgradeBackupLocation> + </UpgradeBackupLocation> + <IsWebBootstrapper>false</IsWebBootstrapper> + <PublishUrl>publish\</PublishUrl> + <Install>true</Install> + <InstallFrom>Disk</InstallFrom> + <UpdateEnabled>false</UpdateEnabled> + <UpdateMode>Foreground</UpdateMode> + <UpdateInterval>7</UpdateInterval> + <UpdateIntervalUnits>Days</UpdateIntervalUnits> + <UpdatePeriodically>false</UpdatePeriodically> + <UpdateRequired>false</UpdateRequired> + <MapFileExtensions>true</MapFileExtensions> + <ApplicationRevision>0</ApplicationRevision> + <ApplicationVersion>1.0.0.%2a</ApplicationVersion> + <UseApplicationTrust>false</UseApplicationTrust> + <BootstrapperEnabled>true</BootstrapperEnabled> + <ApplicationIcon>Images\sparkleshare-app.ico</ApplicationIcon> + <ReleaseVersion> + </ReleaseVersion> + <TargetFrameworkVersion>v4.5</TargetFrameworkVersion> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>..\..\bin</OutputPath> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> + <PlatformTarget>x86</PlatformTarget> + <DefineConstants>TRACE</DefineConstants> + <DebugSymbols>true</DebugSymbols> + <Prefer32Bit>false</Prefer32Bit> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'"> + <OutputPath>..\..\bin\</OutputPath> + <DefineConstants>TRACE;DEBUG</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <DebugType>full</DebugType> + <DebugSymbols>true</DebugSymbols> + <WarningLevel>4</WarningLevel> + <Optimize>false</Optimize> + <Prefer32Bit>false</Prefer32Bit> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Windows-Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <OutputPath>..\..\bin\</OutputPath> + <DefineConstants>TRACE;DEBUG</DefineConstants> + <DebugType>full</DebugType> + <PlatformTarget>AnyCPU</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'ReleaseWindows|AnyCPU'"> + <DebugSymbols>true</DebugSymbols> + <OutputPath>..\..\bin\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <Optimize>true</Optimize> + <DebugType>pdbonly</DebugType> + <PlatformTarget>x86</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'DebugMac|AnyCPU' "> + <OutputPath>..\..\bin\</OutputPath> + <DefineConstants>TRACE;DEBUG</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <DebugType>full</DebugType> + <DebugSymbols>true</DebugSymbols> + <WarningLevel>4</WarningLevel> + <Optimize>false</Optimize> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'DebugWindows|AnyCPU'"> + <DebugSymbols>true</DebugSymbols> + <OutputPath>..\..\bin\</OutputPath> + <DefineConstants>TRACE;DEBUG</DefineConstants> + <DebugType>full</DebugType> + <PlatformTarget>AnyCPU</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet> + <Prefer32Bit>true</Prefer32Bit> + </PropertyGroup> + <Import Project="..\Common\SparkleShare.projitems" Label="Shared" Condition="Exists('..\Common\SparkleShare.projitems')" /> + <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> + <ItemGroup> + <Reference Include="DeltaCompressionDotNet, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1d14d6e5194e7f4a, processorArchitecture=MSIL"> + <HintPath>..\..\packages\DeltaCompressionDotNet.1.0.0\lib\net45\DeltaCompressionDotNet.dll</HintPath> + </Reference> + <Reference Include="DeltaCompressionDotNet.MsDelta, Version=1.0.0.0, Culture=neutral, PublicKeyToken=46b2138a390abf55, processorArchitecture=MSIL"> + <HintPath>..\..\packages\DeltaCompressionDotNet.1.0.0\lib\net45\DeltaCompressionDotNet.MsDelta.dll</HintPath> + </Reference> + <Reference Include="DeltaCompressionDotNet.PatchApi, Version=1.0.0.0, Culture=neutral, PublicKeyToken=3e8888ee913ed789, processorArchitecture=MSIL"> + <HintPath>..\..\packages\DeltaCompressionDotNet.1.0.0\lib\net45\DeltaCompressionDotNet.PatchApi.dll</HintPath> + </Reference> + <Reference Include="ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, processorArchitecture=MSIL"> + <HintPath>..\..\packages\squirrel.windows.1.5.2\lib\Net45\ICSharpCode.SharpZipLib.dll</HintPath> + </Reference> + <Reference Include="Mono.Cecil, Version=0.9.6.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL"> + <HintPath>..\..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.dll</HintPath> + </Reference> + <Reference Include="Mono.Cecil.Mdb, Version=0.9.6.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL"> + <HintPath>..\..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.Mdb.dll</HintPath> + </Reference> + <Reference Include="Mono.Cecil.Pdb, Version=0.9.6.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL"> + <HintPath>..\..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.Pdb.dll</HintPath> + </Reference> + <Reference Include="Mono.Cecil.Rocks, Version=0.9.6.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL"> + <HintPath>..\..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.Rocks.dll</HintPath> + </Reference> + <Reference Include="NuGet.Squirrel, Version=3.0.0.0, Culture=neutral, processorArchitecture=MSIL"> + <HintPath>..\..\packages\squirrel.windows.1.5.2\lib\Net45\NuGet.Squirrel.dll</HintPath> + </Reference> + <Reference Include="Splat, Version=1.6.2.0, Culture=neutral, processorArchitecture=MSIL"> + <HintPath>..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll</HintPath> + </Reference> + <Reference Include="Squirrel, Version=1.5.2.0, Culture=neutral, processorArchitecture=MSIL"> + <HintPath>..\..\packages\squirrel.windows.1.5.2\lib\Net45\Squirrel.dll</HintPath> + </Reference> + <Reference Include="System" /> + <Reference Include="System.Core" /> + <Reference Include="System.Data" /> + <Reference Include="System.Drawing" /> + <Reference Include="System.Windows.Forms" /> + <Reference Include="System.Configuration" /> + <Reference Include="System.Xml" /> + <Reference Include="PresentationCore" /> + <Reference Include="PresentationFramework" /> + <Reference Include="WindowsBase" /> + <Reference Include="WindowsFormsIntegration" /> + <Reference Include="System.Xaml" /> + </ItemGroup> + <ItemGroup> + <Compile Include="UserInterface\About.cs" /> + <Compile Include="UserInterface\Bubbles.cs" /> + <Compile Include="UserInterface\EventLog.cs" /> + <Compile Include="UserInterface\Controller.cs" /> + <Compile Include="UserInterface\Note.xaml.cs"> + <DependentUpon>Note.xaml</DependentUpon> + </Compile> + <Compile Include="UserInterface\NotifyIcon.cs" /> + <Compile Include="UserInterface\ProtocolHandler.cs" /> + <Compile Include="UserInterface\Setup.cs" /> + <Compile Include="UserInterface\SetupWindow.cs" /> + <Compile Include="UserInterface\Shortcut.cs" /> + <Compile Include="UserInterface\Spinner.cs" /> + <Compile Include="UserInterface\StatusIcon.cs" /> + <Compile Include="UserInterface\UserInterface.cs" /> + <Compile Include="UserInterface\UserInterfaceHelpers.cs" /> + </ItemGroup> + <ProjectExtensions> + <VisualStudio /> + </ProjectExtensions> + <ItemGroup> + <BootstrapperPackage Include="Microsoft.Net.Framework.2.0"> + <Visible>False</Visible> + <ProductName>.NET Framework 2.0 %28x86%29</ProductName> + <Install>true</Install> + </BootstrapperPackage> + <BootstrapperPackage Include="Microsoft.Net.Framework.3.0"> + <Visible>False</Visible> + <ProductName>.NET Framework 3.0 %28x86%29</ProductName> + <Install>false</Install> + </BootstrapperPackage> + <BootstrapperPackage Include="Microsoft.Net.Framework.3.5"> + <Visible>False</Visible> + <ProductName>.NET Framework 3.5</ProductName> + <Install>false</Install> + </BootstrapperPackage> + </ItemGroup> + <ItemGroup> + <Service Include="{508349B6-6B84-4DF5-91F0-309BEEBAD82D}" /> + <Service Include="{B4F97281-0DBD-4835-9ED8-7DFB966E87FF}" /> + </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="..\Common\Images\about.png"> + <Link>Images\about.png</Link> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </EmbeddedResource> + <EmbeddedResource Include="..\Common\Images\side-splash.png"> + <Link>Images\side-splash.png</Link> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </EmbeddedResource> + <EmbeddedResource Include="..\Common\HTML\day-entry.html"> + <Link>HTML\day-entry.html</Link> + </EmbeddedResource> + <EmbeddedResource Include="..\Common\HTML\event-entry.html"> + <Link>HTML\event-entry.html</Link> + </EmbeddedResource> + <EmbeddedResource Include="..\Common\HTML\event-log.html"> + <Link>HTML\event-log.html</Link> + <SubType>Designer</SubType> + </EmbeddedResource> + <EmbeddedResource Include="..\Common\HTML\jquery.js"> + <Link>HTML\jquery.js</Link> + </EmbeddedResource> + <EmbeddedResource Include="..\Common\Images\user-icon-default.png"> + <Link>Images\user-icon-default.png</Link> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </EmbeddedResource> + <EmbeddedResource Include="..\Linux\Images\icons\hicolor\document-added-12.png"> + <Link>Images\document-added-12.png</Link> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </EmbeddedResource> + <EmbeddedResource Include="..\Linux\Images\icons\hicolor\document-deleted-12.png"> + <Link>Images\document-deleted-12.png</Link> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </EmbeddedResource> + <EmbeddedResource Include="..\Linux\Images\icons\hicolor\document-edited-12.png"> + <Link>Images\document-edited-12.png</Link> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </EmbeddedResource> + <EmbeddedResource Include="..\Linux\Images\icons\hicolor\document-moved-12.png"> + <Link>Images\document-moved-12.png</Link> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </EmbeddedResource> + <EmbeddedResource Include="..\Linux\Images\icons\hicolor\process-working-22.png"> + <Link>Images\process-working-22.png</Link> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </EmbeddedResource> + <EmbeddedResource Include="Images\process-syncing-down.png"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </EmbeddedResource> + <EmbeddedResource Include="Images\process-syncing-idle.png"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </EmbeddedResource> + <EmbeddedResource Include="Images\process-syncing-up.png"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </EmbeddedResource> + <EmbeddedResource Include="Images\process-syncing.png"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </EmbeddedResource> + <EmbeddedResource Include="..\Common\Images\tutorial-slide-1.png"> + <Link>Images\tutorial-slide-1.png</Link> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </EmbeddedResource> + <EmbeddedResource Include="..\Common\Images\tutorial-slide-2.png"> + <Link>Images\tutorial-slide-2.png</Link> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </EmbeddedResource> + </ItemGroup> + <ItemGroup> + <None Include="..\Common\Presets\github.png"> + <Link>Presets\github.png</Link> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </None> + <None Include="..\Common\Presets\own-server.png"> + <Link>Presets\own-server.png</Link> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </None> + <None Include="..\Common\Presets\bitbucket.png"> + <Link>Presets\bitbucket.png</Link> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </None> + <None Include="..\Common\Presets\planio.png"> + <Link>Presets\planio.png</Link> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </None> + <None Include="app.config" /> + <None Include="packages.config" /> + </ItemGroup> + <ItemGroup> + <None Include="..\Common\Presets\bitbucket.xml"> + <Link>Presets\bitbucket.xml</Link> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </None> + <None Include="..\Common\Presets\github.xml"> + <Link>Presets\github.xml</Link> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </None> + <None Include="..\Common\Presets\own-server.xml"> + <Link>Presets\own-server.xml</Link> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </None> + <None Include="..\Common\Presets\planio.xml"> + <Link>Presets\planio.xml</Link> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </None> + </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="Images\folder.png"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </EmbeddedResource> + <EmbeddedResource Include="Images\process-syncing-error.png"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </EmbeddedResource> + <EmbeddedResource Include="Images\sparkleshare-app.ico"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </EmbeddedResource> + <EmbeddedResource Include="Images\sparkleshare-folder.png"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </EmbeddedResource> + </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="Images\tutorial-slide-3.png"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </EmbeddedResource> + </ItemGroup> + <ItemGroup> + <Resource Include="..\Common\Images\text-balloon.png"> + <Link>Images\text-balloon.png</Link> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Resource> + <Content Include="Images\sparkleshare-folder.ico"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> + </ItemGroup> + <ItemGroup> + <Page Include="UserInterface\Note.xaml"> + <SubType>Designer</SubType> + <Generator>MSBuild:Compile</Generator> + </Page> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\..\Sparkles\Sparkles.csproj"> + <Project>{2C914413-B31C-4362-93C7-1AE34F09112A}</Project> + <Name>Sparkles</Name> + </ProjectReference> + <ProjectReference Include="..\..\Sparkles\Git\Sparkles.Git.csproj"> + <Project>{009FDCD7-1D57-4202-BB6D-8477D8C6B8EE}</Project> + <Name>Sparkles.Git</Name> + </ProjectReference> + </ItemGroup> +</Project>
\ No newline at end of file diff --git a/SparkleShare/Windows/SparkleShare.csproj b/SparkleShare/Windows/SparkleShare.csproj deleted file mode 100644 index b437064..0000000 --- a/SparkleShare/Windows/SparkleShare.csproj +++ /dev/null @@ -1,294 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0"> - <PropertyGroup> - <Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration> - <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ProductVersion>9.0.30729</ProductVersion> - <ProjectGuid>{728483AA-E34B-4441-BF2C-C8BC2901E4E0}</ProjectGuid> - <OutputType>WinExe</OutputType> - <AssemblyName>SparkleShare</AssemblyName> - <SchemaVersion>2.0</SchemaVersion> - <RootNamespace>SparkleShare</RootNamespace> - <FileUpgradeFlags> - </FileUpgradeFlags> - <OldToolsVersion>3.5</OldToolsVersion> - <UpgradeBackupLocation> - </UpgradeBackupLocation> - <IsWebBootstrapper>false</IsWebBootstrapper> - <PublishUrl>publish\</PublishUrl> - <Install>true</Install> - <InstallFrom>Disk</InstallFrom> - <UpdateEnabled>false</UpdateEnabled> - <UpdateMode>Foreground</UpdateMode> - <UpdateInterval>7</UpdateInterval> - <UpdateIntervalUnits>Days</UpdateIntervalUnits> - <UpdatePeriodically>false</UpdatePeriodically> - <UpdateRequired>false</UpdateRequired> - <MapFileExtensions>true</MapFileExtensions> - <ApplicationRevision>0</ApplicationRevision> - <ApplicationVersion>1.0.0.%2a</ApplicationVersion> - <UseApplicationTrust>false</UseApplicationTrust> - <BootstrapperEnabled>true</BootstrapperEnabled> - <ApplicationIcon>Pixmaps\sparkleshare-app.ico</ApplicationIcon> - <ReleaseVersion> - </ReleaseVersion> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> - <DebugType>pdbonly</DebugType> - <Optimize>true</Optimize> - <OutputPath>..\..\bin</OutputPath> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> - <PlatformTarget>x86</PlatformTarget> - <DefineConstants>TRACE</DefineConstants> - <DebugSymbols>true</DebugSymbols> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'"> - <OutputPath>..\..\bin\</OutputPath> - <DefineConstants>TRACE;DEBUG</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <DebugType>full</DebugType> - <DebugSymbols>true</DebugSymbols> - </PropertyGroup> - <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> - <ItemGroup> - <Reference Include="System" /> - <Reference Include="System.Core" /> - <Reference Include="System.Data" /> - <Reference Include="System.Drawing" /> - <Reference Include="System.Windows.Forms" /> - <Reference Include="System.Configuration" /> - <Reference Include="System.Xml" /> - <Reference Include="PresentationCore" /> - <Reference Include="PresentationFramework" /> - <Reference Include="WindowsBase" /> - <Reference Include="WindowsFormsIntegration" /> - <Reference Include="System.Xaml" /> - </ItemGroup> - <ItemGroup> - <Compile Include="..\SparkleBubblesController.cs"> - <Link>SparkleBubblesController.cs</Link> - </Compile> - <Compile Include="..\SparkleControllerBase.cs"> - <Link>SparkleControllerBase.cs</Link> - </Compile> - <Compile Include="..\SparkleExtensions.cs"> - <Link>SparkleExtensions.cs</Link> - </Compile> - <Compile Include="..\SparkleInvite.cs"> - <Link>SparkleInvite.cs</Link> - </Compile> - <Compile Include="..\SparkleNoteController.cs"> - <Link>SparkleNoteController.cs</Link> - </Compile> - <Compile Include="..\SparklePlugin.cs"> - <Link>SparklePlugin.cs</Link> - </Compile> - <Compile Include="..\SparkleStatusIconController.cs"> - <Link>SparkleStatusIconController.cs</Link> - </Compile> - <Compile Include="..\SparkleSetupController.cs" /> - <Compile Include="SparkleEventLogWindow.xaml.cs"> - <DependentUpon>SparkleEventLogWindow.xaml</DependentUpon> - </Compile> - <Compile Include="SparkleNote.xaml.cs"> - <DependentUpon>SparkleNote.xaml</DependentUpon> - </Compile> - <Compile Include="SparkleShortcut.cs" /> - <Compile Include="SparkleUI.cs" /> - <Compile Include="..\SparkleAboutController.cs" /> - <Compile Include="..\SparkleAvatars.cs" /> - <Compile Include="SparkleBubbles.cs" /> - <Compile Include="SparkleAbout.cs" /> - <Compile Include="SparkleController.cs" /> - <Compile Include="SparkleSetup.cs" /> - <Compile Include="SparkleStatusIcon.cs" /> - <Compile Include="SparkleUIHelpers.cs" /> - <Compile Include="..\SparkleEventLogController.cs"> - <Link>SparkleEventLogController.cs</Link> - </Compile> - <Compile Include="..\SparkleKeys.cs"> - <Link>SparkleKeys.cs</Link> - </Compile> - <Compile Include="SparkleSetupWindow.cs" /> - <Compile Include="..\Program.cs"> - <Link>Program.cs</Link> - </Compile> - <Compile Include="SparkleNotifyIcon.cs" /> - <Compile Include="SparkleSpinner.cs" /> - </ItemGroup> - <ProjectExtensions> - <MonoDevelop> - <Properties> - <MonoDevelop.Autotools.MakefileInfo RelativeMakefileName="Makefile.am"> - <BuildFilesVar Sync="True" Name="SOURCES" /> - <DeployFilesVar /> - <ResourcesVar /> - <OthersVar /> - <GacRefVar /> - <AsmRefVar /> - <ProjectRefVar /> - </MonoDevelop.Autotools.MakefileInfo> - </Properties> - </MonoDevelop> - <VisualStudio /> - </ProjectExtensions> - <ItemGroup> - <BootstrapperPackage Include="Microsoft.Net.Framework.2.0"> - <Visible>False</Visible> - <ProductName>.NET Framework 2.0 %28x86%29</ProductName> - <Install>true</Install> - </BootstrapperPackage> - <BootstrapperPackage Include="Microsoft.Net.Framework.3.0"> - <Visible>False</Visible> - <ProductName>.NET Framework 3.0 %28x86%29</ProductName> - <Install>false</Install> - </BootstrapperPackage> - <BootstrapperPackage Include="Microsoft.Net.Framework.3.5"> - <Visible>False</Visible> - <ProductName>.NET Framework 3.5</ProductName> - <Install>false</Install> - </BootstrapperPackage> - </ItemGroup> - <ItemGroup> - <Service Include="{508349B6-6B84-4DF5-91F0-309BEEBAD82D}" /> - <Service Include="{B4F97281-0DBD-4835-9ED8-7DFB966E87FF}" /> - </ItemGroup> - <ItemGroup> - <EmbeddedResource Include="..\Common\Pixmaps\about.png"> - <Link>Pixmaps\about.png</Link> - </EmbeddedResource> - <EmbeddedResource Include="..\Common\Pixmaps\side-splash.png"> - <Link>Pixmaps\side-splash.png</Link> - </EmbeddedResource> - <EmbeddedResource Include="..\Common\HTML\day-entry.html"> - <Link>HTML\day-entry.html</Link> - </EmbeddedResource> - <EmbeddedResource Include="..\Common\HTML\event-entry.html"> - <Link>HTML\event-entry.html</Link> - </EmbeddedResource> - <EmbeddedResource Include="..\Common\HTML\event-log.html"> - <Link>HTML\event-log.html</Link> - <SubType>Designer</SubType> - </EmbeddedResource> - <EmbeddedResource Include="..\Common\HTML\jquery.js"> - <Link>HTML\jquery.js</Link> - </EmbeddedResource> - <EmbeddedResource Include="..\Common\Pixmaps\user-icon-default.png"> - <Link>Pixmaps\user-icon-default.png</Link> - </EmbeddedResource> - <EmbeddedResource Include="..\Linux\Pixmaps\icons\document-added-12.png"> - <Link>Pixmaps\document-added-12.png</Link> - </EmbeddedResource> - <EmbeddedResource Include="..\Linux\Pixmaps\icons\document-deleted-12.png"> - <Link>Pixmaps\document-deleted-12.png</Link> - </EmbeddedResource> - <EmbeddedResource Include="..\Linux\Pixmaps\icons\document-edited-12.png"> - <Link>Pixmaps\document-edited-12.png</Link> - </EmbeddedResource> - <EmbeddedResource Include="..\Linux\Pixmaps\icons\document-moved-12.png"> - <Link>Pixmaps\document-moved-12.png</Link> - </EmbeddedResource> - <EmbeddedResource Include="..\Linux\Pixmaps\icons\process-working-22.png"> - <Link>Pixmaps\process-working-22.png</Link> - </EmbeddedResource> - <EmbeddedResource Include="Pixmaps\process-syncing-down.png" /> - <EmbeddedResource Include="Pixmaps\process-syncing-idle.png" /> - <EmbeddedResource Include="Pixmaps\process-syncing-up.png" /> - <EmbeddedResource Include="Pixmaps\process-syncing.png" /> - <EmbeddedResource Include="..\Common\Pixmaps\tutorial-slide-1.png"> - <Link>Pixmaps\tutorial-slide-1.png</Link> - </EmbeddedResource> - <EmbeddedResource Include="..\Common\Pixmaps\tutorial-slide-2.png"> - <Link>Pixmaps\tutorial-slide-2.png</Link> - </EmbeddedResource> - </ItemGroup> - <ItemGroup> - <None Include="..\Common\Plugins\github.png"> - <Link>Plugins\github.png</Link> - <CopyToOutputDirectory>Always</CopyToOutputDirectory> - </None> - <None Include="..\Common\Plugins\gitorious.png"> - <Link>Plugins\gitorious.png</Link> - <CopyToOutputDirectory>Always</CopyToOutputDirectory> - </None> - <None Include="..\Common\Plugins\own-server.png"> - <Link>Plugins\own-server.png</Link> - <CopyToOutputDirectory>Always</CopyToOutputDirectory> - </None> - <None Include="..\Common\Plugins\bitbucket.png"> - <Link>Plugins\bitbucket.png</Link> - <CopyToOutputDirectory>Always</CopyToOutputDirectory> - </None> - <None Include="..\Common\Plugins\ssnet.png"> - <Link>Plugins\ssnet.png</Link> - <CopyToOutputDirectory>Always</CopyToOutputDirectory> - </None> - <None Include="..\Common\Plugins\planio.png"> - <Link>Plugins\planio.png</Link> - <CopyToOutputDirectory>Always</CopyToOutputDirectory> - </None> - </ItemGroup> - <ItemGroup> - <None Include="..\Common\Plugins\ssnet.xml"> - <Link>Plugins\ssnet.xml</Link> - <CopyToOutputDirectory>Always</CopyToOutputDirectory> - </None> - <None Include="..\Common\Plugins\bitbucket.xml"> - <Link>Plugins\bitbucket.xml</Link> - <CopyToOutputDirectory>Always</CopyToOutputDirectory> - </None> - <None Include="..\Common\Plugins\github.xml"> - <Link>Plugins\github.xml</Link> - <CopyToOutputDirectory>Always</CopyToOutputDirectory> - </None> - <None Include="..\Common\Plugins\gitorious.xml"> - <Link>Plugins\gitorious.xml</Link> - <CopyToOutputDirectory>Always</CopyToOutputDirectory> - </None> - <None Include="..\Common\Plugins\own-server.xml"> - <Link>Plugins\own-server.xml</Link> - <CopyToOutputDirectory>Always</CopyToOutputDirectory> - </None> - <None Include="..\Common\Plugins\planio.xml"> - <Link>Plugins\planio.xml</Link> - <CopyToOutputDirectory>Always</CopyToOutputDirectory> - </None> - </ItemGroup> - <ItemGroup> - <EmbeddedResource Include="Pixmaps\folder.png" /> - <EmbeddedResource Include="Pixmaps\process-syncing-error.png" /> - <EmbeddedResource Include="Pixmaps\sparkleshare-app.ico" /> - <EmbeddedResource Include="Pixmaps\sparkleshare-folder.png" /> - </ItemGroup> - <ItemGroup> - <EmbeddedResource Include="Pixmaps\tutorial-slide-3.png" /> - </ItemGroup> - <ItemGroup> - <Resource Include="..\Common\Pixmaps\text-balloon.png"> - <Link>Pixmaps\text-balloon.png</Link> - </Resource> - <Content Include="Pixmaps\sparkleshare-folder.ico" /> - </ItemGroup> - <ItemGroup> - <Page Include="SparkleEventLogWindow.xaml"> - <SubType>Designer</SubType> - <Generator>MSBuild:Compile</Generator> - </Page> - <Page Include="SparkleNote.xaml"> - <SubType>Designer</SubType> - <Generator>MSBuild:Compile</Generator> - </Page> - </ItemGroup> - <ItemGroup> - <ProjectReference Include="SparkleLib\Git\SparkleLib.Git.csproj"> - <Project>{7f0db8d0-e278-4955-8204-fc391b99f7c1}</Project> - <Name>SparkleLib.Git</Name> - </ProjectReference> - <ProjectReference Include="SparkleLib\SparkleLib.csproj"> - <Project>{748f6316-37b4-46fd-a011-af073bc7c02d}</Project> - <Name>SparkleLib</Name> - </ProjectReference> - </ItemGroup> -</Project>
\ No newline at end of file diff --git a/SparkleShare/Windows/SparkleShare.sln b/SparkleShare/Windows/SparkleShare.sln deleted file mode 100644 index 03ee1fd..0000000 --- a/SparkleShare/Windows/SparkleShare.sln +++ /dev/null @@ -1,49 +0,0 @@ -
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2013
-VisualStudioVersion = 12.0.30110.0
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SparkleShare", "SparkleShare.csproj", "{728483AA-E34B-4441-BF2C-C8BC2901E4E0}"
- ProjectSection(ProjectDependencies) = postProject
- {1DB5492D-B897-4A5E-8DD7-175EC65F52F2} = {1DB5492D-B897-4A5E-8DD7-175EC65F52F2}
- EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SparkleShareInviteOpener", "SparkleShareInviteOpener\SparkleShareInviteOpener.csproj", "{1DB5492D-B897-4A5E-8DD7-175EC65F52F2}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SparkleLib", "SparkleLib\SparkleLib.csproj", "{748F6316-37B4-46FD-A011-AF073BC7C02D}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SparkleLib.Git", "SparkleLib\Git\SparkleLib.Git.csproj", "{7F0DB8D0-E278-4955-8204-FC391B99F7C1}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Release|Any CPU = Release|Any CPU
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {728483AA-E34B-4441-BF2C-C8BC2901E4E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {728483AA-E34B-4441-BF2C-C8BC2901E4E0}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {728483AA-E34B-4441-BF2C-C8BC2901E4E0}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {728483AA-E34B-4441-BF2C-C8BC2901E4E0}.Release|Any CPU.Build.0 = Release|Any CPU
- {1DB5492D-B897-4A5E-8DD7-175EC65F52F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {1DB5492D-B897-4A5E-8DD7-175EC65F52F2}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {1DB5492D-B897-4A5E-8DD7-175EC65F52F2}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {1DB5492D-B897-4A5E-8DD7-175EC65F52F2}.Release|Any CPU.Build.0 = Release|Any CPU
- {748F6316-37B4-46FD-A011-AF073BC7C02D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {748F6316-37B4-46FD-A011-AF073BC7C02D}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {748F6316-37B4-46FD-A011-AF073BC7C02D}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {748F6316-37B4-46FD-A011-AF073BC7C02D}.Release|Any CPU.Build.0 = Release|Any CPU
- {7F0DB8D0-E278-4955-8204-FC391B99F7C1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {7F0DB8D0-E278-4955-8204-FC391B99F7C1}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {7F0DB8D0-E278-4955-8204-FC391B99F7C1}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {7F0DB8D0-E278-4955-8204-FC391B99F7C1}.Release|Any CPU.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(MonoDevelopProperties) = preSolution
- StartupItem = SparkleShare.csproj
- version =
- outputpath = bin
- name = SparkleShare
- EndGlobalSection
-EndGlobal
diff --git a/SparkleShare/Windows/SparkleShare.vssettings b/SparkleShare/Windows/SparkleShare.vssettings index 9651a51..240532e 100644 --- a/SparkleShare/Windows/SparkleShare.vssettings +++ b/SparkleShare/Windows/SparkleShare.vssettings @@ -91,7 +91,7 @@ <PropertyValue name="FilterURLs">True</PropertyValue> <PropertyValue name="GlobalErrorPattern">\[{"Error":[^n];"SharepointError";"HasException":true</PropertyValue> <PropertyValue name="ParameterizeSiteName">True</PropertyValue> - <PropertyValue name="RulesFileName">C:\Program Files\Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies\WebTestPlugins\DefaultSharePointRules.xml</PropertyValue> + <PropertyValue name="RulesFileName">C:\Program Files\Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies\WebTestPresets\DefaultSharePointRules.xml</PropertyValue> <PropertyValue name="URLPatterns">AAEAAAD/////AQAAAAAAAAAMAgAAAGxNaWNyb3NvZnQuVmlzdWFsU3R1ZGlvLlF1YWxpdHlUb29scy5Wc2lwLCBWZXJzaW9uPTEyLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EEAQAAAMMBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tNaWNyb3NvZnQuVmlzdWFsU3R1ZGlvLlRlc3RUb29scy5Wc2lwLlVSTFBhdHRlcm4sIE1pY3Jvc29mdC5WaXN1YWxTdHVkaW8uUXVhbGl0eVRvb2xzLlZzaXAsIFZlcnNpb249MTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYV1dAwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24EAAAyTWljcm9zb2Z0LlZpc3VhbFN0dWRpby5UZXN0VG9vbHMuVnNpcC5VUkxQYXR0ZXJuW10CAAAACAgJAwAAAAQAAAAEAAAABwMAAAAAAQAAAAQAAAAEME1pY3Jvc29mdC5WaXN1YWxTdHVkaW8uVGVzdFRvb2xzLlZzaXAuVVJMUGF0dGVybgIAAAAJBAAAAAkFAAAACQYAAAAJBwAAAAwIAAAASVN5c3RlbSwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFBAAAADBNaWNyb3NvZnQuVmlzdWFsU3R1ZGlvLlRlc3RUb29scy5Wc2lwLlVSTFBhdHRlcm4DAAAAD1Byb3BlcnR5Q2hhbmdlZAptX2NyaXRlcmlhCW1fcGF0dGVybgQBATFTeXN0ZW0uQ29tcG9uZW50TW9kZWwuUHJvcGVydHlDaGFuZ2VkRXZlbnRIYW5kbGVyCAAAAAIAAAAKBgkAAAAIRW5kc1dpdGgGCgAAAAlibGFuay5naWYBBQAAAAQAAAAKCQkAAAAGDAAAAAlibGFuay5odG0BBgAAAAQAAAAKCQkAAAAGDgAAAA9TY3JpcHRSZXN4LmFzaHgBBwAAAAQAAAAKCQkAAAAGEAAAAA5jb21tYW5kdWkuYXNoeAs=</PropertyValue> <PropertyValue name="UseRegexForGlobalErrorPattern">True</PropertyValue> </Category><Category name="Browser Link_BrowserLinkOptions" Category="{600fc5ef-ed38-3ecb-b7fa-e2fb3aa59ebb}" Package="{8c28e535-abc9-4f92-b5c9-6c16617c8884}" RegisteredName="Browser Link_BrowserLinkOptions" PackageName="EurekaPackage"><PropertyValue name="Enabled">True</PropertyValue></Category><Category name="CSS_Advanced" Category="{978df9f7-5f7c-46c1-afe6-3e4335e93514}" Package="{5330c67f-305c-4b17-a3dc-fbb7aee69c09}" RegisteredName="CSS_Advanced" PackageName="CssPackage"/><Category name="CoffeeScript_Advanced" Category="{9a5ed2f4-b737-4876-9b7f-7a94e634e74f}" Package="{52244c9d-db46-4905-bda0-b3406c46d2a4}" RegisteredName="CoffeeScript_Advanced" PackageName="CoffeeScriptPackage"/><Category name="Debugger" Category="{EEDBF29A-5C8B-4E01-827C-263382C18CFE}" Package="{C9DD4A57-47FB-11D2-83E7-00C04F9902C1}" RegisteredName="Debugger" PackageName="Visual Studio Debugger"><PropertyValue name="ConfirmDeleteAllBreakpoints">1</PropertyValue><PropertyValue name="StopAllProcesses">1</PropertyValue><PropertyValue name="StopOnExceptionCrossingManagedBoundary">0</PropertyValue><PropertyValue name="EnableAddressLevelDebugging">1</PropertyValue><PropertyValue name="ShowDisassemblyWhenNoSource">0</PropertyValue><PropertyValue name="EnableBreakpointConstraints">1</PropertyValue><PropertyValue name="UseExceptionHelper">1</PropertyValue><PropertyValue name="AutoUnwindOnException">1</PropertyValue><PropertyValue name="JustMyCode">1</PropertyValue><PropertyValue name="ShowNonPublicMembers">0</PropertyValue><PropertyValue name="WarnIfNoUserCodeOnLaunch">1</PropertyValue><PropertyValue name="FrameworkSourceStepping">0</PropertyValue><PropertyValue name="WarnAboutSymbolCacheDuringRemoteManagedDebugging">1</PropertyValue><PropertyValue name="EnableStepFiltering">1</PropertyValue><PropertyValue name="WarnOnStepFilter">1</PropertyValue><PropertyValue name="AllowImplicitFuncEval">1</PropertyValue><PropertyValue name="AllowToString">1</PropertyValue><PropertyValue name="UseSourceServer">0</PropertyValue><PropertyValue name="ShowSourceServerDiagnostics">0</PropertyValue><PropertyValue name="AlwaysColorMarkerText">0</PropertyValue><PropertyValue name="UseDocumentChecksum">1</PropertyValue><PropertyValue name="OutputToImmediate">0</PropertyValue><PropertyValue name="ShowRawStructures">0</PropertyValue><PropertyValue name="DisableJITOptimization">1</PropertyValue><PropertyValue name="ShowNoSymbolsDialog">1</PropertyValue><PropertyValue name="ShowScriptDebuggingDisabledDialog">1</PropertyValue><PropertyValue name="EnableILInterpreterMinidump">1</PropertyValue><PropertyValue name="EnableILInterpreterLive">0</PropertyValue><PropertyValue name="HexDisplay">0</PropertyValue><PropertyValue name="HexInput">0</PropertyValue><PropertyValue name="MapClientBreakpoints">1</PropertyValue><PropertyValue name="AddUnmappedBreakpointAtMappedLocation">0</PropertyValue><PropertyValue name="StepIntoOnRestart">0</PropertyValue><PropertyValue name="ENCEnable">1</PropertyValue><PropertyValue name="ENCApplyChangesOnContinue">1</PropertyValue><PropertyValue name="ENCWelcome">0</PropertyValue><PropertyValue name="ENCStaleCodeWarning">1</PropertyValue><PropertyValue name="ENCPrecompile">1</PropertyValue><PropertyValue name="ENCRelink">1</PropertyValue><PropertyValue name="NOENCAllowEdits">1</PropertyValue><PropertyValue name="NOENCIgnore">0</PropertyValue><PropertyValue name="NOENCRebuild">0</PropertyValue><PropertyValue name="ENCEnableWhenRemoteDebugging">0</PropertyValue><PropertyValue name="ConfirmFoundFiles">0</PropertyValue><PropertyValue name="DisasmLineNumbers">0</PropertyValue><PropertyValue name="ModulesShowAll">0</PropertyValue><PropertyValue name="UseCodeSense">1</PropertyValue><PropertyValue name="DisasmFields">67577</PropertyValue><PropertyValue name="CallStackViewOptions">3604736</PropertyValue><PropertyValue name="ShowExternalCode">0</PropertyValue><PropertyValue name="SourceStepUnit">0</PropertyValue><PropertyValue name="DisasmStepUnit">2</PropertyValue><PropertyValue name="CrossThreadCallStack">1</PropertyValue><PropertyValue name="ShowOnlyFlaggedThreads">0</PropertyValue><PropertyValue name="ConcurrencySupport">1</PropertyValue><PropertyValue name="GuessAtThreadNames">1</PropertyValue><PropertyValue name="ShowOtherThreadIpMarkers">0</PropertyValue><PropertyValue name="ShowThreadCategory">1</PropertyValue><PropertyValue name="SaveRemoteDumps">1</PropertyValue><PropertyValue name="LongEvalTimeout">10000</PropertyValue><PropertyValue name="NormalEvalTimeout">5000</PropertyValue><PropertyValue name="QuickwatchTimeout">15000</PropertyValue><PropertyValue name="DataTipTimeout">1500</PropertyValue><PropertyValue name="AutosReturnValsTimeout">1000</PropertyValue><PropertyValue name="AutosRegistersTimeout">1000</PropertyValue><PropertyValue name="LocalsTimeout">1000</PropertyValue><PropertyValue name="RegistersTimeout">2000</PropertyValue><PropertyValue name="AddressExpressionTimeout">2000</PropertyValue><PropertyValue name="ScriptDocsTimeout">5000</PropertyValue><PropertyValue name="ImmediateWindowTimeout">10000</PropertyValue><PropertyValue name="SetValueTimeout">10000</PropertyValue><PropertyValue name="TreeGridRePaintTimer">250</PropertyValue><PropertyValue name="TreeGridBusyPaintTimer">1000</PropertyValue><PropertyValue name="ModulesWindowUpdateTimer">500</PropertyValue><PropertyValue name="TreeGridDelayOnEnterTimer">125</PropertyValue><PropertyValue name="DelayTreeGridPaintOnBreak">1</PropertyValue><PropertyValue name="ShowNonprintableCharsAsGlyphs">0</PropertyValue><PropertyValue name="ShowSystemProcesses">0</PropertyValue><PropertyValue name="ShowProcessesFromAllSessions">0</PropertyValue><PropertyValue name="EnhancedDataTips">1</PropertyValue><PropertyValue name="DataTipDismissalSensitivity">1</PropertyValue><PropertyValue name="DataTipKeyboardDismissal">0</PropertyValue><PropertyValue name="UserSpecifiedEngines">0</PropertyValue><PropertyValue name="OutputOnException">1</PropertyValue><PropertyValue name="OutputOnStepFilter">1</PropertyValue><PropertyValue name="OutputOnModuleLoad">1</PropertyValue><PropertyValue name="OutputOnModuleUnload">1</PropertyValue><PropertyValue name="OutputOnModuleSymbolSearch">1</PropertyValue><PropertyValue name="OutputOnProcessDestroy">1</PropertyValue><PropertyValue name="OutputOnThreadDestroy">1</PropertyValue><PropertyValue name="OutputOnOutputDebugString">1</PropertyValue><PropertyValue name="OutputOnDebuggerMessage">1</PropertyValue><PropertyValue name="VariableWindowIcons">1</PropertyValue><PropertyValue name="DisableAttachSecurityWarning">0</PropertyValue><PropertyValue name="LoadDllExports">0</PropertyValue><PropertyValue name="NativeRPC">0</PropertyValue><PropertyValue name="AllowSideEffectEval">0</PropertyValue><PropertyValue name="LoadSymbolsWhenSettingsChanged">1</PropertyValue><PropertyValue name="SymbolUseExcludeList">1</PropertyValue><PropertyValue name="SymbolsAlwaysLoadAdjacent">1</PropertyValue><PropertyValue name="DontForceCacheOnManualLoad">0</PropertyValue><PropertyValue name="SymbolUseMSSymbolServers">0</PropertyValue><PropertyValue name="AutoLoadFromSymbolPath">1</PropertyValue><PropertyValue name="OneClickEdit">0</PropertyValue><PropertyValue name="OfferArrayExpansion">0</PropertyValue><PropertyValue name="VariableWindowPromptOnLargeExpansion">1</PropertyValue><PropertyValue name="VariableWindowMaxSupportedChildren">1000000</PropertyValue><PropertyValue name="PromptToAddSourceToIgnoreList">0</PropertyValue><PropertyValue name="OwnerDrawDebugLocationToolbar">0</PropertyValue><PropertyValue name="EnableSelectedBreakpointHighlight">1</PropertyValue><PropertyValue name="DisableUniscribe">0</PropertyValue><PropertyValue name="ShowParallelStacksBottomUp">1</PropertyValue><PropertyValue name="ThreadsWindowGroupingColumn">2048</PropertyValue><PropertyValue name="ThreadsWindowVisibleColumns">509</PropertyValue><PropertyValue name="ThreadsWindowShowTipWhenCallStackExpanded">0</PropertyValue><PropertyValue name="AllowDesignModePinning">0</PropertyValue><PropertyValue name="CallStackParamToString">0</PropertyValue><PropertyValue name="CheckRDTForFilesFirst">1</PropertyValue><PropertyValue name="AllowSourceServerInPartialTrust">0</PropertyValue><PropertyValue name="ENCEnableCrossUser">0</PropertyValue><PropertyValue name="ENCEnableNative">0</PropertyValue><PropertyValue name="OpenNewFilesProvisionally">1</PropertyValue><PropertyValue name="ForceRealFuncEval">1</PropertyValue><PropertyValue name="ShowOnlyCurrentProcess">0</PropertyValue><PropertyValue name="GpuRaceHazardsAllowSame">0</PropertyValue><PropertyValue name="DisasmToolbarIsExpanded">0</PropertyValue><PropertyValue name="AlwaysRunUntrustedSourceServerCommands">0</PropertyValue><PropertyValue name="DebugEngineCompatibilityMode">0</PropertyValue><PropertyValue name="CallStackViewOptionsEx">1</PropertyValue><PropertyValue name="ManagedDebugEngineCompatibilityMode_Normal">0</PropertyValue><PropertyValue name="ManagedDebugEngineCompatibilityMode_ProductInstalled">1</PropertyValue><PropertyValue name="ManagedMemoryViewCollapseSmallObjects">1</PropertyValue><PropertyValue name="SourceServerExtractToDirectory"/><PropertyValue name="FrameworkSourceServerName">http://referencesource.microsoft.com/symbols</PropertyValue><PropertyValue name="PublicSymbolServerName"/><PropertyValue name="PublicSymbolServerName2">http://msdl.microsoft.com/download/symbols</PropertyValue><PropertyValue name="DefaultTracepointMessage">Function: $FUNCTION, Thread: $TID $TNAME</PropertyValue><PropertyValue name="ProgramToDebugPath"/><PropertyValue name="AttachToProcessDefaultEngineList"/><PropertyValue name="SecureSourceLocalDirectory"/><PropertyValue name="SymbolPath"/><PropertyValue name="SymbolPathState"/><PropertyValue name="SymbolCacheDir"/><PropertyValue name="SymbolIncludeList"/><PropertyValue name="SymbolIncludeListState"/><PropertyValue name="SymbolExcludeList"/><PropertyValue name="SymbolExcludeListState"/></Category><Category name="Git Version Control_GitSccProvider" Category="{33a4cda9-b7a6-3f4f-9e1f-e4d71f0a9cfa}" Package="{7fe30a77-37f9-4cf2-83dd-96b207028e1b}" RegisteredName="Git Version Control_GitSccProvider" PackageName="SccProviderPackage"/><Category name="HTML Tag Specific" Category="{7583bb73-a453-40e8-8951-b6986ddb1d9b}" Package="{1B437D20-F8FE-11D2-A6AE-00104BCC7269}" RegisteredName="HTML Tag Specific" PackageName="Visual Studio HTM Editor Package"/><Category name="HTMLX_Advanced" Category="{3d9c2439-5c0a-4592-b9e8-42e26dfe636b}" Package="{cf49ec7d-92b1-4bbd-9254-9cc13978e82e}" RegisteredName="HTMLX_Advanced" PackageName="HtmlPackage"/><Category name="LESS_Advanced" Category="{1b200b66-f69e-452e-9c6f-d38f9cb0628b}" Package="{f4b61ec8-36d8-4155-b2a0-199587d8ddcc}" RegisteredName="LESS_Advanced" PackageName="LessPackage"/><Category name="Performance" Category="{7A697B67-8D8F-43c2-A11C-57568FE3F513}" Package="{f4a63b2a-49ab-4b2d-aa59-a10f01026c89}" RegisteredName="Performance" PackageName="PerformancePackage"><PropertyValue name="toolsoptions.numfunc">5</PropertyValue><PropertyValue name="toolsoptions.showtimetick">0</PropertyValue><PropertyValue name="toolsoptions.numbuffer">64</PropertyValue><PropertyValue name="toolsoptions.sizebuffer">64</PropertyValue><PropertyValue name="toolsoptions.serialize">1</PropertyValue><PropertyValue name="performancereport.showquery">0</PropertyValue><PropertyValue name="toolsoptions.formatcounters">1</PropertyValue><PropertyValue name="toolsoptions.exportpath"/><PropertyValue name="toolsoptions.exportformat">csv</PropertyValue><PropertyValue name="performancereport.hotpathcandidateratio">3.0</PropertyValue><PropertyValue name="performancereport.shownoisereductionwarning">1</PropertyValue><PropertyValue name="performancereport.noisereductiontrim">0</PropertyValue><PropertyValue name="performancereport.noisereductionfold">0</PropertyValue><PropertyValue name="performancereport.noisereductiontrimthreshold">2.0</PropertyValue><PropertyValue name="performancereport.noisereductionfoldthreshold">3.0</PropertyValue><PropertyValue name="tools.options.justmycode">1</PropertyValue><PropertyValue name="tools.options.justmycode.callee">1</PropertyValue><PropertyValue name="tools.options.justmycode.caller">0</PropertyValue><PropertyValue name="tools.options.kernelmodeanalysis">0</PropertyValue><PropertyValue name="tools.options.rules.actions"/></Category><Category name="Source Control_TeamFoundation" Category="{2A718788-A6D9-44C5-90EF-438BF5B06A74}" Package="{4CA58AB2-18FA-4F8D-95D4-32DDF27D184C}" RegisteredName="Source Control_TeamFoundation" PackageName="Microsoft.VisualStudio.TeamFoundation.VersionControl.HatPackage, Microsoft.VisualStudio.TeamFoundation.VersionControl, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"><PropertyValue name="IsProxyEnabled">False</PropertyValue><PropertyValue name="ProxyUrl"/><PropertyValue name="GetLatestOnCheckOut">false</PropertyValue><PropertyValue name="AttemptToAutoResolveConflicts">true</PropertyValue><PropertyValue name="ShowDeletedItems">false</PropertyValue><PropertyValue name="OpenSceToMostRecentPath">false</PropertyValue><PropertyValue name="PromptToConfirmMergeResult">-1</PropertyValue></Category><Category name="Test Tools_Test Execution" Category="{48d11193-265d-1458-743e-2b88c655b377}" Package="{a9405ae6-9ac6-4f0e-a03f-7afe45f6fcb7}" RegisteredName="Test Tools_Test Execution" PackageName="Microsoft.VisualStudio.TestTools.TestCaseManagement.QualityToolsPackage, Microsoft.VisualStudio.QualityTools.TestCaseManagement, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"><PropertyValue name="IsCodeColoringEnabled">True</PropertyValue><PropertyValue name="IsInPlaceInstrumentationEnabled">True</PropertyValue><PropertyValue name="KeepHostProcessAlive">True</PropertyValue><PropertyValue name="MaxTestRunsPerSolution">25</PropertyValue><PropertyValue name="PathToWebRoot"/><PropertyValue name="UnitTestResultNavigatePointOfFailure">True</PropertyValue></Category><Category name="WebProjects" Category="{C78AFEEB-A722-4cf3-AD3F-8694126C2145}" Package="{39c9c826-8ef8-4079-8c95-428f5b1c323f}" RegisteredName="WebProjects" PackageName="Visual Web Developer Project System Package"><PropertyValue name="WarnBeforeRunIfErrors">false</PropertyValue><PropertyValue name="Use64BitIISExpress">false</PropertyValue></Category><Category name="WindowsFormsDesigner_General" Category="{de03177c-918d-40af-8c17-c9d63670c175}" Package="{7b5d447b-0b12-41ea-a84e-c822034422d4}" RegisteredName="WindowsFormsDesigner_General" PackageName="Windows Forms Designer Resources Package"><PropertyValue name="AutoToolboxPopulate">True</PropertyValue><PropertyValue name="EnableInSituEditing">True</PropertyValue><PropertyValue name="EnableRefactoringOnRename">True</PropertyValue><PropertyValue name="GridSize">8, 8</PropertyValue><PropertyValue name="LayoutMode">SnapLines</PropertyValue><PropertyValue name="ObjectBoundSmartTagAutoShow">True</PropertyValue><PropertyValue name="ShowGrid">True</PropertyValue><PropertyValue name="SnapToGrid">True</PropertyValue><PropertyValue name="UseOptimizedCodeGeneration">True</PropertyValue></Category><Category name="XAML_Formatting" Category="{dac05320-0c3a-4ead-a332-8c23b0cfc130}" Package="{512be089-83ec-4cc6-8483-cf16565ae209}" RegisteredName="XAML_Formatting" PackageName="DesignerPackage"><PropertyValue name="AttributeFormat">Preserve</PropertyValue><PropertyValue name="AutoInsertAttributeQuotes">True</PropertyValue><PropertyValue name="AutoInsertCommas">True</PropertyValue><PropertyValue name="AutoInsertEndBraces">True</PropertyValue><PropertyValue name="AutoInsertEndTags">True</PropertyValue><PropertyValue name="AutoNameElements">False</PropertyValue><PropertyValue name="AutoOutlining">True</PropertyValue><PropertyValue name="AutoReformatOnEndTag">True</PropertyValue><PropertyValue name="AutoReformatOnPaste">True</PropertyValue><PropertyValue name="AutoReformatOnStartTag">True</PropertyValue><PropertyValue name="AutoToolboxPopulate">True</PropertyValue><PropertyValue name="BlankLineOption">Preserve</PropertyValue><PropertyValue name="KeepFirstAttributeOnSameLine">True</PropertyValue><PropertyValue name="MaximizeXamlEditor">False</PropertyValue><PropertyValue name="QuoteStyle">DoubleQuote</PropertyValue><PropertyValue name="WrapColumn">120</PropertyValue><PropertyValue name="WrapTags">False</PropertyValue></Category><Category name="XmlEditor" Category="{4E1CDE49-B840-4826-8CC6-8FB80D7EF455}" Package="{87569308-4813-40a0-9cd0-d7a30838ca3f}" RegisteredName="XmlEditor" PackageName="Visual Studio XML Editor Package"><PropertyValue name="AttributeFormatting">None</PropertyValue><PropertyValue name="AutoDownload">False</PropertyValue><PropertyValue name="AutoInsertAttributeQuotes">True</PropertyValue><PropertyValue name="AutoInsertEndTags">True</PropertyValue><PropertyValue name="AutoInsertNamespaceDeclarations">True</PropertyValue><PropertyValue name="AutoInsertOther">True</PropertyValue><PropertyValue name="AutoOutlining">True</PropertyValue><PropertyValue name="AutoReformatOnEndTag">True</PropertyValue><PropertyValue name="AutoReformatOnPaste">True</PropertyValue><PropertyValue name="FormatMixedContentByDefault">True</PropertyValue><PropertyValue name="SchemaCacheLocation">%VsInstallDir%\xml\Schemas</PropertyValue></Category></UserSettings>
\ No newline at end of file diff --git a/SparkleShare/Windows/SparkleShare.wxs b/SparkleShare/Windows/SparkleShare.wxs index 99bf5fa..6ca687b 100644 --- a/SparkleShare/Windows/SparkleShare.wxs +++ b/SparkleShare/Windows/SparkleShare.wxs @@ -2,7 +2,7 @@ <Wix xmlns='http://schemas.microsoft.com/wix/2006/wi' xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"> <Product Name='SparkleShare' Id='184950D5-67F6-4D06-9717-7E2F1607A7B0' UpgradeCode='D3DF1D99-87F5-47A7-A349-863DD6E4B73A' - Language='1033' Codepage='1252' Version='1.5.0' Manufacturer='SparkleShare'> + Language='1033' Codepage='1252' Version='2.0.1' Manufacturer='SparkleShare'> <Package Id='*' Keywords='Installer' Description="SparkleShare Setup" Manufacturer='SparkleShare' InstallerVersion='100' Languages='1033' Compressed='yes' SummaryCodepage='1252' /> @@ -20,9 +20,9 @@ <File Id='SparkleShareInviteOpener.exe' Name='SparkleShareInviteOpener.exe' Source='!(wix.root)\bin\SparkleShareInviteOpener.exe' DiskId='1' /> </Component> <Component Id='Libraries' Guid='0DA692D5-4DBE-4251-9F62-E7C1A76F10E1'> - <File Id='SparkleLib.Git.dll' Name='SparkleLib.Git.dll' Source='!(wix.root)\bin\SparkleLib.Git.dll' DiskId='1' /> - <File Id='SparkleLib.dll' Name='SparkleLib.dll' Source='!(wix.root)\bin\SparkleLib.dll' DiskId='1' /> - <File Id='sparkleshare_app.ico' Name='sparkleshare.ico' Source='!(wix.root)\SparkleShare\Windows\Pixmaps\sparkleshare-app.ico' DiskId='1' /> + <File Id='Sparkles.Git.dll' Name='Sparkles.Git.dll' Source='!(wix.root)\bin\Sparkles.Git.dll' DiskId='1' /> + <File Id='Sparkles.dll' Name='Sparkles.dll' Source='!(wix.root)\bin\Sparkles.dll' DiskId='1' /> + <File Id='sparkleshare_app.ico' Name='sparkleshare.ico' Source='!(wix.root)\SparkleShare\Windows\Images\sparkleshare-app.ico' DiskId='1' /> </Component> <Directory Id='MSYSGIT_DIR' Name='msysgit'> </Directory> diff --git a/SparkleShare/Windows/SparkleShareInviteOpener/SparkleShareInviteOpener.csproj b/SparkleShare/Windows/SparkleShareInviteOpener/SparkleShareInviteOpener.csproj index 379d780..bbccc79 100644 --- a/SparkleShare/Windows/SparkleShareInviteOpener/SparkleShareInviteOpener.csproj +++ b/SparkleShare/Windows/SparkleShareInviteOpener/SparkleShareInviteOpener.csproj @@ -11,7 +11,7 @@ <RootNamespace>SparkleShareInviteOpener</RootNamespace> <AssemblyName>SparkleShareInviteOpener</AssemblyName> <FileAlignment>512</FileAlignment> - <ApplicationIcon>..\Pixmaps\sparkleshare-app.ico</ApplicationIcon> + <ApplicationIcon>..\Images\sparkleshare-app.ico</ApplicationIcon> <ReleaseVersion /> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> @@ -29,6 +29,24 @@ <DebugType>full</DebugType> <DebugSymbols>true</DebugSymbols> </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'DebugWindows|AnyCPU'"> + <DebugSymbols>true</DebugSymbols> + <OutputPath>..\..\..\bin\</OutputPath> + <DefineConstants>TRACE;DEBUG</DefineConstants> + <DebugType>full</DebugType> + <PlatformTarget>AnyCPU</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'ReleaseWindows|AnyCPU'"> + <OutputPath>..\..\..\bin\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <Optimize>true</Optimize> + <DebugType>pdbonly</DebugType> + <PlatformTarget>AnyCPU</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet> + </PropertyGroup> <ItemGroup> <Reference Include="System" /> </ItemGroup> diff --git a/SparkleShare/Windows/SparkleShareInviteOpener/sparkleshare-invite-opener.cs b/SparkleShare/Windows/SparkleShareInviteOpener/sparkleshare-invite-opener.cs index 98d9128..9f79ab8 100644 --- a/SparkleShare/Windows/SparkleShareInviteOpener/sparkleshare-invite-opener.cs +++ b/SparkleShare/Windows/SparkleShareInviteOpener/sparkleshare-invite-opener.cs @@ -1,5 +1,5 @@ // SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com> +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by diff --git a/SparkleShare/Windows/SparkleAbout.cs b/SparkleShare/Windows/UserInterface/About.cs index 1e19fc9..85f6cf0 100644 --- a/SparkleShare/Windows/SparkleAbout.cs +++ b/SparkleShare/Windows/UserInterface/About.cs @@ -1,5 +1,5 @@ // SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons (hylkebons@gmail.com) +// Copyright (C) 2010 Hylke Bons (hi@planetpeanut.uk) // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -17,30 +17,27 @@ using System; using System.ComponentModel; -using System.Diagnostics; using System.Windows; using System.Windows.Input; using System.Windows.Controls; using System.Windows.Media; -using System.Windows.Media.Imaging; -using System.Xaml; namespace SparkleShare { - public class SparkleAbout : Window { + public class About : Window { - public SparkleAboutController Controller = new SparkleAboutController (); + public AboutController Controller = new AboutController (); private Label updates; - public SparkleAbout () + public About () { Title = "About SparkleShare"; ResizeMode = ResizeMode.NoResize; Height = 288; Width = 720; - Icon = SparkleUIHelpers.GetImageSource("sparkleshare-app", "ico"); + Icon = UserInterfaceHelpers.GetImageSource("sparkleshare-app", "ico"); WindowStartupLocation = WindowStartupLocation.CenterScreen; Closing += Close; @@ -77,7 +74,7 @@ namespace SparkleShare { Height = 260 }; - image.Source = SparkleUIHelpers.GetImageSource ("about"); + image.Source = UserInterfaceHelpers.GetImageSource ("about"); Label version = new Label () { @@ -179,7 +176,7 @@ namespace SparkleShare { Content = text_block; MouseUp += delegate { - Program.Controller.OpenWebsite (url); + SparkleShare.Controller.OpenWebsite (url); }; } } diff --git a/SparkleShare/Windows/SparkleBubbles.cs b/SparkleShare/Windows/UserInterface/Bubbles.cs index cbae16d..79e672c 100644 --- a/SparkleShare/Windows/SparkleBubbles.cs +++ b/SparkleShare/Windows/UserInterface/Bubbles.cs @@ -1,5 +1,5 @@ // SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com> +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -15,22 +15,20 @@ // along with this program. If not, see <http://www.gnu.org/licenses/>. -using System; - namespace SparkleShare { - public class SparkleBubbles { + public class Bubbles { - public SparkleBubblesController Controller = new SparkleBubblesController (); + public BubblesController Controller = new BubblesController (); - public SparkleBubbles () + public Bubbles () { Controller.ShowBubbleEvent += delegate (string title, string subtext, string image_path) { - if (!Program.Controller.NotificationsEnabled) + if (!SparkleShare.Controller.NotificationsEnabled) return; - Program.UI.StatusIcon.ShowBalloon (title, subtext, image_path); + SparkleShare.UI.StatusIcon.ShowBalloon (title, subtext, image_path); }; } } diff --git a/SparkleShare/Windows/UserInterface/Controller.cs b/SparkleShare/Windows/UserInterface/Controller.cs new file mode 100644 index 0000000..7ba2f3b --- /dev/null +++ b/SparkleShare/Windows/UserInterface/Controller.cs @@ -0,0 +1,199 @@ +// SparkleShare, a collaboration and sharing tool. +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. + + +using System; +using System.Diagnostics; +using System.IO; +using System.Reflection; +using System.Runtime.InteropServices; + +using System.Windows; +using Forms = System.Windows.Forms; + +using Sparkles; +using Sparkles.Git; + +namespace SparkleShare { + + public class Controller : BaseController { + + public Controller (Configuration config) + : base (config) + { + } + + + public override string PresetsPath + { + get { + return Path.Combine (Path.GetDirectoryName (Assembly.GetExecutingAssembly ().Location), "Presets"); + } + } + + + public override void Initialize () + { + // Add msysgit to path, as we cannot asume it is added to the path + // Asume it is installed in @"<exec dir>\msysgit\bin" + string executable_path = Path.GetDirectoryName (Forms.Application.ExecutablePath); + string msysgit_path = Path.Combine (executable_path, "msysgit"); + + Environment.SetEnvironmentVariable ("HOME", Environment.GetFolderPath (Environment.SpecialFolder.UserProfile)); + + SSHCommand.SSHPath = Path.Combine (msysgit_path, "usr", "bin"); + SSHFetcher.SSHKeyScan = Path.Combine (msysgit_path, "usr", "bin", "ssh-keyscan.exe"); + GitCommand.GitPath = Path.Combine (msysgit_path, "bin", "git.exe"); + + base.Initialize (); + } + + + public override string EventLogHTML { + get { + string html = UserInterfaceHelpers.GetHTML ("event-log.html"); + return html.Replace ("<!-- $jquery -->", UserInterfaceHelpers.GetHTML ("jquery.js")); + } + } + + + public override string DayEntryHTML { + get { + return UserInterfaceHelpers.GetHTML ("day-entry.html"); + } + } + + + public override string EventEntryHTML { + get { + return UserInterfaceHelpers.GetHTML ("event-entry.html"); + } + } + + + public override void SetFolderIcon () + { + string app_path = Path.GetDirectoryName (Forms.Application.ExecutablePath); + string icon_file_path = Path.Combine (app_path, "Images", "sparkleshare-folder.ico"); + + if (!File.Exists (icon_file_path)) + { + string ini_file_path = Path.Combine (FoldersPath, "desktop.ini"); + string n = Environment.NewLine; + + string ini_file = "[.ShellClassInfo]" + n + + "IconFile=" + icon_file_path + n + + "IconIndex=0" + n + + "InfoTip=SparkleShare"; + + try + { + File.Create (ini_file_path).Close (); + File.WriteAllText (ini_file_path, ini_file); + + File.SetAttributes (ini_file_path, + File.GetAttributes (ini_file_path) | FileAttributes.Hidden | FileAttributes.System); + + } + catch (IOException e) + { + Logger.LogInfo ("Config", "Failed setting icon for '" + FoldersPath + "': " + e.Message); + } + } + } + + + public override void CreateStartupItem () + { + string startup_folder_path = Environment.GetFolderPath (Environment.SpecialFolder.Startup); + string shortcut_path = Path.Combine (startup_folder_path, "SparkleShare.lnk"); + + if (File.Exists (shortcut_path)) + File.Delete (shortcut_path); + + string shortcut_target = Forms.Application.ExecutablePath; + + Shortcut shortcut = new Shortcut (); + shortcut.Create (shortcut_path, shortcut_target); + } + + + public override void InstallProtocolHandler () + { + // We ship a separate .exe for this + } + + + public void AddToBookmarks () + { + string user_profile_path = Environment.GetFolderPath (Environment.SpecialFolder.UserProfile); + string shortcut_path = Path.Combine (user_profile_path, "Links", "SparkleShare.lnk"); + + if (File.Exists (shortcut_path)) + File.Delete (shortcut_path); + + Shortcut shortcut = new Shortcut (); + shortcut.Create (FoldersPath, shortcut_path); + } + + + public override void CreateSparkleShareFolder () + { + if (!Directory.Exists (FoldersPath)) + { + Directory.CreateDirectory (FoldersPath); + + File.SetAttributes (FoldersPath, File.GetAttributes(FoldersPath) | FileAttributes.System); + Logger.LogInfo ("Config", "Created '" + FoldersPath + "'"); + } + } + + + public override void OpenFile (string path) + { + Process.Start (path); + } + + + public override void OpenFolder (string path) + { + Process.Start (path); + } + + + public override void OpenWebsite (string url) + { + Process.Start (new ProcessStartInfo (url)); + } + + + public override void CopyToClipboard (string text) + { + try { + Clipboard.SetData (DataFormats.Text, text); + + } catch (COMException e) { + Logger.LogInfo ("Controller", "Copy to clipboard failed", e); + } + } + + + public override void Quit () + { + base.Quit (); + } + } +} diff --git a/SparkleShare/Windows/UserInterface/EventLog.cs b/SparkleShare/Windows/UserInterface/EventLog.cs new file mode 100644 index 0000000..735648b --- /dev/null +++ b/SparkleShare/Windows/UserInterface/EventLog.cs @@ -0,0 +1,347 @@ +// SparkleShare, a collaboration and sharing tool. +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. + + +using System; +using System.ComponentModel; +using System.IO; +using System.Security.Permissions; +using System.Runtime.InteropServices; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Shapes; + +using Microsoft.Win32; +using System.Windows.Data; + +namespace SparkleShare +{ + public class EventLog : Window { + + public EventLogController Controller = new EventLogController (); + + private Label label_Size; + private Label label_History; + + private WebBrowser webbrowser; + + private Spinner spinner; + + private ComboBox combobox; + + private Grid grid_Base; + + [DllImport("urlmon.dll")] + [PreserveSig] + [return: MarshalAs(UnmanagedType.Error)] + static extern int CoInternetSetFeatureEnabled(int feature, [MarshalAs(UnmanagedType.U4)] int flags, bool enable); + + public EventLog() + { + CreateEventLog(); + + Background = new SolidColorBrush(Color.FromRgb(240, 240, 240)); + AllowsTransparency = false; + Icon = UserInterfaceHelpers.GetImageSource("sparkleshare-app", "ico"); + WindowStartupLocation = WindowStartupLocation.CenterScreen; + + WriteOutImages(); + + this.label_Size.Content = "Size: " + Controller.Size; + this.label_History.Content = "History: " + Controller.HistorySize; + + this.webbrowser.ObjectForScripting = new SparkleScriptingObject(); + + // Disable annoying IE clicking sound + CoInternetSetFeatureEnabled(21, 0x00000002, true); + + Closing += this.OnClosing; + + Controller.ShowWindowEvent += delegate { + Dispatcher.BeginInvoke((Action)(() => { + Show(); + Activate(); + BringIntoView(); + })); + }; + + Controller.HideWindowEvent += delegate { + Dispatcher.BeginInvoke((Action)(() => { + Hide(); + this.spinner.Visibility = Visibility.Visible; + this.webbrowser.Visibility = Visibility.Collapsed; + })); + }; + + Controller.UpdateSizeInfoEvent += delegate (string size, string history_size) { + Dispatcher.BeginInvoke((Action)(() => { + this.label_Size.Content = "Size: " + size; + this.label_History.Content = "History: " + history_size; + })); + }; + + Controller.UpdateChooserEvent += delegate (string[] folders) { + Dispatcher.BeginInvoke((Action)(() => + UpdateChooser(folders)) + ); + }; + + Controller.UpdateChooserEnablementEvent += delegate (bool enabled) { + Dispatcher.BeginInvoke((Action)(() => + this.combobox.IsEnabled = enabled + )); + }; + + Controller.UpdateContentEvent += delegate (string html) { + Dispatcher.BeginInvoke((Action)(() => { + UpdateContent(html); + + this.spinner.Visibility = Visibility.Collapsed; + this.webbrowser.Visibility = Visibility.Visible; + })); + }; + + Controller.ContentLoadingEvent += () => this.Dispatcher.BeginInvoke( + (Action)(() => { + this.spinner.Visibility = Visibility.Visible; + this.spinner.Start(); + this.webbrowser.Visibility = Visibility.Collapsed; + })); + + Controller.ShowSaveDialogEvent += delegate (string file_name, string target_folder_path) { + Dispatcher.BeginInvoke((Action)(() => { + SaveFileDialog dialog = new SaveFileDialog() + { + FileName = file_name, + InitialDirectory = target_folder_path, + Title = "Restore from History", + DefaultExt = "." + System.IO.Path.GetExtension(file_name), + Filter = "All Files|*.*" + }; + + bool? result = dialog.ShowDialog(this); + + if (result == true) + Controller.SaveDialogCompleted(dialog.FileName); + else + Controller.SaveDialogCancelled(); + })); + }; + } + + + private void CreateEventLog () { + grid_Base = new Grid { Background = Brushes.White }; + + label_Size = new Label { + Content = "Size: ?", + Height = 28, + HorizontalAlignment = HorizontalAlignment.Left, + Margin = new Thickness(20, 0, 0, 0), + FontWeight = FontWeights.Bold + }; + + label_History = new Label { + Content = "History: ?", + Height = 28, + HorizontalAlignment = HorizontalAlignment.Left, + Margin = new Thickness(100, 0, 0, 0), + FontWeight = FontWeights.Bold + }; + + combobox = new ComboBox { + HorizontalAlignment = HorizontalAlignment.Right, + VerticalAlignment = VerticalAlignment.Center, + Margin = new Thickness(0, 0, 6, 0), + MinWidth = 120 + }; + + spinner = new Spinner { Name = "spinner" }; + webbrowser = new WebBrowser { Name = "webbrowser" }; + + Border border = new Border { + VerticalAlignment = VerticalAlignment.Top, + Height = 35, + Background = new SolidColorBrush(Color.FromArgb(255, 240, 240, 240)), + BorderBrush = new SolidColorBrush(Color.FromArgb(255, 223, 223, 223)), + BorderThickness = new Thickness(0, 0, 0, 1) + }; + + Grid borderGrid = new Grid(); + + borderGrid.Children.Add(this.label_Size); + borderGrid.Children.Add(this.label_History); + borderGrid.Children.Add(this.combobox); + + border.Child = borderGrid; + + Grid browserGrid = new Grid { Margin = new Thickness(0, 35, 0, 0) }; + + browserGrid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) }); + browserGrid.RowDefinitions.Add(new RowDefinition { Height = GridLength.Auto }); + + browserGrid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); + browserGrid.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto }); + + browserGrid.Children.Add(this.spinner); + browserGrid.Children.Add(this.webbrowser); + + Rectangle sizingControlHeight = new Rectangle { + Name = "sizingControlHeight", + Visibility = Visibility.Hidden + }; + + Grid.SetColumn(sizingControlHeight, 1); + + Rectangle sizingControlWidth = new Rectangle { + Name = "sizingControlHeight", + Visibility = Visibility.Hidden + }; + + Grid.SetColumn(sizingControlWidth, 0); + Grid.SetRow(sizingControlWidth, 0); + + browserGrid.Children.Add(sizingControlHeight); + browserGrid.Children.Add(sizingControlWidth); + + webbrowser.SetBinding(HeightProperty, new Binding("ActualHeightProperty") { ElementName = sizingControlHeight.Name }); + webbrowser.SetBinding(WidthProperty, new Binding("ActualWidthProperty") { ElementName = sizingControlWidth.Name }); + + grid_Base.Children.Add(border); + } + + private void OnClosing(object sender, CancelEventArgs cancel_event_args) + { + Controller.WindowClosed(); + cancel_event_args.Cancel = true; + } + + + private void UpdateContent(string html) + { + string pixmaps_path = System.IO.Path.Combine(Sparkles.Configuration.DefaultConfiguration.TmpPath, "Images"); + pixmaps_path = pixmaps_path.Replace("\\", "/"); + + html = html.Replace("<a href=", "<a class='windows' href="); + html = html.Replace("<!-- $body-font-family -->", "Segoe UI"); + html = html.Replace("<!-- $day-entry-header-font-size -->", "13px"); + html = html.Replace("<!-- $body-font-size -->", "12px"); + html = html.Replace("<!-- $secondary-font-color -->", "#bbb"); + html = html.Replace("<!-- $small-color -->", "#ddd"); + html = html.Replace("<!-- $small-font-size -->", "90%"); + html = html.Replace("<!-- $day-entry-header-background-color -->", "#f5f5f5"); + html = html.Replace("<!-- $a-color -->", "#0085cf"); + html = html.Replace("<!-- $a-hover-color -->", "#009ff8"); + html = html.Replace("<!-- $pixmaps-path -->", pixmaps_path); + html = html.Replace("<!-- $document-added-background-image -->", pixmaps_path + "/document-added-12.png"); + html = html.Replace("<!-- $document-edited-background-image -->", pixmaps_path + "/document-edited-12.png"); + html = html.Replace("<!-- $document-deleted-background-image -->", pixmaps_path + "/document-deleted-12.png"); + html = html.Replace("<!-- $document-moved-background-image -->", pixmaps_path + "/document-moved-12.png"); + + this.spinner.Stop(); + + this.webbrowser.ObjectForScripting = new SparkleScriptingObject(); + this.webbrowser.NavigateToString(html); + } + + + public void UpdateChooser(string[] folders) + { + if (folders == null) + { + folders = Controller.Folders; + } + + this.combobox.Items.Clear(); + this.combobox.Items.Add(new ComboBoxItem() { Content = "Summary" }); + this.combobox.Items.Add(new Separator()); + this.combobox.SelectedItem = combobox.Items[0]; + + int row = 2; + foreach (string folder in folders) + { + this.combobox.Items.Add(new ComboBoxItem() { Content = folder }); + + if (folder.Equals(Controller.SelectedFolder)) + this.combobox.SelectedItem = this.combobox.Items[row]; + + row++; + } + + this.combobox.SelectionChanged += delegate { + Dispatcher.BeginInvoke((Action)delegate { + int index = this.combobox.SelectedIndex; + + if (index == 0) + Controller.SelectedFolder = null; + else + Controller.SelectedFolder = (string)((ComboBoxItem)this.combobox.Items[index]).Content; + }); + }; + } + + + private void WriteOutImages() + { + string tmp_path = Sparkles.Configuration.DefaultConfiguration.TmpPath; + string pixmaps_path = System.IO.Path.Combine(tmp_path, "Images"); + + if (!Directory.Exists(pixmaps_path)) + { + Directory.CreateDirectory(pixmaps_path); + + File.SetAttributes(tmp_path, File.GetAttributes(tmp_path) | FileAttributes.Hidden); + } + + BitmapSource image = UserInterfaceHelpers.GetImageSource("user-icon-default"); + string file_path = System.IO.Path.Combine(pixmaps_path, "user-icon-default.png"); + + using (FileStream stream = new FileStream(file_path, FileMode.Create)) + { + BitmapEncoder encoder = new PngBitmapEncoder(); + encoder.Frames.Add(BitmapFrame.Create(image)); + encoder.Save(stream); + } + + string[] actions = new string[] { "added", "deleted", "edited", "moved" }; + + foreach (string action in actions) + { + image = UserInterfaceHelpers.GetImageSource("document-" + action + "-12"); + file_path = System.IO.Path.Combine(pixmaps_path, "document-" + action + "-12.png"); + + using (FileStream stream = new FileStream(file_path, FileMode.Create)) + { + BitmapEncoder encoder = new PngBitmapEncoder(); + encoder.Frames.Add(BitmapFrame.Create(image)); + encoder.Save(stream); + } + } + } + } + + [PermissionSet(SecurityAction.Demand, Name = "FullTrust")] + [ComVisible(true)] + public class SparkleScriptingObject + { + public void LinkClicked(string url) + { + SparkleShare.UI.EventLog.Controller.LinkClicked(url); + } + } +} diff --git a/SparkleShare/Windows/SparkleNote.xaml b/SparkleShare/Windows/UserInterface/Note.xaml index 22f2b24..2d39a24 100644 --- a/SparkleShare/Windows/SparkleNote.xaml +++ b/SparkleShare/Windows/UserInterface/Note.xaml @@ -1,4 +1,4 @@ -<Window x:Class="SparkleShare.SparkleNote" +<Window x:Class="SparkleShare.Note" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" @@ -26,7 +26,7 @@ </StackPanel> <TextBox x:Name="balloon_text_field" Grid.Row="1" Grid.ColumnSpan="2" Width="438" Height="72" BorderBrush="{x:Null}" BorderThickness="0" Padding="8,12,8,8" TextWrapping="Wrap" AcceptsReturn="True" Text="Anything to add?" > <TextBox.Background> - <ImageBrush ImageSource="pack://application:,,,/SparkleShare;component/Pixmaps/text-balloon.png" Stretch="Uniform"></ImageBrush> + <ImageBrush ImageSource="pack://application:,,,/SparkleShare.Windows;component/Images/text-balloon.png" Stretch="Uniform"></ImageBrush> </TextBox.Background> </TextBox> <StackPanel Grid.Column="1" Grid.Row="2" VerticalAlignment="Bottom" HorizontalAlignment="Right" Orientation="Horizontal"> diff --git a/SparkleShare/Windows/SparkleNote.xaml.cs b/SparkleShare/Windows/UserInterface/Note.xaml.cs index a0ba4cc..3616dd7 100644 --- a/SparkleShare/Windows/SparkleNote.xaml.cs +++ b/SparkleShare/Windows/UserInterface/Note.xaml.cs @@ -1,5 +1,5 @@ // SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com> +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -22,23 +22,23 @@ using System.Windows; using System.Windows.Forms.Integration; using System.Windows.Media; -using SparkleLib; +using Sparkles; namespace SparkleShare { - public partial class SparkleNote : Window { + public partial class Note : Window { - public SparkleNoteController Controller = new SparkleNoteController (); + public NoteController Controller = new NoteController (); private readonly string default_text = "Anything to add?"; - public SparkleNote() + public Note () { InitializeComponent(); Background = new SolidColorBrush(Color.FromRgb(240, 240, 240)); AllowsTransparency = false; - Icon = SparkleUIHelpers.GetImageSource("sparkleshare-app", "ico"); + Icon = UserInterfaceHelpers.GetImageSource("sparkleshare-app", "ico"); WindowStartupLocation = WindowStartupLocation.CenterScreen; Closing += this.OnClosing; @@ -85,16 +85,16 @@ namespace SparkleShare { private void CreateNote() { - ImageSource avatar = SparkleUIHelpers.GetImageSource("user-icon-default"); + ImageSource avatar = UserInterfaceHelpers.GetImageSource("user-icon-default"); if (File.Exists (Controller.AvatarFilePath)) { - avatar = SparkleUIHelpers.GetImage (Controller.AvatarFilePath); + avatar = UserInterfaceHelpers.GetImage (Controller.AvatarFilePath); } this.user_image.ImageSource = avatar; this.Title = Controller.CurrentProject ?? "Add Note"; - this.user_name_text_block.Text = Program.Controller.CurrentUser.Name; - this.user_email_text_field.Text = Program.Controller.CurrentUser.Email; + this.user_name_text_block.Text = SparkleShare.Controller.CurrentUser.Name; + this.user_email_text_field.Text = SparkleShare.Controller.CurrentUser.Email; this.balloon_text_field.Text = default_text; ElementHost.EnableModelessKeyboardInterop (this); @@ -120,4 +120,4 @@ namespace SparkleShare { } } } -}
\ No newline at end of file +} diff --git a/SparkleShare/Windows/SparkleNotifyIcon.cs b/SparkleShare/Windows/UserInterface/NotifyIcon.cs index d873017..f123511 100644 --- a/SparkleShare/Windows/SparkleNotifyIcon.cs +++ b/SparkleShare/Windows/UserInterface/NotifyIcon.cs @@ -1,188 +1,188 @@ -// SparkleShare, a collaboration and sharing tool.
-// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com>
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
-using System;
-using System.ComponentModel;
-using System.Runtime.InteropServices;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Input;
-using System.Windows.Markup;
-
-using Drawing = System.Drawing;
-using Forms = System.Windows.Forms;
-
-namespace SparkleShare {
-
- [ContentProperty("Text")]
- [DefaultEvent("MouseDoubleClick")]
- public class SparkleNotifyIcon : UIElement, IAddChild {
-
- [DllImport("user32.dll", EntryPoint = "DestroyIcon")]
- static extern bool DestroyIcon(IntPtr h_icon);
-
- public Drawing.Bitmap Icon {
- set {
- NotifyIcon.Icon = GetIconFromBitmap(value);
- }
- }
-
- public string Text {
- get {
- return (string) GetValue(TextProperty);
- }
- set {
- var text = value;
-
- if(!string.IsNullOrEmpty(HeaderText))
- text = HeaderText + "\n" + text;
-
- SetValue(TextProperty, text);
- }
- }
-
- public ContextMenu ContextMenu {
- get;
- set;
- }
-
- public string HeaderText {
- get;
- set;
- }
-
- private Forms.NotifyIcon NotifyIcon {
- get;
- set;
- }
-
- public readonly RoutedEvent MouseClickEvent = EventManager.RegisterRoutedEvent(
- "MouseClick", RoutingStrategy.Bubble, typeof(MouseButtonEventHandler), typeof(SparkleNotifyIcon));
-
- public readonly RoutedEvent MouseDoubleClickEvent = EventManager.RegisterRoutedEvent(
- "MouseDoubleClick", RoutingStrategy.Bubble, typeof(MouseButtonEventHandler), typeof(SparkleNotifyIcon));
-
- public readonly DependencyProperty TextProperty = DependencyProperty.Register(
- "Text", typeof(string), typeof(SparkleNotifyIcon), new PropertyMetadata(OnTextChanged));
-
- public SparkleNotifyIcon() {
- VisibilityProperty.OverrideMetadata(typeof(SparkleNotifyIcon), new PropertyMetadata(OnVisibilityChanged));
-
- NotifyIcon = new Forms.NotifyIcon {
- Text = Text,
- Visible = true,
- ContextMenu = new Forms.ContextMenu()
- };
- NotifyIcon.MouseDown += OnMouseDown;
- NotifyIcon.MouseUp += OnMouseUp;
- NotifyIcon.MouseClick += OnMouseClick;
- NotifyIcon.MouseDoubleClick += OnMouseDoubleClick;
- }
-
- public void ShowBalloonTip(string title, string subtext, string image_path) {
- // TODO:
- // - Use the image pointed to by image_path
- // - Find a way to use the prettier (Win7?) balloons
- NotifyIcon.ShowBalloonTip(5 * 1000, title, subtext, Forms.ToolTipIcon.Info);
- }
-
- public void Dispose() {
- NotifyIcon.Dispose();
- }
-
-
- void IAddChild.AddChild(object value) {
- throw new InvalidOperationException();
- }
-
- void IAddChild.AddText(string text) {
- if(text == null)
- throw new ArgumentNullException();
-
- Text = text;
- }
-
- private static MouseButtonEventArgs CreateMouseButtonEventArgs(RoutedEvent handler, Forms.MouseButtons button) {
- MouseButton mouse_button;
-
- if(button == Forms.MouseButtons.Left) {
- mouse_button = MouseButton.Left;
-
- } else if(button == Forms.MouseButtons.Right) {
- mouse_button = MouseButton.Right;
-
- } else if(button == Forms.MouseButtons.Middle) {
- mouse_button = MouseButton.Middle;
-
- } else if(button == Forms.MouseButtons.XButton1) {
- mouse_button = MouseButton.XButton1;
-
- } else if(button == Forms.MouseButtons.XButton2) {
- mouse_button = MouseButton.XButton2;
-
- } else {
- throw new InvalidOperationException();
- }
-
- return new MouseButtonEventArgs(InputManager.Current.PrimaryMouseDevice, 0, mouse_button) {
- RoutedEvent = handler
- };
- }
-
- private void OnVisibilityChanged(DependencyObject target, DependencyPropertyChangedEventArgs args) {
- SparkleNotifyIcon control = (SparkleNotifyIcon) target;
- control.NotifyIcon.Visible = (control.Visibility == Visibility.Visible);
- }
-
- private void OnMouseDown(object sender, Forms.MouseEventArgs args) {
- RaiseEvent(CreateMouseButtonEventArgs(MouseDownEvent, args.Button));
- }
-
- private void OnMouseClick(object sender, Forms.MouseEventArgs args) {
- RaiseEvent(CreateMouseButtonEventArgs(MouseClickEvent, args.Button));
- }
-
- private void OnMouseDoubleClick(object sender, Forms.MouseEventArgs args) {
- RaiseEvent(CreateMouseButtonEventArgs(MouseDoubleClickEvent, args.Button));
- }
-
- private void OnMouseUp(object sender, Forms.MouseEventArgs args) {
-
- if(args.Button == Forms.MouseButtons.Right) {
-
- ContextMenu.IsOpen = true;
- ContextMenu.StaysOpen = false;
- }
-
- RaiseEvent(CreateMouseButtonEventArgs(MouseUpEvent, args.Button));
- }
-
- private static void OnTextChanged(DependencyObject target, DependencyPropertyChangedEventArgs args) {
- SparkleNotifyIcon control = (SparkleNotifyIcon) target;
- control.NotifyIcon.Text = control.Text;
- }
-
-
- private static Drawing.Icon GetIconFromBitmap(Drawing.Bitmap bitmap) {
- IntPtr unmanaged_icon = bitmap.GetHicon();
- Drawing.Icon icon = (Drawing.Icon) Drawing.Icon.FromHandle(unmanaged_icon).Clone();
- DestroyIcon(unmanaged_icon);
-
- return icon;
- }
- }
-}
+// SparkleShare, a collaboration and sharing tool. +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. + + +using System; +using System.ComponentModel; +using System.Runtime.InteropServices; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Input; +using System.Windows.Markup; + +using Drawing = System.Drawing; +using Forms = System.Windows.Forms; + +namespace SparkleShare { + + [ContentProperty("Text")] + [DefaultEvent("MouseDoubleClick")] + public class NotifyIcon : UIElement, IAddChild { + + [DllImport("user32.dll", EntryPoint = "DestroyIcon")] + static extern bool DestroyIcon(IntPtr h_icon); + + public Drawing.Bitmap Icon { + set { + Notification.Icon = GetIconFromBitmap(value); + } + } + + public string Text { + get { + return (string) GetValue(TextProperty); + } + set { + var text = value; + + if(!string.IsNullOrEmpty(HeaderText)) + text = HeaderText + "\n" + text; + + SetValue(TextProperty, text); + } + } + + public ContextMenu ContextMenu { + get; + set; + } + + public string HeaderText { + get; + set; + } + + private Forms.NotifyIcon Notification { + get; + set; + } + + public readonly RoutedEvent MouseClickEvent = EventManager.RegisterRoutedEvent( + "MouseClick", RoutingStrategy.Bubble, typeof(MouseButtonEventHandler), typeof(NotifyIcon)); + + public readonly RoutedEvent MouseDoubleClickEvent = EventManager.RegisterRoutedEvent( + "MouseDoubleClick", RoutingStrategy.Bubble, typeof(MouseButtonEventHandler), typeof(NotifyIcon)); + + public readonly DependencyProperty TextProperty = DependencyProperty.Register( + "Text", typeof(string), typeof(NotifyIcon), new PropertyMetadata(OnTextChanged)); + + public NotifyIcon() { + VisibilityProperty.OverrideMetadata(typeof(NotifyIcon), new PropertyMetadata(OnVisibilityChanged)); + + Notification = new Forms.NotifyIcon { + Text = Text, + Visible = true, + ContextMenu = new Forms.ContextMenu() + }; + Notification.MouseDown += OnMouseDown; + Notification.MouseUp += OnMouseUp; + Notification.MouseClick += OnMouseClick; + Notification.MouseDoubleClick += OnMouseDoubleClick; + } + + public void ShowBalloonTip(string title, string subtext, string image_path) { + // TODO: + // - Use the image pointed to by image_path + // - Find a way to use the prettier (Win7?) balloons + Notification.ShowBalloonTip(5 * 1000, title, subtext, Forms.ToolTipIcon.Info); + } + + public void Dispose() { + Notification.Dispose(); + } + + + void IAddChild.AddChild(object value) { + throw new InvalidOperationException(); + } + + void IAddChild.AddText(string text) { + if(text == null) + throw new ArgumentNullException(); + + Text = text; + } + + private static MouseButtonEventArgs CreateMouseButtonEventArgs(RoutedEvent handler, Forms.MouseButtons button) { + MouseButton mouse_button; + + if(button == Forms.MouseButtons.Left) { + mouse_button = MouseButton.Left; + + } else if(button == Forms.MouseButtons.Right) { + mouse_button = MouseButton.Right; + + } else if(button == Forms.MouseButtons.Middle) { + mouse_button = MouseButton.Middle; + + } else if(button == Forms.MouseButtons.XButton1) { + mouse_button = MouseButton.XButton1; + + } else if(button == Forms.MouseButtons.XButton2) { + mouse_button = MouseButton.XButton2; + + } else { + throw new InvalidOperationException(); + } + + return new MouseButtonEventArgs(InputManager.Current.PrimaryMouseDevice, 0, mouse_button) { + RoutedEvent = handler + }; + } + + private void OnVisibilityChanged(DependencyObject target, DependencyPropertyChangedEventArgs args) { + NotifyIcon control = (NotifyIcon) target; + control.Notification.Visible = (control.Visibility == Visibility.Visible); + } + + private void OnMouseDown(object sender, Forms.MouseEventArgs args) { + RaiseEvent(CreateMouseButtonEventArgs(MouseDownEvent, args.Button)); + } + + private void OnMouseClick(object sender, Forms.MouseEventArgs args) { + RaiseEvent(CreateMouseButtonEventArgs(MouseClickEvent, args.Button)); + } + + private void OnMouseDoubleClick(object sender, Forms.MouseEventArgs args) { + RaiseEvent(CreateMouseButtonEventArgs(MouseDoubleClickEvent, args.Button)); + } + + private void OnMouseUp(object sender, Forms.MouseEventArgs args) { + + if(args.Button == Forms.MouseButtons.Right) { + + ContextMenu.IsOpen = true; + ContextMenu.StaysOpen = false; + } + + RaiseEvent(CreateMouseButtonEventArgs(MouseUpEvent, args.Button)); + } + + private static void OnTextChanged(DependencyObject target, DependencyPropertyChangedEventArgs args) { + NotifyIcon control = (NotifyIcon) target; + control.Notification.Text = control.Text; + } + + + private static Drawing.Icon GetIconFromBitmap(Drawing.Bitmap bitmap) { + IntPtr unmanaged_icon = bitmap.GetHicon(); + Drawing.Icon icon = (Drawing.Icon) Drawing.Icon.FromHandle(unmanaged_icon).Clone(); + DestroyIcon(unmanaged_icon); + + return icon; + } + } +} diff --git a/SparkleShare/Windows/UserInterface/ProtocolHandler.cs b/SparkleShare/Windows/UserInterface/ProtocolHandler.cs new file mode 100644 index 0000000..b08bd7e --- /dev/null +++ b/SparkleShare/Windows/UserInterface/ProtocolHandler.cs @@ -0,0 +1,74 @@ +// SparkleShare, a collaboration and sharing tool. +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. + + +using Microsoft.Win32; +using System.IO; + +namespace SparkleShare +{ + + /// <summary> + /// Maintain Protocol Handlers created by SparkleShare + /// </summary> + static class SparkleProtocolHandler + { + + /// <summary> + /// Add or Update protocol handler + /// </summary> + /// <param name="handleName">The name of the handler to add</param> + /// <param name="handleValue">Default value of the protocol handler</param> + /// <param name="handleCommand">The arguments passed to the Invite Opener</param> + internal static void AddProtocolHandler(string handleName, string handleValue, string handleCommand) + { + var inviteOpener = Path.Combine(Directory.GetCurrentDirectory(), "SparkleShareInviteOpener"); + + // test the handleName for third party protocols like GitHub + // if one exist and their default value doesn't match our custom Protocol, do not update + using (RegistryKey testKey = Registry.ClassesRoot.OpenSubKey(handleName)) + { + if (testKey == null || handleValue.Equals(testKey.GetValue(""))) + { + using (RegistryKey key = Registry.CurrentUser.CreateSubKey("Software").CreateSubKey("Classes").CreateSubKey(handleName)) + { + key.SetValue("", handleValue); + key.SetValue("URL Protocol", ""); + key.CreateSubKey("DefaultIcon").SetValue("", inviteOpener); + key.CreateSubKey("shell") + .CreateSubKey("open") + .CreateSubKey("command") + .SetValue("", inviteOpener + " " + handleCommand); + } + } + } + } + + /// <summary> + /// Remove protocol handler + /// </summary> + /// <param name="handleName">The name of the handler to remove</param> + /// <param name="handleValue">Default value of the protocol handler</param> + internal static void RemoveProtocolHandler(string handleName, string handleValue) + { + var key = Registry.CurrentUser.OpenSubKey(handleName); + + // if the the default value doesn't match our custom Protocol, do not remove + if (key != null && handleValue.Equals(key.GetValue(""))) + Registry.CurrentUser.DeleteSubKeyTree(handleName); + } + } +} diff --git a/SparkleShare/Windows/SparkleSetup.cs b/SparkleShare/Windows/UserInterface/Setup.cs index d51d69e..d6b523c 100644 --- a/SparkleShare/Windows/SparkleSetup.cs +++ b/SparkleShare/Windows/UserInterface/Setup.cs @@ -1,5 +1,5 @@ // SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com> +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General private License as published by @@ -15,33 +15,27 @@ // along with this program. If not, see <http://www.gnu.org/licenses/>. +using Sparkles; using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.IO; -using System.Media; using System.Windows; using System.Windows.Controls; -using System.Windows.Data; using System.Windows.Documents; using System.Windows.Markup; using System.Windows.Media; using System.Windows.Media.Imaging; -using System.Windows.Navigation; using System.Windows.Shell; using Drawing = System.Drawing; using Imaging = System.Windows.Interop.Imaging; -using WPF = System.Windows.Controls; namespace SparkleShare { - public class SparkleSetup : SparkleSetupWindow { + public class Setup : SetupWindow { - public SparkleSetupController Controller = new SparkleSetupController (); + public SetupController Controller = new SetupController (); - public SparkleSetup () + public Setup () { Controller.ShowWindowEvent += delegate { Dispatcher.BeginInvoke ((Action) delegate { @@ -139,7 +133,7 @@ namespace SparkleShare { cancel_button.Click += delegate { Dispatcher.BeginInvoke ((Action) delegate { - Program.UI.StatusIcon.Dispose (); + SparkleShare.UI.StatusIcon.Dispose (); Controller.SetupPageCancelled (); }); }; @@ -268,7 +262,7 @@ namespace SparkleShare { header_style.Setters.Add (new Setter (GridViewColumnHeader.VisibilityProperty, Visibility.Collapsed)); grid_view.ColumnHeaderContainerStyle = header_style; - foreach (SparklePlugin plugin in Controller.Plugins) { + foreach (Preset plugin in Controller.Presets) { // FIXME: images are blurry BitmapFrame image = BitmapFrame.Create ( new Uri (plugin.ImagePath) @@ -284,7 +278,7 @@ namespace SparkleShare { } list_view.View = grid_view; - list_view.SelectedIndex = Controller.SelectedPluginIndex; + list_view.SelectedIndex = Controller.SelectedPresetIndex; TextBlock address_label = new TextBlock () { Text = "Address:", @@ -294,11 +288,11 @@ namespace SparkleShare { TextBox address_box = new TextBox () { Width = 200, Text = Controller.PreviousAddress, - IsEnabled = (Controller.SelectedPlugin.Address == null) + IsEnabled = (Controller.SelectedPreset.Address == null) }; TextBlock address_help_label = new TextBlock () { - Text = Controller.SelectedPlugin.AddressExample, + Text = Controller.SelectedPreset.AddressExample, FontSize = 11, Foreground = new SolidColorBrush (Color.FromRgb (128, 128, 128)) }; @@ -312,11 +306,11 @@ namespace SparkleShare { TextBox path_box = new TextBox () { Width = 200, Text = Controller.PreviousPath, - IsEnabled = (Controller.SelectedPlugin.Path == null) + IsEnabled = (Controller.SelectedPreset.Path == null) }; TextBlock path_help_label = new TextBlock () { - Text = Controller.SelectedPlugin.PathExample, + Text = Controller.SelectedPreset.PathExample, FontSize = 11, Width = 200, Foreground = new SolidColorBrush (Color.FromRgb (128, 128, 128)) @@ -409,11 +403,11 @@ namespace SparkleShare { }; list_view.SelectionChanged += delegate { - Controller.SelectedPluginChanged (list_view.SelectedIndex); + Controller.SelectedPresetChanged (list_view.SelectedIndex); }; list_view.KeyDown += delegate { - Controller.SelectedPluginChanged (list_view.SelectedIndex); + Controller.SelectedPresetChanged (list_view.SelectedIndex); }; Controller.CheckAddPage (address_box.Text, path_box.Text, list_view.SelectedIndex); @@ -509,7 +503,7 @@ namespace SparkleShare { help_block.Inlines.Add (new Bold (new Run (Controller.PreviousUrl))); help_block.Inlines.Add (" is the address we’ve compiled. Does this look alright?\n\n"); - help_block.Inlines.Add ("Is this computer’s Client ID known by the host??"); + help_block.Inlines.Add ("Is this computer’s Client ID known by the host?"); if (warnings.Length > 0) { bullets_block.Text += "\n\n•"; @@ -773,7 +767,7 @@ namespace SparkleShare { }; Button show_files_button = new Button () { - Content = "Show files…" + Content = "Show files" }; if (warnings.Length > 0) { @@ -814,167 +808,6 @@ namespace SparkleShare { break; } - - case PageType.Tutorial: { - switch (Controller.TutorialPageNumber) { - case 1: { - Header = "What’s happening next?"; - Description = "SparkleShare creates a special folder on your computer " + - "that will keep track of your projects."; - - - WPF.Image slide_image = new WPF.Image () { - Width = 324, - Height = 200 - }; - - slide_image.Source = SparkleUIHelpers.GetImageSource ("tutorial-slide-1"); - - Button skip_tutorial_button = new Button () { - Content = "Skip tutorial" - }; - - Button continue_button = new Button () { - Content = "Continue" - }; - - - ContentCanvas.Children.Add (slide_image); - Canvas.SetLeft (slide_image, 228); - Canvas.SetTop (slide_image, 130); - - Buttons.Add (skip_tutorial_button); - Buttons.Add (continue_button); - - - skip_tutorial_button.Click += delegate { - Controller.TutorialSkipped (); - }; - - continue_button.Click += delegate { - Controller.TutorialPageCompleted (); - }; - - break; - } - - case 2: { - Header = "Sharing files with others"; - Description = "All files added to your project folders are synced automatically with " + - "the host and your team members."; - - - Button continue_button = new Button () { - Content = "Continue" - }; - - WPF.Image slide_image = new WPF.Image () { - Width = 324, - Height = 200 - }; - - slide_image.Source = SparkleUIHelpers.GetImageSource ("tutorial-slide-2"); - - - ContentCanvas.Children.Add (slide_image); - Canvas.SetLeft (slide_image, 228); - Canvas.SetTop (slide_image, 130); - - Buttons.Add (continue_button); - - - continue_button.Click += delegate { - Controller.TutorialPageCompleted (); - }; - - break; - } - - case 3: { - Header = "The status icon helps you"; - Description = "It shows the syncing progress, provides easy access to " + - "your projects, and lets you view recent changes."; - - Button continue_button = new Button () { - Content = "Continue" - }; - - WPF.Image slide_image = new WPF.Image () { - Width = 324, - Height = 200 - }; - - slide_image.Source = SparkleUIHelpers.GetImageSource ("tutorial-slide-3"); - - - ContentCanvas.Children.Add (slide_image); - Canvas.SetLeft (slide_image, 228); - Canvas.SetTop (slide_image, 130); - - Buttons.Add (continue_button); - - - continue_button.Click += delegate { - Controller.TutorialPageCompleted (); - }; - - break; - } - - case 4: { - Header = "Here’s your unique Client ID"; - Description = "You’ll need it whenever you want to link this computer to a host. " + - "You can also find it in the status icon menu."; - - - TextBox link_code_text_box = new TextBox () { - Text = Program.Controller.CurrentUser.PublicKey, - Width = 250, - MaxLines = 1, - TextWrapping = TextWrapping.NoWrap, - IsEnabled = false - }; - - Button copy_button = new Button () { - Content = "Copy", - Width = 60 - }; - - Button finish_button = new Button () { - Content = "Finish" - }; - - CheckBox check_box = new CheckBox () { - Content = "Add SparkleShare to startup items", - IsChecked = true - }; - - - ContentCanvas.Children.Add (link_code_text_box); - Canvas.SetLeft (link_code_text_box, 235); - Canvas.SetTop (link_code_text_box, 190); - - ContentCanvas.Children.Add (copy_button); - Canvas.SetLeft (copy_button, 490); - Canvas.SetTop (copy_button, 190); - - ContentCanvas.Children.Add (check_box); - Canvas.SetLeft (check_box, 185); - Canvas.SetBottom (check_box, 12); - - Buttons.Add (finish_button); - - - check_box.Click += delegate { Controller.StartupItemChanged (check_box.IsChecked.Value); }; - finish_button.Click += delegate { Controller.TutorialPageCompleted (); }; - copy_button.Click += delegate { Controller.CopyToClipboardClicked(); }; - - break; - } - } - - break; - } } ShowAll (); diff --git a/SparkleShare/Windows/SparkleSetupWindow.cs b/SparkleShare/Windows/UserInterface/SetupWindow.cs index 87607e2..6208906 100644 --- a/SparkleShare/Windows/SparkleSetupWindow.cs +++ b/SparkleShare/Windows/UserInterface/SetupWindow.cs @@ -1,193 +1,193 @@ -// SparkleShare, a collaboration and sharing tool.
-// Copyright (C) 2010 Hylke Bons (hylkebons@gmail.com)
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see (http://www.gnu.org/licenses/).
-
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Forms.Integration;
-using System.Windows.Media;
-using System.Windows.Shapes;
-using System.Windows.Shell;
-using System.Runtime.InteropServices;
-using System.Windows.Interop;
-
-namespace SparkleShare {
-
- public class SparkleSetupWindow : Window {
-
- public Canvas ContentCanvas = new Canvas ();
- public List <Button> Buttons = new List <Button> ();
- public string Header;
- public string Description;
-
- private Image side_splash;
- private Rectangle bar;
-
- private Rectangle line;
-
-
- public SparkleSetupWindow ()
- {
- Title = "SparkleShare Setup";
- Width = 640;
- Height = 440;
- ResizeMode = ResizeMode.NoResize;
- Background = new SolidColorBrush (Colors.WhiteSmoke);
- Icon = SparkleUIHelpers.GetImageSource ("sparkleshare-app", "ico");
-
- TaskbarItemInfo = new TaskbarItemInfo () {
- Description = "SparkleShare"
- };
-
- WindowStartupLocation = WindowStartupLocation.CenterScreen;
- Content = ContentCanvas;
-
- // Remove the close button
- Closing += Close;
- SourceInitialized += delegate {
- const int gwl_style = -16;
- const int ws_sysmenu = 0x00080000;
- WindowInteropHelper helper = new WindowInteropHelper (this);
- int style = GetWindowLong (helper.Handle, gwl_style);
- SetWindowLong (helper.Handle, gwl_style, style & ~ws_sysmenu);
- };
-
- this.bar = new Rectangle () {
- Width = Width,
- Height = 40,
- Fill = new SolidColorBrush (Color.FromRgb (240, 240, 240))
- };
-
- this.line = new Rectangle () {
- Width = Width,
- Height = 1,
- Fill = new SolidColorBrush (Color.FromRgb (223, 223, 223))
- };
-
- this.side_splash = new Image () {
- Width = 150,
- Height = 482
- };
-
- this.side_splash.Source = SparkleUIHelpers.GetImageSource ("side-splash");
-
-
- ContentCanvas.Children.Add (this.bar);
- Canvas.SetRight (bar, 0);
- Canvas.SetBottom (bar, 0);
-
- ContentCanvas.Children.Add (this.line);
- Canvas.SetRight (this.line, 0);
- Canvas.SetBottom (this.line, 40);
-
- ContentCanvas.Children.Add (this.side_splash);
- Canvas.SetLeft (this.side_splash, 0);
- Canvas.SetBottom (this.side_splash, 0);
- }
-
-
- public void Reset ()
- {
- ContentCanvas.Children.Remove (this.bar);
-
- ContentCanvas.Children.Remove (this.line);
-
- ContentCanvas.Children.Remove (this.side_splash);
- ContentCanvas = new Canvas ();
- Content = ContentCanvas;
-
- ContentCanvas.Children.Add (this.bar);
- ContentCanvas.Children.Add (this.line);
- ContentCanvas.Children.Add (this.side_splash);
-
- Buttons = new List <Button> ();
- Header = "";
- Description = "";
- }
-
-
- public void ShowAll ()
- {
- Label header_label = new Label () {
- Content = Header,
- Foreground = new SolidColorBrush (Color.FromRgb (0, 51, 153)),
- FontSize = 16
- };
-
- TextBlock description_label = new TextBlock () {
- Text = Description,
- TextWrapping = TextWrapping.Wrap,
- Width = 375
- };
-
-
- ContentCanvas.Children.Add (header_label);
- Canvas.SetLeft (header_label, 180);
- Canvas.SetTop (header_label, 18);
-
- ContentCanvas.Children.Add (description_label);
- Canvas.SetLeft (description_label, 185);
- Canvas.SetTop (description_label, 60);
-
-
- if (Buttons.Count > 0) {
- Buttons [0].IsDefault = true;
- Buttons.Reverse ();
-
- int right = 9;
-
- foreach (Button button in Buttons) {
- button.Measure (new Size (Double.PositiveInfinity, Double.PositiveInfinity));
- Rect rect = new Rect (button.DesiredSize);
-
- button.Width = rect.Width + 26;
-
- if (button.Width < 75)
- button.Width = 75;
-
- ContentCanvas.Children.Add (button);
- Canvas.SetRight (button, right);
- Canvas.SetBottom (button, 9);
-
- right += (int) button.Width + 9;
-
- if ((button.Content as string).Equals ("Continue")) {
- Buttons [Buttons.Count - 1].IsDefault = false;
- button.IsDefault = true;
- }
- }
- }
-
- ElementHost.EnableModelessKeyboardInterop (this);
- }
-
-
- private void Close (object sender, CancelEventArgs args)
- {
- args.Cancel = true;
- }
-
-
- [DllImport("user32.dll")]
- private extern static int SetWindowLong (IntPtr hwnd, int index, int value);
-
- [DllImport("user32.dll")]
- private extern static int GetWindowLong (IntPtr hwnd, int index);
- }
-}
+// SparkleShare, a collaboration and sharing tool. +// Copyright (C) 2010 Hylke Bons (hi@planetpeanut.uk) +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see (http://www.gnu.org/licenses/). + + +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Forms.Integration; +using System.Windows.Media; +using System.Windows.Shapes; +using System.Windows.Shell; +using System.Runtime.InteropServices; +using System.Windows.Interop; + +namespace SparkleShare { + + public class SetupWindow : Window { + + public Canvas ContentCanvas = new Canvas (); + public List <Button> Buttons = new List <Button> (); + public string Header; + public string Description; + + private Image side_splash; + private Rectangle bar; + + private Rectangle line; + + + public SetupWindow () + { + Title = "SparkleShare Setup"; + Width = 640; + Height = 440; + ResizeMode = ResizeMode.NoResize; + Background = new SolidColorBrush (Colors.WhiteSmoke); + Icon = UserInterfaceHelpers.GetImageSource ("sparkleshare-app", "ico"); + + TaskbarItemInfo = new TaskbarItemInfo () { + Description = "SparkleShare" + }; + + WindowStartupLocation = WindowStartupLocation.CenterScreen; + Content = ContentCanvas; + + // Remove the close button + Closing += Close; + SourceInitialized += delegate { + const int gwl_style = -16; + const int ws_sysmenu = 0x00080000; + WindowInteropHelper helper = new WindowInteropHelper (this); + int style = GetWindowLong (helper.Handle, gwl_style); + SetWindowLong (helper.Handle, gwl_style, style & ~ws_sysmenu); + }; + + this.bar = new Rectangle () { + Width = Width, + Height = 40, + Fill = new SolidColorBrush (Color.FromRgb (240, 240, 240)) + }; + + this.line = new Rectangle () { + Width = Width, + Height = 1, + Fill = new SolidColorBrush (Color.FromRgb (223, 223, 223)) + }; + + this.side_splash = new Image () { + Width = 150, + Height = 482 + }; + + this.side_splash.Source = UserInterfaceHelpers.GetImageSource ("side-splash"); + + + ContentCanvas.Children.Add (this.bar); + Canvas.SetRight (bar, 0); + Canvas.SetBottom (bar, 0); + + ContentCanvas.Children.Add (this.line); + Canvas.SetRight (this.line, 0); + Canvas.SetBottom (this.line, 40); + + ContentCanvas.Children.Add (this.side_splash); + Canvas.SetLeft (this.side_splash, 0); + Canvas.SetBottom (this.side_splash, 0); + } + + + public void Reset () + { + ContentCanvas.Children.Remove (this.bar); + + ContentCanvas.Children.Remove (this.line); + + ContentCanvas.Children.Remove (this.side_splash); + ContentCanvas = new Canvas (); + Content = ContentCanvas; + + ContentCanvas.Children.Add (this.bar); + ContentCanvas.Children.Add (this.line); + ContentCanvas.Children.Add (this.side_splash); + + Buttons = new List <Button> (); + Header = ""; + Description = ""; + } + + + public void ShowAll () + { + Label header_label = new Label () { + Content = Header, + Foreground = new SolidColorBrush (Color.FromRgb (0, 51, 153)), + FontSize = 16 + }; + + TextBlock description_label = new TextBlock () { + Text = Description, + TextWrapping = TextWrapping.Wrap, + Width = 375 + }; + + + ContentCanvas.Children.Add (header_label); + Canvas.SetLeft (header_label, 180); + Canvas.SetTop (header_label, 18); + + ContentCanvas.Children.Add (description_label); + Canvas.SetLeft (description_label, 185); + Canvas.SetTop (description_label, 60); + + + if (Buttons.Count > 0) { + Buttons [0].IsDefault = true; + Buttons.Reverse (); + + int right = 9; + + foreach (Button button in Buttons) { + button.Measure (new Size (Double.PositiveInfinity, Double.PositiveInfinity)); + Rect rect = new Rect (button.DesiredSize); + + button.Width = rect.Width + 26; + + if (button.Width < 75) + button.Width = 75; + + ContentCanvas.Children.Add (button); + Canvas.SetRight (button, right); + Canvas.SetBottom (button, 9); + + right += (int) button.Width + 9; + + if ((button.Content as string).Equals ("Continue")) { + Buttons [Buttons.Count - 1].IsDefault = false; + button.IsDefault = true; + } + } + } + + ElementHost.EnableModelessKeyboardInterop (this); + } + + + private void Close (object sender, CancelEventArgs args) + { + args.Cancel = true; + } + + + [DllImport("user32.dll")] + private extern static int SetWindowLong (IntPtr hwnd, int index, int value); + + [DllImport("user32.dll")] + private extern static int GetWindowLong (IntPtr hwnd, int index); + } +} diff --git a/SparkleShare/Windows/SparkleShortcut.cs b/SparkleShare/Windows/UserInterface/Shortcut.cs index 763a697..aded16e 100644 --- a/SparkleShare/Windows/SparkleShortcut.cs +++ b/SparkleShare/Windows/UserInterface/Shortcut.cs @@ -1,5 +1,5 @@ // SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com> +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -16,11 +16,8 @@ using System; -using System.ComponentModel; -using System.Drawing; using System.Runtime.InteropServices; using System.Text; -using System.Windows.Forms; namespace SparkleShare { diff --git a/SparkleShare/Windows/SparkleSpinner.cs b/SparkleShare/Windows/UserInterface/Spinner.cs index e8a3885..6f5bcbd 100644 --- a/SparkleShare/Windows/SparkleSpinner.cs +++ b/SparkleShare/Windows/UserInterface/Spinner.cs @@ -1,91 +1,91 @@ -// SparkleShare, a collaboration and sharing tool.
-// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com>
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
-using System;
-using System.Timers;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Media.Imaging;
-using System.ComponentModel;
-
-namespace SparkleShare {
- public class SparkleSpinner : Image {
-
- private Timer timer;
-
- public SparkleSpinner ()
- : this (22) {
- }
-
- public SparkleSpinner (int size) : base () {
- if (DesignerProperties.GetIsInDesignMode(this)) {
- return;
- }
-
- Width = size;
- Height = size;
-
- int current_frame = 0;
- BitmapSource spinner_gallery = SparkleUIHelpers.GetImageSource ("process-working-22");
- int frames_in_width = spinner_gallery.PixelWidth / size;
- int frames_in_height = spinner_gallery.PixelHeight / size;
- int frame_count = (frames_in_width * frames_in_height) - 1;
- Image [] frames = new Image [frame_count];
-
- int i = 0;
- for (int y = 0; y < frames_in_height; y++) {
- for (int x = 0; x < frames_in_width; x++) {
- if (!(y == 0 && x == 0)) {
- CroppedBitmap crop = new CroppedBitmap (spinner_gallery,
- new Int32Rect (size * x, size * y, size, size));
-
- frames [i] = new Image ();
- frames [i].Source = crop;
- i++;
- }
- }
- }
-
- this.timer = new Timer () {
- Interval = 400 / frame_count
- };
-
- this.timer.Elapsed += delegate {
- Dispatcher.BeginInvoke ((Action) delegate {
- if (current_frame < frame_count - 1)
- current_frame++;
- else
- current_frame = 0;
-
- Source = frames [current_frame].Source;
- });
- };
- }
-
-
- public void Start ()
- {
- this.timer.Start ();
- }
-
-
- public void Stop ()
- {
- this.timer.Stop ();
- }
- }
-}
+// SparkleShare, a collaboration and sharing tool. +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. + + +using System; +using System.Timers; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Media.Imaging; +using System.ComponentModel; + +namespace SparkleShare { + public class Spinner : Image { + + private Timer timer; + + public Spinner () + : this (22) { + } + + public Spinner (int size) : base () { + if (DesignerProperties.GetIsInDesignMode(this)) { + return; + } + + Width = size; + Height = size; + + int current_frame = 0; + BitmapSource spinner_gallery = UserInterfaceHelpers.GetImageSource ("process-working-22"); + int frames_in_width = spinner_gallery.PixelWidth / size; + int frames_in_height = spinner_gallery.PixelHeight / size; + int frame_count = (frames_in_width * frames_in_height) - 1; + Image [] frames = new Image [frame_count]; + + int i = 0; + for (int y = 0; y < frames_in_height; y++) { + for (int x = 0; x < frames_in_width; x++) { + if (!(y == 0 && x == 0)) { + CroppedBitmap crop = new CroppedBitmap (spinner_gallery, + new Int32Rect (size * x, size * y, size, size)); + + frames [i] = new Image (); + frames [i].Source = crop; + i++; + } + } + } + + this.timer = new Timer () { + Interval = 400 / frame_count + }; + + this.timer.Elapsed += delegate { + Dispatcher.BeginInvoke ((Action) delegate { + if (current_frame < frame_count - 1) + current_frame++; + else + current_frame = 0; + + Source = frames [current_frame].Source; + }); + }; + } + + + public void Start () + { + this.timer.Start (); + } + + + public void Stop () + { + this.timer.Stop (); + } + } +} diff --git a/SparkleShare/Windows/SparkleStatusIcon.cs b/SparkleShare/Windows/UserInterface/StatusIcon.cs index a4a77ad..fb02f59 100644 --- a/SparkleShare/Windows/SparkleStatusIcon.cs +++ b/SparkleShare/Windows/UserInterface/StatusIcon.cs @@ -1,5 +1,5 @@ // SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com> +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -26,15 +26,15 @@ using Drawing = System.Drawing; namespace SparkleShare { - public class SparkleStatusIcon : Control { + public class StatusIcon : Control { - public SparkleStatusIconController Controller = new SparkleStatusIconController(); + public StatusIconController Controller = new StatusIconController(); - private readonly Drawing.Bitmap syncing_idle_image = SparkleUIHelpers.GetBitmap("process-syncing-idle"); - private readonly Drawing.Bitmap syncing_up_image = SparkleUIHelpers.GetBitmap("process-syncing-up"); - private readonly Drawing.Bitmap syncing_down_image = SparkleUIHelpers.GetBitmap("process-syncing-down"); - private readonly Drawing.Bitmap syncing_image = SparkleUIHelpers.GetBitmap("process-syncing"); - private readonly Drawing.Bitmap syncing_error_image = SparkleUIHelpers.GetBitmap("process-syncing-error"); + private readonly Drawing.Bitmap syncing_idle_image = UserInterfaceHelpers.GetBitmap("process-syncing-idle"); + private readonly Drawing.Bitmap syncing_up_image = UserInterfaceHelpers.GetBitmap("process-syncing-up"); + private readonly Drawing.Bitmap syncing_down_image = UserInterfaceHelpers.GetBitmap("process-syncing-down"); + private readonly Drawing.Bitmap syncing_image = UserInterfaceHelpers.GetBitmap("process-syncing"); + private readonly Drawing.Bitmap syncing_error_image = UserInterfaceHelpers.GetBitmap("process-syncing-error"); private ContextMenu context_menu; @@ -43,10 +43,10 @@ namespace SparkleShare { private SparkleMenuItem exit_item; private SparkleMenuItem[] state_menu_items; - private readonly SparkleNotifyIcon notify_icon = new SparkleNotifyIcon(); + private readonly NotifyIcon notify_icon = new NotifyIcon(); - public SparkleStatusIcon() { + public StatusIcon() { this.notify_icon.HeaderText = "SparkleShare"; this.notify_icon.Icon = this.syncing_idle_image; @@ -117,7 +117,7 @@ namespace SparkleShare { }; Image folder_image = new Image { - Source = SparkleUIHelpers.GetImageSource("sparkleshare-folder"), + Source = UserInterfaceHelpers.GetImageSource("sparkleshare-folder"), Width = 16, Height = 16 }; @@ -142,7 +142,7 @@ namespace SparkleShare { if(Controller.LinkCodeItemEnabled) { SparkleMenuItem code_item = new SparkleMenuItem { - Header = Program.Controller.CurrentUser.PublicKey.Substring(0, 20) + "..." + Header = SparkleShare.Controller.UserAuthenticationInfo.PublicKey.Substring(0, 20) + "..." }; SparkleMenuItem copy_item = new SparkleMenuItem { @@ -159,7 +159,7 @@ namespace SparkleShare { CheckBox notify_check_box = new CheckBox { Margin = new Thickness(6, 0, 0, 0), - IsChecked = Program.Controller.NotificationsEnabled + IsChecked = SparkleShare.Controller.NotificationsEnabled }; SparkleMenuItem notify_item = new SparkleMenuItem { @@ -187,13 +187,13 @@ namespace SparkleShare { notify_check_box.Click += delegate { this.context_menu.IsOpen = false; - Program.Controller.ToggleNotifications(); - notify_check_box.IsChecked = Program.Controller.NotificationsEnabled; + SparkleShare.Controller.ToggleNotifications(); + notify_check_box.IsChecked = SparkleShare.Controller.NotificationsEnabled; }; notify_item.Click += delegate { - Program.Controller.ToggleNotifications(); - notify_check_box.IsChecked = Program.Controller.NotificationsEnabled; + SparkleShare.Controller.ToggleNotifications(); + notify_check_box.IsChecked = SparkleShare.Controller.NotificationsEnabled; }; this.exit_item.Click += delegate { @@ -215,7 +215,7 @@ namespace SparkleShare { SparkleMenuItem subfolder_item = new SparkleMenuItem { Header = project.Name.Replace("_", "__"), Icon = new Image { - Source = SparkleUIHelpers.GetImageSource("folder"), + Source = UserInterfaceHelpers.GetImageSource("folder"), Width = 16, Height = 16 } @@ -233,7 +233,7 @@ namespace SparkleShare { Header = "Open folder", Icon = new Image { - Source = SparkleUIHelpers.GetImageSource("folder"), + Source = UserInterfaceHelpers.GetImageSource("folder"), Width = 16, Height = 16 } @@ -284,7 +284,7 @@ namespace SparkleShare { }; SparkleMenuItem try_again_item = new SparkleMenuItem { - Header = "Try Again" + Header = "Retry Sync" }; try_again_item.Click += (sender, e) => Controller.TryAgainDelegate(project.Name)(sender, e); subfolder_item.Items.Add(try_again_item); diff --git a/SparkleShare/Windows/SparkleUI.cs b/SparkleShare/Windows/UserInterface/UserInterface.cs index 31f5ebb..a897e60 100644 --- a/SparkleShare/Windows/SparkleUI.cs +++ b/SparkleShare/Windows/UserInterface/UserInterface.cs @@ -1,5 +1,5 @@ // SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com> +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -19,43 +19,43 @@ using System; using System.Threading; using System.Windows.Forms; -using SparkleLib; +using Sparkles; namespace SparkleShare { - public class SparkleUI { + public class UserInterface { - public SparkleSetup Setup; - public SparkleEventLogWindow EventLog; - public SparkleBubbles Bubbles; - public SparkleStatusIcon StatusIcon; - public SparkleAbout About; - public SparkleNote Note; + public Setup Setup; + public EventLog EventLog; + public Bubbles Bubbles; + public StatusIcon StatusIcon; + public About About; + public Note Note; - static SparkleUI () + static UserInterface () { Application.ThreadException += OnUnhandledException; Application.SetUnhandledExceptionMode (UnhandledExceptionMode.CatchException); } - public SparkleUI () + public UserInterface () { // FIXME: The second time windows are shown, the windows // don't have the smooth ease in animation, but appear abruptly. // The ease out animation always seems to work - Setup = new SparkleSetup (); - EventLog = new SparkleEventLogWindow(); - About = new SparkleAbout (); - Bubbles = new SparkleBubbles (); - StatusIcon = new SparkleStatusIcon (); - Note = new SparkleNote (); + Setup = new Setup (); + EventLog = new EventLog(); + About = new About (); + Bubbles = new Bubbles (); + StatusIcon = new StatusIcon (); + Note = new Note (); - Program.Controller.UIHasLoaded (); + SparkleShare.Controller.UIHasLoaded (); } - public void Run () + public void Run (string [] args) { Application.Run (); StatusIcon.Dispose (); @@ -64,7 +64,7 @@ namespace SparkleShare { private static void OnUnhandledException (object sender, ThreadExceptionEventArgs exception_args) { try { - SparkleLogger.WriteCrashReport (exception_args.Exception); + Logger.WriteCrashReport (exception_args.Exception); } finally { Environment.Exit (-1); } diff --git a/SparkleShare/Windows/SparkleUIHelpers.cs b/SparkleShare/Windows/UserInterface/UserInterfaceHelpers.cs index ff289c8..a76e4d5 100644 --- a/SparkleShare/Windows/SparkleUIHelpers.cs +++ b/SparkleShare/Windows/UserInterface/UserInterfaceHelpers.cs @@ -1,5 +1,5 @@ // SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com> +// Copyright (C) 2010 Hylke Bons <hi@planetpeanut.uk> // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -18,8 +18,6 @@ using System; using System.IO; using System.Reflection; -using System.Windows; -using System.Windows.Controls; using System.Windows.Media; using System.Windows.Media.Imaging; @@ -27,7 +25,7 @@ using Drawing = System.Drawing; namespace SparkleShare { - public static class SparkleUIHelpers { + public static class UserInterfaceHelpers { public static string ToHex (this Drawing.Color color) { @@ -44,7 +42,7 @@ namespace SparkleShare { public static BitmapFrame GetImageSource (string name, string type) { Assembly assembly = Assembly.GetExecutingAssembly(); - Stream image_stream = assembly.GetManifestResourceStream("SparkleShare.Pixmaps." + name + "." + type); + Stream image_stream = assembly.GetManifestResourceStream("SparkleShare.Windows.Images." + name + "." + type); return BitmapFrame.Create(image_stream); } @@ -62,7 +60,7 @@ namespace SparkleShare { public static Drawing.Bitmap GetBitmap (string name) { Assembly assembly = Assembly.GetExecutingAssembly (); - Stream image_stream = assembly.GetManifestResourceStream ("SparkleShare.Pixmaps." + name + ".png"); + Stream image_stream = assembly.GetManifestResourceStream ("SparkleShare.Windows.Images." + name + ".png"); return (Drawing.Bitmap) Drawing.Bitmap.FromStream (image_stream); } @@ -71,7 +69,7 @@ namespace SparkleShare { { Assembly assembly = Assembly.GetExecutingAssembly (); StreamReader html_reader = new StreamReader ( - assembly.GetManifestResourceStream ("SparkleShare.HTML." + name)); + assembly.GetManifestResourceStream ("SparkleShare.Windows.HTML." + name)); return html_reader.ReadToEnd (); } diff --git a/SparkleShare/Windows/app.config b/SparkleShare/Windows/app.config new file mode 100644 index 0000000..51278a4 --- /dev/null +++ b/SparkleShare/Windows/app.config @@ -0,0 +1,3 @@ +<?xml version="1.0" encoding="utf-8"?> +<configuration> +<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup></configuration> diff --git a/SparkleShare/Windows/build.cmd b/SparkleShare/Windows/build.cmd index e01316c..2cae645 100644 --- a/SparkleShare/Windows/build.cmd +++ b/SparkleShare/Windows/build.cmd @@ -6,7 +6,7 @@ if not exist %msbuild% set msbuild="%WinDirNet%\v4.0.30319\msbuild.exe" set wixBinDir=%WIX%\bin if not exist ..\..\bin mkdir ..\..\bin -copy Pixmaps\sparkleshare-app.ico ..\..\bin\ +copy Images\sparkleshare-app.ico ..\..\bin\ %msbuild% /t:Rebuild /p:Configuration=Release /p:Platform="Any CPU" "%~dp0\SparkleShare.sln" diff --git a/SparkleShare/Windows/packages.config b/SparkleShare/Windows/packages.config new file mode 100644 index 0000000..6c3600d --- /dev/null +++ b/SparkleShare/Windows/packages.config @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<packages> + <package id="DeltaCompressionDotNet" version="1.0.0" targetFramework="net45" /> + <package id="Mono.Cecil" version="0.9.6.1" targetFramework="net45" /> + <package id="Splat" version="1.6.2" targetFramework="net45" /> + <package id="squirrel.windows" version="1.5.2" targetFramework="net45" /> +</packages>
\ No newline at end of file |