Browse Source

Merge branch 'v1' of github.com:VCVRack/Rack into v1

pull/1474/head
Mark Sanders 5 years ago
parent
commit
a356b93e69
29 changed files with 182 additions and 633 deletions
  1. +5
    -2
      CHANGELOG.md
  2. +77
    -0
      CODE-OF-CONDUCT.md
  3. +1
    -1
      Core.json
  4. +5
    -5
      LICENSE.md
  5. +5
    -5
      Makefile
  6. +24
    -11
      dep/Makefile
  7. +1
    -0
      include/asset.hpp
  8. +6
    -0
      include/componentlibrary.hpp
  9. +0
    -2
      include/network.hpp
  10. +0
    -2
      res/ComponentLibrary/LICENSE.txt
  11. +0
    -3
      res/Core/LICENSE.txt
  12. +0
    -12
      res/icons/LICENSE.md
  13. +0
    -61
      res/icons/noun_1084369_cc.svg
  14. +0
    -47
      res/icons/noun_1240789_cc.svg
  15. +0
    -71
      res/icons/noun_1343811_cc.svg
  16. +0
    -71
      res/icons/noun_1343816_cc.svg
  17. +0
    -56
      res/icons/noun_146097_cc.svg
  18. +0
    -57
      res/icons/noun_1745061_cc.svg
  19. +0
    -62
      res/icons/noun_305536_cc.svg
  20. +0
    -47
      res/icons/noun_31859_cc.svg
  21. +0
    -56
      res/icons/noun_468341_cc.svg
  22. +9
    -9
      src/app/ModuleBrowser.cpp
  23. +2
    -0
      src/asset.cpp
  24. +2
    -3
      src/logger.cpp
  25. +12
    -12
      src/main.cpp
  26. +1
    -35
      src/network.cpp
  27. +2
    -1
      src/patch.cpp
  28. +1
    -1
      src/plugin.cpp
  29. +29
    -1
      src/system.cpp

+ 5
- 2
CHANGELOG.md View File

@@ -2,11 +2,14 @@


In this document, Mod is Ctrl on Windows/Linux and Cmd on Mac. In this document, Mod is Ctrl on Windows/Linux and Cmd on Mac.


### 1.2.0 (in development)
- Enable app notarization on Mac, removing the "Apple cannot check for malicious software" message on launch.
### 1.1.2 (2019-07-20)
- Add app notarization on Mac, which removes the "Apple cannot check for malicious software" message on launch.
- Write stack trace to log.txt and display dialog box when Rack crashes.
- Re-enable JACK MIDI driver on Linux. - Re-enable JACK MIDI driver on Linux.
- Fix scroll speed for mice and trackpads on Mac. - Fix scroll speed for mice and trackpads on Mac.
- Fix undo history bug when dragging patch file to the Rack window. - Fix undo history bug when dragging patch file to the Rack window.
- Fix crash when pasting presets to an empty rack space with Mod-V.
- Fix module expanders being assigned incorrectly when loading presets.
- Add check for duplicate port IDs for modules. - Add check for duplicate port IDs for modules.


### 1.1.1 (2019-07-01) ### 1.1.1 (2019-07-01)


+ 77
- 0
CODE-OF-CONDUCT.md View File

@@ -0,0 +1,77 @@
# Contributor Covenant Code of Conduct

## Our Pledge

In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.

## Our Standards

Examples of behavior that contributes to creating a positive environment
include:

* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members

Examples of unacceptable behavior by participants include:

* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting

## Our Responsibilities

Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.

Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.

## Scope

This Code of Conduct applies within all project spaces, and it also applies when
an individual is representing the project or its community in public spaces.
Examples of representing a project or community include using an official
project e-mail address, posting via an official social media account, or acting
as an appointed representative at an online or offline event. Representation of
a project may be further defined and clarified by project maintainers.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at contact@vcvrack.com. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.

Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html

[homepage]: https://www.contributor-covenant.org

For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq


+ 1
- 1
Core.json View File

