diff options
Diffstat (limited to 'rpms/sugar/0065-au-687-Add-network-proxy-config-extension-to-CP.patch')
-rw-r--r-- | rpms/sugar/0065-au-687-Add-network-proxy-config-extension-to-CP.patch | 893 |
1 files changed, 893 insertions, 0 deletions
diff --git a/rpms/sugar/0065-au-687-Add-network-proxy-config-extension-to-CP.patch b/rpms/sugar/0065-au-687-Add-network-proxy-config-extension-to-CP.patch new file mode 100644 index 0000000..8839ba1 --- /dev/null +++ b/rpms/sugar/0065-au-687-Add-network-proxy-config-extension-to-CP.patch @@ -0,0 +1,893 @@ +From 68ad7ab88202258cd023ee0a467f1101852c6be0 Mon Sep 17 00:00:00 2001 +From: Anish Mangal <anish@sugarlabs.org> +Date: Tue, 8 Nov 2011 23:18:02 +0000 +Subject: [PATCH sugar 65/74] au#687: Add network proxy config extension to CP + +This work has been done and maintained by: + +Aleksey Lim <alsroot@activitycentral.org> + +here: + +http://git.sugarlabs.org/alsroot/proxy_cp + +Signed-off-by: Anish Mangal <anish@sugarlabs.org> +[merged a few fix-up patches from Aleksey] +Signed-off-by: Sascha Silbe <silbe@activitycentral.com> +--- + configure.ac | 1 + + data/icons/Makefile.am | 3 +- + data/icons/module-proxy.svg | 361 +++++++++++++++++++++++++++++ + extensions/cpsection/Makefile.am | 1 + + extensions/cpsection/proxy/Makefile.am | 6 + + extensions/cpsection/proxy/__init__.py | 21 ++ + extensions/cpsection/proxy/model.py | 14 ++ + extensions/cpsection/proxy/view.py | 389 ++++++++++++++++++++++++++++++++ + 8 files changed, 795 insertions(+), 1 deletions(-) + create mode 100644 data/icons/module-proxy.svg + create mode 100644 extensions/cpsection/proxy/Makefile.am + create mode 100644 extensions/cpsection/proxy/__init__.py + create mode 100644 extensions/cpsection/proxy/model.py + create mode 100644 extensions/cpsection/proxy/view.py + +diff --git a/configure.ac b/configure.ac +index 8e6d871..fa7165c 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -63,6 +63,7 @@ extensions/cpsection/network/Makefile + extensions/cpsection/power/Makefile + extensions/cpsection/updater/backends/Makefile + extensions/cpsection/updater/Makefile ++extensions/cpsection/proxy/Makefile + extensions/deviceicon/Makefile + extensions/globalkey/Makefile + extensions/Makefile +diff --git a/data/icons/Makefile.am b/data/icons/Makefile.am +index 2497c4a..2582c31 100644 +--- a/data/icons/Makefile.am ++++ b/data/icons/Makefile.am +@@ -11,6 +11,7 @@ sugar_DATA = \ + module-modemconfiguration.svg \ + module-network.svg \ + module-power.svg \ +- module-updater.svg ++ module-updater.svg \ ++ module-proxy.svg + + EXTRA_DIST = $(sugar_DATA) +diff --git a/data/icons/module-proxy.svg b/data/icons/module-proxy.svg +new file mode 100644 +index 0000000..a22a7a8 +--- /dev/null ++++ b/data/icons/module-proxy.svg +@@ -0,0 +1,361 @@ ++<?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="55" ++ height="55" ++ id="svg3063"> ++ <defs ++ id="defs3065"> ++ <clipPath ++ id="SVGID_5_"> ++ <use ++ id="use3018" ++ style="overflow:visible" ++ x="0" ++ y="0" ++ width="1" ++ height="1" ++ xlink:href="#SVGID_4_" /> ++ </clipPath> ++ <clipPath ++ id="SVGID_5_-7"> ++ <use ++ id="use3018-6" ++ style="overflow:visible" ++ x="0" ++ y="0" ++ width="1" ++ height="1" ++ xlink:href="#SVGID_4_" /> ++ </clipPath> ++ <clipPath ++ id="SVGID_5_-1"> ++ <use ++ id="use3018-4" ++ style="overflow:visible" ++ x="0" ++ y="0" ++ width="1" ++ height="1" ++ xlink:href="#SVGID_4_" /> ++ </clipPath> ++ <clipPath ++ id="SVGID_5_-12"> ++ <use ++ id="use3018-3" ++ style="overflow:visible" ++ x="0" ++ y="0" ++ width="1" ++ height="1" ++ xlink:href="#SVGID_4_" /> ++ </clipPath> ++ <clipPath ++ id="SVGID_5_-3"> ++ <use ++ id="use3018-41" ++ style="overflow:visible" ++ x="0" ++ y="0" ++ width="1" ++ height="1" ++ xlink:href="#SVGID_4_" /> ++ </clipPath> ++ <clipPath ++ id="SVGID_5_-0"> ++ <use ++ id="use3018-2" ++ style="overflow:visible" ++ x="0" ++ y="0" ++ width="1" ++ height="1" ++ xlink:href="#SVGID_4_" /> ++ </clipPath> ++ <clipPath ++ id="SVGID_5_-8"> ++ <use ++ id="use3018-65" ++ style="overflow:visible" ++ x="0" ++ y="0" ++ width="1" ++ height="1" ++ xlink:href="#SVGID_4_" /> ++ </clipPath> ++ <clipPath ++ id="SVGID_5_-06"> ++ <use ++ id="use3018-1" ++ style="overflow:visible" ++ x="0" ++ y="0" ++ width="1" ++ height="1" ++ xlink:href="#SVGID_4_" /> ++ </clipPath> ++ <clipPath ++ id="SVGID_5_-82"> ++ <use ++ id="use3018-9" ++ style="overflow:visible" ++ x="0" ++ y="0" ++ width="1" ++ height="1" ++ xlink:href="#SVGID_4_" /> ++ </clipPath> ++ <defs ++ id="defs3508"> ++ <path ++ d="m 23.589,42.098 c 10.277,0 18.616,-8.373 18.616,-18.645 0,-10.207 -8.338,-18.581 -18.616,-18.581 -10.206,0 -18.615,8.374 -18.615,18.581 0,10.272 8.41,18.645 18.615,18.645 z" ++ id="SVGID_3_" /> ++ </defs> ++ <clipPath ++ id="SVGID_4_"> ++ <use ++ id="use3512" ++ style="overflow:visible" ++ x="0" ++ y="0" ++ width="1" ++ height="1" ++ xlink:href="#SVGID_3_" /> ++ </clipPath> ++ <radialGradient ++ cx="685.64899" ++ cy="995.40698" ++ r="96.022903" ++ id="SVGID_5_-4" ++ gradientUnits="userSpaceOnUse" ++ gradientTransform="matrix(0.315,0,0,0.315,-193.939,-303.123)"> ++ <stop ++ id="stop3515" ++ style="stop-color:#ffffff;stop-opacity:1" ++ offset="0" /> ++ <stop ++ id="stop3517" ++ style="stop-color:#57adff;stop-opacity:1" ++ offset="0.59549999" /> ++ <stop ++ id="stop3519" ++ style="stop-color:#c9e6ff;stop-opacity:1" ++ offset="0.99440002" /> ++ </radialGradient> ++ <linearGradient ++ x1="868.99597" ++ y1="-1149.41" ++ x2="868.99597" ++ y2="-1269.5601" ++ id="SVGID_6_" ++ gradientUnits="userSpaceOnUse" ++ gradientTransform="matrix(0.315,0,0,-0.315,-250.166,-358.406)"> ++ <stop ++ id="stop3524" ++ style="stop-color:#006a00;stop-opacity:1" ++ offset="0" /> ++ <stop ++ id="stop3526" ++ style="stop-color:#004000;stop-opacity:1" ++ offset="0.2" /> ++ <stop ++ id="stop3528" ++ style="stop-color:#00bd00;stop-opacity:1" ++ offset="1" /> ++ </linearGradient> ++ <radialGradient ++ cx="685.64899" ++ cy="995.40698" ++ r="96.022903" ++ id="radialGradient3603" ++ xlink:href="#SVGID_5_-4" ++ gradientUnits="userSpaceOnUse" ++ gradientTransform="matrix(0.315,0,0,0.315,-193.939,-303.123)" /> ++ </defs> ++ <metadata ++ id="metadata3068"> ++ <rdf:RDF> ++ <cc:Work ++ rdf:about=""> ++ <dc:format>image/svg+xml</dc:format> ++ <dc:type ++ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> ++ <dc:title></dc:title> ++ </cc:Work> ++ </rdf:RDF> ++ </metadata> ++ <g ++ transform="matrix(0.09164839,0,0,0.09164839,-0.05430278,-41.447306)" ++ id="layer1"> ++ <path ++ d="m 200.897,116.781 c -1.04,0 -2.184,0.428 -3.348,1.089 2.741,-0.802 4.03,-1.089 3.348,-1.089 m 67.869,13.235 0.677,-9.925 -10.473,0.655 1.382,9.27 h 8.414 M 150.528,301.594 c -2.113,-1.988 -0.699,-10.608 -0.699,-10.608 0,0 -31.488,-16.545 -65.767,-26.493 -4.227,-1.225 -2.091,-9.932 2.091,-13.23 l -1.387,-9.297 c -0.693,-4.622 7.005,-27.148 14.698,-29.12 7.699,-2 -0.705,13.235 -0.705,13.235 l -7.688,4.637 c 0,0 9.092,10.592 11.199,10.592 2.092,0 5.591,-5.31 5.591,-5.31 l -9.79,-6.604 9.091,-3.988 0.574,-3.489 1.528,-0.487 15.062,-22.809 c 10.407,-4.258 23.199,-9.535 24.824,-10.31 2.806,-1.316 22.387,-12.569 25.887,-15.213 3.51,-2.666 11.187,-1.988 13.982,-1.988 2.812,0 7,-1.333 7.698,-8.631 0.699,-7.281 3.5,-8.608 5.607,-6.615 2.102,1.967 -2.107,5.293 2.796,6.615 4.893,1.333 9.092,4.644 12.597,1.333 2.557,-2.422 -0.867,-5.186 -3.17,-7.271 h 38.846 l 4.205,-11.947 -9.097,-1.321 -33.596,-3.305 v -3.982 l -2.676,0.456 c 3.635,-19.987 25.236,-16.692 ++8.972,-28.259 -0.986,-0.71 -15.213,22.418 -18.837,21.97 -6.562,-0.868 -15.029,-0.938 -16.833,1.197 -2.396,2.817 5.363,-9.688 12.038,-13.479 -7.964,2.346 -22.234,-4.903 -47.964,13.273 -8.701,6.15 -30.541,31.066 -39.528,40.645 -37.968,44.826 -41.029,83.175 -41.029,84.876 0,3.31 8.04,5.179 8.733,9.167 0.704,3.95 -13.29,17.218 -13.29,23.839 0,3.044 -7.005,36.114 8.381,77.496 13.647,39.257 40.054,73.879 43.445,76.046 l 9.725,-5.158 c 0,0 -16.091,-28.486 -16.784,-31.141 -0.693,-2.647 18.188,-41.068 27.295,-39.727 9.091,1.29 6.994,3.968 12.591,0.65 5.602,-3.292 9.096,-30.479 15.392,-33.113 6.301,-2.663 13.29,-5.969 12.596,-12.592 -0.729,-6.644 -24.513,-18.557 -26.604,-20.54 m 151.819,-194.755 -18.888,-6.626 3.5,10.608 15.388,-3.982 m -70.666,24.511 c 2.107,0 44.074,-27.81 39.881,-28.481 -4.188,-0.655 -4.887,0 -16.102,-1.327 -11.177,-1.322 -23.084,15.901 -25.875,18.562 -2.802,2.647 -1.859,11.246 2.096,11.246 m 192.63,199.731 5.42,-7.031 -5.42,-1.905 ++ -4.062,5.104 -4.734,7.02 4.05,1.909 4.746,-5.097 m 23.687,22.995 -1.356,-10.228 h -8.785 l -0.682,7.659 -8.139,-1.269 -2.016,-8.3 -4.063,-2.559 -4.745,5.745 -4.735,-1.268 -1.366,4.452 5.428,1.301 v 41.479 l 19.159,4.615 c -0.445,0.759 -0.771,1.41 -0.879,1.756 -1.364,4.477 5.406,6.415 10.144,4.477 1.753,-0.705 12.797,-4.952 16.295,-13.283 4.879,-11.605 8.03,-28.314 8.877,-33.722 l -2.146,-4.693 -13.545,5.117 -7.466,-1.28 h 0.02 m -6.783,-169.88 c -30.978,-46.973 -105.41,-77.669 -105.41,-77.669 l -19.166,10.039 -2.722,-4.453 -6.761,-2.563 v 5.753 l 6.091,5.115 -4.053,1.912 -15.582,1.268 -35.211,19.158 3.381,15.322 -4.075,1.284 -2.015,3.186 11.512,17.223 0.671,5.759 -9.476,1.913 v 11.486 l -5.412,1.273 0.677,8.944 -46.058,31.938 1.355,17.852 c 3.38,4.475 29.798,31.293 29.798,31.293 0,0 30.464,1.263 37.237,-2.551 6.777,-3.831 2.025,3.831 4.068,5.748 2.016,1.923 2.709,15.322 4.724,16.601 2.038,1.271 0,8.923 2.709,11.502 2.71,2.534 2.71,33.19 2.71,33.19 0,0 16.252,27.445 ++ 16.252,34.468 0,7.021 -0.683,6.382 12.189,5.742 12.863,-0.628 15.571,-5.742 18.281,-7.649 2.709,-1.908 2.709,-6.383 5.417,-10.229 2.731,-3.839 7.455,-18.499 13.556,-23.602 6.078,-5.126 22.343,-8.96 23.686,-17.879 1.356,-8.949 7.443,-15.972 7.443,-15.972 l 29.278,-30.968 -0.823,4.161 -0.671,15.95 8.81,-3.187 -0.672,-17.25 -3.154,-3.343 0.446,-0.487 c 0,0 -2.037,-3.831 -4.734,-3.831 -2.712,0 -18.974,3.831 -21.672,3.196 -2.711,-0.644 -14.228,-31.292 -16.253,-32.549 -2.039,-1.279 -14.889,-22.359 -14.889,-22.359 0,0 29.776,35.751 34.521,49.795 2.751,8.18 13.089,0.563 21.497,-7.97 l 2.222,5.429 5.407,-1.29 -0.671,-6.381 h 6.088 v 9.573 l -2.024,5.115 -0.694,8.29 5.429,5.119 2.71,-4.459 8.776,-8.311 10.162,-5.108 2.721,5.108 1.354,7.027 -2.709,7.655 -5.417,4.47 -2.708,11.491 v 5.743 l -6.091,-3.836 -0.671,-12.118 -8.8,0.648 -4.051,10.842 6.089,8.948 14.216,1.92 11.507,-10.868 1.354,-21.044 5.127,-6.766 c 3.337,8.576 5.722,17.548 5.722,25.914 0,9.167 7.259,-4.628 3.707,-32.583 ++ 0.003,-0.001 -5.567,-66.402 -36.255,-97.088 z m -135.423,27.505 -36.561,-1.294 15.56,-12.759 h 8.127 l 12.874,8.928 v 5.125 m 44.706,-4.469 v 5.743 h -15.569 l 1.354,3.841 -9.493,1.289 -0.66,3.169 -6.772,-1.256 -12.2,-2.568 2.038,-3.181 2.037,-3.846 6.771,-7.022 2.72,5.115 10.142,-0.646 5.418,-5.754 20.999,3.836 -6.785,1.28 m 1.345,-8.305 -8.128,1.273 -1.343,-5.753 10.143,-1.268 1.366,-5.743 7.454,7.666 -9.492,3.814 v 0.011 m 39.289,198.535 -4.746,3.837 0.674,9.579 h 6.088 v -8.278 l 5.441,-7.043 v -14.672 l -3.404,-0.662 -4.053,17.239 0,0 m -45.369,-19.135 c 0,0 -4.746,1.234 0.662,3.185 5.418,1.93 27.09,-31.271 27.09,-31.271 l -18.291,11.487 -9.472,16.6 h 0.011 m -36.862,122.355 -4.052,-3.858 -8.127,-1.289 -1.343,3.869 -10.836,-1.278 -0.681,-5.135 h -8.123 l -8.798,5.135 h -15.56 l -1.355,-3.856 -25.041,-2.59 -4.063,3.867 -10.138,-2.556 -1.359,-9.016 -4.735,-0.661 -5.418,9.677 -18.273,-0.65 c 3.272,1.538 30.551,17.824 72.403,21.214 55.5,4.487 81.896,-8.991 81.896,-8.991 ++l -2.025,-1.951 ++-24.371,-1.918 v -0.013 l -10e-4,0 z" ++ transform="matrix(1.1261275,0,0,1.1261275,592.13313,769.48419)" ++ clip-path="url(#SVGID_5_-12)" ++ id="path3315" ++ style="fill:#000000" /> ++ <path ++ d="m 200.897,116.781 c -1.04,0 -2.184,0.428 -3.348,1.089 2.741,-0.802 4.03,-1.089 3.348,-1.089 m 67.869,13.235 0.677,-9.925 -10.473,0.655 1.382,9.27 h 8.414 M 150.528,301.594 c -2.113,-1.988 -0.699,-10.608 -0.699,-10.608 0,0 -31.488,-16.545 -65.767,-26.493 -4.227,-1.225 -2.091,-9.932 2.091,-13.23 l -1.387,-9.297 c -0.693,-4.622 7.005,-27.148 14.698,-29.12 7.699,-2 -0.705,13.235 -0.705,13.235 l -7.688,4.637 c 0,0 9.092,10.592 11.199,10.592 2.092,0 5.591,-5.31 5.591,-5.31 l -9.79,-6.604 9.091,-3.988 0.574,-3.489 1.528,-0.487 15.062,-22.809 c 10.407,-4.258 23.199,-9.535 24.824,-10.31 2.806,-1.316 22.387,-12.569 25.887,-15.213 3.51,-2.666 11.187,-1.988 13.982,-1.988 2.812,0 7,-1.333 7.698,-8.631 0.699,-7.281 3.5,-8.608 5.607,-6.615 2.102,1.967 -2.107,5.293 2.796,6.615 4.893,1.333 9.092,4.644 12.597,1.333 2.557,-2.422 -0.867,-5.186 -3.17,-7.271 h 38.846 l 4.205,-11.947 -9.097,-1.321 -33.596,-3.305 v -3.982 l -2.676,0.456 c 3.635,-19.987 25.236,-16.692 8.972,-28.259 -0.986,-0.71 ++-15.213,22.418 -18.837,21.97 -6.562,-0.868 -15.029,-0.938 -16.833,1.197 -2.396,2.817 5.363,-9.688 12.038,-13.479 -7.964,2.346 -22.234,-4.903 -47.964,13.273 -8.701,6.15 -30.541,31.066 -39.528,40.645 -37.968,44.826 -41.029,83.175 -41.029,84.876 0,3.31 8.04,5.179 8.733,9.167 0.704,3.95 -13.29,17.218 -13.29,23.839 0,3.044 -7.005,36.114 8.381,77.496 13.647,39.257 40.054,73.879 43.445,76.046 l 9.725,-5.158 c 0,0 -16.091,-28.486 -16.784,-31.141 -0.693,-2.647 18.188,-41.068 27.295,-39.727 9.091,1.29 6.994,3.968 12.591,0.65 5.602,-3.292 9.096,-30.479 15.392,-33.113 6.301,-2.663 13.29,-5.969 12.596,-12.592 -0.729,-6.644 -24.513,-18.557 -26.604,-20.54 m 151.819,-194.755 -18.888,-6.626 3.5,10.608 15.388,-3.982 m -70.666,24.511 c 2.107,0 44.074,-27.81 39.881,-28.481 -4.188,-0.655 -4.887,0 -16.102,-1.327 -11.177,-1.322 -23.084,15.901 -25.875,18.562 -2.802,2.647 -1.859,11.246 2.096,11.246 m 192.63,199.731 5.42,-7.031 -5.42,-1.905 -4.062,5.104 -4.734,7.02 4.05,1.909 4.746,-5.097 ++ m 23.687,22.995 -1.356,-10.228 h -8.785 l -0.682,7.659 -8.139,-1.269 -2.016,-8.3 -4.063,-2.559 -4.745,5.745 -4.735,-1.268 -1.366,4.452 5.428,1.301 v 41.479 l 19.159,4.615 c -0.445,0.759 -0.771,1.41 -0.879,1.756 -1.364,4.477 5.406,6.415 10.144,4.477 1.753,-0.705 12.797,-4.952 16.295,-13.283 4.879,-11.605 8.03,-28.314 8.877,-33.722 l -2.146,-4.693 -13.545,5.117 -7.466,-1.28 h 0.02 m -6.783,-169.88 c -30.978,-46.973 -105.41,-77.669 -105.41,-77.669 l -19.166,10.039 -2.722,-4.453 -6.761,-2.563 v 5.753 l 6.091,5.115 -4.053,1.912 -15.582,1.268 -35.211,19.158 3.381,15.322 -4.075,1.284 -2.015,3.186 11.512,17.223 0.671,5.759 -9.476,1.913 v 11.486 l -5.412,1.273 0.677,8.944 -46.058,31.938 1.355,17.852 c 3.38,4.475 29.798,31.293 29.798,31.293 0,0 30.464,1.263 37.237,-2.551 6.777,-3.831 2.025,3.831 4.068,5.748 2.016,1.923 2.709,15.322 4.724,16.601 2.038,1.271 0,8.923 2.709,11.502 2.71,2.534 2.71,33.19 2.71,33.19 0,0 16.252,27.445 16.252,34.468 0,7.021 -0.683,6.382 12.189,5.742 12.863,-0.628 ++15.571,-5.742 18.281,-7.649 2.709,-1.908 2.709,-6.383 5.417,-10.229 2.731,-3.839 7.455,-18.499 13.556,-23.602 6.078,-5.126 22.343,-8.96 23.686,-17.879 1.356,-8.949 7.443,-15.972 7.443,-15.972 l 29.278,-30.968 -0.823,4.161 -0.671,15.95 8.81,-3.187 -0.672,-17.25 -3.154,-3.343 0.446,-0.487 c 0,0 -2.037,-3.831 -4.734,-3.831 -2.712,0 -18.974,3.831 -21.672,3.196 -2.711,-0.644 -14.228,-31.292 -16.253,-32.549 -2.039,-1.279 -14.889,-22.359 -14.889,-22.359 0,0 29.776,35.751 34.521,49.795 2.751,8.18 13.089,0.563 21.497,-7.97 l 2.222,5.429 5.407,-1.29 -0.671,-6.381 h 6.088 v 9.573 l -2.024,5.115 -0.694,8.29 5.429,5.119 2.71,-4.459 8.776,-8.311 10.162,-5.108 2.721,5.108 1.354,7.027 -2.709,7.655 -5.417,4.47 -2.708,11.491 v 5.743 l -6.091,-3.836 -0.671,-12.118 -8.8,0.648 -4.051,10.842 6.089,8.948 14.216,1.92 11.507,-10.868 1.354,-21.044 5.127,-6.766 c 3.337,8.576 5.722,17.548 5.722,25.914 0,9.167 7.259,-4.628 3.707,-32.583 0.003,-0.001 -5.567,-66.402 -36.255,-97.088 z m -135.423,27.505 ++ -36.561,-1.294 15.56,-12.759 h 8.127 l 12.874,8.928 v 5.125 m 44.706,-4.469 v 5.743 h -15.569 l 1.354,3.841 -9.493,1.289 -0.66,3.169 -6.772,-1.256 -12.2,-2.568 2.038,-3.181 2.037,-3.846 6.771,-7.022 2.72,5.115 10.142,-0.646 5.418,-5.754 20.999,3.836 -6.785,1.28 m 1.345,-8.305 -8.128,1.273 -1.343,-5.753 10.143,-1.268 1.366,-5.743 7.454,7.666 -9.492,3.814 v 0.011 m 39.289,198.535 -4.746,3.837 0.674,9.579 h 6.088 v -8.278 l 5.441,-7.043 v -14.672 l -3.404,-0.662 -4.053,17.239 0,0 m -45.369,-19.135 c 0,0 -4.746,1.234 0.662,3.185 5.418,1.93 27.09,-31.271 27.09,-31.271 l -18.291,11.487 -9.472,16.6 h 0.011 m -36.862,122.355 -4.052,-3.858 -8.127,-1.289 -1.343,3.869 -10.836,-1.278 -0.681,-5.135 h -8.123 l -8.798,5.135 h -15.56 l -1.355,-3.856 -25.041,-2.59 -4.063,3.867 -10.138,-2.556 -1.359,-9.016 -4.735,-0.661 -5.418,9.677 -18.273,-0.65 c 3.272,1.538 30.551,17.824 72.403,21.214 55.5,4.487 81.896,-8.991 81.896,-8.991 l -2.025,-1.951 -24.371,-1.918 v -0.013 l -10e-4,0 z" ++ transform="matrix(1.1261275,0,0,1.1261275,-123.16579,191.65755)" ++ clip-path="url(#SVGID_5_-3)" ++ id="path3315-1" ++ style="fill:#000000" /> ++ <path ++ d="m 200.897,116.781 c -1.04,0 -2.184,0.428 -3.348,1.089 2.741,-0.802 4.03,-1.089 3.348,-1.089 m 67.869,13.235 0.677,-9.925 -10.473,0.655 1.382,9.27 h 8.414 M 150.528,301.594 c -2.113,-1.988 -0.699,-10.608 -0.699,-10.608 0,0 -31.488,-16.545 -65.767,-26.493 -4.227,-1.225 -2.091,-9.932 2.091,-13.23 l -1.387,-9.297 c -0.693,-4.622 7.005,-27.148 14.698,-29.12 7.699,-2 -0.705,13.235 -0.705,13.235 l -7.688,4.637 c 0,0 9.092,10.592 11.199,10.592 2.092,0 5.591,-5.31 5.591,-5.31 l -9.79,-6.604 9.091,-3.988 0.574,-3.489 1.528,-0.487 15.062,-22.809 c 10.407,-4.258 23.199,-9.535 24.824,-10.31 2.806,-1.316 22.387,-12.569 25.887,-15.213 3.51,-2.666 11.187,-1.988 13.982,-1.988 2.812,0 7,-1.333 7.698,-8.631 0.699,-7.281 3.5,-8.608 5.607,-6.615 2.102,1.967 -2.107,5.293 2.796,6.615 4.893,1.333 9.092,4.644 12.597,1.333 2.557,-2.422 -0.867,-5.186 -3.17,-7.271 h 38.846 l 4.205,-11.947 -9.097,-1.321 -33.596,-3.305 v -3.982 l -2.676,0.456 c 3.635,-19.987 25.236,-16.692 8.972,-28.259 -0.986,-0.71 ++ -15.213,22.418 -18.837,21.97 -6.562,-0.868 -15.029,-0.938 -16.833,1.197 -2.396,2.817 5.363,-9.688 12.038,-13.479 -7.964,2.346 -22.234,-4.903 -47.964,13.273 -8.701,6.15 -30.541,31.066 -39.528,40.645 -37.968,44.826 -41.029,83.175 -41.029,84.876 0,3.31 8.04,5.179 8.733,9.167 0.704,3.95 -13.29,17.218 -13.29,23.839 0,3.044 -7.005,36.114 8.381,77.496 13.647,39.257 40.054,73.879 43.445,76.046 l 9.725,-5.158 c 0,0 -16.091,-28.486 -16.784,-31.141 -0.693,-2.647 18.188,-41.068 27.295,-39.727 9.091,1.29 6.994,3.968 12.591,0.65 5.602,-3.292 9.096,-30.479 15.392,-33.113 6.301,-2.663 13.29,-5.969 12.596,-12.592 -0.729,-6.644 -24.513,-18.557 -26.604,-20.54 m 151.819,-194.755 -18.888,-6.626 3.5,10.608 15.388,-3.982 m -70.666,24.511 c 2.107,0 44.074,-27.81 39.881,-28.481 -4.188,-0.655 -4.887,0 -16.102,-1.327 -11.177,-1.322 -23.084,15.901 -25.875,18.562 -2.802,2.647 -1.859,11.246 2.096,11.246 m 192.63,199.731 5.42,-7.031 -5.42,-1.905 -4.062,5.104 -4.734,7.02 4.05,1.909 ++ 4.746,-5.097 m 23.687,22.995 -1.356,-10.228 h -8.785 l -0.682,7.659 -8.139,-1.269 -2.016,-8.3 -4.063,-2.559 -4.745,5.745 -4.735,-1.268 -1.366,4.452 5.428,1.301 v 41.479 l 19.159,4.615 c -0.445,0.759 -0.771,1.41 -0.879,1.756 -1.364,4.477 5.406,6.415 10.144,4.477 1.753,-0.705 12.797,-4.952 16.295,-13.283 4.879,-11.605 8.03,-28.314 8.877,-33.722 l -2.146,-4.693 -13.545,5.117 -7.466,-1.28 h 0.02 m -6.783,-169.88 c -30.978,-46.973 -105.41,-77.669 -105.41,-77.669 l -19.166,10.039 -2.722,-4.453 -6.761,-2.563 v 5.753 l 6.091,5.115 -4.053,1.912 -15.582,1.268 -35.211,19.158 3.381,15.322 -4.075,1.284 -2.015,3.186 11.512,17.223 0.671,5.759 -9.476,1.913 v 11.486 l -5.412,1.273 0.677,8.944 -46.058,31.938 1.355,17.852 c 3.38,4.475 29.798,31.293 29.798,31.293 0,0 30.464,1.263 37.237,-2.551 6.777,-3.831 2.025,3.831 4.068,5.748 2.016,1.923 2.709,15.322 4.724,16.601 2.038,1.271 0,8.923 2.709,11.502 2.71,2.534 2.71,33.19 2.71,33.19 0,0 16.252,27.445 16.252,34.468 0,7.021 -0.683,6.382 ++ 12.189,5.742 12.863,-0.628 15.571,-5.742 18.281,-7.649 2.709,-1.908 2.709,-6.383 5.417,-10.229 2.731,-3.839 7.455,-18.499 13.556,-23.602 6.078,-5.126 22.343,-8.96 23.686,-17.879 1.356,-8.949 7.443,-15.972 7.443,-15.972 l 29.278,-30.968 -0.823,4.161 -0.671,15.95 8.81,-3.187 -0.672,-17.25 -3.154,-3.343 0.446,-0.487 c 0,0 -2.037,-3.831 -4.734,-3.831 -2.712,0 -18.974,3.831 -21.672,3.196 -2.711,-0.644 -14.228,-31.292 -16.253,-32.549 -2.039,-1.279 -14.889,-22.359 -14.889,-22.359 0,0 29.776,35.751 34.521,49.795 2.751,8.18 13.089,0.563 21.497,-7.97 l 2.222,5.429 5.407,-1.29 -0.671,-6.381 h 6.088 v 9.573 l -2.024,5.115 -0.694,8.29 5.429,5.119 2.71,-4.459 8.776,-8.311 10.162,-5.108 2.721,5.108 1.354,7.027 -2.709,7.655 -5.417,4.47 -2.708,11.491 v 5.743 l -6.091,-3.836 -0.671,-12.118 -8.8,0.648 -4.051,10.842 6.089,8.948 14.216,1.92 11.507,-10.868 1.354,-21.044 5.127,-6.766 c 3.337,8.576 5.722,17.548 5.722,25.914 0,9.167 7.259,-4.628 3.707,-32.583 0.003,-0.001 -5.567,-66.402 -36.255,-97.088 ++z m -135.423,27.505 -36.561,-1.294 15.56,-12.759 h 8.127 l 12.874,8.928 v 5.125 m 44.706,-4.469 v 5.743 h -15.569 l 1.354,3.841 -9.493,1.289 -0.66,3.169 -6.772,-1.256 -12.2,-2.568 2.038,-3.181 2.037,-3.846 6.771,-7.022 2.72,5.115 10.142,-0.646 5.418,-5.754 20.999,3.836 -6.785,1.28 m 1.345,-8.305 -8.128,1.273 -1.343,-5.753 10.143,-1.268 1.366,-5.743 7.454,7.666 -9.492,3.814 v 0.011 m 39.289,198.535 -4.746,3.837 0.674,9.579 h 6.088 v -8.278 l 5.441,-7.043 v -14.672 l -3.404,-0.662 -4.053,17.239 0,0 m -45.369,-19.135 c 0,0 -4.746,1.234 0.662,3.185 5.418,1.93 27.09,-31.271 27.09,-31.271 l -18.291,11.487 -9.472,16.6 h 0.011 m -36.862,122.355 -4.052,-3.858 -8.127,-1.289 -1.343,3.869 -10.836,-1.278 -0.681,-5.135 h -8.123 l -8.798,5.135 h -15.56 l -1.355,-3.856 -25.041,-2.59 -4.063,3.867 -10.138,-2.556 -1.359,-9.016 -4.735,-0.661 -5.418,9.677 -18.273,-0.65 c 3.272,1.538 30.551,17.824 72.403,21.214 55.5,4.487 81.896,-8.991 81.896,-8.991 l -2.025,-1.951 -24.371,-1.918 v -0.013 l -10e-4,0 z" ++ transform="matrix(1.1261275,0,0,1.1261275,-123.16579,191.65755)" ++ clip-path="url(#SVGID_5_-0)" ++ id="path3315-4" ++ style="fill:#000000" /> ++ <path ++ d="m 200.897,116.781 c -1.04,0 -2.184,0.428 -3.348,1.089 2.741,-0.802 4.03,-1.089 3.348,-1.089 m 67.869,13.235 0.677,-9.925 -10.473,0.655 1.382,9.27 h 8.414 M 150.528,301.594 c -2.113,-1.988 -0.699,-10.608 -0.699,-10.608 0,0 -31.488,-16.545 -65.767,-26.493 -4.227,-1.225 -2.091,-9.932 2.091,-13.23 l -1.387,-9.297 c -0.693,-4.622 7.005,-27.148 14.698,-29.12 7.699,-2 -0.705,13.235 -0.705,13.235 l -7.688,4.637 c 0,0 9.092,10.592 11.199,10.592 2.092,0 5.591,-5.31 5.591,-5.31 l -9.79,-6.604 9.091,-3.988 0.574,-3.489 1.528,-0.487 15.062,-22.809 c 10.407,-4.258 23.199,-9.535 24.824,-10.31 2.806,-1.316 22.387,-12.569 25.887,-15.213 3.51,-2.666 11.187,-1.988 13.982,-1.988 2.812,0 7,-1.333 7.698,-8.631 0.699,-7.281 3.5,-8.608 5.607,-6.615 2.102,1.967 -2.107,5.293 2.796,6.615 4.893,1.333 9.092,4.644 12.597,1.333 2.557,-2.422 -0.867,-5.186 -3.17,-7.271 h 38.846 l 4.205,-11.947 -9.097,-1.321 -33.596,-3.305 v -3.982 l -2.676,0.456 c 3.635,-19.987 25.236,-16.692 8.972,-28.259 -0.986,-0.71 ++-15.213,22.418 -18.837,21.97 -6.562,-0.868 -15.029,-0.938 -16.833,1.197 -2.396,2.817 5.363,-9.688 12.038,-13.479 -7.964,2.346 -22.234,-4.903 -47.964,13.273 -8.701,6.15 -30.541,31.066 -39.528,40.645 -37.968,44.826 -41.029,83.175 -41.029,84.876 0,3.31 8.04,5.179 8.733,9.167 0.704,3.95 -13.29,17.218 -13.29,23.839 0,3.044 -7.005,36.114 8.381,77.496 13.647,39.257 40.054,73.879 43.445,76.046 l 9.725,-5.158 c 0,0 -16.091,-28.486 -16.784,-31.141 -0.693,-2.647 18.188,-41.068 27.295,-39.727 9.091,1.29 6.994,3.968 12.591,0.65 5.602,-3.292 9.096,-30.479 15.392,-33.113 6.301,-2.663 13.29,-5.969 12.596,-12.592 -0.729,-6.644 -24.513,-18.557 -26.604,-20.54 m 151.819,-194.755 -18.888,-6.626 3.5,10.608 15.388,-3.982 m -70.666,24.511 c 2.107,0 44.074,-27.81 39.881,-28.481 -4.188,-0.655 -4.887,0 -16.102,-1.327 -11.177,-1.322 ++-23.084,15.901 -25.875,18.562 -2.802,2.647 -1.859,11.246 2.096,11.246 m 192.63,199.731 5.42,-7.031 -5.42,-1.905 -4.062,5.104 -4.734,7.02 4.05,1.909 4.746,-5.097 m 23.687,22.995 -1.356,-10.228 h -8.785 l -0.682,7.659 -8.139,-1.269 -2.016,-8.3 -4.063,-2.559 -4.745,5.745 -4.735,-1.268 -1.366,4.452 5.428,1.301 v 41.479 l 19.159,4.615 c -0.445,0.759 -0.771,1.41 -0.879,1.756 -1.364,4.477 5.406,6.415 10.144,4.477 1.753,-0.705 12.797,-4.952 16.295,-13.283 4.879,-11.605 8.03,-28.314 8.877,-33.722 l -2.146,-4.693 -13.545,5.117 -7.466,-1.28 h 0.02 m -6.783,-169.88 c -30.978,-46.973 -105.41,-77.669 -105.41,-77.669 l -19.166,10.039 -2.722,-4.453 -6.761,-2.563 ++ v 5.753 l 6.091,5.115 -4.053,1.912 -15.582,1.268 -35.211,19.158 3.381,15.322 -4.075,1.284 -2.015,3.186 11.512,17.223 0.671,5.759 -9.476,1.913 v 11.486 l -5.412,1.273 0.677,8.944 -46.058,31.938 1.355,17.852 c 3.38,4.475 29.798,31.293 29.798,31.293 0,0 30.464,1.263 37.237,-2.551 6.777,-3.831 2.025,3.831 4.068,5.748 2.016,1.923 2.709,15.322 4.724,16.601 2.038,1.271 0,8.923 2.709,11.502 2.71,2.534 2.71,33.19 2.71,33.19 0,0 16.252,27.445 16.252,34.468 0,7.021 -0.683,6.382 12.189,5.742 12.863,-0.628 15.571,-5.742 18.281,-7.649 2.709,-1.908 2.709,-6.383 5.417,-10.229 2.731,-3.839 7.455,-18.499 13.556,-23.602 6.078,-5.126 22.343,-8.96 23.686,-17.879 1.356,-8.949 7.443,-15.972 7.443,-15.972 l 29.278,-30.968 -0.823,4.161 -0.671,15.95 8.81,-3.187 -0.672,-17.25 -3.154,-3.343 0.446,-0.487 c 0,0 -2.037,-3.831 -4.734,-3.831 ++ -2.712,0 -18.974,3.831 -21.672,3.196 -2.711,-0.644 -14.228,-31.292 -16.253,-32.549 -2.039,-1.279 -14.889,-22.359 -14.889,-22.359 0,0 29.776,35.751 34.521,49.795 2.751,8.18 13.089,0.563 21.497,-7.97 l 2.222,5.429 5.407,-1.29 -0.671,-6.381 h 6.088 v 9.573 l -2.024,5.115 -0.694,8.29 5.429,5.119 2.71,-4.459 8.776,-8.311 10.162,-5.108 2.721,5.108 1.354,7.027 -2.709,7.655 -5.417,4.47 -2.708,11.491 v 5.743 l -6.091,-3.836 -0.671,-12.118 -8.8,0.648 -4.051,10.842 6.089,8.948 14.216,1.92 11.507,-10.868 1.354,-21.044 5.127,-6.766 c 3.337,8.576 5.722,17.548 5.722,25.914 0,9.167 7.259,-4.628 3.707,-32.583 0.003,-0.001 -5.567,-66.402 -36.255,-97.088 ++ z m -135.423,27.505 -36.561,-1.294 15.56,-12.759 h 8.127 l 12.874,8.928 v 5.125 m 44.706,-4.469 v 5.743 h -15.569 l 1.354,3.841 -9.493,1.289 -0.66,3.169 -6.772,-1.256 -12.2,-2.568 2.038,-3.181 2.037,-3.846 6.771,-7.022 2.72,5.115 10.142,-0.646 5.418,-5.754 20.999,3.836 -6.785,1.28 m 1.345,-8.305 -8.128,1.273 -1.343,-5.753 10.143,-1.268 1.366,-5.743 7.454,7.666 -9.492,3.814 v 0.011 m 39.289,198.535 -4.746,3.837 0.674,9.579 h 6.088 v -8.278 l 5.441,-7.043 v -14.672 l -3.404,-0.662 -4.053,17.239 0,0 m -45.369,-19.135 c 0,0 -4.746,1.234 0.662,3.185 5.418,1.93 27.09,-31.271 27.09,-31.271 l -18.291,11.487 -9.472,16.6 h 0.011 m ++ -36.862,122.355 -4.052,-3.858 -8.127,-1.289 -1.343,3.869 -10.836,-1.278 -0.681,-5.135 h -8.123 l -8.798,5.135 h -15.56 l -1.355,-3.856 -25.041,-2.59 -4.063,3.867 -10.138,-2.556 -1.359,-9.016 -4.735,-0.661 -5.418,9.677 -18.273,-0.65 c 3.272,1.538 30.551,17.824 72.403,21.214 55.5,4.487 81.896,-8.991 81.896,-8.991 l -2.025,-1.951 -24.371,-1.918 v -0.013 l -10e-4,0 z" ++ transform="matrix(1.1261275,0,0,1.1261275,-123.16579,191.65755)" ++ clip-path="url(#SVGID_5_-8)" ++ id="path3315-0" ++ style="fill:#000000" /> ++ <path ++ d="m 200.897,116.781 c -1.04,0 -2.184,0.428 -3.348,1.089 2.741,-0.802 4.03,-1.089 3.348,-1.089 m 67.869,13.235 0.677,-9.925 -10.473,0.655 1.382,9.27 h 8.414 M 150.528,301.594 c -2.113,-1.988 -0.699,-10.608 -0.699,-10.608 0,0 -31.488,-16.545 -65.767,-26.493 -4.227,-1.225 -2.091,-9.932 2.091,-13.23 l -1.387,-9.297 c -0.693,-4.622 7.005,-27.148 14.698,-29.12 7.699,-2 -0.705,13.235 -0.705,13.235 l -7.688,4.637 c 0,0 9.092,10.592 11.199,10.592 2.092,0 5.591,-5.31 5.591,-5.31 l -9.79,-6.604 9.091,-3.988 0.574,-3.489 1.528,-0.487 15.062,-22.809 c 10.407,-4.258 23.199,-9.535 24.824,-10.31 2.806,-1.316 22.387,-12.569 25.887,-15.213 3.51,-2.666 11.187,-1.988 13.982,-1.988 2.812,0 7,-1.333 7.698,-8.631 0.699,-7.281 3.5,-8.608 5.607,-6.615 2.102,1.967 -2.107,5.293 2.796,6.615 4.893,1.333 9.092,4.644 12.597,1.333 2.557,-2.422 -0.867,-5.186 -3.17,-7.271 h 38.846 l 4.205,-11.947 -9.097,-1.321 -33.596,-3.305 v -3.982 l -2.676,0.456 c 3.635,-19.987 25.236,-16.692 8.972,-28.259 ++ -0.986,-0.71 -15.213,22.418 -18.837,21.97 -6.562,-0.868 -15.029,-0.938 -16.833,1.197 -2.396,2.817 5.363,-9.688 12.038,-13.479 -7.964,2.346 -22.234,-4.903 -47.964,13.273 -8.701,6.15 -30.541,31.066 -39.528,40.645 -37.968,44.826 -41.029,83.175 -41.029,84.876 0,3.31 8.04,5.179 8.733,9.167 0.704,3.95 -13.29,17.218 -13.29,23.839 0,3.044 -7.005,36.114 8.381,77.496 13.647,39.257 40.054,73.879 43.445,76.046 l 9.725,-5.158 c 0,0 -16.091,-28.486 -16.784,-31.141 -0.693,-2.647 18.188,-41.068 27.295,-39.727 9.091,1.29 6.994,3.968 12.591,0.65 5.602,-3.292 9.096,-30.479 15.392,-33.113 6.301,-2.663 13.29,-5.969 12.596,-12.592 -0.729,-6.644 -24.513,-18.557 -26.604,-20.54 m 151.819,-194.755 -18.888,-6.626 3.5,10.608 15.388,-3.982 m -70.666,24.511 c 2.107,0 44.074,-27.81 39.881,-28.481 -4.188,-0.655 -4.887,0 -16.102,-1.327 -11.177,-1.322 -23.084,15.901 -25.875,18.562 -2.802,2.647 -1.859,11.246 2.096,11.246 m 192.63,199.731 5.42,-7.031 -5.42,-1.905 -4.062,5.104 -4.734,7.02 4.05,1.909 4.746,-5.097 ++ m 23.687,22.995 -1.356,-10.228 h -8.785 l -0.682,7.659 -8.139,-1.269 -2.016,-8.3 -4.063,-2.559 -4.745,5.745 -4.735,-1.268 -1.366,4.452 5.428,1.301 v 41.479 l 19.159,4.615 c -0.445,0.759 -0.771,1.41 -0.879,1.756 -1.364,4.477 5.406,6.415 10.144,4.477 1.753,-0.705 12.797,-4.952 16.295,-13.283 4.879,-11.605 8.03,-28.314 8.877,-33.722 l -2.146,-4.693 -13.545,5.117 -7.466,-1.28 h 0.02 m -6.783,-169.88 c -30.978,-46.973 -105.41,-77.669 -105.41,-77.669 l -19.166,10.039 -2.722,-4.453 -6.761,-2.563 v 5.753 l 6.091,5.115 -4.053,1.912 -15.582,1.268 -35.211,19.158 3.381,15.322 -4.075,1.284 -2.015,3.186 11.512,17.223 0.671,5.759 -9.476,1.913 v 11.486 l -5.412,1.273 0.677,8.944 -46.058,31.938 1.355,17.852 c 3.38,4.475 29.798,31.293 29.798,31.293 0,0 30.464,1.263 37.237,-2.551 6.777,-3.831 2.025,3.831 4.068,5.748 ++ 2.016,1.923 2.709,15.322 4.724,16.601 2.038,1.271 0,8.923 2.709,11.502 2.71,2.534 2.71,33.19 2.71,33.19 0,0 16.252,27.445 16.252,34.468 0,7.021 -0.683,6.382 12.189,5.742 12.863,-0.628 15.571,-5.742 18.281,-7.649 2.709,-1.908 2.709,-6.383 5.417,-10.229 2.731,-3.839 7.455,-18.499 13.556,-23.602 6.078,-5.126 22.343,-8.96 23.686,-17.879 1.356,-8.949 7.443,-15.972 7.443,-15.972 l 29.278,-30.968 -0.823,4.161 -0.671,15.95 8.81,-3.187 -0.672,-17.25 -3.154,-3.343 0.446,-0.487 c 0,0 -2.037,-3.831 -4.734,-3.831 -2.712,0 -18.974,3.831 -21.672,3.196 -2.711,-0.644 -14.228,-31.292 -16.253,-32.549 -2.039,-1.279 -14.889,-22.359 -14.889,-22.359 0,0 29.776,35.751 34.521,49.795 2.751,8.18 13.089,0.563 21.497,-7.97 l 2.222,5.429 5.407,-1.29 -0.671,-6.381 h 6.088 v 9.573 l -2.024,5.115 -0.694,8.29 5.429,5.119 2.71,-4.459 ++ 8.776,-8.311 10.162,-5.108 2.721,5.108 1.354,7.027 -2.709,7.655 -5.417,4.47 -2.708,11.491 v 5.743 l -6.091,-3.836 -0.671,-12.118 -8.8,0.648 -4.051,10.842 6.089,8.948 14.216,1.92 11.507,-10.868 1.354,-21.044 5.127,-6.766 c 3.337,8.576 5.722,17.548 5.722,25.914 0,9.167 7.259,-4.628 3.707,-32.583 0.003,-0.001 -5.567,-66.402 -36.255,-97.088 z m -135.423,27.505 -36.561,-1.294 15.56,-12.759 h 8.127 l 12.874,8.928 v 5.125 m 44.706,-4.469 v 5.743 h -15.569 l 1.354,3.841 -9.493,1.289 -0.66,3.169 -6.772,-1.256 -12.2,-2.568 2.038,-3.181 2.037,-3.846 6.771,-7.022 2.72,5.115 10.142,-0.646 5.418,-5.754 20.999,3.836 -6.785,1.28 m 1.345,-8.305 -8.128,1.273 -1.343,-5.753 10.143,-1.268 1.366,-5.743 7.454,7.666 -9.492,3.814 v 0.011 m 39.289,198.535 -4.746,3.837 0.674,9.579 h 6.088 v -8.278 l 5.441,-7.043 v -14.672 ++ l -3.404,-0.662 -4.053,17.239 0,0 m -45.369,-19.135 c 0,0 -4.746,1.234 0.662,3.185 5.418,1.93 27.09,-31.271 27.09,-31.271 l -18.291,11.487 -9.472,16.6 h 0.011 m -36.862,122.355 -4.052,-3.858 -8.127,-1.289 -1.343,3.869 -10.836,-1.278 -0.681,-5.135 h -8.123 l -8.798,5.135 h -15.56 l -1.355,-3.856 -25.041,-2.59 -4.063,3.867 -10.138,-2.556 -1.359,-9.016 -4.735,-0.661 -5.418,9.677 -18.273,-0.65 c 3.272,1.538 30.551,17.824 72.403,21.214 55.5,4.487 81.896,-8.991 81.896,-8.991 l -2.025,-1.951 -24.371,-1.918 v -0.013 l -10e-4,0 z" ++ transform="matrix(1.1261275,0,0,1.1261275,-104.21727,237.13399)" ++ clip-path="url(#SVGID_5_-06)" ++ id="path3315-3" ++ style="fill:#ff00ff" /> ++ <radialGradient ++ cx="24.223101" ++ cy="24.3286" ++ r="20.4727" ++ id="SVGID_1_" ++ gradientUnits="userSpaceOnUse" ++ gradientTransform="matrix(7.6562887,0,0,7.6562887,-72.160001,452.7993)"> ++ <stop ++ id="stop3491" ++ style="stop-color:#000000;stop-opacity:0.40000001" ++ offset="0.94760001" /> ++ <stop ++ id="stop3493" ++ style="stop-color:#000000;stop-opacity:0" ++ offset="1" /> ++ </radialGradient> ++ <linearGradient ++ x1="625.57001" ++ y1="1036.85" ++ x2="755.56299" ++ y2="1036.85" ++ id="SVGID_2_" ++ gradientUnits="userSpaceOnUse" ++ gradientTransform="matrix(2.4117309,0,0,2.4117309,-1392.3581,-2431.4769)"> ++ <stop ++ id="stop3498" ++ style="stop-color:#0053bd;stop-opacity:1" ++ offset="0" /> ++ <stop ++ id="stop3500" ++ style="stop-color:#0032a4;stop-opacity:1" ++ offset="0.99440002" /> ++ </linearGradient> ++ <g ++ transform="matrix(1.9140664,0,0,1.9140664,-1228.1565,-289.91756)" ++ id="g3606" ++ style="fill:#ffffff;fill-opacity:1;stroke:none"> ++ <path ++ d="m 798.36657,387.8025 c -41.59662,0 -80.86439,16.33954 -110.59375,46 -29.75234,29.67577 -46.15625,68.91869 -46.15625,110.5 0,86.562 70.31816,156.96875 156.75,156.96875 86.4395,0 156.78125,-70.40675 156.78125,-156.96875 0,-86.28638 -70.34175,-156.5 -156.78125,-156.5 z m 0,6.46875 c 82.87167,0 150.3125,67.31271 150.3125,150.03125 0,83.00182 -67.44083,150.53125 -150.3125,150.53125 -82.86401,0 -150.28125,-67.53708 -150.28125,-150.53125 0,-39.84333 15.72267,-77.44782 44.25,-105.90625 28.51202,-28.44311 66.16496,-44.125 106.03125,-44.125 z" ++ id="path3502" ++ style="fill:#ffffff;fill-opacity:1;stroke:none" /> ++ <path ++ d="m 17.279,6.581 c -0.094,0 -0.197,0.039 -0.302,0.098 0.247,-0.073 0.363,-0.098 0.302,-0.098 m 6.117,1.192 0.061,-0.895 -0.944,0.059 0.125,0.835 h 0.758 M 12.739,23.237 c -0.19,-0.179 -0.063,-0.956 -0.063,-0.956 0,0 -2.838,-1.491 -5.927,-2.388 -0.381,-0.11 -0.188,-0.895 0.188,-1.192 L 6.812,17.863 c -0.063,-0.417 0.631,-2.447 1.325,-2.625 0.694,-0.18 -0.063,1.193 -0.063,1.193 l -0.693,0.418 c 0,0 0.819,0.955 1.009,0.955 0.188,0 0.504,-0.479 0.504,-0.479 L 8.012,16.73 8.831,16.371 8.883,16.057 9.021,16.013 10.378,13.957 c 0.938,-0.384 2.091,-0.859 2.237,-0.929 0.253,-0.119 2.018,-1.133 2.333,-1.371 0.316,-0.24 1.008,-0.179 1.26,-0.179 0.253,0 0.631,-0.12 0.694,-0.778 0.063,-0.656 0.315,-0.776 0.505,-0.596 0.189,0.177 -0.19,0.477 0.252,0.596 0.441,0.12 0.819,0.418 1.135,0.12 0.23,-0.218 -0.078,-0.467 -0.286,-0.655 h 3.501 L 22.388,9.088 21.568,8.969 18.542,8.67 V 8.312 L 18.3,8.353 C 18.628,6.552 20.574,6.849 19.109,5.806 19.02,5.742 ++17.738,7.827 17.411,7.786 16.82,7.708 16.057,7.702 15.894,7.894 15.678,8.148 16.377,7.021 16.979,6.679 16.261,6.89 14.975,6.237 12.656,7.875 c -0.784,0.554 -2.752,2.8 -3.563,3.663 -3.422,4.04 -3.698,7.496 -3.698,7.649 0,0.298 0.725,0.467 0.787,0.826 0.063,0.356 -1.198,1.552 -1.198,2.148 0,0.274 -0.631,3.255 0.755,6.984 1.23,3.538 3.61,6.658 3.916,6.854 l 0.876,-0.465 c 0,0 -1.45,-2.567 -1.513,-2.807 -0.063,-0.238 1.639,-3.701 2.46,-3.58 0.819,0.116 0.63,0.357 1.135,0.059 0.505,-0.297 0.82,-2.747 1.387,-2.984 0.568,-0.24 1.198,-0.538 1.135,-1.135 -0.064,-0.598 -2.207,-1.671 -2.396,-1.85 M 26.422,5.685 24.72,5.087 25.035,6.043 26.422,5.685 m -6.369,2.209 c 0.19,0 3.972,-2.506 3.594,-2.567 -0.377,-0.059 -0.44,0 -1.451,-0.12 -1.007,-0.119 -2.081,1.433 -2.332,1.673 -0.252,0.239 -0.167,1.014 0.189,1.014 m 17.361,18.001 0.488,-0.634 -0.488,-0.172 -0.366,0.46 -0.427,0.633 0.365,0.172 0.428,-0.459 m 2.135,2.072 -0.122,-0.922 h -0.792 l -0.062,0.69 -0.733,-0.114 ++ -0.182,-0.748 -0.366,-0.23 -0.428,0.518 -0.427,-0.114 -0.123,0.401 0.489,0.117 v 3.738 l 1.727,0.416 c -0.04,0.068 -0.069,0.127 -0.079,0.158 -0.123,0.403 0.487,0.578 0.914,0.403 0.158,-0.063 1.153,-0.446 1.469,-1.197 0.439,-1.046 0.724,-2.552 0.8,-3.039 l -0.193,-0.423 -1.221,0.461 -0.673,-0.115 h 0.002 M 38.938,12.656 c -2.792,-4.233 -9.5,-7 -9.5,-7 L 27.71,6.561 27.465,6.16 26.856,5.929 v 0.519 l 0.549,0.461 -0.365,0.172 -1.404,0.114 -3.173,1.727 0.305,1.381 -0.367,0.116 -0.182,0.287 1.038,1.552 0.061,0.519 -0.854,0.172 v 1.035 l -0.488,0.115 0.061,0.806 -4.151,2.878 0.122,1.609 c 0.305,0.403 2.686,2.82 2.686,2.82 0,0 2.746,0.114 3.356,-0.23 0.611,-0.345 0.183,0.345 0.367,0.518 0.182,0.173 0.244,1.381 0.426,1.496 0.184,0.115 0,0.804 0.244,1.037 0.244,0.229 0.244,2.991 0.244,2.991 0,0 1.465,2.474 ++ 1.465,3.106 0,0.632 -0.062,0.575 1.099,0.518 1.159,-0.057 1.403,-0.518 1.647,-0.689 0.244,-0.171 0.244,-0.575 0.488,-0.922 0.246,-0.346 0.672,-1.667 1.222,-2.127 0.548,-0.462 2.014,-0.808 2.135,-1.611 0.122,-0.807 0.671,-1.439 0.671,-1.439 l 2.639,-2.791 -0.074,0.375 -0.061,1.438 0.794,-0.287 -0.061,-1.555 -0.284,-0.301 0.04,-0.044 c 0,0 -0.184,-0.345 -0.427,-0.345 -0.244,0 -1.71,0.345 -1.953,0.288 -0.244,-0.058 -1.282,-2.82 -1.465,-2.934 -0.184,-0.115 -1.342,-2.015 -1.342,-2.015 0,0 2.684,3.222 3.111,4.488 0.248,0.737 1.18,0.051 1.938,-0.718 l 0.2,0.489 0.487,-0.116 -0.061,-0.575 h 0.549 v 0.863 l -0.183,0.461 -0.063,0.747 0.489,0.461 0.244,-0.402 0.791,-0.749 0.916,-0.46 0.245,0.46 0.122,0.633 -0.244,0.69 -0.488,0.403 -0.244,1.036 v 0.518 l -0.549,-0.346 -0.061,-1.092 -0.793,0.059 ++ -0.365,0.977 0.549,0.807 1.281,0.173 1.037,-0.979 0.122,-1.896 0.462,-0.61 c 0.301,0.773 0.516,1.582 0.516,2.335 0,0.826 0.654,-0.417 0.334,-2.937 -0.001,-0.003 -0.503,-5.987 -3.268,-8.753 z m -12.206,2.479 -3.295,-0.117 1.402,-1.15 h 0.732 l 1.16,0.805 v 0.462 m 4.031,-0.403 v 0.518 h -1.403 l 0.122,0.346 -0.855,0.116 -0.06,0.286 -0.61,-0.113 -1.1,-0.231 0.184,-0.287 0.184,-0.347 0.61,-0.633 0.245,0.461 0.914,-0.058 0.488,-0.519 1.893,0.346 -0.612,0.115 m 0.121,-0.748 -0.732,0.115 -0.121,-0.519 0.914,-0.114 0.123,-0.518 0.672,0.691 -0.856,0.345 0,0 m 3.541,17.893 -0.428,0.346 0.061,0.863 h 0.549 V 32.34 l 0.49,-0.635 v -1.322 l -0.307,-0.06 -0.365,1.554 0,0 m -4.089,-1.725 c 0,0 -0.428,0.111 0.06,0.287 0.488,0.174 2.441,-2.818 2.441,-2.818 l -1.648,1.035 -0.853,1.496 0,0 M 27.013,41.18 26.648,40.832 ++25.916,40.716 25.795,41.065 24.818,40.95 24.756,40.487 h -0.732 l -0.793,0.463 h -1.402 l -0.122,-0.348 -2.257,-0.233 -0.366,0.349 -0.914,-0.23 -0.123,-0.813 -0.427,-0.06 -0.488,0.872 -1.647,-0.059 c 0.295,0.139 2.753,1.606 6.525,1.912 5.002,0.404 7.381,-0.811 7.381,-0.811 l -0.183,-0.176 -2.195,-0.173 0,0 0,0 z" ++ transform="matrix(7.6562887,0,0,7.6562887,617.77417,363.90588)" ++ clip-path="url(#SVGID_4_)" ++ id="path3530" ++ style="fill:#ffffff;fill-opacity:1;stroke:none" /> ++ </g> ++ <linearGradient ++ x1="690.94098" ++ y1="977.15698" ++ x2="690.94098" ++ y2="1069.14" ++ id="SVGID_7_" ++ gradientUnits="userSpaceOnUse" ++ gradientTransform="matrix(2.4117309,0,0,2.4117309,-1790.3582,-1817.4903)"> ++ <stop ++ id="stop3533" ++ style="stop-color:#ffffff;stop-opacity:1" ++ offset="0" /> ++ <stop ++ id="stop3535" ++ style="stop-color:#94caff;stop-opacity:1" ++ offset="1" /> ++ </linearGradient> ++ <linearGradient ++ x1="25.3057" ++ y1="5.1606002" ++ x2="19.853399" ++ y2="32.2952" ++ id="SVGID_8_" ++ gradientUnits="userSpaceOnUse" ++ gradientTransform="matrix(7.6562887,0,0,7.6562887,-188.32754,493.2054)"> ++ <stop ++ id="stop3540" ++ style="stop-color:#ffffff;stop-opacity:1" ++ offset="0" /> ++ <stop ++ id="stop3542" ++ style="stop-color:#00a100;stop-opacity:1" ++ offset="0.49720001" /> ++ <stop ++ id="stop3544" ++ style="stop-color:#000000;stop-opacity:1" ++ offset="0.99440002" /> ++ </linearGradient> ++ <g ++ transform="translate(501.9182,0)" ++ id="g3844"> ++ <rect ++ width="227.90614" ++ height="227.90614" ++ ry="0" ++ x="-320.85956" ++ y="656.74127" ++ id="rect3805" ++ style="fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:24.57014275;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> ++ <path ++ d="m -214.39085,651.34781 135.802859,-0.90944 0,232.96394 -136.712299,-58.35238 z" ++ id="rect3805-9" ++ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:27.06029701;stroke-miterlimit:4;stroke-opacity:1" /> ++ </g> ++ </g> ++</svg> +diff --git a/extensions/cpsection/Makefile.am b/extensions/cpsection/Makefile.am +index d623380..78d548b 100644 +--- a/extensions/cpsection/Makefile.am ++++ b/extensions/cpsection/Makefile.am +@@ -10,6 +10,7 @@ SUBDIRS = \ + network \ + power \ + updater \ ++ proxy \ + # + + sugardir = $(pkgdatadir)/extensions/cpsection +diff --git a/extensions/cpsection/proxy/Makefile.am b/extensions/cpsection/proxy/Makefile.am +new file mode 100644 +index 0000000..bfb2929 +--- /dev/null ++++ b/extensions/cpsection/proxy/Makefile.am +@@ -0,0 +1,6 @@ ++sugardir = $(pkgdatadir)/extensions/cpsection/proxy ++ ++sugar_PYTHON = \ ++ __init__.py \ ++ model.py \ ++ view.py +diff --git a/extensions/cpsection/proxy/__init__.py b/extensions/cpsection/proxy/__init__.py +new file mode 100644 +index 0000000..399afa4 +--- /dev/null ++++ b/extensions/cpsection/proxy/__init__.py +@@ -0,0 +1,21 @@ ++# Copyright (C) 2011, Aleksey Lim ++# ++# This program is free software: you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation, either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see <http://www.gnu.org/licenses/>. ++ ++from gettext import gettext as _ ++ ++ ++CLASS = 'Proxy' ++ICON = 'module-proxy' ++TITLE = _('Proxy') +diff --git a/extensions/cpsection/proxy/model.py b/extensions/cpsection/proxy/model.py +new file mode 100644 +index 0000000..c88b116 +--- /dev/null ++++ b/extensions/cpsection/proxy/model.py +@@ -0,0 +1,14 @@ ++# Copyright (C) 2011, Aleksey Lim ++# ++# This program is free software: you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation, either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see <http://www.gnu.org/licenses/>. +diff --git a/extensions/cpsection/proxy/view.py b/extensions/cpsection/proxy/view.py +new file mode 100644 +index 0000000..2edc3cd +--- /dev/null ++++ b/extensions/cpsection/proxy/view.py +@@ -0,0 +1,389 @@ ++# Copyright (C) 2011, Aleksey Lim ++# ++# This program is free software: you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation, either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see <http://www.gnu.org/licenses/>. ++ ++import re ++ ++import gtk ++import gconf ++from gettext import gettext as _ ++ ++from sugar.graphics import style ++ ++from jarabe.controlpanel.sectionview import SectionView ++ ++ ++_widget_sensitivies = {} ++_gconf_origin_values = {} ++ ++ICON = 'module-proxy' ++ ++class Proxy(SectionView): ++ ++ def __init__(self, model, alerts): ++ SectionView.__init__(self) ++ self.set_border_width(style.DEFAULT_SPACING * 2) ++ self.set_spacing(style.DEFAULT_SPACING) ++ self.setup() ++ ++ def setup(self): ++ for i in self.get_children(): ++ self.remove(i) ++ # Destroy all widgets and connection to avoid any interfering ++ i.destroy() ++ ++ _widget_sensitivies.clear() ++ ++ workspace = gtk.VBox() ++ workspace.show() ++ ++ scrolled = gtk.ScrolledWindow() ++ scrolled.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) ++ scrolled.add_with_viewport(workspace) ++ scrolled.show() ++ self.add(scrolled) ++ ++ def add_section(section, label_text): ++ separator = gtk.HSeparator() ++ separator.show() ++ workspace.pack_start(separator, expand=False) ++ ++ label = gtk.Label(label_text) ++ label.set_alignment(0, 0) ++ label.show() ++ workspace.pack_start(label, expand=False) ++ ++ section.set_border_width(style.DEFAULT_SPACING * 2) ++ section.show() ++ workspace.pack_start(section, expand=False) ++ ++ add_section(_ProxySection(), ++ _('Configure Proxies to Access the Internet')) ++ add_section(_IgnoreSection(), _('Ignore Host List')) ++ ++ def undo(self): ++ conf = gconf.client_get_default() ++ for key, value in _gconf_origin_values.items(): ++ if value is None: ++ conf.unset(key) ++ else: ++ conf.set(key, value) ++ ++ @property ++ def needs_restart(self): ++ conf = gconf.client_get_default() ++ for key, value in _gconf_origin_values.items(): ++ if value is None and conf.get_without_default(key) is not None or \ ++ value.to_string() != conf.get(key).to_string(): ++ return True ++ else: ++ return False ++ ++ @needs_restart.setter ++ def needs_restart(self, value): ++ # needs_restart is fully calculated ++ pass ++ ++ ++class _ProxySection(gtk.VBox): ++ ++ def __init__(self): ++ gtk.VBox.__init__(self) ++ self._common_hosts = {} ++ self._common_ports = {} ++ ++ group = gtk.RadioButton() ++ group.props.label = _('Direct internet connection') ++ group.show() ++ self.pack_start(group, expand=False) ++ _register_selector_key('/system/proxy/mode', group, 'none') ++ _register_bool_key('/system/http_proxy/use_http_proxy', group, True) ++ ++ manual_proxy = gtk.RadioButton(group) ++ manual_proxy.props.label = _('Manual proxy configuration') ++ manual_proxy.show() ++ self.pack_start(manual_proxy, expand=False) ++ _register_selector_key('/system/proxy/mode', manual_proxy, 'manual') ++ ++ widgets = self._add_protos() ++ manual_proxy.connect('toggled', _set_sensitive, False, widgets) ++ _set_sensitive(manual_proxy, False, widgets) ++ ++ auto_proxy = gtk.RadioButton(group) ++ auto_proxy.props.label = _('Automatic proxy configuration') ++ auto_proxy.show() ++ self.pack_start(auto_proxy, expand=False) ++ _register_selector_key('/system/proxy/mode', auto_proxy, 'auto') ++ ++ grid = self._sub_section_new() ++ grid.attach_label(_('Autofiguration URL:'), 0, 1, 0, 1) ++ entry = grid.attach_entry(1, 2, 0, 1) ++ _register_string_key('/system/proxy/autoconfig_url', entry) ++ auto_proxy.connect('toggled', _set_sensitive, False, [grid]) ++ _set_sensitive(auto_proxy, False, [grid]) ++ ++ def _add_protos(self): ++ commons = gtk.CheckButton() ++ commons.props.label = _('Use the same proxy for all protocols') ++ commons.show() ++ self.pack_start(commons) ++ _register_bool_key('/system/http_proxy/use_same_proxy', commons) ++ ++ grid = self._sub_section_new() ++ ++ def add_proto(row, is_common, label_text, host_key, port_key): ++ host_label = grid.attach_label(label_text, 0, 1, row, row + 1) ++ host = grid.attach_entry(1, 2, row, row + 1) ++ ++ port_label = grid.attach_label(_('Port:'), 2, 3, row, row + 1) ++ port_value = gtk.Adjustment(8080, 0, 65536, 1, 10) ++ port = gtk.SpinButton() ++ port.configure(port_value, .1, 0) ++ port.show() ++ grid.attach(port, 3, 4, row, row + 1, ++ gtk.SHRINK | gtk.FILL, gtk.SHRINK) ++ ++ if is_common: ++ _widget_sensitivies.update([ ++ (host_label, None), (host, None), ++ (port_label, None), (port, None)]) ++ self._common_hosts[host] = host.props.buffer ++ self._common_ports[port] = port.props.adjustment ++ ++ _register_string_key(host_key, host) ++ _register_int_key(port_key, port) ++ ++ return host, port ++ ++ http_host, http_port = add_proto(1, False, _('HTTP proxy:'), ++ '/system/http_proxy/host', '/system/http_proxy/port') ++ ++ auth_widget = _AuthWidget() ++ auth_widget.show() ++ grid.attach(auth_widget, 1, 2, 2, 3, gtk.SHRINK | gtk.FILL, gtk.SHRINK) ++ ++ add_proto(3, True, _('Secure HTTP proxy:'), ++ '/system/proxy/secure_host', '/system/proxy/secure_port') ++ add_proto(4, True, _('FTP proxy:'), ++ '/system/proxy/ftp_host', '/system/proxy/ftp_port') ++ add_proto(5, True, _('Socks proxy:'), ++ '/system/proxy/socks_host', '/system/proxy/socks_port') ++ ++ def commons_toggled_cb(sender): ++ for widget in _widget_sensitivies.keys(): ++ _widget_sensitivies[widget] = not sender.props.active ++ _set_sensitive(sender, True, _widget_sensitivies.keys()) ++ ++ for widget, orig_buffer in self._common_hosts.items(): ++ widget.props.buffer = http_host.props.buffer if \ ++ sender.props.active else orig_buffer ++ ++ for widget, orig_adjustment in self._common_ports.items(): ++ widget.props.adjustment = http_port.props.adjustment if \ ++ sender.props.active else orig_adjustment ++ widget.props.value = widget.props.adjustment.value ++ ++ commons.connect('toggled', commons_toggled_cb) ++ commons_toggled_cb(commons) ++ ++ return [commons, grid] ++ ++ def _sub_section_new(self): ++ grid = _Grid(1, 1, False) ++ grid.props.column_spacing = style.DEFAULT_SPACING ++ grid.props.row_spacing = style.DEFAULT_SPACING ++ grid.show() ++ ++ alignment = gtk.Alignment(0, 0, 1, 1) ++ alignment.props.left_padding = style.STANDARD_ICON_SIZE ++ alignment.props.right_padding = style.GRID_CELL_SIZE ++ alignment.add(grid) ++ alignment.show() ++ self.pack_start(alignment) ++ ++ return grid ++ ++ ++class _IgnoreSection(gtk.VBox): ++ ++ def __init__(self): ++ gtk.VBox.__init__(self) ++ ++ entry = gtk.Entry() ++ entry.show() ++ self.pack_start(entry, expand=False) ++ _register_list_key('/system/http_proxy/ignore_hosts', entry) ++ ++ ++class _AuthWidget(gtk.VBox): ++ ++ def __init__(self): ++ gtk.VBox.__init__(self) ++ ++ enable = gtk.CheckButton() ++ enable.props.label = _('Use authentication') ++ enable.show() ++ self.pack_start(enable, expand=False) ++ _register_bool_key('/system/http_proxy/use_authentication', enable) ++ ++ grid = _Grid(2, 2, False) ++ grid.props.column_spacing = style.DEFAULT_SPACING ++ grid.props.row_spacing = style.DEFAULT_SPACING ++ self.pack_start(grid) ++ ++ grid.attach_label(_('Username:'), 0, 1, 0, 1) ++ entry = grid.attach_entry(1, 2, 0, 1) ++ _register_string_key('/system/http_proxy/authentication_user', entry) ++ ++ grid.attach_label(_('Password:'), 0, 1, 1, 2) ++ entry = grid.attach_entry(1, 2, 1, 2) ++ entry.props.visibility = False ++ _register_string_key( ++ '/system/http_proxy/authentication_password', entry) ++ ++ enable.connect('toggled', lambda sender: ++ grid.show() if sender.props.active else grid.hide()) ++ if enable.props.active: ++ grid.show() ++ ++ ++class _Grid(gtk.Table): ++ ++ def attach_label(self, label, left_attach, right_attach, ++ top_attach, bottom_attach): ++ widget = gtk.Label(label) ++ widget.set_alignment(0, 0) ++ self.attach(widget, left_attach, right_attach, ++ top_attach, bottom_attach, gtk.SHRINK | gtk.FILL, gtk.SHRINK) ++ widget.show() ++ return widget ++ ++ def attach_entry(self, left_attach, right_attach, ++ top_attach, bottom_attach): ++ widget = gtk.Entry() ++ self.attach(widget, left_attach, right_attach, ++ top_attach, bottom_attach, gtk.EXPAND | gtk.FILL, gtk.SHRINK) ++ widget.show() ++ return widget ++ ++ ++def _set_sensitive(sender, reverse, widgets): ++ is_sensitive = sender.props.active ++ if reverse: ++ is_sensitive = not is_sensitive ++ ++ for i in widgets: ++ if isinstance(i, gtk.Container): ++ _set_sensitive(sender, reverse, i.get_children()) ++ i.props.sensitive = is_sensitive and _widget_sensitivies.get(i, True) ++ ++ ++def _register_bool_key(key, widget, reverse=False): ++ ++ def set_cb(widget, x, reverse): ++ value = x.get_bool() ++ if reverse: ++ value = not value ++ widget.props.active = value ++ ++ def get_cb(widget, reverse): ++ x = gconf.Value(gconf.VALUE_BOOL) ++ value = widget.props.active ++ if reverse: ++ value = not value ++ x.set_bool(value) ++ return x ++ ++ _register_key(key, widget, 'toggled', set_cb, get_cb, reverse) ++ ++ ++def _register_string_key(key, widget): ++ ++ def set_cb(widget, x): ++ widget.props.text = x.get_string() ++ ++ def get_cb(widget): ++ x = gconf.Value(gconf.VALUE_STRING) ++ x.set_string(widget.props.text) ++ return x ++ ++ _register_key(key, widget, 'changed', set_cb, get_cb) ++ ++ ++def _register_int_key(key, widget): ++ ++ def set_cb(widget, x): ++ widget.props.value = x.get_int() ++ ++ def get_cb(widget): ++ x = gconf.Value(gconf.VALUE_INT) ++ x.set_int(int(widget.props.value)) ++ return x ++ ++ _register_key(key, widget.props.adjustment, 'value_changed', ++ set_cb, get_cb) ++ ++ ++def _register_selector_key(key, widget, value): ++ ++ def set_cb(widget, x, value): ++ widget.props.active = x.get_string() == value ++ ++ def get_cb(widget, value): ++ if not widget.props.active: ++ return None ++ x = gconf.Value(gconf.VALUE_STRING) ++ x.set_string(value) ++ return x ++ ++ _register_key(key, widget, 'toggled', set_cb, get_cb, value) ++ ++ ++def _register_list_key(key, widget): ++ ++ def set_cb(widget, x): ++ hosts = [i.get_string() for i in x.get_list()] ++ widget.props.text = ', '.join(hosts) ++ ++ def get_cb(widget): ++ hosts = [] ++ for i in re.split('[\s,;:]+', widget.props.text or ''): ++ if not i.strip(): ++ continue ++ value = gconf.Value(gconf.VALUE_STRING) ++ value.set_string(i.strip()) ++ hosts.append(value) ++ x = gconf.Value(gconf.VALUE_LIST) ++ x.set_list_type(gconf.VALUE_STRING) ++ x.set_list(hosts) ++ return x ++ ++ _register_key(key, widget, 'changed', set_cb, get_cb) ++ ++ ++def _register_key(key, widget, signal, set_cb, get_cb, *args): ++ conf = gconf.client_get_default() ++ value = conf.get(key) ++ if value is not None: ++ set_cb(widget, value, *args) ++ ++ _gconf_origin_values[key] = value ++ ++ def signal_cb(sender, key, widget, get_cb, *args): ++ value = get_cb(widget, *args) ++ if value is not None: ++ conf = gconf.client_get_default() ++ conf.set(key, value) ++ ++ widget.connect(signal, signal_cb, key, widget, get_cb, *args) +-- +1.7.6 + |