[Goodies-commits] r6976 - in xfce4-power-manager/trunk: . data/icons/scalable/apps libxfpm panel-plugins panel-plugins/brightness panel-plugins/inhibit src
Ali Abdallah
aliov at xfce.org
Sun Mar 22 18:42:59 CET 2009
Author: aliov
Date: 2009-03-22 17:42:59 +0000 (Sun, 22 Mar 2009)
New Revision: 6976
Added:
xfce4-power-manager/trunk/data/icons/scalable/apps/gnome-inhibit-applet.svg
xfce4-power-manager/trunk/panel-plugins/brightness/brightness-plugin.c
xfce4-power-manager/trunk/panel-plugins/inhibit/
xfce4-power-manager/trunk/panel-plugins/inhibit/Makefile.am
xfce4-power-manager/trunk/panel-plugins/inhibit/inhibit-plugin.c
xfce4-power-manager/trunk/panel-plugins/inhibit/xfce4-inhibit-plugin.desktop.in.in
Removed:
xfce4-power-manager/trunk/panel-plugins/brightness/main.c
Modified:
xfce4-power-manager/trunk/ChangeLog
xfce4-power-manager/trunk/configure.ac.in
xfce4-power-manager/trunk/data/icons/scalable/apps/Makefile.am
xfce4-power-manager/trunk/libxfpm/hal-device.c
xfce4-power-manager/trunk/libxfpm/hal-device.h
xfce4-power-manager/trunk/libxfpm/xfpm-common.c
xfce4-power-manager/trunk/panel-plugins/Makefile.am
xfce4-power-manager/trunk/panel-plugins/brightness/Makefile.am
xfce4-power-manager/trunk/panel-plugins/brightness/xfce4-brightness-plugin.desktop.in.in
xfce4-power-manager/trunk/src/org.freedesktop.PowerManagement.Inhibit.xml
xfce4-power-manager/trunk/src/xfpm-brightness-hal.c
xfce4-power-manager/trunk/src/xfpm-dpms.c
xfce4-power-manager/trunk/src/xfpm-supply.c
xfce4-power-manager/trunk/src/xfpm-tray-icon.c
Log:
Brightness and inhibit plugins are ready for user/test+fix a bug in the inhibit interface
Modified: xfce4-power-manager/trunk/ChangeLog
===================================================================
--- xfce4-power-manager/trunk/ChangeLog 2009-03-22 16:37:59 UTC (rev 6975)
+++ xfce4-power-manager/trunk/ChangeLog 2009-03-22 17:42:59 UTC (rev 6976)
@@ -1,4 +1,7 @@
+2009-03-22 18:42 Ali aliov at xfce.org
+ * : Brightness and inhibit plugins are ready for user/test+fix a bug in the inhibit interface
+
2009-03-21 0:02 Ali aliov at xfce.org
* : Added command line option to restart the power manager
Modified: xfce4-power-manager/trunk/configure.ac.in
===================================================================
--- xfce4-power-manager/trunk/configure.ac.in 2009-03-22 16:37:59 UTC (rev 6975)
+++ xfce4-power-manager/trunk/configure.ac.in 2009-03-22 17:42:59 UTC (rev 6976)
@@ -134,6 +134,7 @@
settings/Makefile
panel-plugins/Makefile
panel-plugins/brightness/Makefile
+panel-plugins/inhibit/Makefile
data/Makefile
data/icons/Makefile
data/icons/scalable/Makefile
Modified: xfce4-power-manager/trunk/data/icons/scalable/apps/Makefile.am
===================================================================
--- xfce4-power-manager/trunk/data/icons/scalable/apps/Makefile.am 2009-03-22 16:37:59 UTC (rev 6975)
+++ xfce4-power-manager/trunk/data/icons/scalable/apps/Makefile.am 2009-03-22 17:42:59 UTC (rev 6976)
@@ -4,5 +4,5 @@
Datadir = $(datadir)/icons/hicolor/scalable/apps
Data_DATA = \
- xfpm-cpu.svg
-
+ xfpm-cpu.svg \
+ gnome-inhibit-applet.svg
Added: xfce4-power-manager/trunk/data/icons/scalable/apps/gnome-inhibit-applet.svg
===================================================================
--- xfce4-power-manager/trunk/data/icons/scalable/apps/gnome-inhibit-applet.svg (rev 0)
+++ xfce4-power-manager/trunk/data/icons/scalable/apps/gnome-inhibit-applet.svg 2009-03-22 17:42:59 UTC (rev 6976)
@@ -0,0 +1,725 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ 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="svg11300">
+ <defs
+ id="defs3">
+ <linearGradient
+ id="linearGradient13678">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0"
+ id="stop13680" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0"
+ offset="1"
+ id="stop13682" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient14993">
+ <stop
+ style="stop-color:#000000;stop-opacity:1"
+ offset="0"
+ id="stop14995" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1"
+ id="stop14997" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient14981">
+ <stop
+ style="stop-color:#788600;stop-opacity:1"
+ offset="0"
+ id="stop14983" />
+ <stop
+ style="stop-color:#505900;stop-opacity:1"
+ offset="1"
+ id="stop14985" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient14973">
+ <stop
+ style="stop-color:#747474;stop-opacity:1"
+ offset="0"
+ id="stop14975" />
+ <stop
+ style="stop-color:#b0b0b0;stop-opacity:1"
+ offset="0.62068963"
+ id="stop14977" />
+ <stop
+ style="stop-color:#3f3f3f;stop-opacity:1"
+ offset="1"
+ id="stop14979" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient14881">
+ <stop
+ style="stop-color:#747474;stop-opacity:1"
+ offset="0"
+ id="stop14883" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0.62068963"
+ id="stop14893" />
+ <stop
+ style="stop-color:#3f3f3f;stop-opacity:1"
+ offset="1"
+ id="stop14885" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient14861">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0"
+ id="stop14863" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0"
+ offset="1"
+ id="stop14865" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient14780">
+ <stop
+ style="stop-color:#ebff39;stop-opacity:1"
+ offset="0"
+ id="stop14782" />
+ <stop
+ style="stop-color:#ebff39;stop-opacity:0"
+ offset="1"
+ id="stop14784" />
+ </linearGradient>
+ <linearGradient
+ x1="6.2209711"
+ y1="42.890816"
+ x2="6.2376504"
+ y2="39.266895"
+ id="linearGradient14786"
+ xlink:href="#linearGradient14780"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.984375,0,0,1,-5.90625,0)" />
+ <linearGradient
+ x1="6.2209711"
+ y1="42.890816"
+ x2="6.2376504"
+ y2="39.266895"
+ id="linearGradient14790"
+ xlink:href="#linearGradient14780"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.984375,0,0,1,-2.890625,0)" />
+ <linearGradient
+ x1="6.2209711"
+ y1="42.890816"
+ x2="6.2376504"
+ y2="39.266895"
+ id="linearGradient14794"
+ xlink:href="#linearGradient14780"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.984375,0,0,1,9.375e-2,0)" />
+ <linearGradient
+ x1="6.2209711"
+ y1="42.890816"
+ x2="6.2376504"
+ y2="39.266895"
+ id="linearGradient14798"
+ xlink:href="#linearGradient14780"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.984375,0,0,1,3.09375,-1.3595e-2)" />
+ <linearGradient
+ x1="6.2209711"
+ y1="42.890816"
+ x2="6.2376504"
+ y2="39.266895"
+ id="linearGradient14802"
+ xlink:href="#linearGradient14780"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.984375,0,0,1,6.09375,-1.3595e-2)" />
+ <linearGradient
+ x1="6.2209711"
+ y1="42.890816"
+ x2="6.2376504"
+ y2="39.266895"
+ id="linearGradient14806"
+ xlink:href="#linearGradient14780"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.984375,0,0,1,9.109375,-1.3595e-2)" />
+ <linearGradient
+ x1="6.2209711"
+ y1="42.890816"
+ x2="6.2376504"
+ y2="39.266895"
+ id="linearGradient14810"
+ xlink:href="#linearGradient14780"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.984375,0,0,1,12.10938,-1.3595e-2)" />
+ <linearGradient
+ x1="6.2209711"
+ y1="42.890816"
+ x2="6.2376504"
+ y2="39.266895"
+ id="linearGradient14814"
+ xlink:href="#linearGradient14780"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.984375,0,0,1,15.10938,-1.3595e-2)" />
+ <linearGradient
+ x1="16.964844"
+ y1="20.165941"
+ x2="18.968426"
+ y2="31.347067"
+ id="linearGradient14867"
+ xlink:href="#linearGradient14861"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.934742,0,0,1.14936,6.518753,-5.859611)" />
+ <linearGradient
+ x1="24"
+ y1="19.5"
+ x2="27"
+ y2="19.5"
+ id="linearGradient14887"
+ xlink:href="#linearGradient14881"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(5,-2)" />
+ <linearGradient
+ x1="24"
+ y1="21.5"
+ x2="27"
+ y2="21.5"
+ id="linearGradient14889"
+ xlink:href="#linearGradient14881"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(5,-2)" />
+ <linearGradient
+ x1="24"
+ y1="23.5"
+ x2="27"
+ y2="23.5"
+ id="linearGradient14891"
+ xlink:href="#linearGradient14881"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(5,-2)" />
+ <linearGradient
+ x1="8"
+ y1="19.5"
+ x2="4.3283887"
+ y2="19.5"
+ id="linearGradient14895"
+ xlink:href="#linearGradient14881"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(6,-2)" />
+ <linearGradient
+ x1="8"
+ y1="19.5"
+ x2="4.3283887"
+ y2="19.5"
+ id="linearGradient14897"
+ xlink:href="#linearGradient14881"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(6,-2)" />
+ <linearGradient
+ x1="8"
+ y1="19.5"
+ x2="4.3283887"
+ y2="19.5"
+ id="linearGradient14899"
+ xlink:href="#linearGradient14881"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(6,-2)" />
+ <linearGradient
+ x1="8"
+ y1="19.5"
+ x2="4.3283887"
+ y2="19.5"
+ id="linearGradient14903"
+ xlink:href="#linearGradient14881"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(8,-35)" />
+ <linearGradient
+ x1="8"
+ y1="19.5"
+ x2="4.3283887"
+ y2="19.5"
+ id="linearGradient14907"
+ xlink:href="#linearGradient14881"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(8,-37)" />
+ <linearGradient
+ x1="8"
+ y1="19.5"
+ x2="4.3283887"
+ y2="19.5"
+ id="linearGradient14911"
+ xlink:href="#linearGradient14881"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(8,-39)" />
+ <linearGradient
+ x1="8"
+ y1="19.5"
+ x2="4.3283887"
+ y2="19.5"
+ id="linearGradient14915"
+ xlink:href="#linearGradient14881"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(8,-41)" />
+ <linearGradient
+ x1="8"
+ y1="19.5"
+ x2="4.3283887"
+ y2="19.5"
+ id="linearGradient14919"
+ xlink:href="#linearGradient14881"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(8,-43)" />
+ <linearGradient
+ x1="8"
+ y1="19.5"
+ x2="4.3283887"
+ y2="19.5"
+ id="linearGradient14923"
+ xlink:href="#linearGradient14881"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(8,-45)" />
+ <linearGradient
+ x1="8"
+ y1="19.5"
+ x2="4.3283887"
+ y2="19.5"
+ id="linearGradient14927"
+ xlink:href="#linearGradient14881"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(8,-47)" />
+ <linearGradient
+ x1="7.1161165"
+ y1="11.5"
+ x2="4.712738"
+ y2="11.5"
+ id="linearGradient14943"
+ xlink:href="#linearGradient14973"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(18,-35)" />
+ <linearGradient
+ x1="7.1161165"
+ y1="13.5"
+ x2="4.712738"
+ y2="13.5"
+ id="linearGradient14945"
+ xlink:href="#linearGradient14973"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(18,-37)" />
+ <linearGradient
+ x1="7.1161165"
+ y1="15.5"
+ x2="4.712738"
+ y2="15.5"
+ id="linearGradient14947"
+ xlink:href="#linearGradient14973"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(18,-39)" />
+ <linearGradient
+ x1="7.1161165"
+ y1="17.5"
+ x2="4.712738"
+ y2="17.5"
+ id="linearGradient14949"
+ xlink:href="#linearGradient14973"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(18,-41)" />
+ <linearGradient
+ x1="7.1161165"
+ y1="19.5"
+ x2="4.712738"
+ y2="19.5"
+ id="linearGradient14951"
+ xlink:href="#linearGradient14973"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(18,-43)" />
+ <linearGradient
+ x1="7.1161165"
+ y1="21.5"
+ x2="4.712738"
+ y2="21.5"
+ id="linearGradient14953"
+ xlink:href="#linearGradient14973"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(18,-45)" />
+ <linearGradient
+ x1="7.1161165"
+ y1="23.5"
+ x2="4.712738"
+ y2="23.5"
+ id="linearGradient14955"
+ xlink:href="#linearGradient14973"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(18,-47)" />
+ <linearGradient
+ x1="20.046677"
+ y1="22.747095"
+ x2="39.002876"
+ y2="49.79393"
+ id="linearGradient14987"
+ xlink:href="#linearGradient14981"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(6,-2)" />
+ <radialGradient
+ cx="21.5"
+ cy="44.75"
+ r="17"
+ fx="21.5"
+ fy="44.75"
+ id="radialGradient14999"
+ xlink:href="#linearGradient14993"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.220588,0,34.87868)" />
+ <linearGradient
+ x1="40.546875"
+ y1="1.125"
+ x2="47.375"
+ y2="37.75"
+ id="linearGradient13684"
+ xlink:href="#linearGradient13678"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="40.546875"
+ y1="1.125"
+ x2="47.375"
+ y2="37.75"
+ id="linearGradient13702"
+ xlink:href="#linearGradient13678"
+ gradientUnits="userSpaceOnUse" />
+ </defs>
+ <g
+ id="layer1">
+ <g
+ id="g13622">
+ <path
+ d="M 7.50103,11.630239 L 7.5049363,38.34988 C 7.5049363,38.428758 7.5937382,38.500087 7.6917178,38.500087 L 10.503317,38.515712 L 10.499411,43.368984 C 10.499411,43.440252 10.521808,43.495319 10.623693,43.495754 L 37.379371,43.487941 C 37.471786,43.484243 37.503652,43.424197 37.503652,43.361171 L 37.507559,38.492274 L 40.389917,38.500087 C 40.483667,38.500087 40.505959,38.369818 40.502479,38.28738 L 40.502479,11.630239 C 40.506385,11.548207 40.456968,11.508247 40.374292,11.50347 L 7.6253115,11.50347 C 7.5468642,11.507811 7.4932175,11.55602 7.50103,11.630239 z "
+ style="opacity:1;color:#000000;fill:url(#linearGradient14987);fill-opacity:1;fill-rule:nonzero;stroke:#3a3e00;stroke-width:1.00000012;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:block;overflow:visible"
+ id="rect14772" />
+ <path
+ d="M 38.5 44.75 A 17 3.75 0 1 1 4.5,44.75 A 17 3.75 0 1 1 38.5 44.75 z"
+ transform="matrix(1.28015,0,0,1,-3.162329,-1.75)"
+ style="opacity:0.61931817;color:#000000;fill:url(#radialGradient14999);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;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:block;overflow:visible"
+ id="path14991" />
+ <path
+ d="M 31,21.472233 L 31.064355,22.003177 L 33.488776,23.895331 L 33.488776,28.499107 L 16.429825,28.499107 L 16.429825,32.432389"
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#98a332;stroke-width:1;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:block;overflow:visible"
+ id="path14957" />
+ <path
+ d="M 13.441942,40.96101 L 13.496788,35.180327 L 15.397748,32.513864 L 37.46967,32.513864 L 37.46967,27.142136 L 31.889942,21.613515 L 36,21.46967 L 36,17 L 32,17"
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#98a332;stroke-width:1;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:block;overflow:visible"
+ id="path14826" />
+ <path
+ d="M 19.5,40.96101 L 19.554846,35.180327 L 21.455804,32.513864"
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#98a332;stroke-width:1;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:block;overflow:visible"
+ id="path14830" />
+ <path
+ d="M 16.5,40.96101 L 16.554846,35.180327 L 18.455804,32.513864"
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#98a332;stroke-width:1;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:block;overflow:visible"
+ id="path14838" />
+ <g
+ transform="translate(6,-2)"
+ id="g14850">
+ <path
+ d="M 16.5,42.96101 L 16.554846,37.180327 L 18.455804,34.513864"
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#98a332;stroke-width:1;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:block;overflow:visible"
+ id="path14840" />
+ <path
+ d="M 19.5,42.96101 L 19.554846,37.180327 L 21.455804,34.513864"
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#98a332;stroke-width:1;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:block;overflow:visible"
+ id="path14842" />
+ <path
+ d="M 22.5,42.96101 L 22.554846,37.180327 L 24.455804,34.513864"
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#98a332;stroke-width:1;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:block;overflow:visible"
+ id="path14844" />
+ <path
+ d="M 25.544196,42.96101 L 25.599042,37.180327 L 27.5,34.513864"
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#98a332;stroke-width:1;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:block;overflow:visible"
+ id="path14846" />
+ <path
+ d="M 28.5,42.96101 L 28.554846,37.180327 L 30.455804,34.513864"
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#98a332;stroke-width:1;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:block;overflow:visible"
+ id="path14848" />
+ </g>
+ <g
+ transform="translate(6,-2)"
+ id="g14816">
+ <path
+ d="M 6.9921875,39.59375 C 7.7918594,39.59375 7.984375,40.223 7.984375,40.5 L 7.984375,44.919845 C 7.984375,44.919845 6,44.919845 6,44.919845 L 6,40.5 C 6,40.223 6.2081406,39.59375 6.9921875,39.59375 z "
+ style="color:#000000;fill:url(#linearGradient14786);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="rect14777" />
+ <path
+ d="M 10.007812,39.59375 C 10.807484,39.59375 11,40.223 11,40.5 L 11,44.919845 C 11,44.919845 9.015625,44.919845 9.015625,44.919845 L 9.015625,40.5 C 9.015625,40.223 9.2237656,39.59375 10.007812,39.59375 z "
+ style="color:#000000;fill:url(#linearGradient14790);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path14788" />
+ <path
+ d="M 12.992187,39.59375 C 13.791859,39.59375 13.984375,40.223 13.984375,40.5 L 13.984375,44.919845 C 13.984375,44.919845 12,44.919845 12,44.919845 L 12,40.5 C 12,40.223 12.208141,39.59375 12.992187,39.59375 z "
+ style="color:#000000;fill:url(#linearGradient14794);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path14792" />
+ <path
+ d="M 15.992187,39.580155 C 16.791859,39.580155 16.984375,40.209405 16.984375,40.486405 L 16.984375,44.90625 C 16.984375,44.90625 15,44.90625 15,44.90625 L 15,40.486405 C 15,40.209405 15.208141,39.580155 15.992187,39.580155 z "
+ style="color:#000000;fill:url(#linearGradient14798);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path14796" />
+ <path
+ d="M 18.992187,39.580155 C 19.791859,39.580155 19.984375,40.209405 19.984375,40.486405 L 19.984375,44.90625 C 19.984375,44.90625 18,44.90625 18,44.90625 L 18,40.486405 C 18,40.209405 18.208141,39.580155 18.992187,39.580155 z "
+ style="color:#000000;fill:url(#linearGradient14802);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path14800" />
+ <path
+ d="M 22.007812,39.580155 C 22.807484,39.580155 23,40.209405 23,40.486405 L 23,44.90625 C 23,44.90625 21.015625,44.90625 21.015625,44.90625 L 21.015625,40.486405 C 21.015625,40.209405 21.223766,39.580155 22.007812,39.580155 z "
+ style="color:#000000;fill:url(#linearGradient14806);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path14804" />
+ <path
+ d="M 25.007812,39.580155 C 25.807484,39.580155 26,40.209405 26,40.486405 L 26,44.90625 C 26,44.90625 24.015625,44.90625 24.015625,44.90625 L 24.015625,40.486405 C 24.015625,40.209405 24.223766,39.580155 25.007812,39.580155 z "
+ style="color:#000000;fill:url(#linearGradient14810);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path14808" />
+ <path
+ d="M 28.007812,39.580155 C 28.807484,39.580155 29,40.209405 29,40.486405 L 29,44.90625 C 29,44.90625 27.015625,44.90625 27.015625,44.90625 L 27.015625,40.486405 C 27.015625,40.209405 27.223766,39.580155 28.007812,39.580155 z "
+ style="color:#000000;fill:url(#linearGradient14814);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path14812" />
+ </g>
+ <path
+ d="M 11.40625,17.3125 L 9.53125,18.5625 L 9.53125,20.4375 L 9.53125,30.5 L 16.53125,30.5625"
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#98a332;stroke-width:1;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:block;overflow:visible"
+ id="path15029" />
+ <rect
+ width="16.055548"
+ height="7.9304557"
+ rx="0.94194132"
+ ry="0.9419415"
+ x="13.472219"
+ y="15.503517"
+ style="opacity:1;color:#000000;fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.99999958;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:block;overflow:visible"
+ id="rect14857" />
+ <rect
+ width="14.116029"
+ height="5.8817496"
+ rx="0"
+ ry="0"
+ x="14.416605"
+ y="16.510822"
+ style="opacity:0.17045456;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient14867);stroke-width:0.99999976;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:block;overflow:visible"
+ id="rect14859" />
+ <rect
+ width="3"
+ height="1"
+ x="11"
+ y="17"
+ style="opacity:1;color:#000000;fill:url(#linearGradient14899);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;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:block;overflow:visible"
+ id="rect14869" />
+ <path
+ d="M 11.640625,19.5 L 9.515625,20.5625 L 9.515625,23"
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#98a332;stroke-width:1;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:block;overflow:visible"
+ id="path15031" />
+ <rect
+ width="3"
+ height="1"
+ x="11"
+ y="19"
+ style="opacity:1;color:#000000;fill:url(#linearGradient14897);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;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:block;overflow:visible"
+ id="rect14871" />
+ <path
+ d="M 11.5,21.5625 L 9.5,23"
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#98a332;stroke-width:1;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:block;overflow:visible"
+ id="path15033" />
+ <rect
+ width="3"
+ height="1"
+ x="11"
+ y="21"
+ style="opacity:1;color:#000000;fill:url(#linearGradient14895);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;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:block;overflow:visible"
+ id="rect14873" />
+ <rect
+ width="3"
+ height="1"
+ x="29"
+ y="17"
+ style="opacity:1;color:#000000;fill:url(#linearGradient14887);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;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:block;overflow:visible"
+ id="rect14875" />
+ <rect
+ width="3"
+ height="1"
+ x="29"
+ y="19"
+ style="opacity:1;color:#000000;fill:url(#linearGradient14889);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;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:block;overflow:visible"
+ id="rect14877" />
+ <rect
+ width="3"
+ height="1"
+ x="29"
+ y="21"
+ style="opacity:1;color:#000000;fill:url(#linearGradient14891);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;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:block;overflow:visible"
+ id="rect14879" />
+ <rect
+ width="3"
+ height="1"
+ x="13"
+ y="-16"
+ transform="matrix(0,1,-1,0,0,0)"
+ style="opacity:1;color:#000000;fill:url(#linearGradient14903);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;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:block;overflow:visible"
+ id="rect14901" />
+ <rect
+ width="3"
+ height="1"
+ x="13"
+ y="-18"
+ transform="matrix(0,1,-1,0,0,0)"
+ style="opacity:1;color:#000000;fill:url(#linearGradient14907);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;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:block;overflow:visible"
+ id="rect14905" />
+ <rect
+ width="3"
+ height="1"
+ x="13"
+ y="-20"
+ transform="matrix(0,1,-1,0,0,0)"
+ style="opacity:1;color:#000000;fill:url(#linearGradient14911);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;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:block;overflow:visible"
+ id="rect14909" />
+ <rect
+ width="3"
+ height="1"
+ x="13"
+ y="-22"
+ transform="matrix(0,1,-1,0,0,0)"
+ style="opacity:1;color:#000000;fill:url(#linearGradient14915);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;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:block;overflow:visible"
+ id="rect14913" />
+ <rect
+ width="3"
+ height="1"
+ x="13"
+ y="-24"
+ transform="matrix(0,1,-1,0,0,0)"
+ style="opacity:1;color:#000000;fill:url(#linearGradient14919);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;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:block;overflow:visible"
+ id="rect14917" />
+ <rect
+ width="3"
+ height="1"
+ x="13"
+ y="-26"
+ transform="matrix(0,1,-1,0,0,0)"
+ style="opacity:1;color:#000000;fill:url(#linearGradient14923);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;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:block;overflow:visible"
+ id="rect14921" />
+ <rect
+ width="3"
+ height="1"
+ x="13"
+ y="-28"
+ transform="matrix(0,1,-1,0,0,0)"
+ style="opacity:1;color:#000000;fill:url(#linearGradient14927);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;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:block;overflow:visible"
+ id="rect14925" />
+ <g
+ transform="translate(6,-2)"
+ id="g14967">
+ <path
+ d="M 9.4575532,27.582292 L 10.518213,30.499107 L 12.462757,30.499107 L 11.402097,27.538097"
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#98a332;stroke-width:1;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:block;overflow:visible"
+ id="path14959" />
+ <path
+ d="M 13.457553,27.582292 L 14.518213,30.499107 L 16.462757,30.499107 L 15.402097,27.538097"
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#98a332;stroke-width:1;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:block;overflow:visible"
+ id="path14961" />
+ <path
+ d="M 17.457553,27.582292 L 18.518213,30.499107 L 20.462757,30.499107 L 19.402097,27.538097"
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#98a332;stroke-width:1;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:block;overflow:visible"
+ id="path14963" />
+ <path
+ d="M 21.457553,27.582292 L 22.518213,30.499107"
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#98a332;stroke-width:1;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:block;overflow:visible"
+ id="path14965" />
+ </g>
+ <rect
+ width="3"
+ height="1"
+ x="23"
+ y="-16"
+ transform="matrix(0,1,-1,0,0,0)"
+ style="opacity:1;color:#000000;fill:url(#linearGradient14943);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;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:block;overflow:visible"
+ id="rect14929" />
+ <rect
+ width="3"
+ height="1"
+ x="23"
+ y="-18"
+ transform="matrix(0,1,-1,0,0,0)"
+ style="opacity:1;color:#000000;fill:url(#linearGradient14945);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;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:block;overflow:visible"
+ id="rect14931" />
+ <rect
+ width="3"
+ height="1"
+ x="23"
+ y="-20"
+ transform="matrix(0,1,-1,0,0,0)"
+ style="opacity:1;color:#000000;fill:url(#linearGradient14947);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;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:block;overflow:visible"
+ id="rect14933" />
+ <rect
+ width="3"
+ height="1"
+ x="23"
+ y="-22"
+ transform="matrix(0,1,-1,0,0,0)"
+ style="opacity:1;color:#000000;fill:url(#linearGradient14949);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;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:block;overflow:visible"
+ id="rect14935" />
+ <rect
+ width="3"
+ height="1"
+ x="23"
+ y="-24"
+ transform="matrix(0,1,-1,0,0,0)"
+ style="opacity:1;color:#000000;fill:url(#linearGradient14951);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;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:block;overflow:visible"
+ id="rect14937" />
+ <rect
+ width="3"
+ height="1"
+ x="23"
+ y="-26"
+ transform="matrix(0,1,-1,0,0,0)"
+ style="opacity:1;color:#000000;fill:url(#linearGradient14953);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;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:block;overflow:visible"
+ id="rect14939" />
+ <path
+ d="M 8.5012312,37.501619 L 11.499344,37.501563 L 11.510393,42.484683 L 36.511389,42.482271 L 36.508534,37.494975 L 39.49833,37.497656 C 39.502302,37.497247 39.502062,12.503547 39.502062,12.503547 L 8.5047333,12.501369 C 8.5087743,20.839994 8.5012312,37.501619 8.5012312,37.501619 z "
+ style="opacity:0.23863633;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;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:block;overflow:visible"
+ id="path14989" />
+ <rect
+ width="3"
+ height="1"
+ x="23"
+ y="-28"
+ transform="matrix(0,1,-1,0,0,0)"
+ style="opacity:1;color:#000000;fill:url(#linearGradient14955);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;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:block;overflow:visible"
+ id="rect14941" />
+ </g>
+ <g
+ id="g13689">
+ <path
+ d="M 46.925968,3.8880343 L 39.95384,13.020388 L 47.047248,13.020388 L 47.047248,16.020148 L 34.475371,16.020148 L 34.475371,15.43334 L 43.399686,3.9716929 L 35.015933,3.9716929 L 35.078433,0.97041721 L 46.988468,0.97041721 L 46.925968,3.8880343 z "
+ style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#3465a4;fill-opacity:1;stroke:#204a87;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Segoe"
+ id="path13687" />
+ <path
+ d="M 46.925968,3.8880343 L 39.95384,13.020388 L 47.047248,13.020388 L 47.047248,16.020148 L 34.475371,16.020148 L 34.475371,15.43334 L 43.399686,3.9716929 L 35.015933,3.9716929 L 35.078433,0.97041721 L 46.988468,0.97041721"
+ style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#3465a4;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Segoe"
+ id="text12733" />
+ <path
+ d="M 35.46875,1.34375 L 35.40625,3.59375 L 43.40625,3.59375 C 43.542681,3.6020985 43.663766,3.6840106 43.722279,3.8075389 C 43.780792,3.9310671 43.767467,4.0766473 43.6875,4.1875 L 34.84375,15.53125 L 34.84375,15.65625 L 46.6875,15.65625 L 46.6875,13.40625 L 39.96875,13.40625 C 39.826696,13.409243 39.695149,13.331702 39.628973,13.205968 C 39.562797,13.080234 39.573358,12.9279 39.65625,12.8125 L 46.5625,3.75 L 46.625,1.34375 L 35.46875,1.34375 z "
+ style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;opacity:0.21348314;fill:#3465a4;fill-opacity:1;stroke:url(#linearGradient13684);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Segoe"
+ id="path13676" />
+ </g>
+ <g
+ transform="matrix(0.567849,0,0,0.567849,7.284268,18.44895)"
+ id="g13694">
+ <path
+ d="M 46.925968,3.8880343 L 39.95384,13.020388 L 47.047248,13.020388 L 47.047248,16.790599 L 34.475371,16.790599 L 34.475371,16.203791 L 43.399686,3.9716929 L 35.015933,3.9716929 L 35.078433,0.97041721 L 46.988468,0.97041721 L 46.925968,3.8880343 z "
+ style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#3465a4;fill-opacity:1;stroke:#204a87;stroke-width:3.52206182;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Segoe"
+ id="path13696" />
+ <path
+ d="M 46.925968,3.8880343 L 39.95384,13.020388 L 47.047248,13.020388 L 47.047248,16.020148 L 34.475371,16.020148 L 34.475371,15.43334 L 43.399686,3.9716929 L 35.015933,3.9716929 L 35.078433,0.97041721 L 46.988468,0.97041721"
+ style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#3465a4;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Segoe"
+ id="path13698" />
+ <path
+ d="M 35.46875,1.34375 L 35.40625,3.59375 L 43.40625,3.59375 C 43.542681,3.6020985 43.663766,3.6840106 43.722279,3.8075389 C 43.780792,3.9310671 43.767467,4.0766473 43.6875,4.1875 L 34.84375,15.53125 L 34.84375,15.65625 L 46.6875,15.65625 L 46.6875,13.40625 L 39.96875,13.40625 C 39.826696,13.409243 39.695149,13.331702 39.628973,13.205968 C 39.562797,13.080234 39.573358,12.9279 39.65625,12.8125 L 46.5625,3.75 L 46.625,1.34375 L 35.46875,1.34375 z "
+ style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;opacity:0.21348314;fill:#3465a4;fill-opacity:1;stroke:url(#linearGradient13702);stroke-width:1.76103091px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Segoe"
+ id="path13700" />
+ </g>
+ </g>
+</svg>
Modified: xfce4-power-manager/trunk/libxfpm/hal-device.c
===================================================================
--- xfce4-power-manager/trunk/libxfpm/hal-device.c 2009-03-22 16:37:59 UTC (rev 6975)
+++ xfce4-power-manager/trunk/libxfpm/hal-device.c 2009-03-22 17:42:59 UTC (rev 6976)
@@ -273,7 +273,31 @@
return value;
}
-
+
+gboolean hal_device_set_property_int (HalDevice *device, const gchar *property, gint value)
+{
+ g_return_val_if_fail (HAL_IS_DEVICE(device), FALSE);
+ g_return_val_if_fail (device->priv->udi != NULL, FALSE);
+
+ GError *error = NULL;
+ gboolean ret;
+
+ ret = dbus_g_proxy_call (device->priv->proxy, "SetPropertyInteger", &error,
+ G_TYPE_STRING, property,
+ G_TYPE_INT, value,
+ G_TYPE_INVALID,
+ G_TYPE_INVALID);
+
+ if ( error )
+ {
+ g_critical ("Error setting int value %d on device %s in property %s: %s",
+ value, device->priv->udi, property, error->message);
+ g_error_free (error);
+ }
+
+ return ret;
+}
+
gchar *hal_device_get_property_string (HalDevice *device, const gchar *property)
{
g_return_val_if_fail (HAL_IS_DEVICE(device), NULL);
Modified: xfce4-power-manager/trunk/libxfpm/hal-device.h
===================================================================
--- xfce4-power-manager/trunk/libxfpm/hal-device.h 2009-03-22 16:37:59 UTC (rev 6975)
+++ xfce4-power-manager/trunk/libxfpm/hal-device.h 2009-03-22 17:42:59 UTC (rev 6976)
@@ -63,7 +63,11 @@
gboolean hal_device_get_property_bool (HalDevice *device,
const gchar *property);
-
+
+gboolean hal_device_set_property_int (HalDevice *device,
+ const gchar *property,
+ gint value);
+
gint hal_device_get_property_int (HalDevice *device,
const gchar *property);
Modified: xfce4-power-manager/trunk/libxfpm/xfpm-common.c
===================================================================
--- xfce4-power-manager/trunk/libxfpm/xfpm-common.c 2009-03-22 16:37:59 UTC (rev 6975)
+++ xfce4-power-manager/trunk/libxfpm/xfpm-common.c 2009-03-22 17:42:59 UTC (rev 6976)
@@ -138,8 +138,10 @@
}
void
-xfpm_about(GtkWidget *widget,gpointer data)
+xfpm_about (GtkWidget *widget, gpointer data)
{
+ gchar *package = (gchar *)data;
+
const gchar* authors[3] =
{
"Ali Abdallah <aliov at xfce.org>",
@@ -151,6 +153,7 @@
"Ali Abdallah <aliov at xfce.org>",
NULL,
};
+
gtk_about_dialog_set_url_hook (xfpm_link_browser, NULL, NULL);
gtk_about_dialog_set_email_hook (xfpm_link_mailto, NULL, NULL);
@@ -161,7 +164,7 @@
"destroy-with-parent", TRUE,
"documenters", documenters,
"license", XFCE_LICENSE_GPL,
- "name", _("Xfce4 Power Manager"),
+ "name", package,
"translator-credits", _("translator-credits"),
"version", PACKAGE_VERSION,
"website", "http://goodies.xfce.org",
Modified: xfce4-power-manager/trunk/panel-plugins/Makefile.am
===================================================================
--- xfce4-power-manager/trunk/panel-plugins/Makefile.am 2009-03-22 16:37:59 UTC (rev 6975)
+++ xfce4-power-manager/trunk/panel-plugins/Makefile.am 2009-03-22 17:42:59 UTC (rev 6976)
@@ -1 +1,3 @@
-SUBDIRS = brightness
+SUBDIRS = \
+ brightness \
+ inhibit
Modified: xfce4-power-manager/trunk/panel-plugins/brightness/Makefile.am
===================================================================
--- xfce4-power-manager/trunk/panel-plugins/brightness/Makefile.am 2009-03-22 16:37:59 UTC (rev 6975)
+++ xfce4-power-manager/trunk/panel-plugins/brightness/Makefile.am 2009-03-22 17:42:59 UTC (rev 6976)
@@ -2,20 +2,26 @@
plugin_PROGRAMS = xfce4-brightness-plugin
xfce4_brightness_plugin_SOURCES = \
- main.c
+ brightness-plugin.c
xfce4_brightness_plugin_CFLAGS = \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/src \
-DLOCALEDIR=\"$(localedir)\" \
$(LIBXFCE4PANEL_CFLAGS) \
$(LIBXFCE4UTIL_CFLAGS) \
$(GTK_CFLAGS) \
- $(GLIB_CFLAGS)
+ $(GLIB_CFLAGS) \
+ $(DBUS_GLIB_CFLAGS)
xfce4_brightness_plugin_LDADD = \
+ $(top_builddir)/libxfpm/libxfpmhal.la \
+ $(top_builddir)/libxfpm/libxfpmcommon.la\
$(LIBXFCE4PANEL_LIBS) \
$(LIBXFCE4UTIL_LIBS) \
$(GTK_LIBS) \
- $(GLIB_LIBS)
+ $(GLIB_LIBS) \
+ $(DBUS_GLIB_LIBS)
#
# Desktop file
Added: xfce4-power-manager/trunk/panel-plugins/brightness/brightness-plugin.c
===================================================================
--- xfce4-power-manager/trunk/panel-plugins/brightness/brightness-plugin.c (rev 0)
+++ xfce4-power-manager/trunk/panel-plugins/brightness/brightness-plugin.c 2009-03-22 17:42:59 UTC (rev 6976)
@@ -0,0 +1,443 @@
+/*
+ * * Copyright (C) 2009 Ali <aliov at xfce.org>
+ *
+ * Licensed under the GNU General Public License Version 2
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <gtk/gtk.h>
+#include <glib.h>
+
+#include <libxfce4panel/xfce-panel-plugin.h>
+#include <libxfce4util/libxfce4util.h>
+#include <libxfcegui4/libxfcegui4.h>
+
+#include <dbus/dbus-glib.h>
+
+#include "libxfpm/hal-manager.h"
+#include "libxfpm/hal-device.h"
+#include "libxfpm/xfpm-common.h"
+
+typedef struct
+{
+ DBusGConnection *bus;
+
+ XfcePanelPlugin *plugin;
+ gint max_level;
+ gint current_level;
+ gboolean hw_found;
+
+ gboolean open;
+ DBusGProxy *proxy;
+
+ GtkWidget *button;
+
+ GtkWidget *scale;
+ GtkWidget *image;
+ GtkWidget *win;
+ GtkWidget *plus;
+ GtkWidget *minus;
+
+} brightness_t;
+
+static gint
+brightness_plugin_get_level (brightness_t *brightness)
+{
+ GError *error = NULL;
+ gint level = 0;
+ gboolean ret;
+
+ ret = dbus_g_proxy_call (brightness->proxy, "GetBrightness", &error,
+ G_TYPE_INVALID,
+ G_TYPE_INT, &level,
+ G_TYPE_INVALID);
+
+ if ( error )
+ {
+ g_critical ("Error getting brightness level: %s\n", error->message);
+ g_error_free (error);
+ }
+ return level;
+}
+
+static gboolean
+brightness_plugin_set_level (brightness_t *brightness, gint level)
+{
+ GError *error = NULL;
+ gboolean ret;
+ gint dummy;
+
+ ret = dbus_g_proxy_call (brightness->proxy, "SetBrightness", &error,
+ G_TYPE_INT, level,
+ G_TYPE_INVALID,
+ G_TYPE_INT, &dummy,
+ G_TYPE_INVALID );
+ if ( error )
+ {
+ g_critical ("Error setting brightness level: %s\n", error->message);
+ g_error_free (error);
+ }
+ return ret;
+}
+
+static void
+brightness_plugin_get_device (brightness_t *brightness)
+{
+ HalManager *manager;
+ HalDevice *device;
+ gchar **udis = NULL;
+
+ //FIXME Don't connect blindly
+ brightness->bus = dbus_g_bus_get (DBUS_BUS_SYSTEM, NULL);
+
+ manager = hal_manager_new ();
+
+ udis = hal_manager_find_device_by_capability (manager, "laptop_panel");
+
+ if (!udis || !udis[0] )
+ {
+ TRACE ("No laptop panel found on the system");
+ brightness->hw_found = FALSE;
+ goto out;
+ }
+
+ device = hal_device_new ();
+ hal_device_set_udi (device, udis[0]);
+
+ brightness->max_level =
+ hal_device_get_property_int (device, "laptop_panel.num_levels") -1;
+
+ TRACE("Laptop panel %s with max level %d", udis[0], brightness->max_level);
+
+ brightness->proxy = dbus_g_proxy_new_for_name (brightness->bus,
+ "org.freedesktop.Hal",
+ udis[0],
+ "org.freedesktop.Hal.Device.LaptopPanel");
+ brightness->hw_found = TRUE;
+ brightness->current_level = brightness_plugin_get_level (brightness);
+
+ g_object_unref (device);
+
+out:
+ g_object_unref (manager);
+}
+
+static void
+brightness_plugin_button_press_cb (GtkWidget *widget, brightness_t *plugin)
+{
+ gint x, y, orientation;
+ GdkDisplay *display;
+ GdkScreen *screen;
+ XfceScreenPosition pos;
+
+ if ( plugin->open )
+ {
+ gtk_widget_hide (plugin->win);
+ plugin->open = FALSE;
+ return;
+ }
+
+ display = gtk_widget_get_display (plugin->button);
+ screen = gtk_widget_get_screen (plugin->button);
+
+ gtk_window_set_screen (GTK_WINDOW(plugin->win), screen);
+ gdk_window_get_origin (plugin->button->window, &x, &y);
+ gtk_widget_show_all (plugin->win);
+
+ pos = xfce_panel_plugin_get_screen_position (plugin->plugin);
+ orientation = xfce_panel_plugin_get_orientation (plugin->plugin);
+
+ /* top */
+ if ( pos == XFCE_SCREEN_POSITION_NW_H ||
+ pos == XFCE_SCREEN_POSITION_N ||
+ pos == XFCE_SCREEN_POSITION_NE_H )
+ {
+ x += plugin->button->allocation.x
+ + plugin->button->allocation.width/2;
+ y += plugin->button->allocation.height;
+ x -= plugin->win->allocation.width/2;
+ }
+ /* left */
+ else if ( pos == XFCE_SCREEN_POSITION_NW_V ||
+ pos == XFCE_SCREEN_POSITION_W ||
+ pos == XFCE_SCREEN_POSITION_SW_V )
+ {
+ y += plugin->button->allocation.y
+ + plugin->button->allocation.height/2;
+ x += plugin->button->allocation.width;
+ y -= plugin->win->allocation.height/2;
+ }
+ /* right */
+ else if ( pos == XFCE_SCREEN_POSITION_NE_V ||
+ pos == XFCE_SCREEN_POSITION_E ||
+ pos == XFCE_SCREEN_POSITION_SE_V )
+ {
+ y += plugin->button->allocation.y
+ + plugin->button->allocation.height/2;
+ x -= plugin->win->allocation.width;
+ y -= plugin->win->allocation.height/2;
+ }
+ /* bottom */
+ else if ( pos == XFCE_SCREEN_POSITION_SW_H ||
+ pos == XFCE_SCREEN_POSITION_S ||
+ pos == XFCE_SCREEN_POSITION_SE_H )
+ {
+ x += plugin->button->allocation.x
+ + plugin->button->allocation.width/2;
+ y -= plugin->win->allocation.height;
+ x -= plugin->win->allocation.width/2;
+ }
+ /* floating */
+ else if ( pos == XFCE_SCREEN_POSITION_FLOATING_H ||
+ pos == XFCE_SCREEN_POSITION_FLOATING_V )
+ {
+ g_warning ("Floating position");
+ return;
+ }
+ else return;
+
+ gtk_window_move (GTK_WINDOW(plugin->win), x, y);
+ plugin->current_level = brightness_plugin_get_level (plugin);
+
+ gtk_range_set_value (GTK_RANGE(plugin->scale), plugin->current_level);
+
+ plugin->open = TRUE;
+}
+
+static void
+plus_clicked (GtkWidget *widget, brightness_t *plugin)
+{
+ gint level = (gint)gtk_range_get_value (GTK_RANGE(plugin->scale));
+
+ if ( level != plugin->max_level )
+ gtk_range_set_value (GTK_RANGE(plugin->scale), level + 1);
+}
+
+static void
+minus_clicked (GtkWidget *widget, brightness_t *plugin)
+{
+ gint level = (gint)gtk_range_get_value (GTK_RANGE(plugin->scale));
+
+ if ( level != 0 )
+ gtk_range_set_value (GTK_RANGE(plugin->scale), level - 1);
+}
+
+static void
+scale_value_changed (GtkRange *range, brightness_t *plugin)
+{
+ gint range_level = (gint)gtk_range_get_value (range);
+ gint hw_level = brightness_plugin_get_level (plugin);
+
+ if ( hw_level != range_level )
+ {
+ if (!brightness_plugin_set_level (plugin, range_level))
+ {
+ g_warning("Failed to set brightness level\n");
+ }
+ }
+}
+
+static void
+brightness_plugin_destroy_popup (brightness_t *plugin)
+{
+ if ( plugin->win != NULL)
+ {
+ gtk_widget_destroy (plugin->win);
+ plugin->win = NULL;
+ }
+}
+
+static void
+brightness_plugin_create_popup (brightness_t *plugin)
+{
+ GtkWidget *box;
+ GtkOrientation orientation;
+
+ plugin->win = gtk_window_new (GTK_WINDOW_POPUP);
+ gtk_window_set_decorated (GTK_WINDOW(plugin->win), FALSE);
+
+ orientation = xfce_panel_plugin_get_orientation (plugin->plugin);
+
+ if ( orientation == GTK_ORIENTATION_VERTICAL)
+ box = gtk_hbox_new (FALSE, 2);
+ else
+ box = gtk_vbox_new (FALSE, 2);
+
+ plugin->minus = gtk_button_new_with_label ("-");
+ gtk_button_set_relief (GTK_BUTTON(plugin->minus), GTK_RELIEF_NONE);
+
+ if ( orientation == GTK_ORIENTATION_VERTICAL )
+ {
+ plugin->scale = gtk_hscale_new_with_range (0, plugin->max_level, 1);
+ gtk_widget_set_size_request (plugin->scale, 100, -1);
+ }
+ else
+ {
+ plugin->scale = gtk_vscale_new_with_range (0, plugin->max_level, 1);
+ gtk_widget_set_size_request (plugin->scale, -1, 100);
+ }
+ gtk_range_set_inverted (GTK_RANGE(plugin->scale), TRUE);
+ gtk_scale_set_draw_value (GTK_SCALE(plugin->scale), FALSE);
+
+
+ plugin->plus = gtk_button_new_with_label ("+");
+ gtk_button_set_relief (GTK_BUTTON(plugin->plus), GTK_RELIEF_NONE);
+
+ gtk_box_pack_start (GTK_BOX(box), plugin->plus, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX(box), plugin->scale, TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX(box), plugin->minus, FALSE, FALSE, 0);
+
+
+ plugin->win = gtk_window_new (GTK_WINDOW_POPUP);
+ gtk_window_set_type_hint (GTK_WINDOW(plugin->win), GDK_WINDOW_TYPE_HINT_UTILITY );
+
+ gtk_container_add (GTK_CONTAINER(plugin->win), box);
+}
+
+static gboolean
+brightness_plugin_set_icon (brightness_t *brightness, gint width)
+{
+ GdkPixbuf *pixbuf;
+ const gchar *icon_name;
+
+ icon_name = brightness->hw_found ? "gpm-brightness-lcd" : "gpm-brightness-lcd-invalid";
+ pixbuf = xfce_themed_icon_load (icon_name, width);
+
+ if ( pixbuf )
+ {
+ gtk_image_set_from_pixbuf (GTK_IMAGE(brightness->image), pixbuf);
+ g_object_unref (pixbuf);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static gboolean
+brightness_plugin_size_changed_cb (XfcePanelPlugin *plugin, gint size, brightness_t *brightness)
+{
+ gint width = size -2 - 2* MAX(brightness->button->style->xthickness,
+ brightness->button->style->xthickness);
+
+ gtk_widget_set_size_request (GTK_WIDGET(plugin), size, size);
+ return brightness_plugin_set_icon (brightness, width);
+}
+
+
+static void
+brightness_plugin_construct_popup (brightness_t *plugin)
+{
+ brightness_plugin_create_popup (plugin);
+ plugin->open = FALSE;
+
+ g_signal_connect (plugin->button, "clicked",
+ G_CALLBACK (brightness_plugin_button_press_cb), plugin);
+
+ g_signal_connect (plugin->plus, "clicked",
+ G_CALLBACK (plus_clicked), plugin);
+
+ g_signal_connect (plugin->minus, "clicked",
+ G_CALLBACK (minus_clicked), plugin);
+
+ g_signal_connect (plugin->scale, "value-changed",
+ G_CALLBACK(scale_value_changed), plugin);
+}
+
+static void
+brightness_plugin_orientation_changed_cb (XfcePanelPlugin *plugin,
+ GtkOrientation orientation,
+ brightness_t *brightness)
+{
+ brightness_plugin_destroy_popup (brightness);
+ brightness_plugin_construct_popup (brightness);
+
+}
+
+static void brightness_plugin_free_data_cb (XfcePanelPlugin *plugin, brightness_t *brightness)
+{
+ if ( brightness->win )
+ gtk_widget_destroy (brightness->win);
+
+ if ( brightness->bus)
+ dbus_g_connection_unref (brightness->bus);
+
+ if ( brightness->proxy )
+ g_object_unref (brightness->proxy);
+
+ g_free (brightness);
+}
+
+static void
+brightness_plugin_construct (brightness_t *plugin)
+{
+ plugin->image = gtk_image_new ();
+ plugin->button = gtk_toggle_button_new ();
+
+ gtk_container_add (GTK_CONTAINER(plugin->button), plugin->image);
+
+ gtk_button_set_relief (GTK_BUTTON(plugin->button), GTK_RELIEF_NONE);
+
+ gtk_container_add (GTK_CONTAINER(plugin->plugin), plugin->button);
+
+ xfce_panel_plugin_add_action_widget (plugin->plugin, plugin->button);
+
+ gtk_widget_show_all (plugin->button);
+}
+
+static void
+register_brightness_plugin (XfcePanelPlugin *plugin)
+{
+ brightness_t *brightness;
+
+ brightness = g_new0 (brightness_t, 1);
+
+ brightness->plugin = plugin;
+
+ brightness_plugin_construct (brightness);
+ brightness_plugin_get_device (brightness);
+
+ if ( brightness->hw_found )
+ {
+ brightness_plugin_construct_popup (brightness);
+ brightness_plugin_set_level (brightness, 9);
+ gtk_widget_set_tooltip_text (brightness->button, _("Control your LCD brightness level"));
+ }
+ else
+ {
+ gtk_widget_set_tooltip_text (brightness->button, _("No device found"));
+ }
+
+ g_signal_connect (plugin, "free-data",
+ G_CALLBACK(brightness_plugin_free_data_cb), brightness);
+
+ g_signal_connect (plugin, "size-changed",
+ G_CALLBACK(brightness_plugin_size_changed_cb), brightness);
+
+ g_signal_connect (plugin, "orientation-changed",
+ G_CALLBACK(brightness_plugin_orientation_changed_cb), brightness);
+ xfce_panel_plugin_menu_show_about(plugin);
+ g_signal_connect (plugin, "about", G_CALLBACK(xfpm_about), _("Brightness plugin"));
+
+}
+
+XFCE_PANEL_PLUGIN_REGISTER_EXTERNAL(register_brightness_plugin);
Modified: xfce4-power-manager/trunk/panel-plugins/brightness/xfce4-brightness-plugin.desktop.in.in
===================================================================
--- xfce4-power-manager/trunk/panel-plugins/brightness/xfce4-brightness-plugin.desktop.in.in 2009-03-22 16:37:59 UTC (rev 6975)
+++ xfce4-power-manager/trunk/panel-plugins/brightness/xfce4-brightness-plugin.desktop.in.in 2009-03-22 17:42:59 UTC (rev 6976)
@@ -1,5 +1,8 @@
[Xfce Panel]
Type=X-XFCE-PanelPlugin
+Encoding=UTF-8
_Name=Brightness plugin
+Comment=Control your LCD brightness
+Icon=gpm-brightness-lcd
X-XFCE-Exec=@libexecdir@/xfce4/panel-plugins/xfce4-brightness-plugin
X-XFCE-Unique=TRUE
Added: xfce4-power-manager/trunk/panel-plugins/inhibit/Makefile.am
===================================================================
--- xfce4-power-manager/trunk/panel-plugins/inhibit/Makefile.am (rev 0)
+++ xfce4-power-manager/trunk/panel-plugins/inhibit/Makefile.am 2009-03-22 17:42:59 UTC (rev 6976)
@@ -0,0 +1,55 @@
+plugindir = $(libexecdir)/xfce4/panel-plugins
+plugin_PROGRAMS = xfce4-inhibit-plugin
+
+xfce4_inhibit_plugin_SOURCES = \
+ inhibit-plugin.c \
+ inhibit-client.h
+
+xfce4_inhibit_plugin_CFLAGS = \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/src \
+ -DLOCALEDIR=\"$(localedir)\" \
+ $(LIBXFCE4PANEL_CFLAGS) \
+ $(LIBXFCE4UTIL_CFLAGS) \
+ $(GTK_CFLAGS) \
+ $(GLIB_CFLAGS) \
+ $(DBUS_GLIB_CFLAGS)
+
+xfce4_inhibit_plugin_LDADD = \
+ $(top_builddir)/libxfpm/libxfpmcommon.la\
+ $(LIBXFCE4PANEL_LIBS) \
+ $(LIBXFCE4UTIL_LIBS) \
+ $(GTK_LIBS) \
+ $(GLIB_LIBS) \
+ $(DBUS_GLIB_LIBS)
+
+if MAINTAINER_MODE
+
+BUILT_SOURCES = \
+ inhibit-client.h
+
+inhibit-client.h: $(top_srcdir)/src/org.freedesktop.PowerManagement.Inhibit.xml
+ dbus-binding-tool --mode=glib-client --prefix=inhibit_plugin $< >$@
+
+endif
+#
+# Desktop file
+#
+desktopdir = $(datadir)/xfce4/panel-plugins
+desktop_in_in_files = xfce4-inhibit-plugin.desktop.in.in
+desktop_in_files = $(desktop_in_in_files:.desktop.in.in=.desktop.in)
+desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
+ at INTLTOOL_DESKTOP_RULE@
+
+EXTRA_DIST = \
+ $(desktop_in_in_files)
+
+CLEANFILES = \
+ $(desktop_in_files) \
+ $(desktop_DATA)
+
+%.desktop.in: %.desktop.in.in
+ sed -e "s,\@libexecdir\@,$(libexecdir),g" < $< > $@
+
+DISTCLEANFILES = \
+ $(BUILT_SOURCES)
\ No newline at end of file
Added: xfce4-power-manager/trunk/panel-plugins/inhibit/inhibit-plugin.c
===================================================================
--- xfce4-power-manager/trunk/panel-plugins/inhibit/inhibit-plugin.c (rev 0)
+++ xfce4-power-manager/trunk/panel-plugins/inhibit/inhibit-plugin.c 2009-03-22 17:42:59 UTC (rev 6976)
@@ -0,0 +1,302 @@
+/*
+ * * Copyright (C) 2009 Ali <aliov at xfce.org>
+ *
+ * Licensed under the GNU General Public License Version 2
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <gtk/gtk.h>
+#include <glib.h>
+
+#include <libxfce4panel/xfce-panel-plugin.h>
+#include <libxfce4util/libxfce4util.h>
+#include <libxfcegui4/libxfcegui4.h>
+
+#include <dbus/dbus-glib.h>
+#include <dbus/dbus-glib-lowlevel.h>
+
+#include "libxfpm/xfpm-common.h"
+#include "libxfpm/xfpm-dbus.h"
+
+#include "inhibit-client.h"
+
+typedef struct
+{
+ XfcePanelPlugin *plugin;
+
+ DBusGConnection *bus;
+ DBusGProxy *proxy;
+
+ GtkWidget *button;
+ GtkWidget *image;
+
+ gboolean connected;
+ guint cookies;
+
+ gboolean inhibited;
+
+} inhibit_t;
+
+static gboolean
+inhibit_plugin_set_icon (inhibit_t *inhibit, gint width)
+{
+ GdkPixbuf *pixbuf;
+
+ pixbuf = xfce_themed_icon_load ("gnome-inhibit-applet", width);
+
+ if ( pixbuf )
+ {
+ gtk_image_set_from_pixbuf (GTK_IMAGE(inhibit->image), pixbuf);
+ g_object_unref (pixbuf);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void
+inhibit_plugin_set_button (inhibit_t *inhibit)
+{
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(inhibit->button), inhibit->inhibited);
+ gtk_widget_set_tooltip_text (inhibit->button,
+ inhibit->inhibited ? _("Automatic power savings on") :
+ _("Automatic power savings off"));
+}
+
+static gboolean
+inhibit_plugin_size_changed_cb (XfcePanelPlugin *plugin, gint size, inhibit_t *inhibit)
+{
+ gint width = size -2 - 2* MAX(inhibit->button->style->xthickness,
+ inhibit->button->style->xthickness);
+
+ gtk_widget_set_size_request (GTK_WIDGET(plugin), size, size);
+ return inhibit_plugin_set_icon (inhibit, width);
+}
+
+static void
+inhibit_plugin_free_data_cb (XfcePanelPlugin *plugin, inhibit_t *inhibit)
+{
+ g_free (inhibit);
+}
+
+static void
+inhibit_changed_cb (DBusGProxy *proxy, gboolean inhibited, inhibit_t *inhibit)
+{
+ TRACE("Inhibit changed %d", inhibited);
+ inhibit->inhibited = inhibited;
+ inhibit_plugin_set_button (inhibit);
+}
+
+static void
+inhibit_plugin_get_inhibit (inhibit_t *plugin)
+{
+ GError *error = NULL;
+
+ if (!xfpm_inhibit_dbus_client_has_inhibit (plugin->proxy, &plugin->inhibited, &error) )
+ {
+ g_critical ("Unable to get inhibit state: %s", error->message);
+ g_error_free (error);
+ return;
+ }
+
+ inhibit_plugin_set_button (plugin);
+}
+
+static void
+inhibit_plugin_set_inhibit (inhibit_t *plugin)
+{
+ GError *error;
+
+ const gchar *app = "Inhibit plugin";
+ const gchar *reason = "User settings";
+
+ if (!xfpm_inhibit_dbus_client_inhibit (plugin->proxy, app, reason, &plugin->cookies, &error))
+ {
+ g_critical ("Unable to set inhibit: %s", error->message);
+ g_error_free (error);
+ return;
+ }
+
+ inhibit_plugin_set_button (plugin);
+}
+
+static void
+inhibit_plugin_unset_inhibit (inhibit_t *plugin)
+{
+ GError *error;
+
+ if (!xfpm_inhibit_dbus_client_un_inhibit (plugin->proxy, plugin->cookies, &error))
+ {
+ g_critical ("Unable to set UnInhibit: %s", error->message);
+ g_error_free (error);
+ return;
+ }
+ inhibit_plugin_set_button (plugin);
+}
+
+static void
+proxy_destroy_cb (DBusGProxy *proxy, inhibit_t *inhibit)
+{
+ TRACE("Power manager disconnected");
+
+ gtk_widget_set_tooltip_text (inhibit->button, _("Power manager disconnected"));
+ // dbus_g_proxy_disconnect_signal (inhibit->proxy, "HasInhibitChanged",
+ // G_CALLBACK(inhibit_changed_cb), inhibit);
+ inhibit->proxy = NULL;
+ inhibit->connected = FALSE;
+}
+
+static void
+inhibit_plugin_connect_more (inhibit_t *plugin)
+{
+ GError *error = NULL;
+
+ plugin->proxy = dbus_g_proxy_new_for_name_owner (plugin->bus,
+ "org.freedesktop.PowerManagement",
+ "/org/freedesktop/PowerManagement/Inhibit",
+ "org.freedesktop.PowerManagement.Inhibit",
+ &error);
+ if ( error )
+ {
+ g_warning ("Unable to get name owner: %s", error->message);
+ g_error_free (error);
+ plugin->connected = FALSE;
+ return;
+ }
+
+ dbus_g_proxy_add_signal (plugin->proxy, "HasInhibitChanged",
+ G_TYPE_BOOLEAN, G_TYPE_INVALID);
+
+ dbus_g_proxy_connect_signal (plugin->proxy, "HasInhibitChanged",
+ G_CALLBACK (inhibit_changed_cb), plugin, NULL);
+
+ g_signal_connect (plugin->proxy, "destroy",
+ G_CALLBACK(proxy_destroy_cb), plugin);
+
+ plugin->connected = TRUE;
+ inhibit_plugin_get_inhibit (plugin);
+}
+
+static void
+inhibit_plugin_connect (inhibit_t *plugin)
+{
+ if (!plugin->bus )
+ plugin->bus = dbus_g_bus_get (DBUS_BUS_SESSION, NULL);
+
+ if ( !xfpm_dbus_name_has_owner (dbus_g_connection_get_connection(plugin->bus),
+ "org.freedesktop.PowerManagement") )
+ {
+ gtk_widget_set_tooltip_text (plugin->button, _("No power manager instance running"));
+ plugin->connected = FALSE;
+ return;
+ }
+
+ if ( !xfpm_dbus_name_has_owner (dbus_g_connection_get_connection(plugin->bus),
+ "org.freedesktop.PowerManagement.Inhibit") )
+ {
+ gtk_widget_set_tooltip_text (plugin->button, _("No power manager instance running"));
+ plugin->connected = FALSE;
+ return;
+ }
+}
+
+static void
+reload_activated (GtkWidget *widget, inhibit_t *plugin)
+{
+ if ( plugin->proxy )
+ proxy_destroy_cb (plugin->proxy, plugin);
+
+ inhibit_plugin_connect (plugin);
+ inhibit_plugin_connect_more (plugin);
+}
+
+static void
+button_toggled_cb (GtkWidget *widget, inhibit_t *plugin)
+{
+ if ( !plugin->connected )
+ return;
+
+ gboolean toggled = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(widget));
+
+ if ( toggled == TRUE && toggled != plugin->inhibited )
+ inhibit_plugin_set_inhibit (plugin);
+ else if ( toggled == FALSE && toggled != plugin->inhibited )
+ inhibit_plugin_unset_inhibit (plugin);
+}
+
+static void
+inhibit_plugin_construct (inhibit_t *plugin)
+{
+ GtkWidget *mi;
+
+ plugin->image = gtk_image_new ();
+ plugin->button = gtk_toggle_button_new ();
+
+ gtk_container_add (GTK_CONTAINER(plugin->button), plugin->image);
+
+ gtk_button_set_relief (GTK_BUTTON(plugin->button), GTK_RELIEF_NONE);
+
+ g_signal_connect (plugin->button, "toggled",
+ G_CALLBACK(button_toggled_cb), plugin);
+
+ gtk_container_add (GTK_CONTAINER(plugin->plugin), plugin->button);
+
+ xfce_panel_plugin_add_action_widget (plugin->plugin, plugin->button);
+
+ mi = gtk_image_menu_item_new_from_stock (GTK_STOCK_REFRESH, NULL);
+ gtk_widget_show (mi);
+
+ g_signal_connect (mi, "activate",
+ G_CALLBACK(reload_activated), plugin);
+
+ xfce_panel_plugin_menu_insert_item (plugin->plugin, GTK_MENU_ITEM(mi));
+
+ gtk_widget_show_all (plugin->button);
+}
+
+static void
+register_inhibit_plugin (XfcePanelPlugin *plugin)
+{
+ inhibit_t *inhibit;
+
+ inhibit = g_new0 (inhibit_t, 1);
+
+ inhibit->plugin = plugin;
+
+ inhibit_plugin_construct (inhibit);
+
+ inhibit_plugin_connect (inhibit);
+ inhibit_plugin_connect_more (inhibit);
+
+ g_signal_connect (plugin, "free-data",
+ G_CALLBACK(inhibit_plugin_free_data_cb), inhibit);
+
+ g_signal_connect (plugin, "size-changed",
+ G_CALLBACK(inhibit_plugin_size_changed_cb), inhibit);
+
+ xfce_panel_plugin_menu_show_about(plugin);
+
+ g_signal_connect (plugin, "about", G_CALLBACK(xfpm_about), _("Inhibit plugin"));
+}
+
+XFCE_PANEL_PLUGIN_REGISTER_EXTERNAL(register_inhibit_plugin);
Added: xfce4-power-manager/trunk/panel-plugins/inhibit/xfce4-inhibit-plugin.desktop.in.in
===================================================================
--- xfce4-power-manager/trunk/panel-plugins/inhibit/xfce4-inhibit-plugin.desktop.in.in (rev 0)
+++ xfce4-power-manager/trunk/panel-plugins/inhibit/xfce4-inhibit-plugin.desktop.in.in 2009-03-22 17:42:59 UTC (rev 6976)
@@ -0,0 +1,8 @@
+[Xfce Panel]
+Type=X-XFCE-PanelPlugin
+Encoding=UTF-8
+_Name=Inhibit plugin
+Comment=Inhibit automatic power saving
+Icon=gnome-inhibit-applet
+X-XFCE-Exec=@libexecdir@/xfce4/panel-plugins/xfce4-inhibit-plugin
+X-XFCE-Unique=TRUE
Modified: xfce4-power-manager/trunk/src/org.freedesktop.PowerManagement.Inhibit.xml
===================================================================
--- xfce4-power-manager/trunk/src/org.freedesktop.PowerManagement.Inhibit.xml 2009-03-22 16:37:59 UTC (rev 6975)
+++ xfce4-power-manager/trunk/src/org.freedesktop.PowerManagement.Inhibit.xml 2009-03-22 17:42:59 UTC (rev 6976)
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
-<node name="/org/freedesktop/PowerManagement">
- <interface name="org.freedesktop.PowerManagement">
+<node name="/">
+ <interface name="org.freedesktop.PowerManagement.Inhibit">
<annotation name="org.freedesktop.DBus.GLib.CSymbol"
value="xfpm_inhibit_dbus"/>
<annotation name="org.freedesktop.DBus.GLib.ClientCSymbol"
Modified: xfce4-power-manager/trunk/src/xfpm-brightness-hal.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-brightness-hal.c 2009-03-22 16:37:59 UTC (rev 6975)
+++ xfce4-power-manager/trunk/src/xfpm-brightness-hal.c 2009-03-22 17:42:59 UTC (rev 6976)
@@ -120,7 +120,7 @@
}
static void
-xfpm_brightness_hal_finalize(GObject *object)
+xfpm_brightness_hal_finalize (GObject *object)
{
XfpmBrightnessHal *brg;
@@ -168,10 +168,12 @@
}
return level;
}
-G_GNUC_UNUSED
+
static gboolean
xfpm_brightness_hal_set_level (XfpmBrightnessHal *brg, gint level)
{
+ TRACE ("Setting level %d", level);
+
GError *error = NULL;
gboolean ret = FALSE;
gint dummy;
@@ -265,6 +267,7 @@
if ( brg->priv->hw_level <= brg->priv->max_level -2 )
{
+ TRACE ("Brightness key up");
xfpm_brightness_hal_set_level (brg, brg->priv->hw_level + 1 );
brg->priv->hw_level = xfpm_brightness_hal_get_level (brg);
}
@@ -278,6 +281,7 @@
if ( brg->priv->hw_level != 0)
{
+ TRACE("Brightness key down");
xfpm_brightness_hal_set_level (brg, brg->priv->hw_level - 1 );
brg->priv->hw_level = xfpm_brightness_hal_get_level (brg);
}
@@ -312,7 +316,10 @@
level = xfpm_brightness_hal_get_level(brg);
if ( level != brg->priv->hw_level )
- xfpm_brightness_hal_set_level(brg, brg->priv->hw_level);
+ {
+ TRACE("Resetting brightness level to %d", brg->priv->hw_level);
+ xfpm_brightness_hal_set_level(brg, brg->priv->hw_level);
+ }
}
static void
@@ -334,7 +341,7 @@
if ( brg->priv->on_battery )
return;
- if ( level != 1 )
+ if ( level != 0 )
{
TRACE ("Reducing brightness, on AC power\n");
xfpm_brightness_hal_set_level(brg, 0);
@@ -345,7 +352,7 @@
if ( !brg->priv->on_battery )
return;
- if ( level != 1 )
+ if ( level != 0 )
{
xfpm_brightness_hal_set_level(brg, 0);
TRACE ("Reducing brightness, on battery power\n");
@@ -384,6 +391,7 @@
static void
xfpm_brightness_hal_inhibit_changed_cb (XfpmInhibit *inhibit, gboolean inhibited, XfpmBrightnessHal *brg)
{
+ TRACE("Inhibit changed %s", xfpm_bool_to_string (inhibited));
brg->priv->inhibited = inhibited;
}
Modified: xfce4-power-manager/trunk/src/xfpm-dpms.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-dpms.c 2009-03-22 16:37:59 UTC (rev 6975)
+++ xfce4-power-manager/trunk/src/xfpm-dpms.c 2009-03-22 17:42:59 UTC (rev 6976)
@@ -146,27 +146,25 @@
static gboolean
xfpm_dpms_enable_disable (XfpmDpms *dpms)
{
+ BOOL on_off;
+ CARD16 state = 0;
+
if ( !dpms->priv->dpms_capable )
return FALSE;
- if ( dpms->priv->inhibited )
+ DPMSInfo (GDK_DISPLAY(), &state, &on_off);
+
+ if ( dpms->priv->inhibited && on_off )
{
- TRACE("DPMS is inhibited");
+ TRACE("Power manager inhibited, disabling DPMS");
DPMSDisable (GDK_DISPLAY());
- return TRUE;
}
-
- BOOL on_off;
- CARD16 state = 0;
-
- DPMSInfo (GDK_DISPLAY(), &state, &on_off);
-
- if ( !on_off && dpms->priv->dpms_enabled )
+ else if ( !on_off && dpms->priv->dpms_enabled && !dpms->priv->inhibited )
{
TRACE("DPMS is disabled, enabling it: user settings");
DPMSEnable(GDK_DISPLAY());
}
- else if ( on_off && !dpms->priv->dpms_enabled )
+ else if ( on_off && !dpms->priv->dpms_enabled && !dpms->priv->inhibited)
{
TRACE("DPMS is enabled, disabling it: user settings");
DPMSDisable(GDK_DISPLAY());
@@ -179,6 +177,9 @@
{
xfpm_dpms_enable_disable (dpms);
+ if ( dpms->priv->inhibited == TRUE || dpms->priv->dpms_enabled == FALSE )
+ return;
+
if ( !dpms->priv->on_battery )
xfpm_dpms_timeouts_on_adapter (dpms);
else
Modified: xfce4-power-manager/trunk/src/xfpm-supply.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-supply.c 2009-03-22 16:37:59 UTC (rev 6975)
+++ xfce4-power-manager/trunk/src/xfpm-supply.c 2009-03-22 17:42:59 UTC (rev 6976)
@@ -485,7 +485,7 @@
mi = gtk_image_menu_item_new_from_stock(GTK_STOCK_ABOUT,NULL);
gtk_widget_set_sensitive(mi,TRUE);
gtk_widget_show(mi);
- g_signal_connect(mi,"activate",G_CALLBACK(xfpm_about),NULL);
+ g_signal_connect(mi,"activate",G_CALLBACK(xfpm_about), _("Xfce Power Manager"));
gtk_menu_shell_append(GTK_MENU_SHELL(menu),mi);
Modified: xfce4-power-manager/trunk/src/xfpm-tray-icon.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-tray-icon.c 2009-03-22 16:37:59 UTC (rev 6975)
+++ xfce4-power-manager/trunk/src/xfpm-tray-icon.c 2009-03-22 17:42:59 UTC (rev 6976)
@@ -30,6 +30,7 @@
#include <gtk/gtk.h>
#include <libxfce4util/libxfce4util.h>
+#include <libxfcegui4/libxfcegui4.h>
#include "libxfpm/xfpm-common.h"
@@ -52,6 +53,28 @@
G_DEFINE_TYPE(XfpmTrayIcon, xfpm_tray_icon, G_TYPE_OBJECT)
+static gboolean
+xfpm_tray_icon_size_changed_cb (GtkStatusIcon *icon, gint size, XfpmTrayIcon *tray)
+{
+ GdkPixbuf *pix;
+
+ g_return_val_if_fail (size > 0, FALSE);
+
+ if ( tray->priv->icon_quark == 0 )
+ return FALSE;
+
+ pix = xfce_themed_icon_load (g_quark_to_string (tray->priv->icon_quark), size);
+
+ if ( pix )
+ {
+ gtk_status_icon_set_from_pixbuf (GTK_STATUS_ICON(tray->priv->icon), pix);
+ g_object_unref (pix);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
static void
xfpm_tray_icon_class_init(XfpmTrayIconClass *klass)
{
@@ -70,6 +93,9 @@
tray->priv->icon = gtk_status_icon_new();
tray->priv->icon_quark = 0;
+
+ g_signal_connect (tray->priv->icon, "size-changed",
+ G_CALLBACK (xfpm_tray_icon_size_changed_cb), tray);
}
static void
@@ -98,8 +124,10 @@
g_return_if_fail(XFPM_IS_TRAY_ICON(icon));
icon->priv->icon_quark = g_quark_from_string(icon_name);
-
- gtk_status_icon_set_from_icon_name (GTK_STATUS_ICON(icon->priv->icon), icon_name);
+
+ xfpm_tray_icon_size_changed_cb (icon->priv->icon,
+ gtk_status_icon_get_size(icon->priv->icon),
+ icon);
}
void xfpm_tray_icon_set_tooltip (XfpmTrayIcon *icon, const gchar *tooltip)
More information about the Goodies-commits
mailing list