[Sugar-devel] [PATCH] BUG#2544 Adding Smiley Support to chat application

Mukesh Gupta mukeshgupta.2006 at gmail.com
Tue Dec 28 14:39:50 EST 2010


Pevious patch modified to identify consecutive smileys without space
License added for the svg files
Svg files converted to plane text format from inkspace format

Signed-off-by: Mukesh Gupta <mukeshgupta.2006 at gmail.com>
---
 activity/activity.info        |    2 +-
 icons/smilies/angel.svg       |  346 ++++++++++++++++++++++++++
 icons/smilies/angry.svg       |  549 +++++++++++++++++++++++++++++++++++++++++
 icons/smilies/blush.svg       |  466 ++++++++++++++++++++++++++++++++++
 icons/smilies/cool.svg        |   73 ++++++
 icons/smilies/devil.svg       |  342 +++++++++++++++++++++++++
 icons/smilies/grin.svg        |  244 ++++++++++++++++++
 icons/smilies/neutral.svg     |  253 +++++++++++++++++++
 icons/smilies/sad.svg         |  210 ++++++++++++++++
 icons/smilies/shock.svg       |  208 ++++++++++++++++
 icons/smilies/smile.svg       |  123 +++++++++
 icons/smilies/smiley-icon.svg |  123 +++++++++
 icons/smilies/tongue.svg      |  439 ++++++++++++++++++++++++++++++++
 icons/smilies/wink.svg        |  220 ++++++++++++++++
 pippy_app.py                  |  215 ++++++++++++++++-
 15 files changed, 3805 insertions(+), 8 deletions(-)
 create mode 100644 icons/smilies/angel.svg
 create mode 100644 icons/smilies/angry.svg
 create mode 100644 icons/smilies/blush.svg
 create mode 100644 icons/smilies/cool.svg
 create mode 100644 icons/smilies/devil.svg
 create mode 100644 icons/smilies/grin.svg
 create mode 100644 icons/smilies/neutral.svg
 create mode 100644 icons/smilies/sad.svg
 create mode 100644 icons/smilies/shock.svg
 create mode 100644 icons/smilies/smile.svg
 create mode 100644 icons/smilies/smiley-icon.svg
 create mode 100644 icons/smilies/tongue.svg
 create mode 100644 icons/smilies/wink.svg

diff --git a/activity/activity.info b/activity/activity.info
index b35b097..1b05fe7 100644
--- a/activity/activity.info
+++ b/activity/activity.info
@@ -3,7 +3,7 @@ sweet     = chat
 name      = Chat
 summary   = Text chat
 homepage  = http://wiki.sugarlabs.org/go/Activities/Chat
-license   = GPLv2+
+license   = GPLv2+,Creative Commons Attribution-ShareAlike 3.0 license(svg icons)
 
 icon      = activity-icon
 exec      = sugar-activity pippy_app.Chat
