summaryrefslogtreecommitdiff
path: root/gui
diff options
context:
space:
mode:
authorkali kaneko (leap communications) <kali@leap.se>2021-11-29 01:45:42 +0100
committerkali kaneko (leap communications) <kali@leap.se>2021-11-29 18:14:15 +0100
commitebcef0d57b6ecb5a40c6579f6be07182dd3033ba (patch)
treec46992ece256c11912c50d3e74f1d8d4085b3c46 /gui
parentb7b19b7195366dbacc4078b5b7a3fc6a3ad7889b (diff)
[gui] motd/upgrade style
Diffstat (limited to 'gui')
-rw-r--r--gui/components/MotdBox.qml45
-rw-r--r--gui/components/Preferences.qml17
-rw-r--r--gui/components/Splash.qml152
-rw-r--r--gui/gui.qrc1
-rw-r--r--gui/resources/angle-right.svg3
-rw-r--r--gui/resources/ravens2.svg74
-rw-r--r--gui/resources/ravens2_01.pngbin0 -> 2017 bytes
-rw-r--r--gui/resources/ravens2_02.pngbin0 -> 1712 bytes
-rw-r--r--gui/resources/ravens2_03.pngbin0 -> 2088 bytes
9 files changed, 279 insertions, 13 deletions
diff --git a/gui/components/MotdBox.qml b/gui/components/MotdBox.qml
new file mode 100644
index 0000000..3d833a3
--- /dev/null
+++ b/gui/components/MotdBox.qml
@@ -0,0 +1,45 @@
+import QtQuick 2.9
+import QtQuick.Controls 2.2
+import QtGraphicalEffects 1.0
+import "../themes/themes.js" as Theme
+
+Item {
+ id: motdBox
+ width: parent.width
+ property var motdText: ""
+ property var motdLink: ""
+ property var url: ""
+ anchors.horizontalCenter: parent.horizontalCenter
+
+ Rectangle {
+
+ id: labelWrapper
+ color: "transparent"
+ height: label.paintedHeight + Theme.windowMargin
+ width: parent.width
+ anchors.verticalCenter: parent.verticalCenter
+
+ Label {
+ id: label
+ width: labelWrapper.width - Theme.windowMargin
+ anchors.centerIn: parent
+ text: motdBox.motdText
+ horizontalAlignment: Text.AlignHCenter
+ wrapMode: Text.Wrap
+ font.pixelSize: Theme.fontSizeSmall - 2
+ }
+
+ Label {
+ id: link
+ color: Theme.green
+ width: labelWrapper.width - Theme.windowMargin
+ anchors.top: label.bottom
+ anchors.topMargin: 10
+ text: motdBox.motdLink
+ horizontalAlignment: Text.AlignHCenter
+ wrapMode: Label.Wrap
+ font.pixelSize: Theme.fontSizeSmall
+ onLinkActivated: Qt.openUrlExternally(link)
+ }
+ }
+}
diff --git a/gui/components/Preferences.qml b/gui/components/Preferences.qml
index fcd742f..3de8acb 100644
--- a/gui/components/Preferences.qml
+++ b/gui/components/Preferences.qml
@@ -2,6 +2,7 @@ import QtQuick 2.15
import QtQuick.Controls 2.2
import QtQuick.Layouts 1.14
import QtQuick.Controls.Material 2.1
+import QtGraphicalEffects 1.0
import "../themes/themes.js" as Theme
@@ -52,7 +53,7 @@ ThemedPage {
}
Label {
- text: qsTr("These techniques can bypass censorship, but are slower. Please use them only if needed.")
+ text: qsTr("These techniques can bypass censorship, but are slower. Use them only when needed")
color: "gray"
visible: true
wrapMode: Text.Wrap
@@ -92,8 +93,7 @@ ThemedPage {
}
Label {
- text: qsTr("Traffic is obfuscated to bypass blocks.")
- font.family: "Monospace"
+ text: qsTr("Traffic is obfuscated to bypass blocks")
color: "gray"
visible: true
wrapMode: Text.Wrap
@@ -106,8 +106,7 @@ ThemedPage {
MaterialCheckBox {
id: useSnowflake
- //wrapMode: Text.Wrap
- text: qsTr("Use Snowflake bootstrap")
+ text: qsTr("Use Snowflake")
enabled: false
checked: false
HoverHandler {
@@ -122,8 +121,7 @@ ThemedPage {
}
Label {
- text: qsTr("Snowflake needs Tor installed in your system.")
- font.family: "Monospace"
+ text: qsTr("Snowflake needs Tor installed in your system")
color: "gray"
visible: true
wrapMode: Text.Wrap
@@ -143,7 +141,7 @@ ThemedPage {
}
Label {
- text: qsTr("UDP can make the VPN faster. It might be blocked on certain networks.")
+ text: qsTr("UDP can make the VPN faster. It might be blocked on some networks")
width: parent.width
color: "gray"
visible: true
@@ -259,11 +257,14 @@ ThemedPage {
if (ctx && ctx.offersUdp && ctx.udp == "true") {
useUDP.checked = true
}
+ // disabled for now, will be on next release
+ /*
if (ctx && ctx.hasTor == "true") {
useSnowflake.enabled = true
}
if (ctx && ctx.hasTor && ctx.snowflake == "true") {
useSnowflake.checked = true
}
+ */
}
}
diff --git a/gui/components/Splash.qml b/gui/components/Splash.qml
index cf75108..0d49474 100644
--- a/gui/components/Splash.qml
+++ b/gui/components/Splash.qml
@@ -1,18 +1,52 @@
-import QtQuick 2.9
+import QtQuick 2.15
import QtQuick.Controls 2.2
import QtGraphicalEffects 1.0
+import "../themes/themes.js" as Theme
Page {
id: splash
property int timeoutInterval: qmlDebug ? 200 : 1600
property alias errors: splashErrorBox
+ ToolButton {
+ id: closeButton
+ visible: false
+ anchors {
+ right: parent.right
+ //rightMargin: -10
+ }
+ icon.source: "../resources/close.svg"
+ HoverHandler {
+ cursorShape: Qt.PointingHandCursor
+ }
+ onClicked: {
+ loader.source = "MainView.qml"
+ }
+ }
+
Column {
width: parent.width * 0.8
anchors.horizontalCenter: parent.horizontalCenter
anchors.topMargin: 24
+ MotdBox {
+ id: motd
+ visible: false
+ anchors {
+ top: parent.top
+ topMargin: 100
+ bottomMargin: 30
+ }
+ }
+
VerticalSpacer {
+ id: motdSpacer
+ visible: false
+ height: 100
+ }
+
+ VerticalSpacer {
+ id: upperSpacer
visible: true
height: root.height * 0.25
}
@@ -26,6 +60,7 @@ Page {
}
VerticalSpacer {
+ id: middleSpacer
visible: true
height: root.height * 0.05
}
@@ -40,12 +75,103 @@ Page {
InitErrors {
id: splashErrorBox
}
+ } // end Column
+
+ Image {
+ id: motdImage
+ visible: false
+ height: 100
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: 50
+ source: "../resources/icon-noshield.svg"
+ fillMode: Image.PreserveAspectFit
}
Timer {
id: splashTimer
}
+ function hasMotd() {
+ if (ctx) {
+ if (isTrue(ctx.canUpgrade)) {
+ return true
+ }
+ return !isEmpty(ctx.motd)
+ }
+ return false
+ }
+
+ function getUpgradeText() {
+ let t = ""
+ let platform = Qt.platform.os
+ if (platform == "windows" || platform == "osx" || platform == "linux") {
+ t = qsTr("There is a newer version available.")
+ }
+ return t
+ }
+
+ function getUpgradeLink() {
+ return "<a href='" + getLinkURL() + "'>" + qsTr("UPGRADE NOW") + "</a>";
+ }
+
+ function getLinkURL() {
+ return "https://downloads.leap.se/RiseupVPN/" + Qt.platform.os + "/"
+ }
+
+ function showMotd() {
+ // XXX this is not picking locales configured by LANG or LC_ALL
+ let isUpgrade = false
+ let lang = Qt.locale().name.substring(0,2)
+ let messages = JSON.parse(ctx.motd)
+ let platform = Qt.platform.os
+ let textEn = ""
+ let textLocale = ""
+ let link = ""
+
+ if (ctx && isTrue(ctx.canUpgrade)) {
+ isUpgrade = true;
+ textLocale = getUpgradeText();
+ link = getUpgradeLink();
+ } else {
+ // TODO fallback in case upgrade has no text
+ console.debug("configured locale: " + lang)
+ console.debug("platform: " + Qt.platform.os)
+ for (let i=0; i < messages.length; i++) {
+ let m = messages[i]
+ if (m.platform == "all" || m.platform == platform) {
+ for (let k=0; k < m.text.length; k++) {
+ if (m.text[k].lang == lang) {
+ textLocale = m.text[k].str
+ break
+ } else if (m.text[k].lang == "en") {
+ testEn = m.text[k].str
+ }
+ }
+ break
+ }
+ }
+ }
+ if (isUpgrade) {
+ upperSpacer.height = 100
+ } else {
+ // TODO get proportional to textLocale/textEn
+ upperSpacer.height = 50
+ }
+ //connectionImage.height = 100
+ connectionImage.visible = false
+ motdImage.visible = true
+ middleSpacer.visible = false
+ splashProgress.visible = false
+ motd.visible = true
+ motdSpacer.visible = true
+ motd.motdText = textLocale ? textLocale : textEn
+ motd.motdLink = link
+ motd.url = getLinkURL()
+ // FIXME if no text, just skip to main view
+ closeButton.visible = true
+ }
+
function delay(delayTime, cb) {
splashTimer.interval = delayTime
splashTimer.repeat = true
@@ -54,12 +180,16 @@ Page {
}
function loadMainViewWhenReady() {
- if (root.error != "") {
+ if (!isEmpty(root.error)) {
return
}
- if (ctx && ctx.isReady || qmlDebug) {
+ if (ctx && isTrue(ctx.isReady) || qmlDebug) {
splashTimer.stop()
- loader.source = "MainView.qml"
+ if (hasMotd()) {
+ showMotd();
+ } else {
+ loader.source = "MainView.qml"
+ }
} else {
if (!splashTimer.running) {
console.debug('delay...')
@@ -77,5 +207,17 @@ Page {
}
}
- Component.onCompleted: {}
+ Component.onCompleted: {
+ }
+
+ function isTrue(val) {
+ return val == "true";
+ }
+
+ function isEmpty(val) {
+ return val == "";
+ }
+
}
+
+
diff --git a/gui/gui.qrc b/gui/gui.qrc
index c36f5c5..82730cc 100644
--- a/gui/gui.qrc
+++ b/gui/gui.qrc
@@ -60,6 +60,7 @@
<file>resources/spy.gif</file>
<file>resources/quit.svg</file>
<file>resources/alert.svg</file>
+ <file>resources/angle-right.svg</file>
<!-- fonts -->
<file alias="poppins-light.ttf">resources/fonts/Poppins-Thin.ttf</file>
diff --git a/gui/resources/angle-right.svg b/gui/resources/angle-right.svg
new file mode 100644
index 0000000..7d72524
--- /dev/null
+++ b/gui/resources/angle-right.svg
@@ -0,0 +1,3 @@
+<svg width="24px" height="24px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M9.46967 5.46967C9.76256 5.17678 10.2374 5.17678 10.5303 5.46967L16.5303 11.4697C16.8232 11.7626 16.8232 12.2374 16.5303 12.5303L10.5303 18.5303C10.2374 18.8232 9.76256 18.8232 9.46967 18.5303C9.17678 18.2374 9.17678 17.7626 9.46967 17.4697L14.9393 12L9.46967 6.53033C9.17678 6.23744 9.17678 5.76256 9.46967 5.46967Z" fill="#030D45"/>
+</svg>
diff --git a/gui/resources/ravens2.svg b/gui/resources/ravens2.svg
new file mode 100644
index 0000000..bcad2ed
--- /dev/null
+++ b/gui/resources/ravens2.svg
@@ -0,0 +1,74 @@
+<?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"
+ id="Layer_1"
+ x="0px"
+ y="0px"
+ viewBox="0 0 342 206"
+ style="enable-background:new 0 0 342 206;"
+ xml:space="preserve"
+ sodipodi:docname="ravens2.svg"
+ inkscape:version="1.0.2 (e86c870879, 2021-01-15)"><metadata
+ id="metadata66"><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="defs64" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="2560"
+ inkscape:window-height="1392"
+ id="namedview62"
+ showgrid="false"
+ inkscape:zoom="2.3859685"
+ inkscape:cx="3.2796585"
+ inkscape:cy="142.49955"
+ inkscape:window-x="0"
+ inkscape:window-y="25"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="layer3"
+ inkscape:document-rotation="0" />
+
+<g
+ inkscape:groupmode="layer"
+ id="layer1"
+ inkscape:label="frame1"><g
+ id="bird1"
+ transform="matrix(0.8,0,0,0.8,-224.29338,11.723713)"
+ style="enable-background:new 0 0 342 206"><path
+ style="fill:#000000;stroke-width:0.48"
+ d="m 385.13834,197.43106 c -0.72897,-1.36208 -0.61597,-2.15071 0.51401,-3.58724 l 1.0109,-1.28515 -2.7045,-3.53096 c -1.67306,-2.18432 -3.16903,-3.64755 -3.92253,-3.83667 -0.78962,-0.19818 -1.46242,-0.8906 -1.91284,-1.96862 -0.78944,-1.88939 -0.68998,-1.87306 -7.21616,-1.18532 -3.17774,0.33487 -5.21281,0.85767 -7.44,1.9113 -3.28857,1.55574 -5.44061,1.80404 -6.78577,0.78292 -1.02537,-0.77836 -1.06491,-1.42761 -0.13401,-2.20019 0.38829,-0.32225 0.65829,-1.03611 0.6,-1.58634 -0.0805,-0.75951 0.24078,-1.07485 1.33401,-1.3095 0.792,-0.17 1.87322,-0.54195 2.40272,-0.82656 0.66764,-0.35886 1.7028,-0.37114 3.37723,-0.0401 3.1702,0.62683 7.16506,-0.46946 9.11061,-2.50018 0.98579,-1.02893 1.81957,-1.42897 2.97837,-1.42897 0.88512,0 2.4561,-0.432 3.49107,-0.96 1.03497,-0.528 2.21436,-0.96 2.62088,-0.96 0.40651,0 0.73912,-0.30839 0.73912,-0.68532 0,-0.54071 -0.53763,-0.62982 -2.54805,-0.42233 -3.2514,0.33557 -4.17195,-0.44353 -4.17195,-3.53092 0,-1.44319 -0.32154,-2.57878 -0.96,-3.39045 -0.528,-0.67124 -0.96,-1.49047 -0.96,-1.8205 0,-0.33004 -0.54,-0.95389 -1.2,-1.38634 -0.7646,-0.50098 -1.2,-1.23373 -1.2,-2.01949 0,-0.67827 -0.432,-1.78243 -0.96,-2.45367 -0.528,-0.67124 -0.96,-1.5865 -0.96,-2.03391 0,-0.44741 -1.15388,-2.09228 -2.56419,-3.65527 -2.97648,-3.29873 -3.67581,-4.47263 -3.67581,-6.17024 0,-1.04577 -0.21517,-1.23156 -1.42631,-1.23156 -0.78448,0 -2.67448,-0.56194 -4.2,-1.24877 -3.87341,-1.74389 -9.21645,-3.55123 -10.49851,-3.55123 -1.57962,0 -2.59518,-0.491 -2.59518,-1.2547 0,-0.53914 0.68803,-0.61839 3.48,-0.40086 3.2635,0.25428 3.40535,0.22572 2.28,-0.45912 -0.66,-0.40165 -2.226,-0.87399 -3.48,-1.04964 -2.96604,-0.41545 -2.93747,-1.15568 0.0446,-1.15568 1.92868,0 9.64234,2.10373 13.15539,3.58785 0.50332,0.21263 0.84,0.14513 0.84,-0.16841 0,-0.28779 -1.13158,-1.09668 -2.51463,-1.79753 -2.92533,-1.48238 -12.13912,-7.58751 -12.61637,-8.35971 -1.35099,-2.18595 3.01241,-0.0675 12.14639,5.89721 3.24247,2.1174 6.04388,3.70133 6.22536,3.51984 0.18149,-0.18148 -0.38708,-0.89116 -1.26349,-1.57704 -2.20209,-1.7234 -10.13726,-10.73208 -10.13726,-11.50869 0,-1.14242 0.85579,-0.66795 2.72266,1.5095 2.27855,2.65762 9.24491,8.66726 13.01433,11.22703 2.8929,1.96453 11.64578,6.78995 12.31636,6.78995 0.20542,0 0.23167,-0.756 0.0583,-1.68 -0.22647,-1.20719 -0.14019,-1.69436 0.30658,-1.73102 0.34197,-0.0281 1.03481,-0.0821 1.53965,-0.12 1.86068,-0.13982 1.16626,-1.06327 -1.60872,-2.13929 -1.56874,-0.6083 -3.78307,-1.85532 -4.92072,-2.77115 -1.13765,-0.91584 -3.09446,-2.43544 -4.34846,-3.37688 -4.34658,-3.2632 -1.75366,-4.17202 3.18156,-1.11514 2.26983,1.40594 3.91431,1.53202 1.97844,0.15169 -6.31808,-4.50497 -6.96,-5.05256 -6.96,-5.93721 0,-0.52855 0.11494,-0.961 0.25542,-0.961 0.78964,0 4.15067,1.74166 8.39825,4.35188 2.65524,1.63171 4.93892,2.85554 5.07483,2.71963 0.13591,-0.13592 -1.94842,-2.37661 -4.63184,-4.97931 -5.53891,-5.37229 -7.03228,-7.22857 -6.35791,-7.90295 0.56718,-0.56718 1.61175,0.22173 8.939,6.7512 3.12276,2.78275 5.93076,5.14466 6.24,5.24868 0.30924,0.10402 -1.50978,-1.95528 -4.04226,-4.57623 -4.62994,-4.79166 -7.54368,-8.5847 -7.00693,-9.12146 0.15897,-0.15897 2.25393,1.41143 4.65545,3.48976 4.14801,3.58979 5.79244,4.76276 5.09498,3.63424 -0.17306,-0.28001 -0.11466,-0.6327 0.12976,-0.78376 0.64416,-0.39811 17.86024,17.63295 19.07981,19.98301 1.60753,3.09765 1.75025,5.81492 0.61158,11.64343 -0.65753,3.36572 -0.90221,5.90827 -0.699,7.26344 0.29317,1.95498 0.42327,2.10307 2.08577,2.37409 0.9752,0.15898 2.42109,0.39924 3.21309,0.5339 5.1256,0.87155 13.65736,4.80211 12.94067,5.96174 -0.15253,0.24679 -1.93858,0.44985 -3.969,0.45124 -3.88293,0.003 -3.90932,0.0128 -8.39867,3.23101 -1.6107,1.15463 -3.37986,1.81494 -6.89008,2.5716 -4.81503,1.03793 -7.97908,2.51326 -12.88292,6.00704 -4.80978,3.42677 -4.95621,3.84823 -2.4,6.90782 2.66507,3.18989 2.14762,5.66217 -1.51355,7.23153 -2.68358,1.15032 -2.89394,1.15032 -3.50956,3e-5 z m 4.78311,-5.20219 c 0,-0.57904 -2.89719,-3.94937 -3.39495,-3.94937 -0.77051,0 -0.49203,0.68428 1.0299,2.53064 1.38291,1.67772 2.36505,2.26687 2.36505,1.41873 z"
+ id="path70"
+ sodipodi:nodetypes="sscssssssssssssssssssssssssssssssssssssssssssssssscsssssssssssssssssssssssscsssssssssss" /></g></g><g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="frame2"><g
+ id="bird2"
+ transform="matrix(0.8,0,0,0.8,-14.215063,22.702112)"
+ style="enable-background:new 0 0 342 206"><g
+ id="g91"><path
+ id="path82"
+ style="fill:#000000;stroke-width:0.48"
+ d="m 242.17687,151.65225 c -3.13404,-3.54112 -1.56457,-8.55174 -2.5876,-12.70093 -1.30724,4.06004 -0.83452,8.5314 -2.2304,12.56696 -2.4282,-1.64493 -2.34129,-5.25622 -2.68195,-7.97009 -0.10761,-1.29265 -0.023,-3.41996 -0.94625,-1.17088 -0.62971,2.39376 -3.95705,3.9518 -3.73708,0.34456 0.8831,-4.15278 -2.99606,-5.96263 -3.942,-9.71999 -2.15629,-0.89608 -1.25125,-4.19816 -2.61058,-4.92932 -1.36056,2.52439 -3.67963,4.02089 -6.15358,4.44894 -1.07957,3.76816 -5.43175,4.00478 -7.75136,6.28661 -3.32925,-3.23079 1.23262,-7.41915 2.41406,-10.63382 -2.20486,1.19147 -4.14086,5.72123 -6.23354,8.14534 -2.47269,3.91891 -3.4433,-1.4682 -1.72395,-3.35769 0.43662,-1.26948 3.8894,-5.76372 0.6526,-3.0435 -0.99493,2.1218 -5.31685,3.16514 -3.4144,-0.24746 2.78196,-2.47979 -2.19581,-3.09356 -0.46566,-5.96329 -1.29252,-3.10981 -1.79884,-6.79767 -1.84379,-10.43129 -0.70739,-2.67802 -0.0344,-7.57686 -2.23087,-8.7291 -4.69814,1.25046 -9.2935,2.99897 -14.01769,4.06591 -2.01927,-0.75562 -6.16079,-0.60035 -6.89095,-2.19026 1.98181,-2.51474 4.47568,-4.91488 7.17064,-6.35494 5.39384,-0.795699 11.12703,0.0255 16.21316,-2.395693 4.12892,-2.045218 8.07933,-4.482763 12.51027,-5.88184 7.58565,-2.865242 15.57234,-4.858449 23.73443,-4.667426 4.93646,-0.09376 10.02626,-0.236524 14.6197,1.893098 2.23051,1.072066 7.00491,2.148606 6.76997,4.631157 -3.60813,0.554746 -7.50537,-0.0041 -10.75963,2.041625 -2.37899,0.953007 -6.55213,2.838069 -2.47804,4.758999 3.42281,2.0285 3.18979,6.28039 3.86059,9.69635 1.01426,5.26704 0.99767,10.65206 1.87425,15.92734 0.66874,3.94403 1.95244,7.73949 3.51666,11.40532 0.66429,4.26914 -5.29522,-5.13329 -3.16303,0.36931 1.08022,3.49886 2.61041,6.89397 3.94429,10.25123 -2.97516,-0.75531 -4.37371,-5.04418 -6.28631,-7.52629 -0.9391,1.91841 1.43165,6.51868 1.50879,9.40459 0.0132,4.27353 -3.36485,-1.97705 -3.67003,-3.52368 -0.009,-1.21745 -1.44097,-4.07452 -1.28313,-1.08098 -0.22768,2.41834 0.95484,6.20678 -0.23366,7.84609 -0.5591,-0.44635 -1.01632,-1.00364 -1.45393,-1.56496 z" /></g></g></g><g
+ inkscape:groupmode="layer"
+ id="layer3"
+ inkscape:label="frame3"><g
+ id="bird3"
+ transform="matrix(0.8,0,0,0.8,-77.921018,-54.826511)"
+ style="enable-background:new 0 0 342 206"><path
+ style="fill:#000000;stroke-width:0.48"
+ d="m 447.80204,216.9559 c -0.72269,-0.39213 -1.64623,-1.35548 -2.05233,-2.14078 -0.92258,-1.78409 -1.47725,-1.82526 -1.45263,-0.10784 0.0256,1.78611 -1.56103,1.9993 -3.05379,0.41034 -0.92579,-0.98546 -1.26967,-1.09461 -2.00395,-0.63604 -0.71993,0.4496 -1.15887,0.3521 -2.33731,-0.51916 -1.20317,-0.88954 -1.60809,-0.97455 -2.37139,-0.49787 -0.73689,0.4602 -1.14575,0.42723 -2.0501,-0.16532 -0.64725,-0.42409 -1.74409,-0.64998 -2.56857,-0.52897 -1.09407,0.16058 -1.71749,-0.0853 -2.60113,-1.02589 -0.6392,-0.6804 -1.5772,-1.23709 -2.08445,-1.23709 -0.50725,0 -1.49559,-0.32252 -2.19633,-0.71671 -0.70073,-0.39419 -1.81406,-0.93368 -2.47406,-1.19885 -0.66,-0.26518 -1.524,-0.66225 -1.92,-0.88239 -2.1004,-1.1676 -3.9862,-2.00205 -4.5245,-2.00205 -0.33369,0 -0.99766,-0.432 -1.4755,-0.96 -0.47783,-0.528 -1.16856,-0.96 -1.53495,-0.96 -0.77161,0 -6.74173,-3.13454 -7.86284,-4.12828 -0.89689,-0.79501 -2.53748,-0.86858 -3.83877,-0.17215 -0.51341,0.27477 -1.88229,2.38077 -3.04196,4.68 -1.15968,2.29924 -2.72649,4.76604 -3.4818,5.48179 -1.40184,1.32842 -5.12659,2.93173 -5.63342,2.4249 -0.1543,-0.15429 -1.70398,-0.32663 -3.44374,-0.38296 -2.32752,-0.0754 -3.51734,-0.36424 -4.50361,-1.09342 -0.81562,-0.60301 -1.73721,-0.88722 -2.35394,-0.72594 -1.35459,0.35423 -3.92189,-0.18553 -5.09262,-1.0707 -0.66178,-0.50036 -0.98915,-1.4008 -1.08522,-2.98487 -0.0757,-1.2476 -0.25951,-4.04558 -0.40856,-6.21772 -0.25931,-3.77896 -0.21836,-3.99814 0.94896,-5.07999 1.35121,-1.25225 4.13171,-1.97137 10.61247,-2.74472 5.3395,-0.63715 6.25903,-0.85126 8.52,-1.98381 1.76578,-0.8845 2.45969,-2.32213 1.12084,-2.32213 -0.37355,0 -1.5596,-1.134 -2.63568,-2.52 -2.13022,-2.74373 -2.50653,-3.16958 -3.62217,-4.09893 -0.40864,-0.3404 -0.74299,-1.12556 -0.74299,-1.74479 0,-0.67126 -0.48454,-1.44336 -1.2,-1.91214 -0.66,-0.43245 -1.2,-1.23621 -1.2,-1.78612 0,-0.54992 -0.54,-1.42462 -1.2,-1.94378 -0.66,-0.51916 -1.2,-1.34367 -1.2,-1.83225 0,-0.48859 -0.54,-1.53009 -1.2,-2.31445 -0.66,-0.78437 -1.2,-1.85934 -1.2,-2.38883 0,-0.52949 -0.756,-1.71871 -1.68,-2.64271 -0.924,-0.924 -1.68,-2.09595 -1.68,-2.60433 0,-0.50838 -0.55232,-1.44321 -1.22738,-2.07739 -0.81219,-0.76302 -1.14213,-1.47902 -0.97538,-2.11669 0.17148,-0.65575 -0.2374,-1.46856 -1.27973,-2.54398 -1.31288,-1.35454 -1.4494,-1.71218 -0.95549,-2.50306 0.48388,-0.77482 0.38564,-1.14926 -0.61288,-2.33593 -1.29697,-1.54136 -1.48117,-2.47059 -0.65374,-3.29802 0.39386,-0.39386 0.19307,-0.98422 -0.75958,-2.2332 -0.88414,-1.15917 -1.19604,-2.00954 -0.98311,-2.68042 0.2246,-0.70765 -0.16728,-1.56735 -1.40042,-3.07223 -2.52054,-3.076 -2.28628,-3.69399 0.92771,-2.44729 0.528,0.20481 -0.498,-1.15368 -2.28,-3.01887 -2.97172,-3.11045 -3.98593,-4.92459 -2.75312,-4.92459 0.26778,0 2.38692,1.48253 4.7092,3.29452 6.33422,4.94234 8.3162,5.80749 3.95158,1.7249 -4.36141,-4.07959 -8.0677,-9.81942 -6.34054,-9.81942 0.28116,0 2.49842,2.05416 4.92723,4.5648 2.42882,2.51065 4.49954,4.48131 4.60161,4.37925 0.10205,-0.10206 -0.98133,-1.73668 -2.40752,-3.63249 -1.42619,-1.89581 -2.85494,-4.32096 -3.17499,-5.38921 -0.32005,-1.06825 -0.69762,-2.24379 -0.83904,-2.61231 -0.72243,-1.88264 1.03187,-0.1508 4.3051,4.24996 2.01269,2.706 4.67913,5.892 5.92543,7.08 l 2.266,2.16 -1.79464,-2.4 c -2.2233,-2.97326 -4.5686,-7.73418 -4.94128,-10.03072 -0.44513,-2.74301 0.50313,-2.04466 2.37988,1.75269 1.66581,3.37055 8.26211,12.81454 9.47338,13.56314 0.32795,0.20269 0.50635,0.17645 0.39644,-0.0583 -0.1099,-0.23474 -1.00191,-2.04072 -1.98227,-4.01327 -0.98034,-1.97255 -1.78245,-3.86255 -1.78245,-4.2 0,-1.51072 0.98617,-0.31134 2.75157,3.34646 2.25366,4.66945 5.11203,8.56401 10.59899,14.44126 4.9305,5.28122 8.54604,10.06515 10.94256,14.47874 6.17495,11.37222 8.31949,13.01948 14.29789,10.98244 2.27587,-0.77547 3.24479,-0.75419 9.27398,0.20364 2.25404,0.35809 4.45501,1.59731 4.45501,2.50832 0,0.19008 -0.60035,0.46567 -1.3341,0.61242 -0.73377,0.14675 -1.86777,0.78823 -2.52,1.42549 -1.81377,1.77213 -5.26658,5.9971 -5.26039,6.43677 0.006,0.39975 0.80419,0.80728 7.34031,3.74603 4.42236,1.98837 8.73868,4.82625 10.41418,6.84709 2.22226,2.68029 9.70388,8.73695 12.42297,10.05689 2.10404,1.02137 2.46767,1.34537 1.65388,1.47363 -0.57373,0.0904 -1.97773,-0.30571 -3.12,-0.88029 l -2.07685,-1.04469 1.3513,1.43507 c 0.74321,0.78928 2.79521,2.15598 4.56,3.03711 2.62921,1.31274 3.00331,1.63456 2.07139,1.78197 -0.62552,0.099 -2.40778,-0.44981 -3.96059,-1.21945 -2.26132,-1.12081 -2.65597,-1.21281 -1.9827,-0.4622 0.46233,0.51543 1.9746,1.57936 3.3606,2.36428 1.386,0.78492 2.52,1.65077 2.52,1.92411 0,0.83627 -3.35317,0.0235 -5.34728,-1.29618 -2.37621,-1.5725 -2.35309,-0.95606 0.0673,1.79363 2.28368,2.59439 2.44317,3.37594 0.6,2.94004 -1.49775,-0.3542 -4.44,-2.40221 -4.44,-3.09054 0,-0.25057 -0.23446,-0.45558 -0.52103,-0.45558 -0.28658,0 0.0374,0.99921 0.72,2.22046 0.68257,1.22125 1.24103,2.40925 1.24103,2.64 0,0.63619 -1.52046,0.46767 -2.99396,-0.33184 z"
+ id="path78"
+ sodipodi:nodetypes="ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssscssssssssssssssscssssscssssssssssssssss" /></g></g></svg>
diff --git a/gui/resources/ravens2_01.png b/gui/resources/ravens2_01.png
new file mode 100644
index 0000000..2f881ff
--- /dev/null
+++ b/gui/resources/ravens2_01.png
Binary files differ
diff --git a/gui/resources/ravens2_02.png b/gui/resources/ravens2_02.png
new file mode 100644
index 0000000..1ca06e4
--- /dev/null
+++ b/gui/resources/ravens2_02.png
Binary files differ
diff --git a/gui/resources/ravens2_03.png b/gui/resources/ravens2_03.png
new file mode 100644
index 0000000..df22283
--- /dev/null
+++ b/gui/resources/ravens2_03.png
Binary files differ