@@ -1,7 +1,7 @@
{ {
"slug": "Core", "slug": "Core",
"name": "Core", "name": "Core",
"version": "1.0.0",
"version": "1.1.2",
"license": "GPL-3.0-only", "license": "GPL-3.0-only",
"author": "VCV", "author": "VCV",
"brand": "VCV", "brand": "VCV",


+ 5
- 5
LICENSE.md View File

@@ -12,19 +12,19 @@ All VCV Rack **source code** is copyright © 2019 Andrew Belt and licensed under


This means that non-commercial plugins do not need to be licensed under the GPLv3 and can be released under any license of your choice (open-source or proprietary freeware). However, plugins that copy a significant portion of non-API source code from Rack must be licensed under GPLv3. This means that non-commercial plugins do not need to be licensed under the GPLv3 and can be released under any license of your choice (open-source or proprietary freeware). However, plugins that copy a significant portion of non-API source code from Rack must be licensed under GPLv3.


If you wish to release a proprietary commercial plugin, email contact@vcvrack.com for commercial licensing. A commercial license is included for plugins sold in the [VCV Plugin Manager](https://vcvrack.com/plugins.html).
If you wish to release a proprietary commercial plugin, email contact@vcvrack.com for commercial licensing. A commercial license is included for plugins sold in the [VCV Library](https://vcvrack.com/plugins.html).


--- ---


Licenses of **third-party libraries** are listed in [LICENSE-dist.txt](LICENSE-dist.txt). Licenses of **third-party libraries** are listed in [LICENSE-dist.txt](LICENSE-dist.txt).


The **Component Library graphics** in the `res/ComponentLibrary` directory are copyright © 2019 [Grayscale](http://grayscale.info/) and licensed under [CC BY-NC 4.0](https://creativecommons.org/licenses/by-nc/4.0/). The **Component Library graphics** in the `res/ComponentLibrary` directory are copyright © 2019 [Grayscale](http://grayscale.info/) and licensed under [CC BY-NC 4.0](https://creativecommons.org/licenses/by-nc/4.0/).
You may not freely sell plugins using Component Library graphics.
However, a free commercial license is available for plugins sold through the [VCV Plugin Manager](https://vcvrack.com/plugins.html).
Email contact@vcvrack.com for more information about licensing or the VCV Plugin Manager.
This means you may not freely sell plugins using Component Library graphics.
However, a free commercial license is available for plugins sold through the [VCV Library](https://vcvrack.com/plugins.html).
Email contact@vcvrack.com for more information about licensing or the VCV Library.


The **Core panel graphics** in the `res/Core` directory are copyright © 2019 [Grayscale](http://grayscale.info/) and licensed under [CC BY-NC-ND 4.0](https://creativecommons.org/licenses/by-nc-nd/4.0/). The **Core panel graphics** in the `res/Core` directory are copyright © 2019 [Grayscale](http://grayscale.info/) and licensed under [CC BY-NC-ND 4.0](https://creativecommons.org/licenses/by-nc-nd/4.0/).
You may not distribute modified adaptations of these graphics.
This means you may not distribute modified adaptations of these graphics.


The **VCV logo and icon** are copyright © 2017 Andrew Belt and may not be used in derivative works. The **VCV logo and icon** are copyright © 2017 Andrew Belt and may not be used in derivative works.




+ 5
- 5
Makefile View File

@@ -1,6 +1,6 @@
RACK_DIR ?= . RACK_DIR ?= .
VERSION := 1.dev.$(shell git rev-parse --short HEAD)
# VERSION := 1.1.1
# VERSION := 1.dev.$(shell git rev-parse --short HEAD)
VERSION := 1.1.2


FLAGS += -DVERSION=$(VERSION) FLAGS += -DVERSION=$(VERSION)
FLAGS += -Iinclude -Idep/include FLAGS += -Iinclude -Idep/include
@@ -38,8 +38,8 @@ endif
ifdef ARCH_WIN ifdef ARCH_WIN
SOURCES += dep/osdialog/osdialog_win.c SOURCES += dep/osdialog/osdialog_win.c
LDFLAGS += -Wl,--export-all-symbols,--out-implib,libRack.a -mwindows \ LDFLAGS += -Wl,--export-all-symbols,--out-implib,libRack.a -mwindows \
dep/lib/libglew32.a dep/lib/libglfw3.a dep/lib/libjansson.a dep/lib/libspeexdsp.a dep/lib/libzip.a dep/lib/libz.a dep/lib/libcurl.a dep/lib/libssl.a dep/lib/libcrypto.a dep/lib/librtaudio.a dep/lib/librtmidi.a \
-lpthread -lopengl32 -lgdi32 -lws2_32 -lcomdlg32 -lole32 -ldsound -lwinmm -lksuser -lshlwapi -lmfplat -lmfuuid -lwmcodecdspuuid -ldbghelp
dep/lib/libglew32.a dep/lib/libglfw3.a dep/lib/libjansson.a dep/lib/libspeexdsp.a dep/lib/libzip.a dep/lib/libz.a dep/lib/libcurl.a dep/lib/librtaudio.a dep/lib/librtmidi.a \
-lpthread -lopengl32 -lgdi32 -lws2_32 -lcomdlg32 -lole32 -lcrypt32 -ldsound -lwinmm -lksuser -lshlwapi -lmfplat -lmfuuid -lwmcodecdspuuid -ldbghelp
TARGET := Rack.exe TARGET := Rack.exe
OBJECTS += Rack.res OBJECTS += Rack.res
endif endif
@@ -130,7 +130,6 @@ ifdef ARCH_MAC
# This will only work if you have the private key to my certificate # This will only work if you have the private key to my certificate
codesign --verbose --sign "Developer ID Application: Andrew Belt (VRF26934X5)" --options runtime --entitlements Entitlements.plist --deep dist/$(TARGET).app codesign --verbose --sign "Developer ID Application: Andrew Belt (VRF26934X5)" --options runtime --entitlements Entitlements.plist --deep dist/$(TARGET).app
codesign --verify --deep --strict --verbose=2 dist/$(TARGET).app codesign --verify --deep --strict --verbose=2 dist/$(TARGET).app
# spctl --assess --type execute --ignore-cache --no-cache -vv dist/$(TARGET).app
# Make ZIP # Make ZIP
cd dist && zip -q -9 -r Rack-$(VERSION)-$(ARCH).zip $(TARGET).app cd dist && zip -q -9 -r Rack-$(VERSION)-$(ARCH).zip $(TARGET).app
endif endif
@@ -171,6 +170,7 @@ ifdef ARCH_MAC
xcrun altool --notarize-app -f dist/Rack-$(VERSION)-$(ARCH).zip --primary-bundle-id=com.vcvrack.rack -u "andrewpbelt@gmail.com" -p @keychain:notarize --output-format xml > dist/UploadInfo.plist xcrun altool --notarize-app -f dist/Rack-$(VERSION)-$(ARCH).zip --primary-bundle-id=com.vcvrack.rack -u "andrewpbelt@gmail.com" -p @keychain:notarize --output-format xml > dist/UploadInfo.plist
# Wait for Apple's servers to approve the app # Wait for Apple's servers to approve the app
while true; do \ while true; do \
echo "Waiting on Apple servers..." ; \
xcrun altool --notarization-info `/usr/libexec/PlistBuddy -c "Print :notarization-upload:RequestUUID" dist/UploadInfo.plist` -u "andrewpbelt@gmail.com" -p @keychain:notarize --output-format xml > dist/RequestInfo.plist ; \ xcrun altool --notarization-info `/usr/libexec/PlistBuddy -c "Print :notarization-upload:RequestUUID" dist/UploadInfo.plist` -u "andrewpbelt@gmail.com" -p @keychain:notarize --output-format xml > dist/RequestInfo.plist ; \
if [ "`/usr/libexec/PlistBuddy -c "Print :notarization-info:Status" dist/RequestInfo.plist`" != "in progress" ]; then \ if [ "`/usr/libexec/PlistBuddy -c "Print :notarization-info:Status" dist/RequestInfo.plist`" != "in progress" ]; then \
break ; \ break ; \


+ 24
- 11
dep/Makefile View File

@@ -119,11 +119,24 @@ curl-7.64.1:
$(UNTAR) curl-7.64.1.tar.gz $(UNTAR) curl-7.64.1.tar.gz
rm curl-7.64.1.tar.gz rm curl-7.64.1.tar.gz


$(libcurl): $(openssl) curl-7.64.1
cd curl-7.64.1 && PKG_CONFIG_PATH= $(CONFIGURE) \
--disable-ftp --disable-file --disable-ldap --disable-ldaps --disable-rtsp --disable-proxy --disable-dict --disable-telnet --disable-tftp --disable-pop3 --disable-imap --disable-smb --disable-smtp --disable-gopher --disable-manual --disable-shared --disable-symbol-hiding \
--without-zlib --without-libpsl --without-libmetalink --without-libssh2 --without-librtmp --without-winidn --without-libidn2 --without-nghttp2 --without-brotli \
--without-ca-bundle --with-ca-fallback --with-ssl="$(DEP_PATH)"
CURL_FLAGS += --disable-ftp --disable-file --disable-ldap --disable-ldaps --disable-rtsp --disable-proxy --disable-dict --disable-telnet --disable-tftp --disable-pop3 --disable-imap --disable-smb --disable-smtp --disable-gopher --disable-manual --disable-shared --disable-symbol-hiding
CURL_FLAGS += --without-zlib --without-libpsl --without-libmetalink --without-libssh2 --without-librtmp --without-winidn --without-libidn2 --without-nghttp2 --without-brotli
ifdef ARCH_LIN
CURL_FLAGS += --with-ssl="$(DEP_PATH)"
CURL_DEPS += $(openssl)
endif
ifdef ARCH_MAC
# Since Rack supports Mac 10.7 but Apple's Secure Transport only supports TLS 1.0 on that OS, use OpenSSL instead.
# CURL_FLAGS += --with-secure-transport
CURL_FLAGS += --with-ssl="$(DEP_PATH)"
CURL_DEPS += $(openssl)
endif
ifdef ARCH_WIN
CURL_FLAGS += --with-schannel --without-ssl
endif

$(libcurl): $(CURL_DEPS) curl-7.64.1
cd curl-7.64.1 && PKG_CONFIG_PATH= $(CONFIGURE) $(CURL_FLAGS)
$(MAKE) -C curl-7.64.1 $(MAKE) -C curl-7.64.1
$(MAKE) -C curl-7.64.1 install $(MAKE) -C curl-7.64.1 install


@@ -163,15 +176,15 @@ rtmidi-4.0.0:
rm rtmidi-4.0.0.tar.gz rm rtmidi-4.0.0.tar.gz


RTMIDI_FLAGS += --enable-shared=no RTMIDI_FLAGS += --enable-shared=no
ifdef ARCH_LIN
RTMIDI_FLAGS += --with-jack --with-alsa
endif
ifdef ARCH_MAC ifdef ARCH_MAC
RTMIDI_FLAGS += --with-core --without-jack RTMIDI_FLAGS += --with-core --without-jack
endif endif
ifdef ARCH_WIN ifdef ARCH_WIN
RTMIDI_FLAGS += --with-winmm RTMIDI_FLAGS += --with-winmm
endif endif
ifdef ARCH_LIN
RTMIDI_FLAGS += --with-jack --with-alsa
endif


$(rtmidi): rtmidi-4.0.0 $(rtmidi): rtmidi-4.0.0
cd rtmidi-4.0.0 && $(CONFIGURE) $(RTMIDI_FLAGS) cd rtmidi-4.0.0 && $(CONFIGURE) $(RTMIDI_FLAGS)
@@ -179,15 +192,15 @@ $(rtmidi): rtmidi-4.0.0
$(MAKE) -C rtmidi-4.0.0 install $(MAKE) -C rtmidi-4.0.0 install


RTAUDIO_FLAGS += -DRTAUDIO_BUILD_STATIC_LIBS=ON RTAUDIO_FLAGS += -DRTAUDIO_BUILD_STATIC_LIBS=ON
ifdef ARCH_LIN
RTAUDIO_FLAGS += -DRTAUDIO_API_ALSA=ON -DRTAUDIO_API_JACK=ON -DRTAUDIO_API_PULSE=OFF -DRTAUDIO_API_OSS=OFF
endif
ifdef ARCH_MAC ifdef ARCH_MAC
RTAUDIO_FLAGS += -DRTAUDIO_API_CORE=ON -DRTAUDIO_API_PULSE=OFF -DRTAUDIO_API_JACK=OFF RTAUDIO_FLAGS += -DRTAUDIO_API_CORE=ON -DRTAUDIO_API_PULSE=OFF -DRTAUDIO_API_JACK=OFF
endif endif
ifdef ARCH_WIN ifdef ARCH_WIN
RTAUDIO_FLAGS += -DRTAUDIO_API_DS=ON -DRTAUDIO_API_WASAPI=ON -DRTAUDIO_API_ASIO=ON RTAUDIO_FLAGS += -DRTAUDIO_API_DS=ON -DRTAUDIO_API_WASAPI=ON -DRTAUDIO_API_ASIO=ON
endif endif
ifdef ARCH_LIN
RTAUDIO_FLAGS += -DRTAUDIO_API_ALSA=ON -DRTAUDIO_API_JACK=ON -DRTAUDIO_API_PULSE=OFF -DRTAUDIO_API_OSS=OFF
endif


$(rtaudio): rtaudio $(rtaudio): rtaudio
cd rtaudio && mkdir -p build cd rtaudio && mkdir -p build


+ 1
- 0
include/asset.hpp View File

@@ -26,6 +26,7 @@ std::string plugin(plugin::Plugin *plugin, std::string filename);
extern std::string systemDir; extern std::string systemDir;
extern std::string userDir; extern std::string userDir;


extern std::string logPath;
extern std::string pluginsPath; extern std::string pluginsPath;
extern std::string settingsPath; extern std::string settingsPath;
extern std::string autosavePath; extern std::string autosavePath;


+ 6
- 0
include/componentlibrary.hpp View File

@@ -447,6 +447,12 @@ struct BlueLight : GrayModuleLightWidget {
} }
}; };


struct WhiteLight : GrayModuleLightWidget {
WhiteLight() {
addBaseColor(SCHEME_WHITE);
}
};

/** Reads two adjacent lightIds, so `lightId` and `lightId + 1` must be defined */ /** Reads two adjacent lightIds, so `lightId` and `lightId + 1` must be defined */
struct GreenRedLight : GrayModuleLightWidget { struct GreenRedLight : GrayModuleLightWidget {
GreenRedLight() { GreenRedLight() {


+ 0
- 2
include/network.hpp View File

@@ -26,8 +26,6 @@ json_t *requestJson(Method method, std::string url, json_t *dataJ);
bool requestDownload(std::string url, const std::string &filename, float *progress); bool requestDownload(std::string url, const std::string &filename, float *progress);
/** URL-encodes `s` */ /** URL-encodes `s` */
std::string encodeUrl(const std::string &s); std::string encodeUrl(const std::string &s);
/** Computes the SHA256 of the file at `filename` */
std::string computeSHA256File(const std::string &filename);
/** Gets the path portion of the URL. */ /** Gets the path portion of the URL. */
std::string urlPath(const std::string &url); std::string urlPath(const std::string &url);




+ 0
- 2
res/ComponentLibrary/LICENSE.txt View File

@@ -1,2 +0,0 @@
Component Library graphics by Grayscale (http://grayscale.info/)
Licensed under CC BY-NC 4.0 (https://creativecommons.org/licenses/by-nc/4.0/)

+ 0
- 3
res/Core/LICENSE.txt View File

@@ -1,3 +0,0 @@
Core panel and VCV logo design © 2018 by Grayscale

Derivative works may not use Core panel and VCV logo design.

+ 0
- 12
res/icons/LICENSE.md View File

@@ -1,12 +0,0 @@
All icons are licensed under CC BY 3.0.
https://creativecommons.org/licenses/by/3.0/
https://thenounproject.com/

Paper by Madeleine Bennett from the Noun Project
Folder by Icon Solid from the Noun Project
Save by Landan Lloyd from the Noun Project
Cat by Nabilauzwa from the Noun Project
Stopwatch by Arthur Shlain from the Noun Project
Sound by Gregor Cresnar from the Noun Project
Refresh by un·delivered from the Noun Project
Lock by Andres Gleixner from the Noun Project

+ 0
- 61
res/icons/noun_1084369_cc.svg View File

@@ -1,61 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
data-name="Your Icon"
viewBox="0 0 16 16"
x="0px"
y="0px"
version="1.1"
id="svg53"
sodipodi:docname="noun_1084369_cc.svg"
width="16"
height="16"
inkscape:version="0.92.2 2405546, 2018-03-11">
<metadata
id="metadata59">
<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>Cycles</dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs57" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1600"
inkscape:window-height="900"
id="namedview55"
showgrid="false"
inkscape:zoom="2.784"
inkscape:cx="27.43027"
inkscape:cy="86.426288"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg53" />
<title
id="title45">Cycles</title>
<path
d="M 9.0117134,7.367368 11.174158,5.206575 a 4.1778634,4.1778634 0 1 0 0.728524,4.460353 h 1.90804 0.01652 q -0.0413,0.15033 -0.09416,0.297357 A 6,6 0 1 1 12.462704,3.919681 l 1.473568,-1.473568 v 4.921255 z"
id="path47"
inkscape:connector-curvature="0"
style="stroke-width:0.16519824;fill:#b4b4b4;fill-opacity:1" />
</svg>

+ 0
- 47
res/icons/noun_1240789_cc.svg View File

@@ -1,47 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
x="0px"
y="0px"
viewBox="0 0 16 16"
xml:space="preserve"
id="svg9404"
sodipodi:docname="noun_1240789_cc.svg"
width="16"
height="16"
inkscape:version="0.92.2 2405546, 2018-03-11"><metadata
id="metadata9410"><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>111all</dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs9408" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1600"
inkscape:window-height="900"
id="namedview9406"
showgrid="false"
inkscape:zoom="1.888"
inkscape:cx="50"
inkscape:cy="62.5"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg9404" /><title
id="title9396">111all</title><path
d="M 9.324675,3.5188325 C 9.041322,3.1363055 8.517119,3.0654675 8.134593,3.3346525 7.978749,3.4479935 7.865407,3.6180055 7.822904,3.8021855 L 6.292798,9.5400835 5.159386,7.1457505 C 5.01771,6.8482295 4.720189,6.6640505 4.3943329,6.6640505 H 2 v 1.700118 H 3.8559622 L 5.754427,12.345278 c 0.141677,0.297521 0.439198,0.4817 0.765054,0.4817 h 0.07084 c 0.354191,-0.02833 0.651712,-0.283353 0.736718,-0.623377 l 1.671782,-6.2621005 1.530107,2.068477 c 0.155844,0.212515 0.410861,0.340023 0.680047,0.340023 H 14 v -1.700118 h -2.337662 z"
id="path9398"
inkscape:connector-curvature="0"
style="fill:#b4b4b4;fill-opacity:1;stroke-width:0.1416765" /></svg>

+ 0
- 71
res/icons/noun_1343811_cc.svg View File

@@ -1,71 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 16 16"
version="1.1"
x="0px"
y="0px"
id="svg5499"
sodipodi:docname="noun_1343811_cc.svg"
width="16"
height="16"
inkscape:version="0.92.2 2405546, 2018-03-11">
<metadata
id="metadata5505">
<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>7.3</dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs5503" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1600"
inkscape:window-height="900"
id="namedview5501"
showgrid="false"
inkscape:zoom="1.888"
inkscape:cx="-36.334746"
inkscape:cy="62.5"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg5499" />
<title
id="title5485">7.3</title>
<desc
id="desc5487">Created with Sketch.</desc>
<g
id="g5493"
transform="matrix(0.3,0,0,0.3,-7,-7)"
style="fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1">
<g
id="g5491"
style="fill:#b4b4b4;fill-opacity:1">
<path
d="m 42,31 v 10 0 c 0,0.552285 0.447715,1 1,1 h 14 v 0 c 0.552285,0 1,-0.447715 1,-1 v -10 0 c 0,-0.552285 0.447715,-1 1,-1 h 2.171573 v 0 c 0.530433,0 1.039141,0.210714 1.414213,0.585786 l 6.828428,6.828428 v 0 C 69.789286,37.789286 70,38.297994 70,38.828427 V 68 68 c 0,1.104569 -0.895431,2 -2,2 H 32 v 0 c -1.10457,0 -2,-0.895431 -2,-2 v -36 0 c 0,-1.10457 0.89543,-2 2,-2 h 9 v 0 c 0.552285,0 1,0.447715 1,1 z m 9,-1 h 2 v 0 c 0.552285,0 1,0.447715 1,1 v 6 0 c 0,0.552285 -0.447715,1 -1,1 h -2 v 0 c -0.552285,0 -1,-0.447715 -1,-1 v -6 0 c 0,-0.552285 0.447715,-1 1,-1 z m -8,26 v 0 0 c 0,3.865993 3.134007,7 7,7 v 0 0 c 3.865993,0 7,-3.134007 7,-7 v 0 0 c 0,-3.865993 -3.134007,-7 -7,-7 v 0 0 c -3.865993,0 -7,3.134007 -7,7 z"
id="path5489"
inkscape:connector-curvature="0"
style="fill:#b4b4b4;fill-opacity:1" />
</g>
</g>
</svg>

+ 0
- 71
res/icons/noun_1343816_cc.svg View File

@@ -1,71 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 16 16"
version="1.1"
x="0px"
y="0px"
id="svg4854"
sodipodi:docname="noun_1343816_cc.svg"
width="16"
height="16"
inkscape:version="0.92.2 2405546, 2018-03-11">
<metadata
id="metadata4860">
<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>8.3</dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs4858" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1600"
inkscape:window-height="900"
id="namedview4856"
showgrid="false"
inkscape:zoom="1.888"
inkscape:cx="-36.334746"
inkscape:cy="62.5"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg4854" />
<title
id="title4840">8.3</title>
<desc
id="desc4842">Created with Sketch.</desc>
<g
id="g4848"
transform="matrix(0.3,0,0,0.3,-7,-7)"
style="fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1">
<g
id="g4846"
style="fill:#b4b4b4;fill-opacity:1">
<path
d="m 42,31 v 10 0 c 0,0.552285 0.447715,1 1,1 h 14 v 0 c 0.552285,0 1,-0.447715 1,-1 v -10 0 c 0,-0.552285 0.447715,-1 1,-1 h 2.171573 v 0 c 0.530433,0 1.039141,0.210714 1.414213,0.585786 l 6.828428,6.828428 v 0 C 69.789286,37.789286 70,38.297994 70,38.828427 V 68 68 c 0,1.104569 -0.895431,2 -2,2 H 32 v 0 c -1.10457,0 -2,-0.895431 -2,-2 v -36 0 c 0,-1.10457 0.89543,-2 2,-2 h 9 v 0 c 0.552285,0 1,0.447715 1,1 z m 9,-1 h 2 v 0 c 0.552285,0 1,0.447715 1,1 v 6 0 c 0,0.552285 -0.447715,1 -1,1 h -2 v 0 c -0.552285,0 -1,-0.447715 -1,-1 v -6 0 c 0,-0.552285 0.447715,-1 1,-1 z"
id="path4844"
inkscape:connector-curvature="0"
style="fill:#b4b4b4;fill-opacity:1" />
</g>
</g>
</svg>

+ 0
- 56
res/icons/noun_146097_cc.svg View File

@@ -1,56 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
x="0px"
y="0px"
viewBox="0 0 16 16"
enable-background="new 0 0 90 90"
xml:space="preserve"
id="svg12754"
sodipodi:docname="noun_146097_cc.svg"
width="16"
height="16"
inkscape:version="0.92.2 2405546, 2018-03-11"><metadata
id="metadata12760"><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><defs
id="defs12758" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1600"
inkscape:window-height="882"
id="namedview12756"
showgrid="false"
inkscape:zoom="2.0977778"
inkscape:cx="-32.701271"
inkscape:cy="56.25"
inkscape:window-x="0"
inkscape:window-y="18"
inkscape:window-maximized="0"
inkscape:current-layer="svg12754" /><path
stroke-miterlimit="10"
d="M 8.0000005,3.115294"
id="path12744"
style="fill:#b4b4b4;fill-opacity:1;stroke:#000000;stroke-width:0.14117648;stroke-miterlimit:10"
inkscape:connector-curvature="0" /><path
d="M 12.531765,13.195294 V 6.122353 l -3.4164705,0.01412 c -0.465883,-2e-6 -0.847059,-0.381179 -0.847059,-0.847061 V 2 H 4.1317645 C 3.7647065,2 3.4682355,2.296471 3.4682355,2.663529 V 13.195294 C 3.4682355,13.632941 3.8211765,14 4.2729415,14 h 7.4541175 c 0.437647,0 0.804705,-0.367059 0.804706,-0.804706 z"
id="path12746"
style="fill:#b4b4b4;fill-opacity:1;stroke-width:0.14117648"
inkscape:connector-curvature="0" /><path
d="m 8.8188235,2.042353 v 3.063529 c 0,0.254118 0.211765,0.465883 0.465883,0.465883 h 3.1905885 z"
id="path12748"
style="fill:#b4b4b4;fill-opacity:1;stroke-width:0.14117648"
inkscape:connector-curvature="0" /></svg>

+ 0
- 57
res/icons/noun_1745061_cc.svg View File

@@ -1,57 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xml:space="preserve"
version="1.1"
style="clip-rule:evenodd;fill-rule:evenodd;image-rendering:optimizeQuality;shape-rendering:geometricPrecision;text-rendering:geometricPrecision"
viewBox="0 0 16 16"
x="0px"
y="0px"
id="svg3034"
sodipodi:docname="noun_1745061_cc.svg"
width="16"
height="16"
inkscape:version="0.92.2 2405546, 2018-03-11"><metadata
id="metadata3038"><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><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1600"
inkscape:window-height="900"
id="namedview3036"
showgrid="false"
inkscape:zoom="2.9385214"
inkscape:cx="24.568026"
inkscape:cy="49.947022"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg3034" /><defs
id="defs3024"><style
type="text/css"
id="style3022">
.fil0 {fill:black}
</style></defs><g
id="g3028"
transform="matrix(0.04669261,0,0,0.04669261,2.6002034,1.9999996)"
style="fill:#b4b4b4;fill-opacity:1"><path
class="fil0"
d="M 57,228 C -2,177 107,127 84,71 71,41 32,31 8,52 -7,64 2,79 17,69 34,55 56,62 64,81 c 12,29 -36,75 -43,102 -8,27 12,74 49,74 h 74 c 0,-9 -4,-13 -12,-14 20,-18 23,-40 1,-67 24,20 25,51 10,66 7,4 8,10 9,15 h 29 c -3,-4 -6,-8 -11,-10 -3,-50 25,-65 34,-94 6,-23 -3,-47 -10,-67 11,-8 25,6 37,-16 -10,-16 -5,-38 -26,-44 -4,-10 1,-17 6,-26 -52,18 -60,31 -65,73 -8,56 -22,34 -61,63 -37,27 -29,57 -28,92 z"
id="path3026"
inkscape:connector-curvature="0"
style="fill:#b4b4b4;fill-opacity:1" /></g></svg>

+ 0
- 62
res/icons/noun_305536_cc.svg View File

@@ -1,62 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
x="0px"
y="0px"
viewBox="0 0 16 16"
enable-background="new 0 0 100 100"
xml:space="preserve"
id="svg11502"
sodipodi:docname="noun_305536_cc.svg"
width="16"
height="16"
inkscape:version="0.92.2 2405546, 2018-03-11"><metadata
id="metadata11508"><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><defs
id="defs11506" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1600"
inkscape:window-height="882"
id="namedview11504"
showgrid="false"
inkscape:zoom="5.3400704"
inkscape:cx="46.20989"
inkscape:cy="9.786758"
inkscape:window-x="0"
inkscape:window-y="18"
inkscape:window-maximized="0"
inkscape:current-layer="svg11502" /><path
d="M 8.666667,4.04 V 3.333333 H 9.333333 V 2 H 6.666667 V 3.333333 H 7.333333 V 4.04 C 4.893333,4.373333 3,6.466667 3,9 c 0,2.76 2.24,5 5,5 2.76,0 5,-2.24 5,-5 C 13,6.466667 11.106667,4.373333 8.666667,4.04 Z M 8,12.666667 c -2.026667,0 -3.666667,-1.64 -3.666667,-3.666667 0,-2.026667 1.64,-3.666667 3.666667,-3.666667 2.026667,0 3.666667,1.64 3.666667,3.666667 0,2.026667 -1.64,3.666667 -3.666667,3.666667 z"
id="path11490"
inkscape:connector-curvature="0"
style="fill:#b4b4b4;fill-opacity:1;stroke-width:0.13333334" /><path
d="M 3.013333,4.08 3.96,5.013333 C 4.493333,4.466667 5.12,4.053333 5.826667,3.76 L 5.32,2.533333 c -0.866667,0.36 -1.653333,0.88 -2.306667,1.546667 z"
id="path11492"
inkscape:connector-curvature="0"
style="fill:#b4b4b4;fill-opacity:1;stroke-width:0.13333334" /><path
d="m 12.92,4.013333 c -0.653333,-0.64 -1.4,-1.133333 -2.24,-1.48 L 10.173333,3.76 c 0.68,0.28 1.293334,0.68 1.813334,1.2 z"
id="path11494"
inkscape:connector-curvature="0"
style="fill:#b4b4b4;fill-opacity:1;stroke-width:0.13333334" /><rect
x="-12.687092"
y="-0.70676142"
transform="rotate(-135.00405)"
width="1.3334148"
height="2.8268394"
id="rect11496"
style="fill:#b4b4b4;fill-opacity:1;stroke-width:0.13334148" /></svg>

+ 0
- 47
res/icons/noun_31859_cc.svg View File

@@ -1,47 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
x="0px"
y="0px"
viewBox="0 0 16 16"
enable-background="new 0 0 512 512"
xml:space="preserve"
id="svg10862"
sodipodi:docname="noun_31859_cc.svg"
width="16"
height="16"
inkscape:version="0.92.2 2405546, 2018-03-11"><metadata
id="metadata10868"><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><defs
id="defs10866" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1600"
inkscape:window-height="882"
id="namedview10864"
showgrid="false"
inkscape:zoom="0.36875"
inkscape:cx="212.61017"
inkscape:cy="271.18644"
inkscape:window-x="0"
inkscape:window-y="18"
inkscape:window-maximized="0"
inkscape:current-layer="svg10862" /><path
d="m 13.957459,7.579605 -1.650881,4.54537 H 3.2451096 l 1.7050678,-4.54757 c 0.1450069,-0.38599 0.6013088,-0.7024 1.0136657,-0.7024 h 7.4999549 c 0.412357,0 0.635012,0.31713 0.493661,0.7046 z m -11.2301744,3.79099 1.5212251,-4.05614 c 0.2534282,-0.67823 0.990955,-1.18944 1.7153334,-1.18944 h 6.5360939 c 0,-0.41456 -0.335459,-0.75 -0.749996,-0.75 H 6.4999727 L 5.7499772,3.875025 H 2.7499954 c -0.41456,0 -0.7499955,0.33546 -0.7499955,0.75 v 5.99996 c 0,0.4065 0.3237168,0.73242 0.7272847,0.74561 z"
id="path10856"
inkscape:connector-curvature="0"
style="fill:#b4b4b4;fill-opacity:1;stroke-width:0.02343736" /></svg>

+ 0
- 56
res/icons/noun_468341_cc.svg View File

@@ -1,56 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
x="0px"
y="0px"
viewBox="-7074.5 3413.5 16 16"
enable-background="new -7074.5 3413.5 24 24"
xml:space="preserve"
id="svg12"
sodipodi:docname="noun_468341_cc.svg"
width="16"
height="16"
inkscape:version="0.92.2 2405546, 2018-03-11"><metadata
id="metadata18"><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><defs
id="defs16" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1600"
inkscape:window-height="882"
id="namedview14"
showgrid="false"
inkscape:zoom="7.8666667"
inkscape:cx="-9.7372881"
inkscape:cy="15"
inkscape:window-x="0"
inkscape:window-y="18"
inkscape:window-maximized="0"
inkscape:current-layer="svg12" /><g
id="g6"
transform="matrix(0.49999833,0,0,0.49999833,-3535.2618,1708.7557)"
style="fill:#b4b4b4;fill-opacity:1"><path
d="m -7066.5,3420.5 c 0,-2 1.054,-4.287 4,-4.287 2.973,0 4,2.287 4,4.287 v 3 h 3 v -3.509 c 0,-3.491 -3.196,-6.478 -7,-6.491 -4.063,-0.018 -7.002,2.991 -7,7 -0.01,0.084 0,3 0,3 h 3 z"
id="path2"
inkscape:connector-curvature="0"
style="fill:#b4b4b4;fill-opacity:1" /><rect
x="-7071.5"
y="3424.5"
width="18"
height="13"
id="rect4"
style="fill:#b4b4b4;fill-opacity:1" /></g></svg>

+ 9
- 9
src/app/ModuleBrowser.cpp View File

@@ -249,16 +249,16 @@ struct ModelBox : widget::OpaqueWidget {
std::string text; std::string text;
text = model->plugin->brand; text = model->plugin->brand;
text += " " + model->name; text += " " + model->name;
if (model->description != "")
text += "\n" + model->description;
// Tags // Tags
if (!model->tags.empty()) {
text += "\nTags: ";
for (size_t i = 0; i < model->tags.size(); i++) {
if (i > 0)
text += ", ";
text += model->tags[i];
}
text += "\nTags: ";
for (size_t i = 0; i < model->tags.size(); i++) {
if (i > 0)
text += ", ";
text += model->tags[i];
}
// Description
if (model->description != "") {
text += "\n" + model->description;
} }
ui::Tooltip *tooltip = new ui::Tooltip; ui::Tooltip *tooltip = new ui::Tooltip;
tooltip->text = text; tooltip->text = text;


+ 2
- 0
src/asset.cpp View File

@@ -112,6 +112,7 @@ void init() {
templatePath = userDir + "/template.vcv"; templatePath = userDir + "/template.vcv";
} }
else { else {
logPath = userDir + "/log.txt";
pluginsPath = userDir + "/plugins-v" + app::ABI_VERSION; pluginsPath = userDir + "/plugins-v" + app::ABI_VERSION;
settingsPath = userDir + "/settings-v" + app::ABI_VERSION + ".json"; settingsPath = userDir + "/settings-v" + app::ABI_VERSION + ".json";
autosavePath = userDir + "/autosave-v" + app::ABI_VERSION + ".vcv"; autosavePath = userDir + "/autosave-v" + app::ABI_VERSION + ".vcv";
@@ -139,6 +140,7 @@ std::string plugin(plugin::Plugin *plugin, std::string filename) {
std::string systemDir; std::string systemDir;
std::string userDir; std::string userDir;


std::string logPath;
std::string pluginsPath; std::string pluginsPath;
std::string settingsPath; std::string settingsPath;
std::string autosavePath; std::string autosavePath;


+ 2
- 3
src/logger.cpp View File

@@ -21,10 +21,9 @@ void init() {
return; return;
} }


std::string logFilename = asset::user("log.txt");
outputFile = fopen(logFilename.c_str(), "w");
outputFile = fopen(asset::logPath.c_str(), "w");
if (!outputFile) { if (!outputFile) {
fprintf(stderr, "Could not open log at %s\n", logFilename.c_str());
fprintf(stderr, "Could not open log at %s\n", asset::logPath.c_str());
} }
} }




+ 12
- 12
src/main.cpp View File

@@ -22,7 +22,6 @@
#include <thread> #include <thread>
#include <unistd.h> // for getopt #include <unistd.h> // for getopt
#include <signal.h> // for signal #include <signal.h> // for signal

#if defined ARCH_WIN #if defined ARCH_WIN
#include <windows.h> // for CreateMutex #include <windows.h> // for CreateMutex
#endif #endif
@@ -31,18 +30,19 @@ using namespace rack;




static void fatalSignalHandler(int sig) { static void fatalSignalHandler(int sig) {
// Only catch one signal
static bool caught = false;
bool localCaught = caught;
caught = true;
if (localCaught)
exit(1);
// Ignore this signal to avoid recursion.
signal(sig, NULL);
// Ignore abort() since we call it below.
signal(SIGABRT, NULL);


FATAL("Fatal signal %d. Stack trace:\n%s", sig, system::getStackTrace().c_str()); FATAL("Fatal signal %d. Stack trace:\n%s", sig, system::getStackTrace().c_str());


// osdialog_message(OSDIALOG_ERROR, OSDIALOG_OK, "Rack has crashed. See log.txt for details.");
// This might fail because we might not be in the main thread.
// But oh well, we're crashing anyway.
std::string text = app::APP_NAME + " has crashed. See " + asset::logPath + " for details.";
osdialog_message(OSDIALOG_ERROR, OSDIALOG_OK, text.c_str());


exit(1);
abort();
} }




@@ -56,6 +56,9 @@ int main(int argc, char *argv[]) {
exit(1); exit(1);
} }
(void) instanceMutex; (void) instanceMutex;

// Don't display "Assertion failed!" dialog message.
_set_error_mode(_OUT_TO_STDERR);
#endif #endif


std::string patchPath; std::string patchPath;
@@ -98,8 +101,6 @@ int main(int argc, char *argv[]) {
logger::init(); logger::init();


// We can now install a signal handler and log the output // We can now install a signal handler and log the output
// Mac has its own decent crash handler
#if 0
if (!settings::devMode) { if (!settings::devMode) {
signal(SIGABRT, fatalSignalHandler); signal(SIGABRT, fatalSignalHandler);
signal(SIGFPE, fatalSignalHandler); signal(SIGFPE, fatalSignalHandler);
@@ -107,7 +108,6 @@ int main(int argc, char *argv[]) {
signal(SIGSEGV, fatalSignalHandler); signal(SIGSEGV, fatalSignalHandler);
signal(SIGTERM, fatalSignalHandler); signal(SIGTERM, fatalSignalHandler);
} }
#endif


// Log environment // Log environment
INFO("%s v%s", app::APP_NAME.c_str(), app::APP_VERSION.c_str()); INFO("%s v%s", app::APP_NAME.c_str(), app::APP_VERSION.c_str());


+ 1
- 35
src/network.cpp View File

@@ -1,7 +1,6 @@
#include <network.hpp> #include <network.hpp>
#define CURL_STATICLIB #define CURL_STATICLIB
#include <curl/curl.h> #include <curl/curl.h>
#include <openssl/sha.h>




namespace rack { namespace rack {
@@ -79,12 +78,11 @@ json_t *requestJson(Method method, std::string url, json_t *dataJ) {
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, reqStr); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, reqStr);


std::string resText; std::string resText;
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writeStringCallback); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writeStringCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &resText); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &resText);


// Perform request // Perform request
// INFO("Requesting %s", url.c_str());
// DEBUG("Requesting %s", url.c_str());
// curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); // curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
CURLcode res = curl_easy_perform(curl); CURLcode res = curl_easy_perform(curl);


@@ -132,7 +130,6 @@ bool requestDownload(std::string url, const std::string &filename, float *progre
curl_easy_setopt(curl, CURLOPT_XFERINFOFUNCTION, xferInfoCallback); curl_easy_setopt(curl, CURLOPT_XFERINFOFUNCTION, xferInfoCallback);
curl_easy_setopt(curl, CURLOPT_XFERINFODATA, progress); curl_easy_setopt(curl, CURLOPT_XFERINFODATA, progress);
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, true); curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, true);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false);
// Fail on 4xx and 5xx HTTP codes // Fail on 4xx and 5xx HTTP codes
curl_easy_setopt(curl, CURLOPT_FAILONERROR, true); curl_easy_setopt(curl, CURLOPT_FAILONERROR, true);


@@ -157,37 +154,6 @@ std::string encodeUrl(const std::string &s) {
return ret; return ret;
} }


std::string computeSHA256File(const std::string &filename) {
FILE *f = fopen(filename.c_str(), "rb");
if (!f)
return "";

uint8_t hash[SHA256_DIGEST_LENGTH];
SHA256_CTX sha256;
SHA256_Init(&sha256);
const int bufferLen = 1 << 15;
uint8_t *buffer = new uint8_t[bufferLen];
int len = 0;
while ((len = fread(buffer, 1, bufferLen, f))) {
SHA256_Update(&sha256, buffer, len);
}
SHA256_Final(hash, &sha256);
delete[] buffer;
fclose(f);

// Convert binary hash to hex
char hashHex[64];
const char hexTable[] = "0123456789abcdef";
for (int i = 0; i < SHA256_DIGEST_LENGTH; i++) {
uint8_t h = hash[i];
hashHex[2*i + 0] = hexTable[h >> 4];
hashHex[2*i + 1] = hexTable[h & 0x0f];
}

std::string str(hashHex, sizeof(hashHex));
return str;
}

std::string urlPath(const std::string &url) { std::string urlPath(const std::string &url) {
CURLU *curl = curl_url(); CURLU *curl = curl_url();
DEFER({ DEFER({


+ 2
- 1
src/patch.cpp View File

@@ -138,8 +138,9 @@ void PatchManager::saveAsDialog() {
std::free(pathC); std::free(pathC);
}); });


// Append .vcv extension if no extension was given.
std::string pathStr = pathC; std::string pathStr = pathC;
if (string::filenameExtension(pathStr).empty()) {
if (string::filenameExtension(string::filename(pathStr)) == "") {
pathStr += ".vcv"; pathStr += ".vcv";
} }




+ 1
- 1
src/plugin.cpp View File

@@ -247,7 +247,7 @@ static void extractPackages(std::string path) {
std::string message; std::string message;


for (std::string packagePath : system::getEntries(path)) { for (std::string packagePath : system::getEntries(path)) {
if (string::filenameExtension(packagePath) != "zip")
if (string::filenameExtension(string::filename(packagePath)) != "zip")
continue; continue;
INFO("Extracting package %s", packagePath.c_str()); INFO("Extracting package %s", packagePath.c_str());
// Extract package // Extract package


+ 29
- 1
src/system.cpp View File

@@ -2,8 +2,10 @@
#include <string.hpp> #include <string.hpp>


#include <thread> #include <thread>
#include <regex>
#include <dirent.h> #include <dirent.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <cxxabi.h> // for __cxxabiv1::__cxa_demangle


#if defined ARCH_LIN || defined ARCH_MAC #if defined ARCH_LIN || defined ARCH_MAC
#include <pthread.h> #include <pthread.h>
@@ -166,10 +168,36 @@ std::string getStackTrace() {
stackLen = backtrace(stack, stackLen); stackLen = backtrace(stack, stackLen);
char **strings = backtrace_symbols(stack, stackLen); char **strings = backtrace_symbols(stack, stackLen);


// Skip the first line because it's this function.
for (int i = 1; i < stackLen; i++) { for (int i = 1; i < stackLen; i++) {
s += string::f("%d: %s\n", stackLen - i - 1, strings[i]);
s += string::f("%d: ", stackLen - i - 1);
std::string line = strings[i];
#if 0
// Parse line
std::regex r(R"((.*)\((.*)\+(.*)\) (.*))");
std::smatch match;
if (std::regex_search(line, match, r)) {
s += match[1].str();
s += "(";
std::string symbol = match[2].str();
// Demangle symbol
char *symbolD = __cxxabiv1::__cxa_demangle(symbol.c_str(), NULL, NULL, NULL);
if (symbolD) {
symbol = symbolD;
free(symbolD);
}
s += symbol;
s += "+";
s += match[3].str();
s += ")";
}
#else
s += line;
#endif
s += "\n";
} }
free(strings); free(strings);

#elif defined ARCH_WIN #elif defined ARCH_WIN
HANDLE process = GetCurrentProcess(); HANDLE process = GetCurrentProcess();
SymInitialize(process, NULL, true); SymInitialize(process, NULL, true);


Loading…
Cancel
Save