diff --git a/icons/smilies/angel.svg b/icons/smilies/angel.svg
new file mode 100644
index 0000000..d1f1d0a
--- /dev/null
+++ b/icons/smilies/angel.svg
@@ -0,0 +1,346 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+
+<svg
+  
+   height="48px"
+   width="48px">
+  <defs
+     id="defs3">
+    <linearGradient
+       id="linearGradient3179">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop3181" />
+      <stop
+         style="stop-color:#f6e76a;stop-opacity:1;"
+         offset="1"
+         id="stop3185" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3451">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop3453" />
+      <stop
+         id="stop4936"
+         offset="0.5"
+         style="stop-color:#fefc9a;stop-opacity:0.62886596;" />
+      <stop
+         style="stop-color:#fefc9a;stop-opacity:0;"
+         offset="1"
+         id="stop3455" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3451"
+       id="radialGradient3468"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.000000,0.000000,0.000000,0.166667,7.650132e-16,8.709935)"
+       cx="25.127777"
+       cy="10.451922"
+       fx="25.127777"
+       fy="10.451922"
+       r="15.076666" />
+    <linearGradient
+       id="linearGradient3050">
+      <stop
+         style="stop-color:#a40000;stop-opacity:1;"
+         offset="0"
+         id="stop3052" />
+      <stop
+         style="stop-color:#ec0000;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop3054" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3290">
+      <stop
+         id="stop3292"
+         offset="0.0000000"
+         style="stop-color:#fffcde;stop-opacity:1.0000000;" />
+      <stop
+         style="stop-color:#f6e76a;stop-opacity:1.0000000;"
+         offset="0.64485979"
+         id="stop3294" />
+      <stop
+         id="stop3296"
+         offset="1.0000000"
+         style="stop-color:#ffb738;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <radialGradient
+       r="8.9020796"
+       fy="15.755712"
+       fx="29.158466"
+       cy="15.720984"
+       cx="29.288071"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient2714"
+       xlink:href="#linearGradient3179"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient2509">
+      <stop
+         style="stop-color:#fffbd5;stop-opacity:1.0000000;"
+         offset="0.0000000"
+         id="stop2511" />
+      <stop
+         style="stop-color:#edd400;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop2513" />
+    </linearGradient>
+    <radialGradient
+       gradientTransform="matrix(1.250000,0.000000,0.000000,1.250000,-6.479446,-13.37211)"
+       id="aigrd2"
+       cx="25.0527"
+       cy="39.5928"
+       r="15.7572"
+       fx="25.0527"
+       fy="39.5928"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         offset="0.0000000"
+         style="stop-color:#777777;stop-opacity:1.0000000;"
+         id="stop8602" />
+      <stop
+         offset="1"
+         style="stop-color:#000000"
+         id="stop8604" />
+    </radialGradient>
+    <linearGradient
+       id="linearGradient4565"
+       inkscape:collect="always">
+      <stop
+         id="stop4567"
+         offset="0"
+         style="stop-color:#000000;stop-opacity:1;" />
+      <stop
+         id="stop4569"
+         offset="1"
+         style="stop-color:#000000;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3824">
+      <stop
+         id="stop3826"
+         offset="0"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+      <stop
+         id="stop3828"
+         offset="1.0000000"
+         style="stop-color:#c9c9c9;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3800">
+      <stop
+         id="stop3802"
+         offset="0.0000000"
+         style="stop-color:#ffeed6;stop-opacity:1.0000000;" />
+      <stop
+         style="stop-color:#e49c2f;stop-opacity:1.0000000;"
+         offset="0.50000000"
+         id="stop8664" />
+      <stop
+         id="stop3804"
+         offset="1.0000000"
+         style="stop-color:#ffc66c;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <radialGradient
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.000000,0.000000,0.000000,0.333333,0.000000,25.71429)"
+       r="19.714285"
+       fy="38.571430"
+       fx="24.714285"
+       cy="38.571430"
+       cx="24.714285"
+       id="radialGradient4571"
+       xlink:href="#linearGradient4565"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3050"
+       id="linearGradient3384"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.356785,-4.136152e-17,4.888137e-17,0.421652,15.59796,22.41694)"
+       x1="23.031250"
+       y1="24.312500"
+       x2="23.031250"
+       y2="36.249878" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3050"
+       id="linearGradient3388"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.277603,-9.832923e-2,0.112086,0.340135,19.04250,26.33855)"
+       x1="23.377983"
+       y1="21.840229"
+       x2="23.591845"
+       y2="31.634424" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3050"
+       id="linearGradient3394"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.277603,-9.832923e-2,0.112086,0.340135,19.04250,26.33855)"
+       x1="23.377983"
+       y1="21.840229"
+       x2="23.591845"
+       y2="31.634424" />
+  </defs>
+  <sodipodi:namedview
+     inkscape:window-y="330"
+     inkscape:window-x="569"
+     inkscape:window-height="614"
+     inkscape:window-width="872"
+     inkscape:showpageshadow="false"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     showgrid="false"
+     inkscape:current-layer="layer1"
+     inkscape:cy="23.689514"
+     inkscape:cx="41.558678"
+     inkscape:zoom="4.9245777"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     borderopacity="0.19607843"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     fill="#edd400" />
+  <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>Face - Angel</dc:title>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>emoticon</rdf:li>
+            <rdf:li>emote</rdf:li>
+            <rdf:li>smiley</rdf:li>
+            <rdf:li>angel</rdf:li>
+            <rdf:li>0:)</rdf:li>
+            <rdf:li>0:-)</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Jakub Steiner</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:source>http://jimmac.musichall.cz</dc:source>
+        <dc:description />
+        <dc:contributor>
+          <cc:Agent>
+            <dc:title>Corey Woodworth</dc:title>
+          </cc:Agent>
+        </dc:contributor>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Notice" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Attribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/ShareAlike" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     inkscape:label="Layer 1"
+     id="layer1">
+    <path
+       d="M 44.428570 38.571430 A 19.714285 6.5714288 0 1 1  5.0000000,38.571430 A 19.714285 6.5714288 0 1 1  44.428570 38.571430 z"
+       sodipodi:ry="6.5714288"
+       sodipodi:rx="19.714285"
+       sodipodi:cy="38.571430"
+       sodipodi:cx="24.714285"
+       id="path4563"
+       style="opacity:0.53164557;color:#000000;fill:url(#radialGradient4571);fill-opacity:1.0;fill-rule:evenodd;stroke:none;stroke-width:0.40487173;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+       sodipodi:type="arc" />
+    <path
+       transform="matrix(2.083142,0.000000,0.000000,2.083142,-40.54715,-16.49224)"
+       d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1  22.450640,19.008621 A 8.6620579 8.6620579 0 1 1  39.774755 19.008621 z"
+       sodipodi:ry="8.6620579"
+       sodipodi:rx="8.6620579"
+       sodipodi:cy="19.008621"
+       sodipodi:cx="31.112698"
+       id="path4320"
+       style="overflow:visible;display:inline;visibility:visible;stroke-opacity:1;stroke-dashoffset:0.0000000;stroke-dasharray:none;stroke-miterlimit:4.0000000;marker-end:none;marker-mid:none;marker-start:none;marker:none;stroke-linejoin:round;stroke-linecap:round;stroke-width:0.48004404;stroke:#e49a17;fill-rule:evenodd;fill-opacity:1.0;fill:url(#radialGradient2714);color:#000000;opacity:1.0000000"
+       sodipodi:type="arc" />
+    <path
+       transform="matrix(1.175809,0.000000,0.000000,2.582227,-5.280449,-20.47780)"
+       d="M 40.204443 10.451922 A 15.076666 2.5127776 0 1 1  10.051111,10.451922 A 15.076666 2.5127776 0 1 1  40.204443 10.451922 z"
+       sodipodi:ry="2.5127776"
+       sodipodi:rx="15.076666"
+       sodipodi:cy="10.451922"
+       sodipodi:cx="25.127777"
+       id="path3423"
+       style="opacity:1;color:#000000;fill:url(#radialGradient3468);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.00150537;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       sodipodi:type="arc" />
+    <path
+       transform="matrix(1.979782,0.000000,0.000000,1.979782,-37.33128,-14.52746)"
+       sodipodi:type="arc"
+       style="opacity:0.4;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.50510627;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+       id="path4322"
+       sodipodi:cx="31.112698"
+       sodipodi:cy="19.008621"
+       sodipodi:rx="8.6620579"
+       sodipodi:ry="8.6620579"
+       d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1  22.450640,19.008621 A 8.6620579 8.6620579 0 1 1  39.774755 19.008621 z" />
+    <path
+       sodipodi:nodetypes="czczc"
+       id="path2659"
+       d="M 37.284637,24.719966 C 34.268170,29.944639 30.741134,33.710005 24.462492,33.710005 C 18.362475,33.710005 13.896955,29.370308 11.110016,24.543189 C 13.659429,27.599109 17.392948,31.109501 24.197327,31.109501 C 32.327531,31.109501 33.749103,28.202646 37.284637,24.719966 z "
+       style="opacity:0.35999998;color:#000000;fill:#ffffff;fill-opacity:1.0000000;fill-rule:nonzero;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
+    <path
+       style="fill:url(#aigrd2);fill-rule:nonzero;stroke:none;stroke-miterlimit:4.0000000"
+       d="M 37.284637,24.012862 C 34.268170,29.237535 30.741134,33.002901 24.462492,33.002901 C 18.362475,33.002901 13.896955,28.663204 11.110016,23.836085 C 13.659429,26.892005 17.392948,30.402397 24.197327,30.402397 C 32.327531,30.402397 33.749103,27.495542 37.284637,24.012862 z "
+       id="path8606"
+       sodipodi:nodetypes="czczc" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#c3b400;stroke-width:2.32432675;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="path1453"
+       sodipodi:cx="25.127777"
+       sodipodi:cy="10.451922"
+       sodipodi:rx="15.076666"
+       sodipodi:ry="2.5127776"
+       d="M 40.204443 10.451922 A 15.076666 2.5127776 0 1 1  10.051111,10.451922 A 15.076666 2.5127776 0 1 1  40.204443 10.451922 z"
+       transform="matrix(1.012503,0.000000,0.000000,1.645326,-1.176935,-10.68538)" />
+    <path
+       transform="matrix(1.014856,0.000000,0.000000,1.611564,-1.206928,-10.33866)"
+       d="M 40.204443 10.451922 A 15.076666 2.5127776 0 1 1  10.051111,10.451922 A 15.076666 2.5127776 0 1 1  40.204443 10.451922 z"
+       sodipodi:ry="2.5127776"
+       sodipodi:rx="15.076666"
+       sodipodi:cy="10.451922"
+       sodipodi:cx="25.127777"
+       id="path2472"
+       style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffff06;stroke-width:0.78194094;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       sodipodi:type="arc" />
+    <path
+       style="opacity:1;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.0000006;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       d="M 25.203063,17.578559 C 26.982405,21.949412 31.532943,22.064182 33.134299,17.728635 C 30.310009,19.967515 27.713179,19.322697 25.203063,17.578559 z "
+       id="path1336"
+       sodipodi:nodetypes="ccc" />
+    <path
+       sodipodi:nodetypes="ccc"
+       id="path1458"
+       d="M 23.134299,17.578559 C 21.354957,21.949412 16.804419,22.064182 15.203063,17.728635 C 18.027353,19.967515 20.624183,19.322697 23.134299,17.578559 z "
+       style="opacity:1;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.0000006;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+  </g>
+</svg>
diff --git a/icons/smilies/angry.svg b/icons/smilies/angry.svg
new file mode 100644
index 0000000..af573de
--- /dev/null
+++ b/icons/smilies/angry.svg
@@ -0,0 +1,549 @@
+<?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"
+   version="1.0"
+   width="48"
+   height="48"
+   id="svg2">
+  <defs
+     id="defs4">
+    <linearGradient
+       id="linearGradient3859">
+      <stop
+         id="stop3861"
+         style="stop-color:#000000;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3863"
+         style="stop-color:#000000;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2566">
+      <stop
+         id="stop2568"
+         style="stop-color:#ef2929;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop2570"
+         style="stop-color:#ef2929;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2560">
+      <stop
+         id="stop2562"
+         style="stop-color:#ef2929;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop2564"
+         style="stop-color:#ef2929;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4148">
+      <stop
+         id="stop4150"
+         style="stop-color:#000000;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop4152"
+         style="stop-color:#000000;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4140">
+      <stop
+         id="stop4142"
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop4144"
+         style="stop-color:#ffffff;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3734">
+      <stop
+         id="stop3736"
+         style="stop-color:#000000;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3738"
+         style="stop-color:#000000;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3712">
+      <stop
+         id="stop3714"
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3716"
+         style="stop-color:#ffffff;stop-opacity:0.50570345"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3936">
+      <stop
+         id="stop3938"
+         style="stop-color:#fcaf3e;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3940"
+         style="stop-color:#ef2929;stop-opacity:1"
+         offset="0.64999998" />
+      <stop
+         id="stop3942"
+         style="stop-color:#cc0000;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3512">
+      <stop
+         id="stop3514"
+         style="stop-color:#a7aba2;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3524"
+         style="stop-color:#e9ebe7;stop-opacity:1"
+         offset="0.1" />
+      <stop
+         id="stop3520"
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0.34999999" />
+      <stop
+         id="stop3522"
+         style="stop-color:#e9ebe7;stop-opacity:1"
+         offset="0.89999998" />
+      <stop
+         id="stop3516"
+         style="stop-color:#a7aba2;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient8431">
+      <stop
+         id="stop8433"
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop8435"
+         style="stop-color:#ffffff;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="4.5911422"
+       y1="222.90671"
+       x2="17.284155"
+       y2="222.90671"
+       id="linearGradient8452"
+       xlink:href="#linearGradient3512"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9393939,0,0,1,0.6667383,0)" />
+    <linearGradient
+       x1="18.825819"
+       y1="-140.43388"
+       x2="19.23638"
+       y2="-134.38734"
+       id="linearGradient8456"
+       xlink:href="#linearGradient8431"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       cx="12.046875"
+       cy="10.046875"
+       r="9.546875"
+       fx="12.046875"
+       fy="10.046875"
+       id="radialGradient8460"
+       xlink:href="#linearGradient3734"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       id="linearGradient3696">
+      <stop
+         id="stop3698"
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3700"
+         style="stop-color:#ffffff;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient7776">
+      <stop
+         id="stop7778"
+         style="stop-color:#2e3436;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop7780"
+         style="stop-color:#000000;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient7802">
+      <stop
+         id="stop7804"
+         style="stop-color:#2e3436;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop7806"
+         style="stop-color:#000000;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient7810">
+      <stop
+         id="stop7812"
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop7814"
+         style="stop-color:#ffffff;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient7824">
+      <stop
+         id="stop7826"
+         style="stop-color:#000000;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop7828"
+         style="stop-color:#000000;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <radialGradient
+       cx="9.3747082"
+       cy="7.8025141"
+       r="10.049342"
+       fx="9.3747082"
+       fy="7.8025141"
+       id="radialGradient3725"
+       xlink:href="#linearGradient3936"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.5784757,0,0,2.5784757,-5.9937127,-0.9345791)" />
+    <radialGradient
+       cx="5.3851099"
+       cy="3.2659137"
+       r="10.108456"
+       fx="5.3851099"
+       fy="3.2659137"
+       id="radialGradient3737"
+       xlink:href="#linearGradient3712"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.5376699,0,0,2.5376699,-3.2238847,1.7641461)" />
+    <radialGradient
+       cx="24.53125"
+       cy="28.408104"
+       r="12.5"
+       fx="24.53125"
+       fy="28.408104"
+       id="radialGradient3854"
+       xlink:href="#linearGradient4140"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9208389,0,0,0.36875,-22.58933,20.821387)" />
+    <radialGradient
+       cx="23.53125"
+       cy="28.408075"
+       r="12.5"
+       fx="23.53125"
+       fy="28.408075"
+       id="radialGradient3856"
+       xlink:href="#linearGradient4148"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.6188667,0,0,0.3690477,-61.625207,20.809221)" />
+    <radialGradient
+       cx="11"
+       cy="214.82245"
+       r="6.875"
+       fx="11"
+       fy="214.82245"
+       id="radialGradient3867"
+       xlink:href="#linearGradient3859"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3034982,0,0,0.2828281,-3.3384807,160.50415)" />
+    <radialGradient
+       cx="29.46875"
+       cy="-131.5"
+       r="3.21875"
+       fx="29.46875"
+       fy="-131.5"
+       id="radialGradient3983"
+       xlink:href="#linearGradient7824"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9320389,0,0,1.3203882,1.0339798,143.38105)" />
+    <radialGradient
+       cx="29.46875"
+       cy="-131.5"
+       r="3.21875"
+       fx="29.46875"
+       fy="-131.5"
+       id="radialGradient3985"
+       xlink:href="#linearGradient7824"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9320389,0,0,1.3203882,-7.9660202,143.38105)" />
+    <radialGradient
+       cx="28.221428"
+       cy="-133.18883"
+       r="3.21875"
+       fx="28.221428"
+       fy="-133.18883"
+       id="radialGradient3987"
+       xlink:href="#linearGradient7802"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2713953,0,0,1.5301983,-17.458259,170.87227)" />
+    <radialGradient
+       cx="28.221428"
+       cy="-133.18883"
+       r="3.21875"
+       fx="28.221428"
+       fy="-133.18883"
+       id="radialGradient3989"
+       xlink:href="#linearGradient7776"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2713953,0,0,1.5301983,-8.4582587,170.87227)" />
+    <linearGradient
+       x1="28.621698"
+       y1="-135.65616"
+       x2="30.315804"
+       y2="-127.34384"
+       id="linearGradient3991"
+       xlink:href="#linearGradient7810"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="28.621698"
+       y1="-135.65616"
+       x2="30.315804"
+       y2="-127.34384"
+       id="linearGradient3993"
+       xlink:href="#linearGradient7810"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.2408327,0.06094423,-0.04908332,0.4390867,14.270157,23.77051)" />
+    <linearGradient
+       x1="-76.3125"
+       y1="49.062111"
+       x2="-74.847809"
+       y2="52.578125"
+       id="linearGradient3995"
+       xlink:href="#linearGradient3696"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1,0,0,1,-54.020832,-37.989582)" />
+    <linearGradient
+       x1="-80.725792"
+       y1="46.970554"
+       x2="-81.683334"
+       y2="49.016621"
+       id="linearGradient3997"
+       xlink:href="#linearGradient2560"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="-80.725792"
+       y1="46.970554"
+       x2="-81.683334"
+       y2="49.016621"
+       id="linearGradient3999"
+       xlink:href="#linearGradient2566"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="-76.3125"
+       y1="49.062111"
+       x2="-74.847809"
+       y2="52.578125"
+       id="linearGradient4001"
+       xlink:href="#linearGradient3696"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(102.01042,-37.989582)" />
+  </defs>
+  <metadata
+     id="metadata7">
+    <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>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Lapo Calamandrei</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>emoticon</rdf:li>
+            <rdf:li>emote</rdf:li>
+            <rdf:li>smiley</rdf:li>
+            <rdf:li>smile</rdf:li>
+            <rdf:li>devilish</rdf:li>
+            <rdf:li>devil</rdf:li>
+            <rdf:li>grin</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Notice" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/ShareAlike" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/SourceCode" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     style="display:inline">
+    <path
+       d="m 21.59375,10.046875 a 9.546875,9.546875 0 1 1 -19.09375,0 9.546875,9.546875 0 1 1 19.09375,0 z"
+       transform="matrix(2.396073,0,0,1.407553,-4.865631,20.29622)"
+       id="path6204"
+       style="opacity:0.4;fill:url(#radialGradient8460);fill-opacity:1;stroke:none;display:inline" />
+    <path
+       d="M 24,3.5 C 12.683997,3.5 3.4999999,12.683998 3.5,24 c 0,3.145561 0.7321771,6.116638 2,8.78125 l 0,4.28125 C 5.5,38.971498 7.0285021,40.5 8.9375,40.5 l 2.9375,0 c 3.398571,2.501978 7.584181,4.000001 12.125,4 4.540819,0 8.726429,-1.498022 12.125,-4 l 2.9375,0 c 1.908998,0 3.4375,-1.5285 3.4375,-3.4375 l 0,-4.28125 C 43.767823,30.116638 44.500001,27.145561 44.5,24 44.5,12.683997 35.316002,3.5000001 24,3.5 z"
+       id="path6206"
+       style="fill:url(#radialGradient3725);fill-opacity:1;stroke:#a40000;stroke-width:0.99999958;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
+    <path
+       d="m 25.6875,-135.96875 a 6.125,5.96875 0 1 1 -12.25,0 6.125,5.96875 0 1 1 12.25,0 z"
+       transform="matrix(2.2078305,-0.5915864,0.4553048,1.6992208,40.81191,259.37364)"
+       id="path8199"
+       style="opacity:0.3;fill:url(#linearGradient8456);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
+    <path
+       d="M 24,4.46875 C 13.215826,4.46875 4.46875,13.215827 4.46875,24 c 0,2.011776 0.33256,3.929796 0.90625,5.75 0.00589,0.01904 -0.00595,0.04349 0,0.0625 0.168651,0.529369 0.35146,1.05224 0.5625,1.5625 0.021318,0.05154 0.040766,0.10491 0.0625,0.15625 0.032532,0.07763 0.091496,0.141629 0.125,0.21875 0.085618,0.195499 0.158428,0.401292 0.25,0.59375 0.064464,0.136688 0.096545,0.286399 0.09375,0.4375 l 0,4.28125 c 0,1.384319 1.084431,2.46875 2.46875,2.46875 l 2.9375,0 c 0.213005,-0.0035 0.421378,0.06231 0.59375,0.1875 0.132646,0.09765 0.271187,0.186839 0.40625,0.28125 0.152973,0.10647 0.31263,0.210342 0.46875,0.3125 0.285233,0.187666 0.579988,0.358221 0.875,0.53125 0.248581,0.144885 0.494599,0.303453 0.75,0.4375 0.467207,0.247047 0.949313,0.478163 1.4375,0.6875 1.744783,0.748172 3.62948,1.232581 5.59375,1.4375 0.662491,0.06911 1.318307,0.125 2,0.125 0.681693,0 1.337509,-0.05589 2,-0.125 1.96427,-0.204919 3.848967,-0.689328 5.59375,-1.4375 0.496151,-0.20997 0.963309,-0.438621 1.4375,-0.6875 0.256506,-0.135634 0.500206,-0.290992 0.75,-0.4375 0.291028,-0.169625 0.59379,-0.34724 0.875,-0.53125 0.157076,-0.103347 0.314746,-0.204849 0.46875,-0.3125 0.135063,-0.09441 0.273604,-0.183598 0.40625,-0.28125 0.172372,-0.125185 0.380745,-0.190987 0.59375,-0.1875 l 2.9375,0 c 1.38432,0 2.46875,-1.084428 2.46875,-2.46875 l 0,-4.28125 c -0.0028,-0.151101 0.02929,-0.300812 0.09375,-0.4375 0.09302,-0.195855 0.163385,-0.394375 0.25,-0.59375 0.03334,-0.07614 0.09258,-0.142161 0.125,-0.21875 0.02136,-0.05098 0.04156,-0.105057 0.0625,-0.15625 0.21104,-0.51026 0.393849,-1.033131 0.5625,-1.5625 0.0061,-0.01925 -0.0061,-0.04323 0,-0.0625 C 43.198691,27.929796 43.531251,26.011776 43.53125,24 43.53125,13.215826 34.784173,4.4687501 24,4.46875 z"
+       id="path6208"
+       style="opacity:0.5;fill:none;stroke:url(#radialGradient3737);stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
+    <g
+       transform="matrix(2.3363921,0,0,2.4984281,-1.7030746,-525.89597)"
+       id="g6214"
+       style="display:inline">
+      <path
+         d="m 3.9523863,223.89917 c 0,3.80239 1.922399,0.77549 7.0487957,0.80051 5.126396,0.025 7.048794,3.00188 7.048794,-0.80051 0,-3.8024 -3.57121,-1.65097 -7.048794,-1.60101 -3.477585,0.05 -7.0487957,-2.20139 -7.0487957,1.60101 z"
+         id="path6216"
+         style="fill:url(#linearGradient8452);fill-opacity:1;stroke:#cc0000;stroke-width:0.41389835;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
+    </g>
+    <g
+       transform="translate(0.044194,-150)"
+       id="g6220"
+       style="display:inline">
+      <path
+         d="m 35.3125,28.375 c -0.08882,0.0049 -0.190388,0.0242 -0.28125,0.03125 l 0,8.625 c 0.363545,0.116156 0.679353,0.184064 1,0.28125 l 0,-8.9375 c -0.233713,-0.0048 -0.465558,-0.01403 -0.71875,0 z M 11.625,28.5 c -0.210819,0.0095 -0.401093,0.0661 -0.59375,0.09375 l 0,9 c 0.04365,-0.01104 0.08065,-0.01931 0.125,-0.03125 0.252262,-0.0679 0.589893,-0.192266 0.875,-0.28125 l 0,-8.78125 c -0.133248,-4.12e-4 -0.279493,-0.0057 -0.40625,0 z m 21.40625,0.15625 c -0.318059,0.05548 -0.667847,0.123346 -1,0.1875 l 0,7.28125 c 0.349828,0.09407 0.67466,0.185484 1,0.28125 l 0,-7.75 z m -19,0.03125 0,7.96875 c 0.323044,-0.102661 0.649094,-0.208231 1,-0.3125 l 0,-7.5 c -0.341052,-0.05908 -0.676549,-0.109668 -1,-0.15625 z m 4,0.71875 0,6.1875 c 0.321078,-0.06611 0.662397,-0.129542 1,-0.1875 l 0,-5.84375 c -0.336734,-0.05594 -0.670752,-0.09644 -1,-0.15625 z m 11,0.03125 c -0.328296,0.06057 -0.665864,0.101067 -1,0.15625 l 0,5.6875 c 0.347418,0.0492 0.668677,0.129254 1,0.1875 l 0,-6.03125 z m -6,0.53125 0,5.0625 C 23.356509,35.021572 23.663364,34.998243 24,35 c 0.01083,5.7e-5 0.02043,-6.8e-5 0.03125,0 l 0,-5 c -0.01038,1.76e-4 -0.02087,-1.59e-4 -0.03125,0 -0.322857,0.005 -0.646661,-0.02045 -0.96875,-0.03125 z"
+         transform="translate(-0.044194,150)"
+         id="path6222"
+         style="opacity:0.08999999;fill:url(#radialGradient3856);fill-opacity:1;fill-rule:evenodd;stroke:none" />
+      <path
+         d="m 36.03125,28.375 0,8.9375 c 0.262406,0.07953 0.578518,0.188415 0.8125,0.25 0.06757,0.01779 0.123019,0.01531 0.1875,0.03125 l 0,-9.125 c -0.307823,-0.05492 -0.64608,-0.0865 -1,-0.09375 z m -24,0.125 0,8.78125 c 0.325017,-0.10144 0.631782,-0.192237 1,-0.3125 l 0,-8.40625 C 12.916609,28.552027 12.79907,28.5387 12.6875,28.53125 12.455157,28.515737 12.246798,28.500667 12.03125,28.5 z m 22,0 c -0.327688,0.04524 -0.653322,0.09578 -1,0.15625 l 0,7.75 c 0.347945,0.102419 0.679819,0.212344 1,0.3125 l 0,-8.21875 z m -19,0.34375 0,7.5 c 0.31869,-0.0947 0.658112,-0.157581 1,-0.25 l 0,-7.0625 c -0.329883,-0.06161 -0.683544,-0.132685 -1,-0.1875 z m 15,0.375 c -0.331601,0.06516 -0.660705,0.156154 -1,0.21875 l 0,6.03125 c 0.336562,0.05917 0.679936,0.120886 1,0.1875 l 0,-6.4375 z m -11,0.34375 0,5.84375 c 0.328989,-0.05648 0.655207,-0.109378 1,-0.15625 l 0,-5.53125 c -0.335083,-0.04803 -0.670781,-0.101563 -1,-0.15625 z m 6,0.40625 c -0.331971,0.02145 -0.667499,0.0256 -1,0.03125 l 0,5 c 0.34679,0.0022 0.665272,0.01765 1,0.03125 l 0,-5.0625 z"
+         transform="translate(-0.044194,150)"
+         id="path6224"
+         style="fill:url(#radialGradient3854);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
+      <g
+         transform="translate(5,0)"
+         id="g6226"
+         style="opacity:0.8;stroke-linecap:square" />
+      <g
+         transform="translate(-5,0)"
+         id="g6232"
+         style="opacity:0.8;stroke-linecap:square;display:inline" />
+      <g
+         transform="translate(-9,0)"
+         id="g6238"
+         style="opacity:0.7;stroke-linecap:square;display:inline" />
+      <g
+         transform="translate(9,0)"
+         id="g6244"
+         style="opacity:0.7;stroke-linecap:square;display:inline" />
+      <g
+         transform="translate(12,0)"
+         id="g6250"
+         style="opacity:0.5;stroke-linecap:square;display:inline" />
+      <g
+         transform="translate(-12,0)"
+         id="g6256"
+         style="opacity:0.5;stroke-linecap:square;display:inline" />
+    </g>
+    <g
+       transform="translate(-106,-55.000002)"
+       id="g7909" />
+    <g
+       id="g3969">
+      <g
+         transform="translate(60,49.999998)"
+         id="g7844"
+         style="display:inline">
+        <path
+           d="m 29,-34.4375 -3.3125,2.875 c -0.09707,0.417924 -0.1875,0.848737 -0.1875,1.3125 0,2.346 1.343999,4.250001 3,4.25 1.656,0 2.999999,-1.904001 3,-4.25 0,-2.100304 -1.086074,-3.844812 -2.5,-4.1875 z"
+           transform="translate(-60,2e-6)"
+           id="path7847"
+           style="opacity:0.7;fill:url(#radialGradient3983);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
+        <path
+           d="m 19,-34.4375 c -1.413927,0.342687 -2.499999,2.087195 -2.5,4.1875 0,2.346 1.343999,4.250001 3,4.25 1.656,0 2.999999,-1.904001 3,-4.25 0,-0.463763 -0.09043,-0.894576 -0.1875,-1.3125 L 19,-34.4375 z"
+           transform="translate(-60,2e-6)"
+           id="path7849"
+           style="opacity:0.7;fill:url(#radialGradient3985);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
+        <path
+           d="M 18.625,-34.75 C 17.676232,-34.182032 17,-32.71543 17,-31 c 0,2.208 1.12,4 2.5,4 1.38,0 2.500001,-1.792 2.5,-4 0,-0.322622 -0.04861,-0.636934 -0.09375,-0.9375 L 18.625,-34.75 z"
+           transform="translate(-60,2e-6)"
+           id="path7851"
+           style="fill:url(#radialGradient3987);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
+        <path
+           d="m 29.375,-34.75 -3.28125,2.8125 C 26.04861,-31.636934 26,-31.322622 26,-31 c 0,2.208 1.12,4 2.5,4 1.38,0 2.500001,-1.792 2.5,-4 0,-1.71543 -0.676232,-3.182033 -1.625,-3.75 z"
+           transform="translate(-60,2e-6)"
+           id="path7853"
+           style="fill:url(#radialGradient3989);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
+        <path
+           d="m 32.6875,-131.5 a 3.21875,4.25 0 1 1 -6.4375,0 3.21875,4.25 0 1 1 6.4375,0 z"
+           transform="matrix(0.2408327,0.06094423,-0.04908332,0.4390867,-54.729843,23.770512)"
+           id="path7855"
+           style="opacity:0.5;fill:url(#linearGradient3991);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
+        <path
+           d="m 28.3125,-33.8125 -1.1875,1 c -0.03138,0.141591 -0.07624,0.280847 -0.09375,0.4375 -0.115149,1.030097 0.16585,1.954217 0.59375,2.0625 0.427899,0.108283 0.8536,-0.626153 0.96875,-1.65625 0.08636,-0.772573 -0.03474,-1.489935 -0.28125,-1.84375 z"
+           transform="translate(-60,2e-6)"
+           id="path7857"
+           style="opacity:0.5;fill:url(#linearGradient3993);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
+      </g>
+      <g
+         id="g3869"
+         style="opacity:0.54054051">
+        <path
+           d="m 10.010419,16.510418 c 0,-3.83615 3.132596,-6.96875 6.96875,-6.96875 2.608453,0 4.805783,1.49192 6,3.625"
+           id="path8086"
+           style="opacity:0.11196911;fill:none;stroke:url(#linearGradient3995);stroke-width:1.08333337;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;display:inline" />
+        <path
+           d="m -76.5,53 a 6.5,6.5 0 1 1 -13,0 6.5,6.5 0 1 1 13,0 z"
+           transform="matrix(0.923077,0,0,0.923077,93.59456,-32.412662)"
+           id="path8088"
+           style="fill:none;stroke:url(#linearGradient3997);stroke-width:1.08333337;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
+        <path
+           d="m -76.5,53 a 6.5,6.5 0 1 1 -13,0 6.5,6.5 0 1 1 13,0 z"
+           transform="matrix(-0.923077,0,0,0.923077,-45.636222,-32.412662)"
+           id="path2538"
+           style="fill:none;stroke:url(#linearGradient3999);stroke-width:1.08333337;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
+        <path
+           d="m 37.979169,16.510418 c 0,-3.83615 -3.132596,-6.96875 -6.96875,-6.96875 -2.608453,0 -4.805783,1.49192 -6,3.625"
+           id="path2556"
+           style="opacity:0.11196911;fill:none;stroke:url(#linearGradient4001);stroke-width:1.08333337;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;display:inline" />
+      </g>
+    </g>
+    <path
+       d="M 15.84375,221.84375 C 14.562822,221.91014 12.779532,222.47443 11,222.5 c -1.7826123,0.0256 -3.556387,-0.51336 -4.84375,-0.59375 -0.6436815,-0.0402 -1.1378406,0.0381 -1.46875,0.3125 -0.3309094,0.2744 -0.5625,0.76801 -0.5625,1.6875 0,0.9338 0.1599649,1.41845 0.34375,1.59375 0.091893,0.0876 0.1727318,0.1186 0.34375,0.125 0.1710182,0.006 0.4146098,-0.0251 0.6875,-0.0937 1.0915609,-0.27474 2.8974718,-1.04395 5.5,-1.03125 2.601641,0.0127 4.409624,0.76287 5.5,1.03125 0.272594,0.0671 0.485498,0.10186 0.65625,0.0937 0.170752,-0.008 0.282369,-0.0353 0.375,-0.125 0.185262,-0.17947 0.34375,-0.65995 0.34375,-1.59375 0,-0.91967 -0.231436,-1.43478 -0.5625,-1.71875 -0.331064,-0.28397 -0.827961,-0.37696 -1.46875,-0.34375 z"
+       transform="matrix(2.3363921,0,0,2.4984281,-1.7030746,-525.89597)"
+       id="path3835"
+       style="opacity:0.57528962;fill:url(#radialGradient3867);fill-opacity:1;stroke:none;display:inline" />
+  </g>
+</svg>
diff --git a/icons/smilies/blush.svg b/icons/smilies/blush.svg
new file mode 100644
index 0000000..4cb9503
--- /dev/null
+++ b/icons/smilies/blush.svg
@@ -0,0 +1,466 @@
+<?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"
+   version="1.1"
+   width="48"
+   height="48"
+   id="svg4376">
+  <defs
+     id="defs3">
+    <linearGradient
+       id="linearGradient7947">
+      <stop
+         id="stop7949"
+         style="stop-color:#ff0000;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop7957"
+         style="stop-color:#ff1f00;stop-opacity:0.79381442"
+         offset="0.5" />
+      <stop
+         id="stop7951"
+         style="stop-color:#ff0000;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3881">
+      <stop
+         id="stop3883"
+         style="stop-color:#ff0000;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop6974"
+         style="stop-color:#ff0000;stop-opacity:0.49803922"
+         offset="0.5" />
+      <stop
+         id="stop3885"
+         style="stop-color:#ff0000;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4467">
+      <stop
+         id="stop4469"
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop4471"
+         style="stop-color:#ffffff;stop-opacity:0.24761905"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4454">
+      <stop
+         id="stop4456"
+         style="stop-color:#729fcf;stop-opacity:0.20784314"
+         offset="0" />
+      <stop
+         id="stop4458"
+         style="stop-color:#729fcf;stop-opacity:0.6761905"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3290">
+      <stop
+         id="stop3292"
+         style="stop-color:#fffcde;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3294"
+         style="stop-color:#f6e76a;stop-opacity:1"
+         offset="0.64485979" />
+      <stop
+         id="stop3296"
+         style="stop-color:#ffb738;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <radialGradient
+       cx="29.288071"
+       cy="15.720984"
+       r="8.9020796"
+       fx="29.158466"
+       fy="15.755712"
+       id="radialGradient2714"
+       xlink:href="#linearGradient3290"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       id="linearGradient2509">
+      <stop
+         id="stop2511"
+         style="stop-color:#fffbd5;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop2513"
+         style="stop-color:#edd400;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <radialGradient
+       cx="25.0527"
+       cy="39.5928"
+       r="15.7572"
+       fx="25.0527"
+       fy="39.5928"
+       id="aigrd2"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.617019,0,0,0.4614933,9.5717554,18.717642)">
+      <stop
+         id="stop8602"
+         style="stop-color:#777777;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop8604"
+         style="stop-color:#000000;stop-opacity:1"
+         offset="1" />
+    </radialGradient>
+    <linearGradient
+       id="linearGradient4565">
+      <stop
+         id="stop4567"
+         style="stop-color:#000000;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop4569"
+         style="stop-color:#000000;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3824">
+      <stop
+         id="stop3826"
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3828"
+         style="stop-color:#c9c9c9;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3800">
+      <stop
+         id="stop3802"
+         style="stop-color:#ffeed6;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop8664"
+         style="stop-color:#e49c2f;stop-opacity:1"
+         offset="0.5" />
+      <stop
+         id="stop3804"
+         style="stop-color:#ffc66c;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <radialGradient
+       cx="24.714285"
+       cy="38.57143"
+       r="19.714285"
+       fx="24.714285"
+       fy="38.57143"
+       id="radialGradient4571"
+       xlink:href="#linearGradient4565"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.333333,0,25.71429)" />
+    <filter
+       x="-0.445977"
+       y="-0.36261681"
+       width="1.8919539"
+       height="1.7252336"
+       color-interpolation-filters="sRGB"
+       id="filter4045">
+      <feGaussianBlur
+         id="feGaussianBlur4047"
+         stdDeviation="1.4186472" />
+    </filter>
+    <radialGradient
+       cx="34.530163"
+       cy="26.808044"
+       r="4.3171849"
+       fx="34.530163"
+       fy="26.808044"
+       id="radialGradient8976"
+       xlink:href="#linearGradient3881"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2032606,0,-5.4490198)" />
+    <radialGradient
+       cx="17.199268"
+       cy="26.237659"
+       r="5.0018282"
+       fx="17.199268"
+       fy="26.237659"
+       id="radialGradient8978"
+       xlink:href="#linearGradient7947"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.1052632,0,-2.7618594)" />
+    <radialGradient
+       cx="34.530163"
+       cy="26.808044"
+       r="4.3171849"
+       fx="34.530163"
+       fy="26.808044"
+       id="radialGradient9986"
+       xlink:href="#linearGradient3881"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2032606,0,-5.4490198)" />
+    <radialGradient
+       cx="17.199268"
+       cy="26.237659"
+       r="5.0018282"
+       fx="17.199268"
+       fy="26.237659"
+       id="radialGradient9988"
+       xlink:href="#linearGradient7947"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.1052632,0,-2.7618594)" />
+    <radialGradient
+       cx="34.530163"
+       cy="26.808044"
+       r="4.3171849"
+       fx="34.530163"
+       fy="26.808044"
+       id="radialGradient9994"
+       xlink:href="#linearGradient3881"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2032606,0,-5.4490198)" />
+    <radialGradient
+       cx="17.199268"
+       cy="26.237659"
+       r="5.0018282"
+       fx="17.199268"
+       fy="26.237659"
+       id="radialGradient9996"
+       xlink:href="#linearGradient7947"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.1052632,0,-2.7618594)" />
+    <radialGradient
+       cx="25.0527"
+       cy="39.5928"
+       r="15.7572"
+       fx="25.0527"
+       fy="39.5928"
+       id="radialGradient10002"
+       xlink:href="#aigrd2"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.617019,0,0,0.4614933,9.5717554,18.717642)" />
+    <radialGradient
+       cx="34.530163"
+       cy="26.808044"
+       r="4.3171849"
+       fx="34.530163"
+       fy="26.808044"
+       id="radialGradient10006"
+       xlink:href="#linearGradient3881"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2032606,0,-5.4490198)" />
+    <radialGradient
+       cx="34.530163"
+       cy="26.808044"
+       r="4.3171849"
+       fx="34.530163"
+       fy="26.808044"
+       id="radialGradient10012"
+       xlink:href="#linearGradient3881"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2032606,0,-5.4490198)" />
+    <radialGradient
+       cx="17.199268"
+       cy="26.237659"
+       r="5.0018282"
+       fx="17.199268"
+       fy="26.237659"
+       id="radialGradient10014"
+       xlink:href="#linearGradient7947"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.1052632,0,-2.7618594)" />
+    <radialGradient
+       cx="17.199268"
+       cy="26.237659"
+       r="5.0018282"
+       fx="17.199268"
+       fy="26.237659"
+       id="radialGradient10018"
+       xlink:href="#linearGradient7947"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.1052632,0,-2.7618594)" />
+    <radialGradient
+       cx="34.530163"
+       cy="26.808044"
+       r="4.3171849"
+       fx="34.530163"
+       fy="26.808044"
+       id="radialGradient10020"
+       xlink:href="#linearGradient3881"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2032606,0,-5.4490198)" />
+    <radialGradient
+       cx="34.530163"
+       cy="26.808044"
+       r="4.3171849"
+       fx="34.530163"
+       fy="26.808044"
+       id="radialGradient10024"
+       xlink:href="#linearGradient3881"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2032606,0,-5.4490198)" />
+    <radialGradient
+       cx="34.530163"
+       cy="26.808044"
+       r="4.3171849"
+       fx="34.530163"
+       fy="26.808044"
+       id="radialGradient10030"
+       xlink:href="#linearGradient3881"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2032606,0,-5.4490198)" />
+    <radialGradient
+       cx="34.530163"
+       cy="26.808044"
+       r="4.3171849"
+       fx="34.530163"
+       fy="26.808044"
+       id="radialGradient10032"
+       xlink:href="#linearGradient3881"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2032606,0,-5.4490198)" />
+  </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>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>emoticon</rdf:li>
+            <rdf:li>emote</rdf:li>
+            <rdf:li>smiley</rdf:li>
+            <rdf:li>happy</rdf:li>
+            <rdf:li>:)</rdf:li>
+            <rdf:li>:-)</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Jakub Steiner</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:source>http://jimmac.musichall.cz</dc:source>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Notice" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Attribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/ShareAlike" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1">
+    <path
+       d="m 44.42857,38.57143 a 19.714285,6.5714288 0 1 1 -39.42857,0 19.714285,6.5714288 0 1 1 39.42857,0 z"
+       id="path4563"
+       style="opacity:0.53164559;color:#000000;fill:url(#radialGradient4571);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.40487173;marker:none;visibility:visible;display:inline;overflow:visible" />
+    <path
+       d="m 39.774755,19.008621 a 8.6620579,8.6620579 0 1 1 -17.324115,0 8.6620579,8.6620579 0 1 1 17.324115,0 z"
+       transform="matrix(2.083142,0,0,2.083142,-40.097882,-16.49224)"
+       id="path4320"
+       style="color:#000000;fill:url(#radialGradient2714);fill-opacity:1;fill-rule:evenodd;stroke:#9c8c0a;stroke-width:0.48004404;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+    <path
+       d="m 39.774755,19.008621 a 8.6620579,8.6620579 0 1 1 -17.324115,0 8.6620579,8.6620579 0 1 1 17.324115,0 z"
+       transform="matrix(1.979782,0,0,1.979782,-36.882074,-14.52746)"
+       id="path4322"
+       style="opacity:0.67721522;color:#000000;fill:none;stroke:#ffffff;stroke-width:0.50510627;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+    <g
+       transform="translate(3.2410624,0)"
+       id="g9969">
+      <path
+         d="m 13.350483,13.306314 c 2.018281,-3.334552 3.2468,-3.159049 3.2468,-3.159049"
+         id="path8982"
+         style="fill:none;stroke:#883a00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.8669725" />
+      <path
+         d="m 29.595962,13.306314 c -2.018281,-3.3345521 -3.2468,-3.159049 -3.2468,-3.159049"
+         id="path9953"
+         style="fill:none;stroke:#883a00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.8669725" />
+    </g>
+    <g
+       transform="translate(-0.108037,0)"
+       id="g10026">
+      <path
+         d="m 38.347347,26.808044 a 3.8171847,4.6946983 0 1 1 -7.634369,0 3.8171847,4.6946983 0 1 1 7.634369,0 z"
+         transform="matrix(2.3892885,0,0,1.9504945,-49.658979,-25.707387)"
+         id="path2910"
+         style="fill:url(#radialGradient10030);fill-opacity:1;fill-rule:evenodd;stroke:none;filter:url(#filter4045)" />
+      <path
+         d="m 38.347347,26.808044 a 3.8171847,4.6946983 0 1 1 -7.634369,0 3.8171847,4.6946983 0 1 1 7.634369,0 z"
+         transform="matrix(2.3892885,0,0,1.9504945,-65.701419,-25.707387)"
+         id="path10022"
+         style="fill:url(#radialGradient10032);fill-opacity:1;fill-rule:evenodd;stroke:none;filter:url(#filter4045)" />
+    </g>
+    <g
+       transform="matrix(0.9645575,0.2638731,-0.2638731,0.9645575,-3.0470786,-7.3638446)"
+       id="g2739">
+      <path
+         d="m 31.249307,19.144345 c 0,2.5 -1.125,4.5 -2.5,4.5 -1.375,0 -2.5,-2 -2.5,-4.5 0,-2.5 1.125,-4.5 2.5,-4.5 1.375,0 2.5,2 2.5,4.5 z"
+         id="path2741"
+         style="opacity:0.36000001;fill:#ffffff;fill-rule:nonzero;stroke:none" />
+      <g
+         id="g9977">
+        <g
+           transform="matrix(0.8290375,-0.5591929,0.5591929,0.8290375,3.908245,16.599545)"
+           id="g2734">
+          <path
+             d="m 31.249307,19.144345 c 0,2.5 -1.125,4.5 -2.5,4.5 -1.375,0 -2.5,-2 -2.5,-4.5 0,-2.5 1.125,-4.5 2.5,-4.5 1.375,0 2.5,2 2.5,4.5 z"
+             id="path8612"
+             style="opacity:0.36000001;fill:#ffffff;fill-rule:nonzero;stroke:none" />
+          <path
+             d="m 31.249307,18.519345 c 0,2.5 -1.125,4.5 -2.5,4.5 -1.375,0 -2.5,-2 -2.5,-4.5 0,-2.5 1.125,-4.5 2.5,-4.5 1.375,0 2.5,2 2.5,4.5 z"
+             id="path8616"
+             style="fill:#000000;fill-rule:nonzero;stroke:none" />
+          <path
+             d="m 28.853244,16.315919 c 0,0.732232 -0.426516,1.318019 -0.947814,1.318019 -0.521298,0 -0.995205,-0.585787 -0.995205,-1.318019 0,-0.732233 0.426516,-1.31802 0.947814,-1.31802 0.521298,0 0.947814,0.585787 0.947814,1.31802 l 0.04739,0 z"
+             id="path8610"
+             style="opacity:0.36000001;fill:#ffffff;fill-rule:nonzero;stroke:none" />
+        </g>
+        <path
+           d="m 31.241572,18.491071 c 0,2.5 -1.125,4.5 -2.5,4.5 -1.375,0 -2.5,-2 -2.5,-4.5 0,-2.5 1.125,-4.5 2.5,-4.5 1.375,0 2.5,2 2.5,4.5 z"
+           id="path2743"
+           style="fill:#000000;fill-rule:nonzero;stroke:none" />
+      </g>
+      <path
+         d="m 28.853244,16.315919 c 0,0.732232 -0.426516,1.318019 -0.947814,1.318019 -0.521298,0 -0.995205,-0.585787 -0.995205,-1.318019 0,-0.732233 0.426516,-1.31802 0.947814,-1.31802 0.521298,0 0.947814,0.585787 0.947814,1.31802 l 0.04739,0 z"
+         id="path2745"
+         style="opacity:0.36000001;fill:#ffffff;fill-rule:nonzero;stroke:none" />
+    </g>
+    <g
+       transform="translate(3.9685059e-7,-2.5208263)"
+       id="g9998">
+      <path
+         d="m 31.174384,32.781041 c -1.488975,1.928923 -3.229975,3.319077 -6.32921,3.319077 -3.011063,0 -5.215313,-1.602194 -6.590989,-3.384342 1.25843,1.12823 3.101353,2.424249 6.4601,2.424249 4.013194,0 4.714904,-1.073196 6.460099,-2.358984 z"
+         id="path2659"
+         style="opacity:0.36000001;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+      <path
+         d="m 31.174384,32.519982 c -1.488975,1.928922 -3.229975,3.319077 -6.32921,3.319077 -3.011063,0 -5.215313,-1.602194 -6.590989,-3.384342 1.25843,1.12823 3.101353,2.424249 6.4601,2.424249 4.013194,0 4.714904,-1.073196 6.460099,-2.358984 z"
+         id="path8606"
+         style="fill:url(#radialGradient10002);fill-rule:nonzero;stroke:none" />
+    </g>
+  </g>
+</svg>
diff --git a/icons/smilies/cool.svg b/icons/smilies/cool.svg
new file mode 100644
index 0000000..8e52f59
--- /dev/null
+++ b/icons/smilies/cool.svg
@@ -0,0 +1,73 @@
+<?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"
+   version="1.1"
+   width="48pt"
+   height="48pt"
+   viewBox="0 0 64 64"
+   id="svg153"
+   xml:space="preserve"
+   style="overflow:visible"><metadata
+     id="metadata20"><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="defs178" /><g
+     id="Layer_1"
+     style="stroke:#000000"><path
+       d="m 31.965,1.854 c -16.826,0 -30.52,13.695 -30.52,30.525 0,16.831 13.694,30.525 30.52,30.525 16.836,0 30.529,-13.694 30.529,-30.525 0,-16.83 -13.693,-30.525 -30.529,-30.525 z"
+       id="path155"
+       style="fill:#997a00;stroke:none" /><radialGradient
+       cx="-224.77"
+       cy="548.66107"
+       r="408.80829"
+       fx="-224.77"
+       fy="548.66107"
+       id="XMLID_1_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.1584,0,0,0.1584,48.0479,-72.1631)"><stop
+         id="stop157"
+         style="stop-color:#ffff99;stop-opacity:1"
+         offset="0.0056" /><stop
+         id="stop158"
+         style="stop-color:#fff27c;stop-opacity:1"
+         offset="0.58429998" /><stop
+         id="stop159"
+         style="stop-color:#ffcc00;stop-opacity:1"
+         offset="1" /></radialGradient><path
+       d="m 3.438,32.378 c 0,15.755 12.776,28.528 28.527,28.528 15.76,0 28.533,-12.772 28.533,-28.528 C 60.498,16.624 47.725,3.853 31.965,3.853 16.214,3.854 3.438,16.624 3.438,32.378 z"
+       id="path165"
+       style="fill:url(#XMLID_1_);stroke:none" /><linearGradient
+       x1="-103.5713"
+       y1="484.0488"
+       x2="-103.5713"
+       y2="624.26251"
+       id="XMLID_2_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.1584,0,0,0.1584,48.0479,-72.1631)"><stop
+         id="stop167"
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0.0056" /><stop
+         id="stop168"
+         style="stop-color:#ffff99;stop-opacity:1"
+         offset="1" /></linearGradient><path
+       d="m 8.737,19.147 c 5.491,2.499 13.202,4.054 21.744,4.054 9.832,0 18.566,-2.061 24.076,-5.248 C 50.063,10.126 41.621,4.85 31.965,4.85 21.835,4.85 13.031,10.671 8.737,19.147 z"
+       id="path172"
+       style="fill:url(#XMLID_2_);stroke:none" /><path
+       d="M 64,64 H 0 V 0 h 64 v 64 z"
+       id="path173"
+       style="fill:none;stroke:none" /><path
+       d="m 15.116,38.308 c -0.002,0.123 -0.018,0.237 -0.018,0.362 0,10.875 8.473,15.743 16.871,15.743 8.398,0 16.871,-4.868 16.871,-15.743 0,-0.125 -0.016,-0.239 -0.018,-0.362 H 15.116 z"
+       id="path174"
+       style="opacity:0.5;stroke:none" /><path
+       d="m 16.162,39.308 c 0.345,9.71 8.084,14.105 15.807,14.105 7.723,0 15.462,-4.396 15.807,-14.105 -1.903,0 -29.713,0 -31.614,0 z"
+       id="path175"
+       style="fill:#ffffff;stroke:none" /><path
+       d="M 51.42,18.414 H 32.541 31.159 12.277 c -6.753,0 -10.284,7.982 -10.284,7.982 0,0 1.688,-3.991 6.754,-3.837 4.911,0.153 3.991,3.223 7.676,5.219 3.529,1.996 11.666,2.457 13.047,0 l 2.456,-4.298 2.455,4.298 c 1.383,2.457 9.517,1.996 13.048,0 3.532,-1.996 2.608,-5.219 7.676,-5.219 4.91,-0.153 6.754,3.837 6.754,3.837 0,0 -3.685,-7.982 -10.439,-7.982 z"
+       id="path176"
+       style="stroke:none" /></g></svg>
\ No newline at end of file
diff --git a/icons/smilies/devil.svg b/icons/smilies/devil.svg
new file mode 100644
index 0000000..3d901e2
--- /dev/null
+++ b/icons/smilies/devil.svg
@@ -0,0 +1,342 @@
+<?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"
+   version="1.1"
+   width="48"
+   height="48"
+   id="svg4376">
+  <defs
+     id="defs3">
+    <linearGradient
+       id="linearGradient2337">
+      <stop
+         id="stop2339"
+         style="stop-color:#cc0000;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop2345"
+         style="stop-color:#c84a00;stop-opacity:1"
+         offset="0.27586207" />
+      <stop
+         id="stop2341"
+         style="stop-color:#be0000;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2319">
+      <stop
+         id="stop2321"
+         style="stop-color:#f2d565;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop2323"
+         style="stop-color:#f2d565;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2311">
+      <stop
+         id="stop2313"
+         style="stop-color:#ffd93c;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop2315"
+         style="stop-color:#ffffff;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2291">
+      <stop
+         id="stop2293"
+         style="stop-color:#ffa107;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop2295"
+         style="stop-color:#cc0000;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2283">
+      <stop
+         id="stop2285"
+         style="stop-color:#730000;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop2287"
+         style="stop-color:#ff0202;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2102">
+      <stop
+         id="stop2104"
+         style="stop-color:#000000;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop2106"
+         style="stop-color:#000000;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3068">
+      <stop
+         id="stop3070"
+         style="stop-color:#cccccc;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3076"
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0.34579438" />
+      <stop
+         id="stop3078"
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0.72486681" />
+      <stop
+         id="stop3072"
+         style="stop-color:#cecece;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4565">
+      <stop
+         id="stop4567"
+         style="stop-color:#000000;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop4569"
+         style="stop-color:#000000;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <radialGradient
+       cx="24.714285"
+       cy="38.57143"
+       r="19.714285"
+       fx="24.714285"
+       fy="38.57143"
+       id="radialGradient1360"
+       xlink:href="#linearGradient4565"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.333333,0,25.71429)" />
+    <linearGradient
+       x1="14"
+       y1="21.0625"
+       x2="14"
+       y2="34.305527"
+       id="linearGradient2112"
+       xlink:href="#linearGradient2102"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.404523,6.545492,-7.966331)" />
+    <linearGradient
+       x1="14"
+       y1="21.0625"
+       x2="13.5"
+       y2="33.42667"
+       id="linearGradient2116"
+       xlink:href="#linearGradient2102"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.171895,-1.454508,-3.141166)" />
+    <linearGradient
+       x1="14"
+       y1="21.0625"
+       x2="14.5"
+       y2="33.431156"
+       id="linearGradient2120"
+       xlink:href="#linearGradient2102"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.159815,14.54551,-2.815047)" />
+    <linearGradient
+       x1="9.7892637"
+       y1="29.629091"
+       x2="38.390732"
+       y2="29.629091"
+       id="linearGradient2132"
+       xlink:href="#linearGradient3068"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.048897,0,0,1,-5.222439,0)" />
+    <linearGradient
+       x1="39.125"
+       y1="33.375"
+       x2="46.625"
+       y2="16.5"
+       id="linearGradient2289"
+       xlink:href="#linearGradient2283"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.780746,0,0,0.780746,9.900195,9.256071)" />
+    <radialGradient
+       cx="30.561104"
+       cy="15.699058"
+       r="8.9020796"
+       fx="30.561104"
+       fy="15.699058"
+       id="radialGradient2297"
+       xlink:href="#linearGradient2291"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.771216,0,0,0.771216,6.991896,3.591695)" />
+    <linearGradient
+       x1="32.098553"
+       y1="6.1454587"
+       x2="31.775375"
+       y2="8.044363"
+       id="linearGradient2317"
+       xlink:href="#linearGradient2311"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="28.764467"
+       y1="12.221258"
+       x2="38.070023"
+       y2="38.297359"
+       id="linearGradient2325"
+       xlink:href="#linearGradient2319"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="7.2235508"
+       y1="6.0204587"
+       x2="8.0878754"
+       y2="8.044363"
+       id="linearGradient2327"
+       xlink:href="#linearGradient2311"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="30.525612"
+       y1="7.3609705"
+       x2="32.311508"
+       y2="9.4234705"
+       id="linearGradient2343"
+       xlink:href="#linearGradient2337"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="10.400612"
+       y1="7.6109705"
+       x2="8.8115082"
+       y2="9.6734705"
+       id="linearGradient2347"
+       xlink:href="#linearGradient2337"
+       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>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>emoticon</rdf:li>
+            <rdf:li>emote</rdf:li>
+            <rdf:li>smiley</rdf:li>
+            <rdf:li>laugh</rdf:li>
+            <rdf:li>grin</rdf:li>
+            <rdf:li>>:-D</rdf:li>
+            <rdf:li>>:D</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Jakub Steiner</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:source>http://jimmac.musichall.cz</dc:source>
+        <dc:contributor>
+          <cc:Agent>
+            <dc:title>Tuomas Kuosmanen</dc:title>
+          </cc:Agent>
+        </dc:contributor>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Notice" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Attribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/ShareAlike" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1">
+    <path
+       d="m 27.435547,37.514338 c 0,0 16.791746,0.672804 19.159721,-6.10459 1.588549,-4.546595 -5.001655,-7.368293 -5.562817,-10.442481 -0.561161,-3.07419 3.318172,-2.293443 3.318172,-2.293443 l 0.634356,1.268713 2.293443,-2.732612 -4.098918,-0.536763 0.780746,1.317509 c 0,0 -3.781741,-0.609958 -3.903731,2.683816 -0.121992,3.293773 6.652724,7.490284 4.310485,10.735261 -2.342239,3.244977 -13.679442,2.244645 -13.679442,2.244645 l -3.252015,3.859945 z"
+       id="path2281"
+       style="color:#000000;fill:url(#linearGradient2289);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.99999988;marker:none;visibility:visible;display:inline;overflow:visible" />
+    <path
+       d="m 44.42857,38.57143 a 19.714285,6.5714288 0 1 1 -39.42857,0 19.714285,6.5714288 0 1 1 39.42857,0 z"
+       transform="matrix(1.163647,0,0,1,-4.772741,-0.795495)"
+       id="path4563"
+       style="opacity:0.53164559;color:#000000;fill:url(#radialGradient1360);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.40487173;marker:none;visibility:visible;display:inline;overflow:visible" />
+    <path
+       d="m 39.774755,19.008621 a 8.6620579,8.6620579 0 1 1 -17.324115,0 8.6620579,8.6620579 0 1 1 17.324115,0 z"
+       transform="matrix(2.083142,0,0,2.083142,-44.50164,-16.49224)"
+       id="path4320"
+       style="color:#000000;fill:url(#radialGradient2297);fill-opacity:1;fill-rule:evenodd;stroke:#a40000;stroke-width:0.48004404;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+    <path
+       d="m 39.774755,19.008621 a 8.6620579,8.6620579 0 1 1 -17.324115,0 8.6620579,8.6620579 0 1 1 17.324115,0 z"
+       transform="matrix(1.979782,0,0,1.979782,-41.28577,-14.52746)"
+       id="path4322"
+       style="opacity:0.43181817;color:#000000;fill:none;stroke:url(#linearGradient2325);stroke-width:0.50510627;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+    <path
+       d="M -0.875,1.875 A 2.9375,2.875 0 0 1 -6.3564497,3.3124999"
+       transform="matrix(-0.965926,-0.258819,0.258819,-0.965926,20.57993,17.20131)"
+       id="path1364"
+       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <path
+       d="M -0.875,1.875 A 2.9375,2.875 0 0 1 -6.3564497,3.3124999"
+       transform="matrix(-0.965926,-0.258819,0.258819,-0.965926,11.82993,17.20131)"
+       id="path2094"
+       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <path
+       d="m 5.2330302,21.044769 c -1.5389814,7.567378 4.6920364,17.167526 14.8511488,17.167526 10.247498,0 16.505528,-8.430424 14.72004,-17.105026 l -29.5711888,-0.0625 z"
+       id="path2096"
+       style="color:#000000;fill:url(#linearGradient2132);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.00000012;marker:none;visibility:visible;display:inline;overflow:visible" />
+    <path
+       d="m 20.545492,21.528657 0,16.854279"
+       id="path2110"
+       style="opacity:0.18181817;fill:none;stroke:url(#linearGradient2112);stroke-width:0.99999988px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="m 12.545492,21.468635 0,14.062746"
+       id="path2114"
+       style="opacity:0.18181817;fill:none;stroke:url(#linearGradient2116);stroke-width:1.00000024px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="m 28.545492,21.541107 0,13.917802"
+       id="path2118"
+       style="opacity:0.18181817;fill:none;stroke:url(#linearGradient2120);stroke-width:1.00000048px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="m 5.4864345,20.615864 c -1.7806546,8.821926 5.1590115,18.087809 14.8090585,18.087809 10.003545,0 16.652216,-9.578383 14.371562,-18.150309 l -29.1806205,0.0625 z"
+       id="path2756"
+       style="color:#000000;fill:none;stroke:#a40000;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+    <path
+       d="m 34.535409,4.733087 c -0.125668,0.023511 -0.246278,0.06874 -0.356419,0.1336572 l -5.970021,3.274601 c -0.30832,0.1767703 -0.620545,0.4973498 -0.547654,0.8451938 0.437186,2.086317 2.08394,3.513463 4.304051,3.763381 0.334167,0.03762 0.611947,-0.277499 0.765671,-0.576583 l 2.962734,-5.85864 C 35.87989,5.9453698 35.843224,5.5028759 35.598856,5.1692189 35.354488,4.8355619 34.943682,4.6670854 34.535409,4.733087 z"
+       id="path2276"
+       style="color:#000000;fill:url(#linearGradient2343);fill-opacity:1;fill-rule:evenodd;stroke:#a40000;stroke-width:0.99999946;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+    <path
+       d="m 6.9267157,4.858087 c 0.125668,0.023511 0.246278,0.06874 0.356419,0.1336572 l 5.9700183,3.274601 c 0.30832,0.1767703 0.620545,0.4973498 0.547654,0.8451938 -0.437186,2.086317 -2.08394,3.513463 -4.3040474,3.763381 -0.334167,0.03762 -0.6119476,-0.277499 -0.7656719,-0.576583 L 5.7683537,6.439697 C 5.5822347,6.0703698 5.6189007,5.6278759 5.8632687,5.2942189 6.1076367,4.9605619 6.5184427,4.7920854 6.9267157,4.858087 z"
+       id="path2279"
+       style="color:#000000;fill:url(#linearGradient2347);fill-opacity:1;fill-rule:evenodd;stroke:#a40000;stroke-width:0.99999946;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+    <path
+       d="m 34.550143,5.7962029 -5.607281,3.036966 c -0.191029,0.1221924 -0.242098,0.125658 -0.179693,0.3632693 0.280108,1.0665168 1.661495,2.2519038 2.732107,2.5130488 0.225831,0.05509 0.423009,-0.08134 0.52927,-0.288078 l 2.755097,-5.5081922 c 0.128655,-0.2552974 -0.153365,-0.1618881 -0.2295,-0.1170139 z"
+       id="path2299"
+       style="opacity:0.64772728;color:#000000;fill:none;stroke:url(#linearGradient2317);stroke-width:0.99999946;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+    <path
+       d="m 6.9035211,5.9729796 5.6072809,3.036966 C 12.701831,9.132138 12.7529,9.1356036 12.690495,9.3732149 12.410387,10.439732 11.029,11.625119 9.9583881,11.886264 c -0.225831,0.05509 -0.423009,-0.08134 -0.52927,-0.288078 L 6.6740211,6.0899935 c -0.128655,-0.2552974 0.153365,-0.1618881 0.2295,-0.1170139 z"
+       id="path2301"
+       style="opacity:0.64772728;color:#000000;fill:none;stroke:url(#linearGradient2327);stroke-width:0.99999946;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+  </g>
+</svg>
diff --git a/icons/smilies/grin.svg b/icons/smilies/grin.svg
new file mode 100644
index 0000000..65e6049
--- /dev/null
+++ b/icons/smilies/grin.svg
@@ -0,0 +1,244 @@
+<?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"
+   version="1.1"
+   width="48"
+   height="48"
+   id="svg4376">
+  <defs
+     id="defs3">
+    <linearGradient
+       id="linearGradient2102">
+      <stop
+         id="stop2104"
+         style="stop-color:#000000;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop2106"
+         style="stop-color:#000000;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3290">
+      <stop
+         id="stop3292"
+         style="stop-color:#fffcde;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3294"
+         style="stop-color:#f6e76a;stop-opacity:1"
+         offset="0.64485979" />
+      <stop
+         id="stop3296"
+         style="stop-color:#ffb738;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3068">
+      <stop
+         id="stop3070"
+         style="stop-color:#cccccc;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3076"
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0.34579438" />
+      <stop
+         id="stop3078"
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0.72486681" />
+      <stop
+         id="stop3072"
+         style="stop-color:#cecece;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4565">
+      <stop
+         id="stop4567"
+         style="stop-color:#000000;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop4569"
+         style="stop-color:#000000;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <radialGradient
+       cx="24.714285"
+       cy="38.57143"
+       r="19.714285"
+       fx="24.714285"
+       fy="38.57143"
+       id="radialGradient1360"
+       xlink:href="#linearGradient4565"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.333333,0,25.71429)" />
+    <radialGradient
+       cx="29.288071"
+       cy="15.720984"
+       r="8.9020796"
+       fx="29.158466"
+       fy="15.755712"
+       id="radialGradient1362"
+       xlink:href="#linearGradient3290"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="14"
+       y1="21.0625"
+       x2="14"
+       y2="32.875"
+       id="linearGradient2108"
+       xlink:href="#linearGradient2102"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.033654,1.5,-0.627404)" />
+    <linearGradient
+       x1="14"
+       y1="21.0625"
+       x2="14"
+       y2="34.305527"
+       id="linearGradient2112"
+       xlink:href="#linearGradient2102"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.404523,10.5,-7.966331)" />
+    <linearGradient
+       x1="14"
+       y1="21.0625"
+       x2="13.5"
+       y2="33.42667"
+       id="linearGradient2116"
+       xlink:href="#linearGradient2102"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.171895,2.5,-3.141166)" />
+    <linearGradient
+       x1="14"
+       y1="21.0625"
+       x2="14.5"
+       y2="33.431156"
+       id="linearGradient2120"
+       xlink:href="#linearGradient2102"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.159815,18.5,-2.815047)" />
+    <linearGradient
+       x1="14"
+       y1="21.0625"
+       x2="14"
+       y2="35.744175"
+       id="linearGradient2124"
+       xlink:href="#linearGradient2102"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.071351,-22.5,-3.854623)" />
+    <linearGradient
+       x1="9.7892637"
+       y1="29.629091"
+       x2="38.390732"
+       y2="29.629091"
+       id="linearGradient2132"
+       xlink:href="#linearGradient3068"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.048897,0,0,1,-1.267931,0)" />
+  </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>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>emoticon</rdf:li>
+            <rdf:li>emote</rdf:li>
+            <rdf:li>smiley</rdf:li>
+            <rdf:li>laughing</rdf:li>
+            <rdf:li>:-D</rdf:li>
+            <rdf:li>:D</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Jakub Steiner</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:source>http://jimmac.musichall.cz</dc:source>
+        <dc:contributor>
+          <cc:Agent>
+            <dc:title>Tuomas Kuosmanen</dc:title>
+          </cc:Agent>
+        </dc:contributor>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Notice" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Attribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/ShareAlike" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1">
+    <path
+       d="m 44.42857,38.57143 a 19.714285,6.5714288 0 1 1 -39.42857,0 19.714285,6.5714288 0 1 1 39.42857,0 z"
+       id="path4563"
+       style="opacity:0.53164559;color:#000000;fill:url(#radialGradient1360);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.40487173;marker:none;visibility:visible;display:inline;overflow:visible" />
+    <path
+       d="m 39.774755,19.008621 a 8.6620579,8.6620579 0 1 1 -17.324115,0 8.6620579,8.6620579 0 1 1 17.324115,0 z"
+       transform="matrix(2.083142,0,0,2.083142,-40.54715,-16.49224)"
+       id="path4320"
+       style="color:#000000;fill:url(#radialGradient1362);fill-opacity:1;fill-rule:evenodd;stroke:#9c8c0a;stroke-width:0.48004404;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+    <path
+       d="m 39.774755,19.008621 a 8.6620579,8.6620579 0 1 1 -17.324115,0 8.6620579,8.6620579 0 1 1 17.324115,0 z"
+       transform="matrix(1.979782,0,0,1.979782,-37.33128,-14.52746)"
+       id="path4322"
+       style="opacity:0.67721522;color:#000000;fill:none;stroke:#ffffff;stroke-width:0.50510627;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+    <path
+       d="M -0.875,1.875 A 2.9375,2.875 0 0 1 -6.3564497,3.3124999"
+       transform="matrix(-0.965926,-0.258819,0.258819,-0.965926,24.53442,17.20131)"
+       id="path1364"
+       style="fill:none;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <path
+       d="M -0.875,1.875 A 2.9375,2.875 0 0 1 -6.3564497,3.3124999"
+       transform="matrix(-0.965926,-0.258819,0.258819,-0.965926,15.78442,17.20131)"
+       id="path2094"
+       style="fill:none;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <path
+       d="m 9.1875355,21.044769 c -1.5389814,7.567378 4.6920355,17.167526 14.8511515,17.167526 10.247498,0 16.505528,-8.430424 14.72004,-17.105026 l -29.5711915,-0.0625 z"
+       id="path2096"
+       style="color:#000000;fill:url(#linearGradient2132);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.00000012;marker:none;visibility:visible;display:inline;overflow:visible" />
+    <path
+       d="m 24.5,21.528657 0,16.854279"
+       id="path2110"
+       style="opacity:0.18181817;fill:none;stroke:url(#linearGradient2112);stroke-width:0.99999988px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="m 16.5,21.468635 0,14.062746"
+       id="path2114"
+       style="opacity:0.18181817;fill:none;stroke:url(#linearGradient2116);stroke-width:1.00000024px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="m 32.5,21.541107 0,13.917802"
+       id="path2118"
+       style="opacity:0.18181817;fill:none;stroke:url(#linearGradient2120);stroke-width:1.00000048px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="m 9.4409398,20.615864 c -1.7806546,8.821926 5.1590122,18.087809 14.8090612,18.087809 10.003545,0 16.652216,-9.578383 14.371562,-18.150309 l -29.1806232,0.0625 z"
+       id="path2756"
+       style="color:#000000;fill:none;stroke:#8f5902;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+  </g>
+</svg>
diff --git a/icons/smilies/neutral.svg b/icons/smilies/neutral.svg
new file mode 100644
index 0000000..7674fa7
--- /dev/null
+++ b/icons/smilies/neutral.svg
@@ -0,0 +1,253 @@
+<?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"
+   version="1.1"
+   width="48"
+   height="48"
+   id="svg4376">
+  <defs
+     id="defs3">
+    <linearGradient
+       id="linearGradient3290">
+      <stop
+         id="stop3292"
+         style="stop-color:#fffcde;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3294"
+         style="stop-color:#f6e76a;stop-opacity:1"
+         offset="0.64485979" />
+      <stop
+         id="stop3296"
+         style="stop-color:#ffb738;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <radialGradient
+       cx="29.288071"
+       cy="15.720984"
+       r="8.9020796"
+       fx="29.158466"
+       fy="15.755712"
+       id="radialGradient2714"
+       xlink:href="#linearGradient3290"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       id="linearGradient2509">
+      <stop
+         id="stop2511"
+         style="stop-color:#fffbd5;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop2513"
+         style="stop-color:#edd400;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <radialGradient
+       cx="25.0527"
+       cy="39.5928"
+       r="15.7572"
+       fx="25.0527"
+       fy="39.5928"
+       id="aigrd2"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.25,0,0,1.25,53.52055,-13.37211)">
+      <stop
+         id="stop8602"
+         style="stop-color:#777777;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop8604"
+         style="stop-color:#000000;stop-opacity:1"
+         offset="1" />
+    </radialGradient>
+    <linearGradient
+       id="linearGradient4565">
+      <stop
+         id="stop4567"
+         style="stop-color:#000000;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop4569"
+         style="stop-color:#000000;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3824">
+      <stop
+         id="stop3826"
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3828"
+         style="stop-color:#c9c9c9;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3800">
+      <stop
+         id="stop3802"
+         style="stop-color:#ffeed6;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop8664"
+         style="stop-color:#e49c2f;stop-opacity:1"
+         offset="0.5" />
+      <stop
+         id="stop3804"
+         style="stop-color:#ffc66c;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <radialGradient
+       cx="24.714285"
+       cy="38.57143"
+       r="19.714285"
+       fx="24.714285"
+       fy="38.57143"
+       id="radialGradient4571"
+       xlink:href="#linearGradient4565"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.333333,0,25.71429)" />
+    <radialGradient
+       cx="25.0527"
+       cy="39.5928"
+       r="15.7572"
+       fx="25.0527"
+       fy="39.5928"
+       id="radialGradient2211"
+       xlink:href="#aigrd2"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.25,0,0,1.25,39.41053,-19.20819)" />
+    <radialGradient
+       cx="-23.452122"
+       cy="38.602852"
+       r="15.7572"
+       fx="-23.452122"
+       fy="38.602852"
+       id="radialGradient2213"
+       xlink:href="#aigrd2"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.357899,0,0,0.416667,55.84561,15.2093)" />
+    <radialGradient
+       cx="-23.452122"
+       cy="38.602852"
+       r="15.7572"
+       fx="-23.452122"
+       fy="38.602852"
+       id="radialGradient1342"
+       xlink:href="#aigrd2"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.28431,0,0,0.416667,30.45155,18.23307)" />
+  </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>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>emoticon</rdf:li>
+            <rdf:li>emote</rdf:li>
+            <rdf:li>face</rdf:li>
+            <rdf:li>plain</rdf:li>
+            <rdf:li>:|</rdf:li>
+            <rdf:li>:-|</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Steven Garrity</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:source>http://www.tango-project.org</dc:source>
+        <dc:contributor>
+          <cc:Agent>
+            <dc:title>Based on face-smile by jimmac</dc:title>
+          </cc:Agent>
+        </dc:contributor>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Notice" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Attribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/ShareAlike" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1">
+    <path
+       d="m 44.42857,38.57143 a 19.714285,6.5714288 0 1 1 -39.42857,0 19.714285,6.5714288 0 1 1 39.42857,0 z"
+       id="path4563"
+       style="opacity:0.53164559;color:#000000;fill:url(#radialGradient4571);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.40487173;marker:none;visibility:visible;display:inline;overflow:visible" />
+    <path
+       d="m 39.774755,19.008621 a 8.6620579,8.6620579 0 1 1 -17.324115,0 8.6620579,8.6620579 0 1 1 17.324115,0 z"
+       transform="matrix(2.083142,0,0,2.083142,-40.54715,-16.49224)"
+       id="path4320"
+       style="color:#000000;fill:url(#radialGradient2714);fill-opacity:1;fill-rule:evenodd;stroke:#9c8c0a;stroke-width:0.48004404;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+    <path
+       d="m 39.774755,19.008621 a 8.6620579,8.6620579 0 1 1 -17.324115,0 8.6620579,8.6620579 0 1 1 17.324115,0 z"
+       transform="matrix(1.979782,0,0,1.979782,-37.33128,-14.52746)"
+       id="path4322"
+       style="opacity:0.67721522;color:#000000;fill:none;stroke:#ffffff;stroke-width:0.50510627;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+    <g
+       transform="matrix(1,0,0,0.74952,0.353553,7.357569)"
+       id="g8666">
+      <path
+         d="m 21.398158,15.321428 c 0,2.5 -1.125,4.5 -2.5,4.5 -1.375,0 -2.625,-2 -2.625,-4.5 0,-2.5 1.125,-4.5 2.5,-4.5 1.375,0 2.5,2 2.5,4.5 l 0.125,0 z"
+         id="path8610"
+         style="opacity:0.36000001;fill:#ffffff;fill-rule:nonzero;stroke:none" />
+      <path
+         d="m 30.688512,15.321428 c 0,2.5 -1.125,4.5 -2.5,4.5 -1.375,0 -2.5,-2 -2.5,-4.5 0,-2.5 1.125,-4.5 2.5,-4.5 1.375,0 2.5,2 2.5,4.5 z"
+         id="path8612"
+         style="opacity:0.36000001;fill:#ffffff;fill-rule:nonzero;stroke:none" />
+      <path
+         d="m 21.398158,14.696428 c 0,2.5 -1.125,4.5 -2.5,4.5 -1.375,0 -2.5,-2 -2.5,-4.5 0,-2.5 1.125,-4.5 2.5,-4.5 1.375,0 2.5,2 2.5,4.5 z"
+         id="path8614"
+         style="fill:#000000;fill-rule:nonzero;stroke:none" />
+      <path
+         d="m 30.688512,14.696428 c 0,2.5 -1.125,4.5 -2.5,4.5 -1.375,0 -2.5,-2 -2.5,-4.5 0,-2.5 1.125,-4.5 2.5,-4.5 1.375,0 2.5,2 2.5,4.5 z"
+         id="path8616"
+         style="fill:#000000;fill-rule:nonzero;stroke:none" />
+    </g>
+    <rect
+       width="20"
+       height="1"
+       rx="0.5"
+       ry="0.5"
+       x="14"
+       y="29"
+       id="rect2453"
+       style="color:#000000;fill:url(#radialGradient2213);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+    <rect
+       width="20"
+       height="1"
+       rx="0.5"
+       ry="0.5"
+       x="14"
+       y="30"
+       id="rect1336"
+       style="opacity:0.36000001;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+  </g>
+</svg>
diff --git a/icons/smilies/sad.svg b/icons/smilies/sad.svg
new file mode 100644
index 0000000..e4d9803
--- /dev/null
+++ b/icons/smilies/sad.svg
@@ -0,0 +1,210 @@
+<?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"
+   version="1.1"
+   width="48"
+   height="48"
+   id="svg4376">
+  <defs
+     id="defs3">
+    <linearGradient
+       id="linearGradient3290">
+      <stop
+         id="stop3292"
+         style="stop-color:#fffcde;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3294"
+         style="stop-color:#f6e76a;stop-opacity:1"
+         offset="0.64485979" />
+      <stop
+         id="stop3296"
+         style="stop-color:#ffb738;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <radialGradient
+       cx="29.288071"
+       cy="15.720984"
+       r="8.9020796"
+       fx="29.158466"
+       fy="15.755712"
+       id="radialGradient2714"
+       xlink:href="#linearGradient3290"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       id="linearGradient2509">
+      <stop
+         id="stop2511"
+         style="stop-color:#fffbd5;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop2513"
+         style="stop-color:#edd400;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <radialGradient
+       cx="25.0527"
+       cy="39.5928"
+       r="15.7572"
+       fx="25.0527"
+       fy="39.5928"
+       id="aigrd2"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.25,0,0,-1.25,-6.479446,73.66448)">
+      <stop
+         id="stop8602"
+         style="stop-color:#777777;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop8604"
+         style="stop-color:#000000;stop-opacity:1"
+         offset="1" />
+    </radialGradient>
+    <linearGradient
+       id="linearGradient4565">
+      <stop
+         id="stop4567"
+         style="stop-color:#000000;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop4569"
+         style="stop-color:#000000;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3824">
+      <stop
+         id="stop3826"
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3828"
+         style="stop-color:#c9c9c9;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3800">
+      <stop
+         id="stop3802"
+         style="stop-color:#ffeed6;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop8664"
+         style="stop-color:#e49c2f;stop-opacity:1"
+         offset="0.5" />
+      <stop
+         id="stop3804"
+         style="stop-color:#ffc66c;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <radialGradient
+       cx="24.714285"
+       cy="38.57143"
+       r="19.714285"
+       fx="24.714285"
+       fy="38.57143"
+       id="radialGradient4571"
+       xlink:href="#linearGradient4565"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.333333,0,25.71429)" />
+  </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>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>emoticon</rdf:li>
+            <rdf:li>emote</rdf:li>
+            <rdf:li>smiley</rdf:li>
+            <rdf:li>sad</rdf:li>
+            <rdf:li>:(</rdf:li>
+            <rdf:li>:-(</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/by-nc-sa/2.0/" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Jakub Steiner</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:source>http://jimmac.musichall.cz</dc:source>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/by-nc-sa/2.0/">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Notice" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Attribution" />
+        <cc:prohibits
+           rdf:resource="http://web.resource.org/cc/CommercialUse" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/ShareAlike" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1">
+    <path
+       d="m 44.42857,38.57143 a 19.714285,6.5714288 0 1 1 -39.42857,0 19.714285,6.5714288 0 1 1 39.42857,0 z"
+       id="path4563"
+       style="opacity:0.53164559;color:#000000;fill:url(#radialGradient4571);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.40487173;marker:none;visibility:visible;display:inline;overflow:visible" />
+    <path
+       d="m 39.774755,19.008621 a 8.6620579,8.6620579 0 1 1 -17.324115,0 8.6620579,8.6620579 0 1 1 17.324115,0 z"
+       transform="matrix(2.083142,0,0,2.083142,-40.54715,-16.49224)"
+       id="path4320"
+       style="color:#000000;fill:url(#radialGradient2714);fill-opacity:1;fill-rule:evenodd;stroke:#9c8c0a;stroke-width:0.48004404;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+    <path
+       d="m 39.774755,19.008621 a 8.6620579,8.6620579 0 1 1 -17.324115,0 8.6620579,8.6620579 0 1 1 17.324115,0 z"
+       transform="matrix(1.979782,0,0,1.979782,-37.33128,-14.52746)"
+       id="path4322"
+       style="opacity:0.67721522;color:#000000;fill:none;stroke:#ffffff;stroke-width:0.50510627;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+    <path
+       d="m 34.014268,32.036842 c -3.723574,-4.164012 -5.562409,-5.631281 -9.551776,-5.631281 -3.901179,0 -6.499672,1.688046 -9.375,5.984835 3.433297,-2.348813 5.309632,-3.649496 9.109835,-3.649496 3.711839,0 5.751077,1.050699 9.816941,3.295942 z"
+       id="path1387"
+       style="opacity:0.36000001;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+    <path
+       d="m 34.014268,31.329738 c -3.723574,-4.164012 -5.562409,-5.631281 -9.551776,-5.631281 -3.901179,0 -6.499672,1.688046 -9.375,5.984835 3.433297,-2.348813 5.309632,-3.649496 9.109835,-3.649496 3.711839,0 5.751077,1.050699 9.816941,3.295942 z"
+       id="path8606"
+       style="fill:url(#aigrd2);fill-rule:nonzero;stroke:none" />
+    <g
+       transform="translate(0.353553,2.392706)"
+       id="g8666">
+      <path
+         d="m 21.398158,15.321428 c 0,2.5 -1.125,4.5 -2.5,4.5 -1.375,0 -2.625,-2 -2.625,-4.5 0,-2.5 1.125,-4.5 2.5,-4.5 1.375,0 2.5,2 2.5,4.5 l 0.125,0 z"
+         id="path8610"
+         style="opacity:0.36000001;fill:#ffffff;fill-rule:nonzero;stroke:none" />
+      <path
+         d="m 30.688512,15.321428 c 0,2.5 -1.125,4.5 -2.5,4.5 -1.375,0 -2.5,-2 -2.5,-4.5 0,-2.5 1.125,-4.5 2.5,-4.5 1.375,0 2.5,2 2.5,4.5 z"
+         id="path8612"
+         style="opacity:0.36000001;fill:#ffffff;fill-rule:nonzero;stroke:none" />
+      <path
+         d="m 21.398158,14.696428 c 0,2.5 -1.125,4.5 -2.5,4.5 -1.375,0 -2.5,-2 -2.5,-4.5 0,-2.5 1.125,-4.5 2.5,-4.5 1.375,0 2.5,2 2.5,4.5 z"
+         id="path8614"
+         style="fill:#000000;fill-rule:nonzero;stroke:none" />
+      <path
+         d="m 30.688512,14.696428 c 0,2.5 -1.125,4.5 -2.5,4.5 -1.375,0 -2.5,-2 -2.5,-4.5 0,-2.5 1.125,-4.5 2.5,-4.5 1.375,0 2.5,2 2.5,4.5 z"
+         id="path8616"
+         style="fill:#000000;fill-rule:nonzero;stroke:none" />
+    </g>
+  </g>
+</svg>
diff --git a/icons/smilies/shock.svg b/icons/smilies/shock.svg
new file mode 100644
index 0000000..d42e86e
--- /dev/null
+++ b/icons/smilies/shock.svg
@@ -0,0 +1,208 @@
+<?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"
+   version="1.1"
+   width="48"
+   height="48"
+   id="svg4376">
+  <defs
+     id="defs3">
+    <linearGradient
+       id="linearGradient3290">
+      <stop
+         id="stop3292"
+         style="stop-color:#fffcde;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3294"
+         style="stop-color:#f6e76a;stop-opacity:1"
+         offset="0.64485979" />
+      <stop
+         id="stop3296"
+         style="stop-color:#ffb738;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <radialGradient
+       cx="29.288071"
+       cy="15.720984"
+       r="8.9020796"
+       fx="29.158466"
+       fy="15.755712"
+       id="radialGradient2714"
+       xlink:href="#linearGradient3290"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       id="linearGradient2509">
+      <stop
+         id="stop2511"
+         style="stop-color:#fffbd5;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop2513"
+         style="stop-color:#edd400;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <radialGradient
+       cx="25.0527"
+       cy="39.5928"
+       r="15.7572"
+       fx="25.0527"
+       fy="39.5928"
+       id="aigrd2"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.25,0,0,1.25,-6.214281,-8.428572)">
+      <stop
+         id="stop8602"
+         style="stop-color:#777777;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop8604"
+         style="stop-color:#000000;stop-opacity:1"
+         offset="1" />
+    </radialGradient>
+    <linearGradient
+       id="linearGradient4565">
+      <stop
+         id="stop4567"
+         style="stop-color:#000000;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop4569"
+         style="stop-color:#000000;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3824">
+      <stop
+         id="stop3826"
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3828"
+         style="stop-color:#c9c9c9;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3800">
+      <stop
+         id="stop3802"
+         style="stop-color:#ffeed6;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop8664"
+         style="stop-color:#e49c2f;stop-opacity:1"
+         offset="0.5" />
+      <stop
+         id="stop3804"
+         style="stop-color:#ffc66c;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <radialGradient
+       cx="24.714285"
+       cy="38.57143"
+       r="19.714285"
+       fx="24.714285"
+       fy="38.57143"
+       id="radialGradient4571"
+       xlink:href="#linearGradient4565"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.333333,0,25.71429)" />
+  </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>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>emoticon</rdf:li>
+            <rdf:li>emote</rdf:li>
+            <rdf:li>smiley</rdf:li>
+            <rdf:li>stare</rdf:li>
+            <rdf:li>shocked</rdf:li>
+            <rdf:li>:O</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Jakub Steiner</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:source>http://jimmac.musichall.cz</dc:source>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Notice" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Attribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/ShareAlike" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1">
+    <path
+       d="m 44.42857,38.57143 a 19.714285,6.5714288 0 1 1 -39.42857,0 19.714285,6.5714288 0 1 1 39.42857,0 z"
+       id="path4563"
+       style="opacity:0.53164559;color:#000000;fill:url(#radialGradient4571);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.40487173;marker:none;visibility:visible;display:inline;overflow:visible" />
+    <path
+       d="m 39.774755,19.008621 a 8.6620579,8.6620579 0 1 1 -17.324115,0 8.6620579,8.6620579 0 1 1 17.324115,0 z"
+       transform="matrix(2.083142,0,0,2.083142,-40.54715,-16.49224)"
+       id="path4320"
+       style="color:#000000;fill:url(#radialGradient2714);fill-opacity:1;fill-rule:evenodd;stroke:#9c8c0a;stroke-width:0.48004404;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+    <path
+       d="m 39.774755,19.008621 a 8.6620579,8.6620579 0 1 1 -17.324115,0 8.6620579,8.6620579 0 1 1 17.324115,0 z"
+       transform="matrix(1.979782,0,0,1.979782,-37.33128,-14.52746)"
+       id="path4322"
+       style="opacity:0.67721522;color:#000000;fill:none;stroke:#ffffff;stroke-width:0.50510627;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+    <path
+       d="m 33.660715,32.696428 c 0,3.5 -4.25,6.25 -9.375,6.25 -5.125,0 -9.375,-2.75 -9.375,-6.25 0,-3.5 4.25,-6.25 9.375,-6.25 5.125,0 9.375,2.75 9.375,6.25 z"
+       id="path8599"
+       style="opacity:0.36000001;fill:#ffffff;fill-rule:nonzero;stroke:none" />
+    <path
+       d="m 33.660715,31.696428 c 0,3.5 -4.25,6.25 -9.375,6.25 -5.125,0 -9.375,-2.75 -9.375,-6.25 0,-3.5 4.25,-6.25 9.375,-6.25 5.125,0 9.375,2.75 9.375,6.25 z"
+       id="path8606"
+       style="fill:url(#aigrd2);fill-rule:nonzero;stroke:none" />
+    <g
+       transform="translate(0.265165,0)"
+       id="g8666">
+      <path
+         d="m 21.398158,15.321428 c 0,2.5 -1.125,4.5 -2.5,4.5 -1.375,0 -2.625,-2 -2.625,-4.5 0,-2.5 1.125,-4.5 2.5,-4.5 1.375,0 2.5,2 2.5,4.5 l 0.125,0 z"
+         id="path8610"
+         style="opacity:0.36000001;fill:#ffffff;fill-rule:nonzero;stroke:none" />
+      <path
+         d="m 30.688512,15.321428 c 0,2.5 -1.125,4.5 -2.5,4.5 -1.375,0 -2.5,-2 -2.5,-4.5 0,-2.5 1.125,-4.5 2.5,-4.5 1.375,0 2.5,2 2.5,4.5 z"
+         id="path8612"
+         style="opacity:0.36000001;fill:#ffffff;fill-rule:nonzero;stroke:none" />
+      <path
+         d="m 21.398158,14.696428 c 0,2.5 -1.125,4.5 -2.5,4.5 -1.375,0 -2.5,-2 -2.5,-4.5 0,-2.5 1.125,-4.5 2.5,-4.5 1.375,0 2.5,2 2.5,4.5 z"
+         id="path8614"
+         style="fill:#000000;fill-rule:nonzero;stroke:none" />
+      <path
+         d="m 30.688512,14.696428 c 0,2.5 -1.125,4.5 -2.5,4.5 -1.375,0 -2.5,-2 -2.5,-4.5 0,-2.5 1.125,-4.5 2.5,-4.5 1.375,0 2.5,2 2.5,4.5 z"
+         id="path8616"
+         style="fill:#000000;fill-rule:nonzero;stroke:none" />
+    </g>
+  </g>
+</svg>
diff --git a/icons/smilies/smile.svg b/icons/smilies/smile.svg
new file mode 100644
index 0000000..3bda3be
--- /dev/null
+++ b/icons/smilies/smile.svg
@@ -0,0 +1,123 @@
+<?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"
+   version="1.1"
+   width="48"
+   height="48"
+   viewBox="0 0 48 48"
+   id="svg2">
+  <metadata
+     id="metadata45">
+    <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="defs4">
+    <radialGradient
+       cx="29.288"
+       cy="15.721"
+       r="8.9020996"
+       fx="29.158001"
+       fy="15.756"
+       id="rad1"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         id="stop7"
+         style="stop-color:#fffcde;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop9"
+         style="stop-color:#f6e76a;stop-opacity:1"
+         offset="0.64486003" />
+      <stop
+         id="stop11"
+         style="stop-color:#ffb738;stop-opacity:1"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="25.052999"
+       cy="39.592999"
+       r="15.757"
+       id="rad2"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.25,0,0,1.25,-6.47945,-13.3721)">
+      <stop
+         id="stop14"
+         style="stop-color:#777777;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop16"
+         style="stop-color:#000000;stop-opacity:1"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="24.714001"
+       cy="38.570999"
+       r="19.714001"
+       id="rad3"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.333333,0,25.7143)">
+      <stop
+         id="stop19"
+         style="stop-color:#000000;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop21"
+         style="stop-color:#000000;stop-opacity:0"
+         offset="1" />
+    </radialGradient>
+  </defs>
+  <path
+     d="m 44.429,38.571 a 19.7145,6.5715667 0 1 1 -39.429,0 19.7145,6.5715667 0 1 1 39.429,0 z"
+     id="path23"
+     style="opacity:0.53164601;fill:url(#rad3)" />
+  <path
+     d="m 39.775,19.009 a 8.6621,8.6621 0 1 1 -17.324,0 8.6621,8.6621 0 1 1 17.324,0 z"
+     transform="matrix(2.08314,0,0,2.08314,-40.5471,-16.4922)"
+     id="path25"
+     style="fill:url(#rad1);stroke:#9c8c0a;stroke-width:0.47999999" />
+  <path
+     d="m 39.775,19.009 a 8.6621,8.6621 0 1 1 -17.324,0 8.6621,8.6621 0 1 1 17.324,0 z"
+     transform="matrix(1.97978,0,0,1.97978,-37.3313,-14.5275)"
+     id="path27"
+     style="opacity:0.67721498;fill:none;stroke:#ffffff;stroke-width:0.50510597" />
+  <path
+     d="m 37.285,24.72 c -3.017,5.225 -6.544,8.99 -12.823,8.99 -6.1,0 -10.565,-4.34 -13.352,-9.167 2.549,3.056 6.283,6.567 13.087,6.567 8.131,0 9.552,-2.907 13.088,-6.39 z"
+     id="path29"
+     style="opacity:0.36000001;fill:#ffffff" />
+  <path
+     d="m 37.285,24.013 c -3.017,5.225 -6.544,8.99 -12.823,8.99 -6.1,0 -10.565,-4.34 -13.352,-9.167 2.549,3.056 6.283,6.566 13.087,6.566 8.131,0 9.552,-2.906 13.088,-6.389 z"
+     id="path31"
+     style="fill:url(#rad2)" />
+  <g
+     transform="translate(0.353553,2.39271)"
+     id="g33">
+    <path
+       d="m 21.398,15.321 c 0,2.5 -1.125,4.5 -2.5,4.5 -1.375,0 -2.625,-2 -2.625,-4.5 0,-2.5 1.125,-4.5 2.5,-4.5 1.375,0 2.5,2 2.5,4.5 h 0.125 z"
+       id="path35"
+       style="opacity:0.36000001;fill:#ffffff" />
+    <path
+       d="m 30.689,15.321 c 0,2.5 -1.125,4.5 -2.5,4.5 -1.375,0 -2.5,-2 -2.5,-4.5 0,-2.5 1.125,-4.5 2.5,-4.5 1.375,0 2.5,2 2.5,4.5 z"
+       id="path37"
+       style="opacity:0.36000001;fill:#ffffff" />
+    <path
+       d="m 21.398,14.696 c 0,2.5 -1.125,4.5 -2.5,4.5 -1.375,0 -2.5,-2 -2.5,-4.5 0,-2.5 1.125,-4.5 2.5,-4.5 1.375,0 2.5,2 2.5,4.5 z"
+       id="path39" />
+    <path
+       d="m 30.689,14.696 c 0,2.5 -1.125,4.5 -2.5,4.5 -1.375,0 -2.5,-2 -2.5,-4.5 0,-2.5 1.125,-4.5 2.5,-4.5 1.375,0 2.5,2 2.5,4.5 z"
+       id="path41" />
+  </g>
+</svg>
diff --git a/icons/smilies/smiley-icon.svg b/icons/smilies/smiley-icon.svg
new file mode 100644
index 0000000..f5e36a2
--- /dev/null
+++ b/icons/smilies/smiley-icon.svg
@@ -0,0 +1,123 @@
+<?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"
+   version="1.1"
+   width="48"
+   height="48"
+   viewBox="0 0 48 48"
+   id="svg3022">
+  <metadata
+     id="metadata3065">
+    <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="defs3024">
+    <radialGradient
+       cx="29.288"
+       cy="15.721"
+       r="8.9020996"
+       fx="29.158001"
+       fy="15.756"
+       id="rad1"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         id="stop3027"
+         style="stop-color:#fffcde;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3029"
+         style="stop-color:#f6e76a;stop-opacity:1"
+         offset="0.64486003" />
+      <stop
+         id="stop3031"
+         style="stop-color:#ffb738;stop-opacity:1"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="25.052999"
+       cy="39.592999"
+       r="15.757"
+       id="rad2"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.25,0,0,1.25,-6.47945,-13.3721)">
+      <stop
+         id="stop3034"
+         style="stop-color:#777777;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3036"
+         style="stop-color:#000000;stop-opacity:1"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="24.714001"
+       cy="38.570999"
+       r="19.714001"
+       id="rad3"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.333333,0,25.7143)">
+      <stop
+         id="stop3039"
+         style="stop-color:#000000;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3041"
+         style="stop-color:#000000;stop-opacity:0"
+         offset="1" />
+    </radialGradient>
+  </defs>
+  <path
+     d="m 44.429,38.571 a 19.7145,6.5715667 0 1 1 -39.429,0 19.7145,6.5715667 0 1 1 39.429,0 z"
+     id="path3043"
+     style="opacity:0.53164601;fill:url(#rad3)" />
+  <path
+     d="m 39.775,19.009 a 8.6621,8.6621 0 1 1 -17.324,0 8.6621,8.6621 0 1 1 17.324,0 z"
+     transform="matrix(2.08314,0,0,2.08314,-40.5471,-16.4922)"
+     id="path3045"
+     style="fill:url(#rad1);stroke:#9c8c0a;stroke-width:0.47999999" />
+  <path
+     d="m 39.775,19.009 a 8.6621,8.6621 0 1 1 -17.324,0 8.6621,8.6621 0 1 1 17.324,0 z"
+     transform="matrix(1.97978,0,0,1.97978,-37.3313,-14.5275)"
+     id="path3047"
+     style="opacity:0.67721498;fill:none;stroke:#ffffff;stroke-width:0.50510597" />
+  <path
+     d="m 37.285,24.72 c -3.017,5.225 -6.544,8.99 -12.823,8.99 -6.1,0 -10.565,-4.34 -13.352,-9.167 2.549,3.056 6.283,6.567 13.087,6.567 8.131,0 9.552,-2.907 13.088,-6.39 z"
+     id="path3049"
+     style="opacity:0.36000001;fill:#ffffff" />
+  <path
+     d="m 37.285,24.013 c -3.017,5.225 -6.544,8.99 -12.823,8.99 -6.1,0 -10.565,-4.34 -13.352,-9.167 2.549,3.056 6.283,6.566 13.087,6.566 8.131,0 9.552,-2.906 13.088,-6.389 z"
+     id="path3051"
+     style="fill:url(#rad2)" />
+  <g
+     transform="translate(0.353553,2.39271)"
+     id="g3053">
+    <path
+       d="m 21.398,15.321 c 0,2.5 -1.125,4.5 -2.5,4.5 -1.375,0 -2.625,-2 -2.625,-4.5 0,-2.5 1.125,-4.5 2.5,-4.5 1.375,0 2.5,2 2.5,4.5 h 0.125 z"
+       id="path3055"
+       style="opacity:0.36000001;fill:#ffffff" />
+    <path
+       d="m 30.689,15.321 c 0,2.5 -1.125,4.5 -2.5,4.5 -1.375,0 -2.5,-2 -2.5,-4.5 0,-2.5 1.125,-4.5 2.5,-4.5 1.375,0 2.5,2 2.5,4.5 z"
+       id="path3057"
+       style="opacity:0.36000001;fill:#ffffff" />
+    <path
+       d="m 21.398,14.696 c 0,2.5 -1.125,4.5 -2.5,4.5 -1.375,0 -2.5,-2 -2.5,-4.5 0,-2.5 1.125,-4.5 2.5,-4.5 1.375,0 2.5,2 2.5,4.5 z"
+       id="path3059" />
+    <path
+       d="m 30.689,14.696 c 0,2.5 -1.125,4.5 -2.5,4.5 -1.375,0 -2.5,-2 -2.5,-4.5 0,-2.5 1.125,-4.5 2.5,-4.5 1.375,0 2.5,2 2.5,4.5 z"
+       id="path3061" />
+  </g>
+</svg>
diff --git a/icons/smilies/tongue.svg b/icons/smilies/tongue.svg
new file mode 100644
index 0000000..d964568
--- /dev/null
+++ b/icons/smilies/tongue.svg
@@ -0,0 +1,439 @@
+<?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"
+   version="1.0"
+   width="48"
+   height="48"
+   id="svg2">
+  <defs
+     id="defs4">
+    <linearGradient
+       id="linearGradient8212">
+      <stop
+         id="stop8214"
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop8216"
+         style="stop-color:#ffffff;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient8198">
+      <stop
+         id="stop8200"
+         style="stop-color:#000000;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop8202"
+         style="stop-color:#000000;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient8177">
+      <stop
+         id="stop8179"
+         style="stop-color:#000000;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop8181"
+         style="stop-color:#000000;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient8143">
+      <stop
+         id="stop8145"
+         style="stop-color:#ef2929;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop8147"
+         style="stop-color:#f89898;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient8431">
+      <stop
+         id="stop8433"
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop8435"
+         style="stop-color:#ffffff;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient7824">
+      <stop
+         id="stop7826"
+         style="stop-color:#000000;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop7828"
+         style="stop-color:#000000;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient7810">
+      <stop
+         id="stop7812"
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop7814"
+         style="stop-color:#ffffff;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient7802">
+      <stop
+         id="stop7804"
+         style="stop-color:#2e3436;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop7806"
+         style="stop-color:#000000;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient7776">
+      <stop
+         id="stop7778"
+         style="stop-color:#2e3436;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop7780"
+         style="stop-color:#000000;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3752">
+      <stop
+         id="stop3754"
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3756"
+         style="stop-color:#fce94f;stop-opacity:1"
+         offset="0.80000001" />
+      <stop
+         id="stop3758"
+         style="stop-color:#edd400;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3734">
+      <stop
+         id="stop3736"
+         style="stop-color:#000000;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3738"
+         style="stop-color:#000000;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3712">
+      <stop
+         id="stop3714"
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3716"
+         style="stop-color:#ffffff;stop-opacity:0.50570345"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3704">
+      <stop
+         id="stop3706"
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3708"
+         style="stop-color:#ffffff;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <radialGradient
+       cx="12.046875"
+       cy="10.046875"
+       r="9.546875"
+       fx="12.046875"
+       fy="10.046875"
+       id="radialGradient7130"
+       xlink:href="#linearGradient3734"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       cx="9.3747082"
+       cy="7.8025141"
+       r="10.049342"
+       fx="9.3747082"
+       fy="7.8025141"
+       id="radialGradient7132"
+       xlink:href="#linearGradient3752"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.200799,0,0,1.200799,-1.921023,-1.565398)" />
+    <linearGradient
+       x1="18.825819"
+       y1="-140.43388"
+       x2="19.23638"
+       y2="-134.38734"
+       id="linearGradient7134"
+       xlink:href="#linearGradient8431"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       cx="5.3851099"
+       cy="3.2659137"
+       r="10.108456"
+       fx="5.3851099"
+       fy="3.2659137"
+       id="radialGradient7136"
+       xlink:href="#linearGradient3712"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.242401,0,0,1.242401,-1.281477,-0.839422)" />
+    <radialGradient
+       cx="29.46875"
+       cy="-131.5"
+       r="3.21875"
+       fx="29.46875"
+       fy="-131.5"
+       id="radialGradient7140"
+       xlink:href="#linearGradient7824"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.3203883,0,42.131068)" />
+    <radialGradient
+       cx="29.46875"
+       cy="-131.5"
+       r="3.21875"
+       fx="29.46875"
+       fy="-131.5"
+       id="radialGradient7142"
+       xlink:href="#linearGradient7824"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.3203883,0,42.131068)" />
+    <radialGradient
+       cx="28.221428"
+       cy="-133.18883"
+       r="3.21875"
+       fx="28.221428"
+       fy="-133.18883"
+       id="radialGradient7144"
+       xlink:href="#linearGradient7802"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.6369211,0,0,1.625836,-18.114998,82.98933)" />
+    <radialGradient
+       cx="28.221428"
+       cy="-133.18883"
+       r="3.21875"
+       fx="28.221428"
+       fy="-133.18883"
+       id="radialGradient7146"
+       xlink:href="#linearGradient7776"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.6369211,0,0,1.625836,-18.114998,82.98933)" />
+    <linearGradient
+       x1="28.621698"
+       y1="-135.65616"
+       x2="30.315804"
+       y2="-127.34384"
+       id="linearGradient7148"
+       xlink:href="#linearGradient7810"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="28.621698"
+       y1="-135.65616"
+       x2="30.315804"
+       y2="-127.34384"
+       id="linearGradient7150"
+       xlink:href="#linearGradient7810"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       cx="-79.065781"
+       cy="66.5"
+       r="11.89852"
+       fx="-79.065781"
+       fy="66.5"
+       id="radialGradient8256"
+       xlink:href="#linearGradient3704"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0412246,0,0,0.779118,103.17111,-14.3113)" />
+    <linearGradient
+       x1="27.34375"
+       y1="39.71875"
+       x2="27.34375"
+       y2="41.34375"
+       id="linearGradient8264"
+       xlink:href="#linearGradient8198"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8049361,0,0,1,2.7790665,1)" />
+    <linearGradient
+       x1="28.499998"
+       y1="34.96487"
+       x2="28.499998"
+       y2="31.330606"
+       id="linearGradient8267"
+       xlink:href="#linearGradient8143"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.1328125,0,1.9492187)" />
+    <radialGradient
+       cx="30.340466"
+       cy="33.720654"
+       r="2.381259"
+       fx="30.340466"
+       fy="33.720654"
+       id="radialGradient8269"
+       xlink:href="#linearGradient8177"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2146392,-0.372298,0.5509178,2.351935,-25.96754,-29.412972)" />
+    <linearGradient
+       x1="29.930838"
+       y1="41.263481"
+       x2="29.848192"
+       y2="36.501301"
+       id="linearGradient8271"
+       xlink:href="#linearGradient8212"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <metadata
+     id="metadata7">
+    <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>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Lapo Calamandrei</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>emoticon</rdf:li>
+            <rdf:li>emote</rdf:li>
+            <rdf:li>smiley</rdf:li>
+            <rdf:li>smile</rdf:li>
+            <rdf:li>raspberry</rdf:li>
+            <rdf:li>tougue</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Notice" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/ShareAlike" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/SourceCode" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     style="display:inline">
+    <g
+       transform="translate(-106,-6)"
+       id="g7909" />
+    <path
+       d="m 21.59375,10.046875 a 9.546875,9.546875 0 1 1 -19.09375,0 9.546875,9.546875 0 1 1 19.09375,0 z"
+       transform="matrix(2.4091653,0,0,1.2045827,-6.022913,23.39771)"
+       id="path7070"
+       style="opacity:0.4;fill:url(#radialGradient7130);fill-opacity:1;stroke:none;display:inline" />
+    <path
+       d="m 21.59375,10.046875 a 9.546875,9.546875 0 1 1 -19.09375,0 9.546875,9.546875 0 1 1 19.09375,0 z"
+       transform="matrix(2.1473,0,0,2.1473,-2.8687,1.4268)"
+       id="path7072"
+       style="fill:url(#radialGradient7132);fill-opacity:1;stroke:#c4a000;stroke-width:0.46570092;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
+    <path
+       d="m 25.6875,-135.96875 a 6.125,5.96875 0 1 1 -12.25,0 6.125,5.96875 0 1 1 12.25,0 z"
+       transform="matrix(2.2078305,-0.5915864,0.4553048,1.6992208,39.743051,258.37364)"
+       id="path7074"
+       style="fill:url(#linearGradient7134);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
+    <path
+       d="m 21.59375,10.046875 a 9.546875,9.546875 0 1 1 -19.09375,0 9.546875,9.546875 0 1 1 19.09375,0 z"
+       transform="matrix(2.042553,0,0,2.042553,-1.6064,2.4787)"
+       id="path7076"
+       style="fill:none;stroke:url(#radialGradient7136);stroke-width:0.48958337;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
+    <g
+       transform="translate(59,49)"
+       id="g7082"
+       style="display:inline">
+      <path
+         d="m 32.6875,-131.5 a 3.21875,4.25 0 1 1 -6.4375,0 3.21875,4.25 0 1 1 6.4375,0 z"
+         transform="matrix(0.9320389,0,0,0.9999999,-58.96602,101.24999)"
+         id="path7084"
+         style="opacity:0.7;fill:url(#radialGradient7140);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
+      <path
+         d="m 32.6875,-131.5 a 3.21875,4.25 0 1 1 -6.4375,0 3.21875,4.25 0 1 1 6.4375,0 z"
+         transform="matrix(0.9320389,0,0,0.9999999,-67.96602,101.24999)"
+         id="path7086"
+         style="opacity:0.7;fill:url(#radialGradient7142);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
+      <path
+         d="m 32.6875,-131.5 a 3.21875,4.25 0 1 1 -6.4375,0 3.21875,4.25 0 1 1 6.4375,0 z"
+         transform="matrix(0.7766992,0,0,0.9411763,-63.388354,92.76468)"
+         id="path7088"
+         style="fill:url(#radialGradient7144);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
+      <path
+         d="m 32.6875,-131.5 a 3.21875,4.25 0 1 1 -6.4375,0 3.21875,4.25 0 1 1 6.4375,0 z"
+         transform="matrix(0.7766992,0,0,0.9411763,-54.388354,92.76468)"
+         id="path7090"
+         style="fill:url(#radialGradient7146);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
+      <path
+         d="m 32.6875,-131.5 a 3.21875,4.25 0 1 1 -6.4375,0 3.21875,4.25 0 1 1 6.4375,0 z"
+         transform="matrix(0.2408327,0.06094423,-0.04908332,0.4390867,-54.729843,23.770512)"
+         id="path7092"
+         style="opacity:0.5;fill:url(#linearGradient7148);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
+      <path
+         d="m 32.6875,-131.5 a 3.21875,4.25 0 1 1 -6.4375,0 3.21875,4.25 0 1 1 6.4375,0 z"
+         transform="matrix(0.2408327,0.06094423,-0.04908332,0.4390867,-45.729843,23.770512)"
+         id="path7094"
+         style="opacity:0.5;fill:url(#linearGradient7150);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
+    </g>
+    <path
+       d="m 15.5,37.5 14.993538,0"
+       id="path7080"
+       style="opacity:0.8;fill:none;stroke:url(#radialGradient8256);stroke-width:0.99999958px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;display:inline" />
+    <path
+       d="m 15.5,36.50002 15.00003,0"
+       id="path7078"
+       style="fill:none;stroke:#c4a000;stroke-width:1.00000012px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;display:inline" />
+    <g
+       transform="translate(1,0)"
+       id="g8258">
+      <path
+         d="m 22.5,36 0,1 c 0.05913,0 0.291168,0.08467 0.553394,0.3125 0.262225,0.227832 0.570079,0.597807 0.855244,1.09375 0.570331,0.991887 1.081633,2.513503 1.081633,4.71875 0,0.537176 0.07692,1.05644 0.201234,1.53125 2.202474,-0.505924 4.245708,-1.540564 6.062175,-3 -0.23203,-1.712678 -0.838772,-3.03056 -1.509255,-3.9375 C 29.318403,37.142486 28.883078,36.719265 28.486712,36.4375 28.090347,36.155735 27.750435,36 27.455388,36 L 22.5,36 z"
+         id="path8189"
+         style="opacity:0.10150374;fill:url(#linearGradient8264);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
+      <path
+         d="m 22.499999,36.5 c 1.000001,0 4.000001,1.699219 4,5.664062 0,1.882736 1.783999,3.398438 4,3.398438 2.216002,0 3.999999,-1.515704 4,-3.398438 0,-3.964843 -3.999999,-5.664062 -5,-5.664062 l -7,0 z"
+         id="rect7166"
+         style="fill:url(#linearGradient8267);fill-opacity:1;fill-rule:evenodd;stroke:#cc0000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0.69999992" />
+      <path
+         d="m 26.5,37 c -0.900001,0 1.500001,10e-7 2,0 0.5,0 2.5625,2.159592 2.5625,5.989195 1e-6,1.094173 -0.437499,1.165667 -0.4375,0.07149 C 30.625,39.231086 27.500001,37.000001 26.5,37 z"
+         id="path8152"
+         style="opacity:0.17669175;fill:url(#radialGradient8269);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
+      <path
+         d="m 27.8125,36.5 c 0.917241,1.08471 1.687501,2.606541 1.6875,4.65625 1e-6,1.251032 1.242336,2.40625 3,2.40625 1.757663,0 2.999999,-1.15522 3,-2.40625 0,-1.646133 -0.789624,-2.747193 -1.75,-3.53125 C 33.269812,37.232971 32.746326,36.935537 32.3125,36.75 31.878674,36.564463 31.4681,36.5 31.5,36.5 l -3.6875,0 z"
+         transform="translate(-2,1)"
+         id="path8208"
+         style="opacity:0.35;fill:none;stroke:url(#linearGradient8271);stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0.69999992;display:inline" />
+    </g>
+  </g>
+</svg>
diff --git a/icons/smilies/wink.svg b/icons/smilies/wink.svg
new file mode 100644
index 0000000..1c91c94
--- /dev/null
+++ b/icons/smilies/wink.svg
@@ -0,0 +1,220 @@
+<?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"
+   version="1.1"
+   width="48"
+   height="48"
+   id="svg4376">
+  <defs
+     id="defs3">
+    <linearGradient
+       id="linearGradient3290">
+      <stop
+         id="stop3292"
+         style="stop-color:#fffcde;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3294"
+         style="stop-color:#f6e76a;stop-opacity:1"
+         offset="0.64485979" />
+      <stop
+         id="stop3296"
+         style="stop-color:#ffb738;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <radialGradient
+       cx="29.288071"
+       cy="15.720984"
+       r="8.9020796"
+       fx="29.158466"
+       fy="15.755712"
+       id="radialGradient2714"
+       xlink:href="#linearGradient3290"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       id="linearGradient2509">
+      <stop
+         id="stop2511"
+         style="stop-color:#fffbd5;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop2513"
+         style="stop-color:#edd400;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <radialGradient
+       cx="25.0527"
+       cy="39.5928"
+       r="15.7572"
+       fx="25.0527"
+       fy="39.5928"
+       id="aigrd2"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.25,0,0,1.25,-6.479446,-13.37211)">
+      <stop
+         id="stop8602"
+         style="stop-color:#777777;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop8604"
+         style="stop-color:#000000;stop-opacity:1"
+         offset="1" />
+    </radialGradient>
+    <linearGradient
+       id="linearGradient4565">
+      <stop
+         id="stop4567"
+         style="stop-color:#000000;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop4569"
+         style="stop-color:#000000;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3824">
+      <stop
+         id="stop3826"
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop3828"
+         style="stop-color:#c9c9c9;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3800">
+      <stop
+         id="stop3802"
+         style="stop-color:#ffeed6;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop8664"
+         style="stop-color:#e49c2f;stop-opacity:1"
+         offset="0.5" />
+      <stop
+         id="stop3804"
+         style="stop-color:#ffc66c;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <radialGradient
+       cx="24.714285"
+       cy="38.57143"
+       r="19.714285"
+       fx="24.714285"
+       fy="38.57143"
+       id="radialGradient4571"
+       xlink:href="#linearGradient4565"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.333333,0,25.71429)" />
+    <radialGradient
+       cx="25.0527"
+       cy="39.5928"
+       r="15.7572"
+       fx="25.0527"
+       fy="39.5928"
+       id="radialGradient3279"
+       xlink:href="#aigrd2"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.25,0,0,1.25,-6.479446,-13.37211)" />
+  </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>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>emoticon</rdf:li>
+            <rdf:li>emote</rdf:li>
+            <rdf:li>winkie</rdf:li>
+            <rdf:li>wink</rdf:li>
+            <rdf:li>;)</rdf:li>
+            <rdf:li>;-)</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Jakub Steiner</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:source>http://jimmac.musichall.cz</dc:source>
+        <dc:description />
+        <dc:contributor>
+          <cc:Agent>
+            <dc:title>Corey Woodworth</dc:title>
+          </cc:Agent>
+        </dc:contributor>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Notice" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Attribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/ShareAlike" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1">
+    <path
+       d="m 44.42857,38.57143 a 19.714285,6.5714288 0 1 1 -39.42857,0 19.714285,6.5714288 0 1 1 39.42857,0 z"
+       id="path4563"
+       style="opacity:0.53164559;color:#000000;fill:url(#radialGradient4571);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.40487173;marker:none;visibility:visible;display:inline;overflow:visible" />
+    <path
+       d="m 39.774755,19.008621 a 8.6620579,8.6620579 0 1 1 -17.324115,0 8.6620579,8.6620579 0 1 1 17.324115,0 z"
+       transform="matrix(2.083142,0,0,2.083142,-40.54715,-16.49224)"
+       id="path4320"
+       style="color:#000000;fill:url(#radialGradient2714);fill-opacity:1;fill-rule:evenodd;stroke:#9c8c0a;stroke-width:0.48004404;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+    <path
+       d="m 39.774755,19.008621 a 8.6620579,8.6620579 0 1 1 -17.324115,0 8.6620579,8.6620579 0 1 1 17.324115,0 z"
+       transform="matrix(1.979782,0,0,1.979782,-37.33128,-14.52746)"
+       id="path4322"
+       style="opacity:0.67721522;color:#000000;fill:none;stroke:#ffffff;stroke-width:0.50510627;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+    <g
+       transform="matrix(0.969372,0.245598,-0.245598,0.969372,6.456937,-5.230004)"
+       id="g3267">
+      <path
+         d="m 37.284637,24.719966 c -3.016467,5.224673 -6.543503,8.990039 -12.822145,8.990039 -6.100017,0 -10.565537,-4.339697 -13.352476,-9.166816 2.549413,3.05592 6.282932,6.566312 13.087311,6.566312 8.130204,0 9.551776,-2.906855 13.08731,-6.389535 z"
+         id="path2659"
+         style="opacity:0.36000001;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+      <path
+         d="m 37.284637,24.012862 c -3.016467,5.224673 -6.543503,8.990039 -12.822145,8.990039 -6.100017,0 -10.565537,-4.339697 -13.352476,-9.166816 2.549413,3.05592 6.282932,6.566312 13.087311,6.566312 8.130204,0 9.551776,-2.906855 13.08731,-6.389535 z"
+         id="path8606"
+         style="fill:url(#radialGradient3279);fill-rule:nonzero;stroke:none" />
+    </g>
+    <path
+       d="m 31.042065,17.714134 c 0,2.5 -1.125,4.5 -2.5,4.5 -1.375,0 -2.5,-2 -2.5,-4.5 0,-2.5 1.125,-4.5 2.5,-4.5 1.375,0 2.5,2 2.5,4.5 z"
+       id="path8612"
+       style="opacity:0.36000001;fill:#ffffff;fill-rule:nonzero;stroke:none" />
+    <path
+       d="m 31.042065,17.089134 c 0,2.5 -1.125,4.5 -2.5,4.5 -1.375,0 -2.5,-2 -2.5,-4.5 0,-2.5 1.125,-4.5 2.5,-4.5 1.375,0 2.5,2 2.5,4.5 z"
+       id="path8616"
+       style="fill:#000000;fill-rule:nonzero;stroke:none" />
+    <path
+       d="m 15.924926,17.535184 c 1.361504,-3.344457 4.84345,-3.432276 6.068764,-0.114834 -2.161069,-1.71313 -4.148092,-1.219733 -6.068764,0.114834 z"
+       id="path1336"
+       style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.0000006;marker:none;visibility:visible;display:inline;overflow:visible" />
+  </g>
+</svg>
diff --git a/pippy_app.py b/pippy_app.py
index 3c0227e..d37e84b 100644
--- a/pippy_app.py
+++ b/pippy_app.py
@@ -16,20 +16,30 @@
 
 from gettext import gettext as _
 import hippo
+import cairo
 import gtk
 import pango
 import logging
 import re
 import cjson
 import time
+import os
+import sugar
+import glob
+import rsvg
+
+
+
 from datetime import datetime
 from activity import ViewSourceActivity
-
 from sugar.activity.activity import Activity, ActivityToolbox, SCOPE_PRIVATE
+from sugar.graphics import style
+from sugar.activity.activity import get_activity_root
 from sugar.graphics.alert import NotifyAlert
 from sugar.graphics.style import (Color, COLOR_BLACK, COLOR_WHITE, 
     COLOR_BUTTON_GREY, FONT_BOLD, FONT_NORMAL)
 from sugar.graphics.roundbox import CanvasRoundBox
+from sugar.graphics import style
 from sugar.graphics.xocolor import XoColor
 from sugar.graphics.palette import Palette, CanvasInvoker
 from sugar.graphics.menuitem import MenuItem
@@ -37,7 +47,6 @@ from sugar.util import timestamp_to_elapsed_string
 from sugar.graphics.toolbarbox import ToolbarBox
 from sugar.activity.widgets import *
 from sugar.presence import presenceservice
-
 from telepathy.client import Connection, Channel
 from telepathy.interfaces import (
     CHANNEL_INTERFACE, CHANNEL_INTERFACE_GROUP, CHANNEL_TYPE_TEXT,
@@ -52,6 +61,149 @@ URL_REGEXP = re.compile('((http|ftp)s?://)?'
     '(([-a-zA-Z0-9]+[.])+[-a-zA-Z0-9]{2,}|([0-9]{1,3}[.]){3}[0-9]{1,3})'
     '(:[1-9][0-9]{0,4})?(/[-a-zA-Z0-9/%~@&_+=;:,.?#]*[a-zA-Z0-9/])?')
 
+TEMP_SVG_PATH="icons/smilies"
+ICON_SVG_PATH=os.path.join(get_activity_root(),'data', 'icons','smilies')
+
+## For adding a new smiley add an entry in this dictionary and place the corresponding smiley file in data/icons
+FILE_NAMES={
+		"O)"	: 		"angel.png" , 
+		"O-)"	: 		"angel.png" , 
+		"x(" 	:		"angry.png", 
+		"x-(" 	:		"angry.png", 
+		"B)" 	: 		"cool.png",
+		"B-)" 	: 		"cool.png",
+		">:>"	: 		"devil.png",
+		":D" 	:		"grin.png",
+		":-D" 	:		"grin.png",
+		":|" 	: 		"neutral.png",
+		":-|" 	: 		"neutral.png",
+		":-("	:		"sad.png",
+		":(" 	: 		"sad.png" , 
+		":O"	:		"shock.png",
+		":-O"	:		"shock.png",
+		":$" 	: 		"blush.png",
+		":-$" 	: 		"blush.png",
+		":)" 	: 		"smile.png",
+		":-)"	:		"smile.png",
+		":P" 	: 		"tongue.png",		
+		":-P" 	: 		"tongue.png",		
+		";)" 	: 		"wink.png",
+		";-)" 	: 		"wink.png",	
+			
+		
+				}
+
+def find_key(dic, val):
+		return [k for k, v in dic.iteritems() if v == val][0]
+		
+### Checks if a text is smiley by looking into FILE_NAMES keys
+def is_smiley(text):
+	MYKEYS=FILE_NAMES.keys()
+	for smiley in MYKEYS:
+		if smiley==text:
+			return True
+	return False	
+	
+def  process_text_for_continuous_smileys(text):
+	keys=FILE_NAMES.keys()
+	for key in keys:
+		text=text.replace(key," "+key+" ")
+	return text
+###Converts svg into png 
+def from_svg_at_size(filename=None, width=None, height=None, handle=None,
+        keep_ratio=True):
+    """Scale and load SVG into pixbuf"""
+
+    if not handle:
+        handle = rsvg.Handle(filename)
+
+    dimensions = handle.get_dimension_data()
+    icon_width = dimensions[0]
+    icon_height = dimensions[1]
+    if icon_width != width or icon_height != height:
+        ratio_width = float(width) / icon_width
+        ratio_height = float(height) / icon_height
+
+        if keep_ratio:
+            ratio = min(ratio_width, ratio_height)
+            if ratio_width != ratio:
+                ratio_width = ratio
+                width = int(icon_width * ratio)
+            elif ratio_height != ratio:
+                ratio_height = ratio
+                height = int(icon_height * ratio)
+    else:
+        ratio_width = 1
+        ratio_height = 1
+
+    surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height)
+    context = cairo.Context(surface)
+    context.scale(ratio_width, ratio_height)
+    handle.render_cairo(context)
+
+    loader = gtk.gdk.pixbuf_loader_new_with_mime_type('image/png')
+    surface.write_to_png(loader)
+    loader.close()
+
+    return loader.get_pixbuf()
+    
+### Invoked on first run to create pngs from svgs and store in ICON_SVG_PATH   
+def create_pngs():
+	os.makedirs(ICON_SVG_PATH)
+	for infile in glob.glob( os.path.join(TEMP_SVG_PATH, '*.svg') ):
+		pixbuf=from_svg_at_size(infile,style.MEDIUM_ICON_SIZE,style.MEDIUM_ICON_SIZE,None,True)
+		pixbuf.save(os.path.join(ICON_SVG_PATH,os.path.basename(os.path.splitext(infile)[0])+".png"),'png')
+	
+##returns an Image for a given smily	
+def get_smiley(text):
+		
+		if text not in FILE_NAMES:
+			raise KeyError
+		else:
+			file_name=os.path.join(ICON_SVG_PATH , FILE_NAMES[text])
+			surface = cairo.ImageSurface.create_from_png(file_name)
+			image = hippo.CanvasImage(image=surface,
+                    border=0,
+                    border_color=style.COLOR_BUTTON_GREY.get_int(),
+                    xalign=hippo.ALIGNMENT_CENTER,
+                    yalign=hippo.ALIGNMENT_CENTER,
+                    scale_width=35,
+                    scale_height=35)
+			return image
+		
+##returns table of icons for the Smiley palette
+def get_pallete_smiley_table(self):
+	MYVALUES=list(set(FILE_NAMES.values()))
+	smiley_count= len(MYVALUES)
+	row_count=smiley_count/4;
+	last_row_smiley_count=smiley_count%4
+	table=gtk.Table(rows=row_count,columns=4)
+	count=0
+        for i in range(4):
+			for j in range(row_count):
+				count=count+1
+				image=gtk.image_new_from_file(os.path.join(ICON_SVG_PATH,MYVALUES[count-1]))
+				but=ToolButton(icon_widget=image)
+				but.connect('clicked',self._add_smiley_to_entry,MYVALUES[count-1])
+				#but.set_icon()
+				table.attach(but,i,i+1,j,j+1)
+				but.show()
+	
+   ### add the remaining ICONS to the the last row
+	print last_row_smiley_count	
+	for i in range(last_row_smiley_count):
+		count=count+1
+		image=gtk.image_new_from_file(os.path.join(ICON_SVG_PATH,MYVALUES[count-1]))
+		but=ToolButton(icon_widget=image)
+		but.connect('clicked',self._add_smiley_to_entry,MYVALUES[count-1])
+		table.attach(but,i,i+1,row_count,row_count+1)
+		but.show()
+		
+			
+	return table
+	
+	
+					
 class Chat(ViewSourceActivity):
     def __init__(self, handle):
         super(Chat, self).__init__(handle)
@@ -65,7 +217,35 @@ class Chat(ViewSourceActivity):
         self.set_toolbar_box(toolbar_box)
         toolbar_box.toolbar.insert(ActivityButton(self), -1)
         toolbar_box.toolbar.insert(TitleEntry(self), -1)
+        
+        ###check for existence of icons directory
+        if(not os.path.isdir(ICON_SVG_PATH)):
+			create_pngs()
+        
+		
+        smiley_icon_image=gtk.image_new_from_file(os.path.join(ICON_SVG_PATH,'smiley-icon')+".png")
+        self.smiley = RadioMenuButton(icon_widget=smiley_icon_image)
+        
+        
+        self.smiley.set_tooltip(_('Insert Smiley'))
+        
+        
+        
+        
+        
+        toolbar_box.toolbar.insert(self.smiley, -1)
+        self.smiley.show()
+        self.smiley_palette=Palette("Choose Smiley")
+        self.smiley.palette=self.smiley_palette
+		
+        
+        table=get_pallete_smiley_table(self)
+							
+        table.show_all()
+        self.smiley_palette.set_content(table)
+        self.smiley.set_palette(self.smiley_palette)
 
+	
         share_button = ShareButton(self)
         toolbar_box.toolbar.insert(share_button, -1)
         toolbar_box.toolbar.insert(KeepButton(self), -1)
@@ -109,6 +289,15 @@ class Chat(ViewSourceActivity):
                 self._alert(_('Off-line'), _('Share, or invite someone.'))
             self.connect('shared', self._shared_cb)
 
+    
+	
+    def _add_smiley_to_entry(self,activity,text):
+		
+		self.entry.set_text(self.entry.get_text()+ find_key(FILE_NAMES,text))
+		self.smiley_palette.popdown(True)
+    
+    
+		
     def _shared_cb(self, activity):
         logger.debug('Chat was shared')
         self._setup()
@@ -287,6 +476,8 @@ class Chat(ViewSourceActivity):
     def _link_activated_cb(self, link):
         url = url_check_protocol(link.props.text)
         self._show_via_journal(url)
+    
+	
 
     def add_text(self, buddy, text, status_message=False):
         """Display text on screen, with name and colors.
@@ -418,14 +609,24 @@ class Chat(ViewSourceActivity):
             text = text[match.end():]
             match = URL_REGEXP.search(text)
         if text:
-            message = hippo.CanvasText(
-                text=text,
+			text=process_text_for_continuous_smileys(text)
+			line=text
+			
+			words=line.split(' ')
+			for word in words:
+				if is_smiley(word):
+					
+						image=get_smiley(word)					
+						msg_hbox.append(image)
+						
+				else:
+					message = hippo.CanvasText(text=word+" ", #change here for changing the typed text
                 size_mode=hippo.CANVAS_SIZE_WRAP_WORD,
                 color=text_color,
                 font_desc=FONT_NORMAL.get_pango_desc(),
                 xalign=hippo.ALIGNMENT_START)
-            msg_hbox.append(message)
-
+					msg_hbox.append(message)
+	
         # Order of boxes for RTL languages:
         if lang_rtl:
             msg_hbox.reverse()
@@ -436,7 +637,7 @@ class Chat(ViewSourceActivity):
             box = hippo.CanvasBox(padding=2)
             box.append(rb)
             self.conversation.append(box)
-
+    
     def add_separator(self, timestamp):
         """Add whitespace and timestamp between chat sessions."""
         box = hippo.CanvasBox(padding=2)
-- 
1.7.1



More information about the Sugar-devel mailing list