summaryrefslogtreecommitdiff
path: root/capplets/network
diff options
context:
space:
mode:
Diffstat (limited to 'capplets/network')
-rw-r--r--capplets/network/Makefile.am50
-rw-r--r--capplets/network/icons/16x16/mate-network-properties.pngbin0 -> 824 bytes
-rw-r--r--capplets/network/icons/22x22/mate-network-properties.pngbin0 -> 1081 bytes
-rw-r--r--capplets/network/icons/24x24/mate-network-properties.pngbin0 -> 1081 bytes
-rw-r--r--capplets/network/icons/32x32/mate-network-properties.pngbin0 -> 1855 bytes
-rw-r--r--capplets/network/icons/48x48/mate-network-properties.pngbin0 -> 3191 bytes
-rw-r--r--capplets/network/icons/scalable/mate-network-properties.svg628
-rw-r--r--capplets/network/mate-network-properties.c1397
-rw-r--r--capplets/network/mate-network-properties.desktop.in.in14
-rw-r--r--capplets/network/mate-network-properties.ui1056
10 files changed, 3145 insertions, 0 deletions
diff --git a/capplets/network/Makefile.am b/capplets/network/Makefile.am
new file mode 100644
index 00000000..823dfc48
--- /dev/null
+++ b/capplets/network/Makefile.am
@@ -0,0 +1,50 @@
+# This is used in MATECC_CAPPLETS_CFLAGS
+cappletname = network
+
+bin_PROGRAMS = mate-network-properties
+
+mate_network_properties_SOURCES = mate-network-properties.c
+mate_network_properties_LDADD = $(MATECC_CAPPLETS_LIBS)
+
+@INTLTOOL_DESKTOP_RULE@
+
+uidir = $(pkgdatadir)/ui
+dist_ui_DATA = mate-network-properties.ui
+
+icons16dir = $(datadir)/icons/hicolor/16x16/apps
+dist_icons16_DATA = icons/16x16/mate-network-properties.png
+icons22dir = $(datadir)/icons/hicolor/22x22/apps
+dist_icons22_DATA = icons/22x22/mate-network-properties.png
+icons24dir = $(datadir)/icons/hicolor/24x24/apps
+dist_icons24_DATA = icons/24x24/mate-network-properties.png
+icons32dir = $(datadir)/icons/hicolor/32x32/apps
+dist_icons32_DATA = icons/32x32/mate-network-properties.png
+icons48dir = $(datadir)/icons/hicolor/48x48/apps
+dist_icons48_DATA = icons/48x48/mate-network-properties.png
+iconssvgdir = $(datadir)/icons/hicolor/scalable/apps
+dist_iconssvg_DATA = icons/scalable/mate-network-properties.svg
+
+desktopdir = $(datadir)/applications
+desktop_in_files = mate-network-properties.desktop.in
+desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
+
+INCLUDES = \
+ $(MATECC_CAPPLETS_CFLAGS) \
+ -DMATELOCALEDIR="\"$(datadir)/locale\"" \
+ -DMATECC_UI_DIR="\"$(uidir)\""
+
+gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/hicolor
+uninstall-hook: update-icon-cache
+install-data-hook: update-icon-cache
+update-icon-cache:
+ @-if test -z "$(DESTDIR)"; then \
+ echo "Updating Gtk icon cache."; \
+ $(gtk_update_icon_cache); \
+ else \
+ echo "*** Icon cache not updated. After install, run this:"; \
+ echo "*** $(gtk_update_icon_cache)"; \
+ fi
+
+CLEANFILES = $(MATECC_CAPPLETS_CLEANFILES) $(desktop_in_files) $(desktop_DATA)
+
+-include $(top_srcdir)/git.mk
diff --git a/capplets/network/icons/16x16/mate-network-properties.png b/capplets/network/icons/16x16/mate-network-properties.png
new file mode 100644
index 00000000..ebacb983
--- /dev/null
+++ b/capplets/network/icons/16x16/mate-network-properties.png
Binary files differ
diff --git a/capplets/network/icons/22x22/mate-network-properties.png b/capplets/network/icons/22x22/mate-network-properties.png
new file mode 100644
index 00000000..a5fb9e01
--- /dev/null
+++ b/capplets/network/icons/22x22/mate-network-properties.png
Binary files differ
diff --git a/capplets/network/icons/24x24/mate-network-properties.png b/capplets/network/icons/24x24/mate-network-properties.png
new file mode 100644
index 00000000..e743c831
--- /dev/null
+++ b/capplets/network/icons/24x24/mate-network-properties.png
Binary files differ
diff --git a/capplets/network/icons/32x32/mate-network-properties.png b/capplets/network/icons/32x32/mate-network-properties.png
new file mode 100644
index 00000000..826d99d8
--- /dev/null
+++ b/capplets/network/icons/32x32/mate-network-properties.png
Binary files differ
diff --git a/capplets/network/icons/48x48/mate-network-properties.png b/capplets/network/icons/48x48/mate-network-properties.png
new file mode 100644
index 00000000..e3a4ce28
--- /dev/null
+++ b/capplets/network/icons/48x48/mate-network-properties.png
Binary files differ
diff --git a/capplets/network/icons/scalable/mate-network-properties.svg b/capplets/network/icons/scalable/mate-network-properties.svg
new file mode 100644
index 00000000..71ef6762
--- /dev/null
+++ b/capplets/network/icons/scalable/mate-network-properties.svg
@@ -0,0 +1,628 @@
+<?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://web.resource.org/cc/"
+ 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"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48px"
+ height="48px"
+ id="svg7195"
+ sodipodi:version="0.32"
+ inkscape:version="0.45+devel"
+ sodipodi:docbase="/home/cornelius/Desktop"
+ sodipodi:docname="network-proxy-48.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ inkscape:export-filename="/home/cornelius/Desktop/network-proxy-48.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <defs
+ id="defs7197">
+ <linearGradient
+ id="linearGradient5466"
+ inkscape:collect="always">
+ <stop
+ id="stop5468"
+ offset="0"
+ style="stop-color:#555753;stop-opacity:1" />
+ <stop
+ id="stop5470"
+ offset="1"
+ style="stop-color:#888a85;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5466"
+ id="linearGradient5538"
+ gradientUnits="userSpaceOnUse"
+ x1="37.870998"
+ y1="12.5"
+ x2="47.965992"
+ y2="13.076671"
+ gradientTransform="translate(-1,0)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6393"
+ id="linearGradient5540"
+ gradientUnits="userSpaceOnUse"
+ x1="38.520752"
+ y1="12.5"
+ x2="47.863831"
+ y2="12.5"
+ gradientTransform="translate(-1,0)" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5060"
+ id="radialGradient5546"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-2.751545,0,0,1.969706,92.22831,-876.5339)"
+ cx="602.66046"
+ cy="488.07956"
+ fx="602.66046"
+ fy="488.07956"
+ r="117.14286" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient5060">
+ <stop
+ style="stop-color:black;stop-opacity:1;"
+ offset="0"
+ id="stop5062" />
+ <stop
+ style="stop-color:black;stop-opacity:0;"
+ offset="1"
+ id="stop5064" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5060"
+ id="radialGradient5544"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.7515457,0,0,1.969706,-1568.5757,-873.7569)"
+ cx="605.71429"
+ cy="486.64789"
+ fx="605.71429"
+ fy="486.64789"
+ r="117.14286" />
+ <linearGradient
+ id="linearGradient5048">
+ <stop
+ style="stop-color:black;stop-opacity:0;"
+ offset="0"
+ id="stop5050" />
+ <stop
+ id="stop5056"
+ offset="0.5"
+ style="stop-color:black;stop-opacity:1;" />
+ <stop
+ style="stop-color:black;stop-opacity:0;"
+ offset="1"
+ id="stop5052" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5048"
+ id="linearGradient5542"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(3.4289406,0,0,1.969706,-1977.4912,-872.8854)"
+ x1="302.85715"
+ y1="366.64789"
+ x2="302.85715"
+ y2="609.50507" />
+ <linearGradient
+ id="linearGradient5459"
+ inkscape:collect="always">
+ <stop
+ id="stop5461"
+ offset="0"
+ style="stop-color:#555753;stop-opacity:1" />
+ <stop
+ id="stop5463"
+ offset="1"
+ style="stop-color:#888a85;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5459"
+ id="linearGradient5548"
+ gradientUnits="userSpaceOnUse"
+ x1="24.399277"
+ y1="35.275932"
+ x2="31.843159"
+ y2="47.757107"
+ gradientTransform="translate(-1,0)" />
+ <linearGradient
+ id="linearGradient5429"
+ inkscape:collect="always">
+ <stop
+ id="stop5431"
+ offset="0"
+ style="stop-color:#555753;stop-opacity:1" />
+ <stop
+ id="stop5433"
+ offset="1"
+ style="stop-color:#888a85;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5429"
+ id="linearGradient5550"
+ gradientUnits="userSpaceOnUse"
+ x1="24.399277"
+ y1="35.275932"
+ x2="44.067654"
+ y2="47.80442"
+ gradientTransform="translate(-1,0)" />
+ <linearGradient
+ id="linearGradient5423"
+ inkscape:collect="always">
+ <stop
+ id="stop5425"
+ offset="0"
+ style="stop-color:#555753;stop-opacity:1" />
+ <stop
+ id="stop5427"
+ offset="1"
+ style="stop-color:#888a85;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5423"
+ id="linearGradient5552"
+ gradientUnits="userSpaceOnUse"
+ x1="24.399277"
+ y1="35.275932"
+ x2="50"
+ y2="41.644268"
+ gradientTransform="translate(-1,0)" />
+ <linearGradient
+ id="linearGradient5447"
+ inkscape:collect="always">
+ <stop
+ id="stop5449"
+ offset="0"
+ style="stop-color:#555753;stop-opacity:1" />
+ <stop
+ id="stop5451"
+ offset="1"
+ style="stop-color:#888a85;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5447"
+ id="linearGradient5554"
+ gradientUnits="userSpaceOnUse"
+ x1="24.399277"
+ y1="35.275932"
+ x2="17.209641"
+ y2="47.548927"
+ gradientTransform="translate(-1,0)" />
+ <linearGradient
+ id="linearGradient5441"
+ inkscape:collect="always">
+ <stop
+ id="stop5443"
+ offset="0"
+ style="stop-color:#555753;stop-opacity:1" />
+ <stop
+ id="stop5445"
+ offset="1"
+ style="stop-color:#888a85;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5441"
+ id="linearGradient5556"
+ gradientUnits="userSpaceOnUse"
+ x1="24.399277"
+ y1="35.275932"
+ x2="6.1469398"
+ y2="46.668907"
+ gradientTransform="translate(-1,0)" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6294">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0"
+ id="stop6296" />
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:1"
+ offset="1"
+ id="stop6298" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6294"
+ id="linearGradient5558"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.375,0,0,1.2857143,-10.1875,-3.2857142)"
+ x1="26.820854"
+ y1="5.9706759"
+ x2="26.820854"
+ y2="12.407513" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6427">
+ <stop
+ style="stop-color:#d3d7cf;stop-opacity:1;"
+ offset="0"
+ id="stop6429" />
+ <stop
+ style="stop-color:#d3d7cf;stop-opacity:0;"
+ offset="1"
+ id="stop6431" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6427"
+ id="linearGradient5560"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-1,1)"
+ x1="41.570694"
+ y1="32.504398"
+ x2="18.827377"
+ y2="6" />
+ <linearGradient
+ id="linearGradient5435"
+ inkscape:collect="always">
+ <stop
+ id="stop5437"
+ offset="0"
+ style="stop-color:#555753;stop-opacity:1" />
+ <stop
+ id="stop5439"
+ offset="1"
+ style="stop-color:#888a85;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5435"
+ id="linearGradient5562"
+ gradientUnits="userSpaceOnUse"
+ x1="22.280706"
+ y1="35"
+ x2="2.1575336"
+ y2="41.171135"
+ gradientTransform="translate(-1,0)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6393"
+ id="linearGradient5564"
+ gradientUnits="userSpaceOnUse"
+ x1="27.060818"
+ y1="36.950813"
+ x2="43.95985"
+ y2="47.034103"
+ gradientTransform="translate(-1,0)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6393"
+ id="linearGradient5566"
+ gradientUnits="userSpaceOnUse"
+ x1="24.408333"
+ y1="35.758526"
+ x2="-0.58516204"
+ y2="42"
+ gradientTransform="translate(-1,0)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6393"
+ id="linearGradient5568"
+ gradientUnits="userSpaceOnUse"
+ x1="24.408333"
+ y1="35.758526"
+ x2="6.735868"
+ y2="46.911091"
+ gradientTransform="translate(-1,0)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6393"
+ id="linearGradient5570"
+ gradientUnits="userSpaceOnUse"
+ x1="25.702541"
+ y1="38.042225"
+ x2="32.307709"
+ y2="48.084454"
+ gradientTransform="translate(-1,0)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6393"
+ id="linearGradient5572"
+ gradientUnits="userSpaceOnUse"
+ x1="24.408333"
+ y1="35.758526"
+ x2="16.728512"
+ y2="48.084454"
+ gradientTransform="translate(-1,0)" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6393">
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:1;"
+ offset="0"
+ id="stop6395" />
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:0;"
+ offset="1"
+ id="stop6397" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6393"
+ id="linearGradient5574"
+ gradientUnits="userSpaceOnUse"
+ x1="27.727142"
+ y1="35"
+ x2="49"
+ y2="41.063202"
+ gradientTransform="translate(-1,0)" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="7"
+ inkscape:cx="24"
+ inkscape:cy="24"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="872"
+ inkscape:window-height="623"
+ inkscape:window-x="0"
+ inkscape:window-y="26" />
+ <metadata
+ id="metadata7200">
+ <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>Network proxy</dc:title>
+ <dc:date>16.02.2007</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Josef Vybíral</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:rights>
+ <cc:Agent>
+ <dc:title>Josef Vybíral</dc:title>
+ </cc:Agent>
+ </dc:rights>
+ <dc:source>http://blog.vybiral.info</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>network</rdf:li>
+ <rdf:li>proxy</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <dc:contributor>
+ <cc:Agent>
+ <dc:title>Jakub Steiner</dc:title>
+ </cc:Agent>
+ </dc:contributor>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/SourceCode" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer">
+ <path
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient5538);stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 37.0038,12.5 L 47.0038,12.5"
+ id="path5472" />
+ <path
+ id="path5474"
+ d="M 37.0038,12.5 L 47.0038,12.5"
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient5540);stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ ry="0.5064261"
+ rx="0.5064261"
+ y="9.5"
+ x="34.5"
+ height="6"
+ width="2.0000012"
+ id="rect5476"
+ style="opacity:1;color:#000000;fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:#3465a4;stroke-width:0.99999994;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <g
+ style="opacity:0.31004363;display:inline"
+ transform="matrix(-1.2388921e-2,0,0,1.6597884e-2,14.35481,26.561532)"
+ id="g5478">
+ <rect
+ style="opacity:0.40206185;color:#000000;fill:url(#linearGradient5542);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="rect5480"
+ width="1655.6886"
+ height="478.35718"
+ x="-1566.019"
+ y="-150.69685" />
+ <path
+ style="opacity:0.40206185;color:#000000;fill:url(#radialGradient5544);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ d="M 89.669502,-151.55183 C 89.669502,-151.55183 89.669502,326.77896 89.669502,326.77896 C 231.36729,327.67941 432.22584,219.6093 432.22576,87.582782 C 432.22576,-44.443755 274.10167,-151.55181 89.669502,-151.55183 z"
+ id="path5482"
+ sodipodi:nodetypes="cccc" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path5484"
+ d="M -1566.0191,-154.32884 C -1566.0191,-154.32884 -1566.0191,324.00195 -1566.0191,324.00195 C -1707.7169,324.9024 -1908.5753,216.83229 -1908.5753,84.805778 C -1908.5753,-47.220759 -1750.4513,-154.32882 -1566.0191,-154.32884 z"
+ style="opacity:0.40206185;color:#000000;fill:url(#radialGradient5546);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <path
+ sodipodi:nodetypes="ccc"
+ id="path5486"
+ d="M 23.53622,24.5 L 23.53622,35.5 L 30.80771,47.584452"
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient5548);stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient5550);stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 23.53622,24.5 L 23.53622,35.5 L 42.48548,47.385737"
+ id="path5488"
+ sodipodi:nodetypes="ccc" />
+ <path
+ sodipodi:nodetypes="ccc"
+ id="path5490"
+ d="M 23.53622,24.5 L 23.53622,34.5 L 47.5,41.5"
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient5552);stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient5554);stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 23.5,24.5 L 23.5,35.5 L 16.22851,47.584452"
+ id="path5492"
+ sodipodi:nodetypes="ccc" />
+ <path
+ sodipodi:nodetypes="ccc"
+ id="path5494"
+ d="M 23.5,24.5 L 23.5,35.5 L 4.55074,47.385737"
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient5556);stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ sodipodi:nodetypes="ccccccccc"
+ id="path5496"
+ d="M 15.09302,2.5000001 L 31.90698,2.5000001 L 34.5,6.2103543 L 34.5,28.313413 C 34.5,28.944378 33.95677,29.500001 33.28198,29.500001 L 13.71802,29.500001 C 13.04323,29.500001 12.5,28.992041 12.5,28.361076 L 12.5,6.2103543 L 15.09302,2.5000001 z"
+ style="color:#000000;fill:url(#linearGradient5558);fill-opacity:1;fill-rule:evenodd;stroke:#555753;stroke-width:1.00000024px;stroke-linecap:round;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:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ ry="1"
+ rx="1"
+ y="7"
+ x="15"
+ height="20"
+ width="17"
+ id="rect5498"
+ style="opacity:0.83842797;color:#000000;fill:url(#linearGradient5560);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.00000024px;stroke-linecap:round;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:inline;overflow:visible;enable-background:accumulate"
+ d="M 15.53595,3.5 L 31.46767,3.5 L 33.5,6.4892262 L 33.5,27.777117 C 33.5,28.42284 33.44002,28.499987 32.73895,28.499987 L 14.34783,28.499987 C 13.64676,28.499987 13.5,28.51138 13.5,27.865657 L 13.5,6.4892262 L 15.53595,3.5 z"
+ id="path5500"
+ sodipodi:nodetypes="ccccccccc" />
+ <path
+ transform="matrix(-1.4831624,0,0,1.5007696,54.7879,-9.838124)"
+ d="M 23.070641,24.879318 A 1.9989744,1.9989744 0 1 1 19.072692,24.879318 A 1.9989744,1.9989744 0 1 1 23.070641,24.879318 z"
+ sodipodi:ry="1.9989744"
+ sodipodi:rx="1.9989744"
+ sodipodi:cy="24.879318"
+ sodipodi:cx="21.071667"
+ id="path5502"
+ style="color:#000000;fill:#ad7fa8;fill-opacity:1;fill-rule:evenodd;stroke:#5c3566;stroke-width:0.67026824px;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:type="arc"
+ style="color:#000000;fill:#ad7fa8;fill-opacity:1;fill-rule:evenodd;stroke:#5c3566;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="path5504"
+ sodipodi:cx="21.071667"
+ sodipodi:cy="24.879318"
+ sodipodi:rx="1.9989744"
+ sodipodi:ry="1.9989744"
+ d="M 23.070641,24.879318 A 1.9989744,1.9989744 0 1 1 19.072692,24.879318 A 1.9989744,1.9989744 0 1 1 23.070641,24.879318 z"
+ transform="matrix(-1,0,0,1,44.60686,3.6196562)" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:url(#linearGradient5562);stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 23.5,28.5 L 23.5,34.5 L -0.46378,41.5"
+ id="path5506"
+ sodipodi:nodetypes="ccc" />
+ <path
+ sodipodi:nodetypes="ccc"
+ id="path5508"
+ d="M 23.53622,28.5 L 23.53622,35.5 L 42.45985,47.518214"
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient5564);stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ sodipodi:nodetypes="ccc"
+ id="path5510"
+ d="M 23.5,28.5 L 23.5,34.5 L -0.46378,41.5"
+ style="fill:none;fill-rule:evenodd;stroke:url(#linearGradient5566);stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient5568);stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 23.5,28.5 L 23.5,35.5 L 4.57637,47.518214"
+ id="path5512"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient5570);stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 23.53622,28.5 L 23.53622,35.5 L 30.80771,47.584452"
+ id="path5514"
+ sodipodi:nodetypes="ccc" />
+ <path
+ sodipodi:nodetypes="ccc"
+ id="path5516"
+ d="M 23.5,28.5 C 23.5,31.25 23.5,35.5 23.5,35.5 L 16.22851,47.584452"
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient5572);stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient5574);stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 23.53622,28.5 L 23.53622,34.5 L 47.5,41.5"
+ id="path5518"
+ sodipodi:nodetypes="ccc" />
+ <path
+ sodipodi:nodetypes="cc"
+ id="path5520"
+ d="M 17.5,12.5 L 29.5,12.5"
+ style="fill:none;fill-rule:evenodd;stroke:#babdb6;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#babdb6;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 17.5,14.5 L 29.5,14.5"
+ id="path5522"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:nodetypes="cc"
+ id="path5524"
+ d="M 17.5,16.5 L 29.5,16.5"
+ style="fill:none;fill-rule:evenodd;stroke:#babdb6;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#babdb6;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 17.5,18.5 L 29.5,18.5"
+ id="path5526"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 17.5,13.5 L 29.5,13.5"
+ id="path5528"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:nodetypes="cc"
+ id="path5530"
+ d="M 17.5,15.5 L 29.5,15.5"
+ style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 17.5,17.5 L 29.5,17.5"
+ id="path5532"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:nodetypes="cc"
+ id="path5534"
+ d="M 17.5,19.5 L 29.5,19.5"
+ style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ transform="matrix(0.7916045,0,0,0.7916044,2.47836,5.9823878)"
+ d="M 18.976194,24.655764 A 1.2632571,1.2632571 0 1 1 16.449679,24.655764 A 1.2632571,1.2632571 0 1 1 18.976194,24.655764 z"
+ sodipodi:ry="1.2632571"
+ sodipodi:rx="1.2632571"
+ sodipodi:cy="24.655764"
+ sodipodi:cx="17.712936"
+ id="path5536"
+ style="opacity:0.83842797;color:#000000;fill:#73d216;fill-opacity:1;fill-rule:evenodd;stroke:#4e9a06;stroke-width:1.26325715;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ sodipodi:type="arc" />
+ </g>
+</svg>
diff --git a/capplets/network/mate-network-properties.c b/capplets/network/mate-network-properties.c
new file mode 100644
index 00000000..3fcc04dc
--- /dev/null
+++ b/capplets/network/mate-network-properties.c
@@ -0,0 +1,1397 @@
+/* mate-network-properties.c: network preferences capplet
+ *
+ * Copyright (C) 2002 Sun Microsystems Inc.
+ *
+ * Written by: Mark McLoughlin <[email protected]>
+ *
+ * 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, 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+#include <mateconf/mateconf-client.h>
+#include <glib/gi18n.h>
+
+#include "capplet-util.h"
+#include "mateconf-property-editor.h"
+
+enum ProxyMode
+{
+ PROXYMODE_NONE,
+ PROXYMODE_MANUAL,
+ PROXYMODE_AUTO
+};
+
+static GEnumValue proxytype_values[] = {
+ { PROXYMODE_NONE, "PROXYMODE_NONE", "none"},
+ { PROXYMODE_MANUAL, "PROXYMODE_MANUAL", "manual"},
+ { PROXYMODE_AUTO, "PROXYMODE_AUTO", "auto"},
+ { 0, NULL, NULL }
+};
+
+enum {
+ COL_NAME,
+ COL_STYLE
+};
+
+#define USE_PROXY_KEY "/system/http_proxy/use_http_proxy"
+#define USE_SAME_PROXY_KEY "/system/http_proxy/use_same_proxy"
+#define HTTP_PROXY_HOST_KEY "/system/http_proxy/host"
+#define HTTP_PROXY_PORT_KEY "/system/http_proxy/port"
+#define HTTP_USE_AUTH_KEY "/system/http_proxy/use_authentication"
+#define HTTP_AUTH_USER_KEY "/system/http_proxy/authentication_user"
+#define HTTP_AUTH_PASSWD_KEY "/system/http_proxy/authentication_password"
+#define IGNORE_HOSTS_KEY "/system/http_proxy/ignore_hosts"
+#define PROXY_MODE_KEY "/system/proxy/mode"
+#define SECURE_PROXY_HOST_KEY "/system/proxy/secure_host"
+#define OLD_SECURE_PROXY_HOST_KEY "/system/proxy/old_secure_host"
+#define SECURE_PROXY_PORT_KEY "/system/proxy/secure_port"
+#define OLD_SECURE_PROXY_PORT_KEY "/system/proxy/old_secure_port"
+#define FTP_PROXY_HOST_KEY "/system/proxy/ftp_host"
+#define OLD_FTP_PROXY_HOST_KEY "/system/proxy/old_ftp_host"
+#define FTP_PROXY_PORT_KEY "/system/proxy/ftp_port"
+#define OLD_FTP_PROXY_PORT_KEY "/system/proxy/old_ftp_port"
+#define SOCKS_PROXY_HOST_KEY "/system/proxy/socks_host"
+#define OLD_SOCKS_PROXY_HOST_KEY "/system/proxy/old_socks_host"
+#define SOCKS_PROXY_PORT_KEY "/system/proxy/socks_port"
+#define OLD_SOCKS_PROXY_PORT_KEY "/system/proxy/old_socks_port"
+#define PROXY_AUTOCONFIG_URL_KEY "/system/proxy/autoconfig_url"
+
+#define LOCATION_DIR "/apps/control-center/network"
+#define CURRENT_LOCATION "/apps/control-center/network/current_location"
+
+#define MATECC_GNP_UI_FILE (MATECC_UI_DIR "/mate-network-properties.ui")
+
+static GtkWidget *details_dialog = NULL;
+static GSList *ignore_hosts = NULL;
+static GtkTreeModel *model = NULL;
+
+static GtkTreeModel *
+create_listmodel(void)
+{
+ GtkListStore *store;
+
+ store = gtk_list_store_new(1, G_TYPE_STRING);
+
+ return GTK_TREE_MODEL(store);
+}
+
+static GtkTreeModel *
+populate_listmodel(GtkListStore *store, GSList *list)
+{
+ GtkTreeIter iter;
+ GSList *pointer;
+
+ gtk_list_store_clear(store);
+
+ pointer = list;
+ while(pointer)
+ {
+ gtk_list_store_append(store, &iter);
+ gtk_list_store_set(store, &iter, 0, (char *) pointer->data, -1);
+ pointer = g_slist_next(pointer);
+ }
+
+ return GTK_TREE_MODEL(store);
+}
+
+static GtkWidget *
+config_treeview(GtkTreeView *tree, GtkTreeModel *model)
+{
+ GtkCellRenderer *renderer;
+
+ renderer = gtk_cell_renderer_text_new();
+ gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(tree),
+ -1, "Hosts", renderer,
+ "text", 0, NULL);
+
+ gtk_tree_view_set_model(GTK_TREE_VIEW(tree), model);
+
+ return GTK_WIDGET(tree);
+}
+
+static GtkWidget*
+_gtk_builder_get_widget (GtkBuilder *builder, const gchar *name)
+{
+ return GTK_WIDGET (gtk_builder_get_object (builder, name));
+}
+
+
+static void
+cb_add_url (GtkButton *button, gpointer data)
+{
+ GtkBuilder *builder = GTK_BUILDER (data);
+ gchar *new_url = NULL;
+ MateConfClient *client;
+
+ new_url = g_strdup (gtk_entry_get_text (GTK_ENTRY (gtk_builder_get_object (builder, "entry_url"))));
+ if (strlen (new_url) == 0)
+ return;
+ ignore_hosts = g_slist_append(ignore_hosts, new_url);
+ populate_listmodel(GTK_LIST_STORE(model), ignore_hosts);
+ gtk_entry_set_text(GTK_ENTRY (gtk_builder_get_object (builder,
+ "entry_url")), "");
+
+ client = mateconf_client_get_default ();
+ mateconf_client_set_list (client, IGNORE_HOSTS_KEY, MATECONF_VALUE_STRING, ignore_hosts, NULL);
+ g_object_unref (client);
+}
+
+static void
+cb_remove_url (GtkButton *button, gpointer data)
+{
+ GtkBuilder *builder = GTK_BUILDER (data);
+ GtkTreeSelection *selection;
+ GtkTreeIter iter;
+ MateConfClient *client;
+
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (gtk_builder_get_object (builder, "treeview_ignore_host")));
+ if (gtk_tree_selection_get_selected(selection, &model, &iter))
+ {
+ gchar *url;
+ GSList *pointer;
+
+ gtk_tree_model_get (model, &iter, 0, &url, -1);
+
+ pointer = ignore_hosts;
+ while(pointer)
+ {
+ if(strcmp(url, (char *) pointer->data) == 0)
+ {
+ g_free (pointer->data);
+ ignore_hosts = g_slist_delete_link(ignore_hosts, pointer);
+ break;
+ }
+ pointer = g_slist_next(pointer);
+ }
+
+ g_free(url);
+ populate_listmodel(GTK_LIST_STORE(model), ignore_hosts);
+
+ client = mateconf_client_get_default ();
+ mateconf_client_set_list(client, IGNORE_HOSTS_KEY, MATECONF_VALUE_STRING, ignore_hosts, NULL);
+ g_object_unref (client);
+ }
+}
+
+static void
+cb_dialog_response (GtkDialog *dialog, gint response_id)
+{
+ if (response_id == GTK_RESPONSE_HELP)
+ capplet_help (GTK_WINDOW (dialog),
+ "goscustdesk-50");
+ else if (response_id == GTK_RESPONSE_CLOSE || response_id == GTK_RESPONSE_DELETE_EVENT)
+ {
+ if (ignore_hosts) {
+ g_slist_foreach (ignore_hosts, (GFunc) g_free, NULL);
+ g_slist_free (ignore_hosts);
+ }
+
+ gtk_main_quit ();
+ }
+}
+
+static void
+cb_details_dialog_response (GtkDialog *dialog, gint response_id)
+{
+ if (response_id == GTK_RESPONSE_HELP)
+ capplet_help (GTK_WINDOW (dialog),
+ "goscustdesk-50");
+ else {
+ gtk_widget_destroy (GTK_WIDGET (dialog));
+ details_dialog = NULL;
+ }
+}
+
+static void
+cb_use_auth_toggled (GtkToggleButton *toggle,
+ GtkWidget *table)
+{
+ gtk_widget_set_sensitive (table, gtk_toggle_button_get_active (toggle));
+}
+
+static void
+cb_http_details_button_clicked (GtkWidget *button,
+ GtkWidget *parent)
+{
+ GtkBuilder *builder;
+ gchar *builder_widgets[] = { "details_dialog", NULL };
+ GError *error = NULL;
+ GtkWidget *widget;
+ MateConfPropertyEditor *peditor;
+
+ if (details_dialog != NULL) {
+ gtk_window_present (GTK_WINDOW (details_dialog));
+ gtk_widget_grab_focus (details_dialog);
+ return;
+ }
+
+ builder = gtk_builder_new ();
+ if (gtk_builder_add_objects_from_file (builder, MATECC_GNP_UI_FILE,
+ builder_widgets, &error) == 0) {
+ g_warning ("Could not load details dialog: %s", error->message);
+ g_error_free (error);
+ g_object_unref (builder);
+ return;
+ }
+
+ details_dialog = widget = _gtk_builder_get_widget (builder,
+ "details_dialog");
+
+ gtk_window_set_transient_for (GTK_WINDOW (widget), GTK_WINDOW (parent));
+
+ g_signal_connect (gtk_builder_get_object (builder, "use_auth_checkbutton"),
+ "toggled",
+ G_CALLBACK (cb_use_auth_toggled),
+ _gtk_builder_get_widget (builder, "auth_table"));
+
+ peditor = MATECONF_PROPERTY_EDITOR (mateconf_peditor_new_boolean (
+ NULL, HTTP_USE_AUTH_KEY,
+ _gtk_builder_get_widget (builder, "use_auth_checkbutton"),
+ NULL));
+ peditor = MATECONF_PROPERTY_EDITOR (mateconf_peditor_new_string (
+ NULL, HTTP_AUTH_USER_KEY,
+ _gtk_builder_get_widget (builder, "username_entry"),
+ NULL));
+ peditor = MATECONF_PROPERTY_EDITOR (mateconf_peditor_new_string (
+ NULL, HTTP_AUTH_PASSWD_KEY,
+ _gtk_builder_get_widget (builder, "password_entry"),
+ NULL));
+
+ g_signal_connect (widget, "response",
+ G_CALLBACK (cb_details_dialog_response), NULL);
+
+ capplet_set_icon (widget, "mate-network-properties");
+
+ gtk_widget_show_all (widget);
+}
+
+static gchar *
+copy_location_create_key (const gchar *from, const gchar *what)
+{
+ if (from[0] == '\0') return g_strdup (what);
+ else return g_strconcat (from, what + strlen ("/system"), NULL);
+}
+
+static void
+copy_location (const gchar *from, const gchar *to, MateConfClient *client)
+{
+ int ti;
+ gboolean tb;
+ GSList *tl;
+ gchar *tstr, *dest, *src;
+
+ if (from[0] != '\0' && !mateconf_client_dir_exists (client, from, NULL))
+ return;
+
+ /* USE_PROXY */
+ dest = copy_location_create_key (to, USE_PROXY_KEY);
+ src = copy_location_create_key (from, USE_PROXY_KEY);
+
+ tb = mateconf_client_get_bool (client, src, NULL);
+ mateconf_client_set_bool (client, dest, tb, NULL);
+
+ g_free (dest);
+ g_free (src);
+
+ /* USE_SAME_PROXY */
+ dest = copy_location_create_key (to, USE_SAME_PROXY_KEY);
+ src = copy_location_create_key (from, USE_SAME_PROXY_KEY);
+
+ tb = mateconf_client_get_bool (client, src, NULL);
+ mateconf_client_set_bool (client, dest, tb, NULL);
+
+ g_free (dest);
+ g_free (src);
+
+ /* HTTP_PROXY_HOST */
+ dest = copy_location_create_key (to, HTTP_PROXY_HOST_KEY);
+ src = copy_location_create_key (from, HTTP_PROXY_HOST_KEY);
+
+ tstr = mateconf_client_get_string (client, src, NULL);
+ if (tstr != NULL)
+ {
+ mateconf_client_set_string (client, dest, tstr, NULL);
+ g_free (tstr);
+ }
+
+ g_free (dest);
+ g_free (src);
+
+ /* HTTP_PROXY_PORT */
+ dest = copy_location_create_key (to, HTTP_PROXY_PORT_KEY);
+ src = copy_location_create_key (from, HTTP_PROXY_PORT_KEY);
+
+ ti = mateconf_client_get_int (client, src, NULL);
+ mateconf_client_set_int (client, dest, ti, NULL);
+
+ g_free (dest);
+ g_free (src);
+
+ /* HTTP_USE_AUTH */
+ dest = copy_location_create_key (to, HTTP_USE_AUTH_KEY);
+ src = copy_location_create_key (from, HTTP_USE_AUTH_KEY);
+
+ tb = mateconf_client_get_bool (client, src, NULL);
+ mateconf_client_set_bool (client, dest, tb, NULL);
+
+ g_free (dest);
+ g_free (src);
+
+ /* HTTP_AUTH_USER */
+ dest = copy_location_create_key (to, HTTP_AUTH_USER_KEY);
+ src = copy_location_create_key (from, HTTP_AUTH_USER_KEY);
+
+ tstr = mateconf_client_get_string (client, src, NULL);
+ if (tstr != NULL)
+ {
+ mateconf_client_set_string (client, dest, tstr, NULL);
+ g_free (tstr);
+ }
+
+ g_free (dest);
+ g_free (src);
+
+ /* HTTP_AUTH_PASSWD */
+ dest = copy_location_create_key (to, HTTP_AUTH_PASSWD_KEY);
+ src = copy_location_create_key (from, HTTP_AUTH_PASSWD_KEY);
+
+ tstr = mateconf_client_get_string (client, src, NULL);
+ if (tstr != NULL)
+ {
+ mateconf_client_set_string (client, dest, tstr, NULL);
+ g_free (tstr);
+ }
+
+ g_free (dest);
+ g_free (src);
+
+ /* IGNORE_HOSTS */
+ dest = copy_location_create_key (to, IGNORE_HOSTS_KEY);
+ src = copy_location_create_key (from, IGNORE_HOSTS_KEY);
+
+ tl = mateconf_client_get_list (client, src, MATECONF_VALUE_STRING, NULL);
+ mateconf_client_set_list (client, dest, MATECONF_VALUE_STRING, tl, NULL);
+ g_slist_foreach (tl, (GFunc) g_free, NULL);
+ g_slist_free (tl);
+
+ g_free (dest);
+ g_free (src);
+
+ /* PROXY_MODE */
+ dest = copy_location_create_key (to, PROXY_MODE_KEY);
+ src = copy_location_create_key (from, PROXY_MODE_KEY);
+
+ tstr = mateconf_client_get_string (client, src, NULL);
+ if (tstr != NULL)
+ {
+ mateconf_client_set_string (client, dest, tstr, NULL);
+ g_free (tstr);
+ }
+
+ g_free (dest);
+ g_free (src);
+
+ /* SECURE_PROXY_HOST */
+ dest = copy_location_create_key (to, SECURE_PROXY_HOST_KEY);
+ src = copy_location_create_key (from, SECURE_PROXY_HOST_KEY);
+
+ tstr = mateconf_client_get_string (client, src, NULL);
+ if (tstr != NULL)
+ {
+ mateconf_client_set_string (client, dest, tstr, NULL);
+ g_free (tstr);
+ }
+
+ g_free (dest);
+ g_free (src);
+
+ /* OLD_SECURE_PROXY_HOST */
+ dest = copy_location_create_key (to, OLD_SECURE_PROXY_HOST_KEY);
+ src = copy_location_create_key (from, OLD_SECURE_PROXY_HOST_KEY);
+
+ tstr = mateconf_client_get_string (client, src, NULL);
+ if (tstr != NULL)
+ {
+ mateconf_client_set_string (client, dest, tstr, NULL);
+ g_free (tstr);
+ }
+
+ g_free (dest);
+ g_free (src);
+
+ /* SECURE_PROXY_PORT */
+ dest = copy_location_create_key (to, SECURE_PROXY_PORT_KEY);
+ src = copy_location_create_key (from, SECURE_PROXY_PORT_KEY);
+
+ ti = mateconf_client_get_int (client, src, NULL);
+ mateconf_client_set_int (client, dest, ti, NULL);
+
+ g_free (dest);
+ g_free (src);
+
+ /* OLD_SECURE_PROXY_PORT */
+ dest = copy_location_create_key (to, OLD_SECURE_PROXY_PORT_KEY);
+ src = copy_location_create_key (from, OLD_SECURE_PROXY_PORT_KEY);
+
+ ti = mateconf_client_get_int (client, src, NULL);
+ mateconf_client_set_int (client, dest, ti, NULL);
+
+ g_free (dest);
+ g_free (src);
+
+ /* FTP_PROXY_HOST */
+ dest = copy_location_create_key (to, FTP_PROXY_HOST_KEY);
+ src = copy_location_create_key (from, FTP_PROXY_HOST_KEY);
+
+ tstr = mateconf_client_get_string (client, src, NULL);
+ if (tstr != NULL)
+ {
+ mateconf_client_set_string (client, dest, tstr, NULL);
+ g_free (tstr);
+ }
+
+ g_free (dest);
+ g_free (src);
+
+ /* OLD_FTP_PROXY_HOST */
+ dest = copy_location_create_key (to, OLD_FTP_PROXY_HOST_KEY);
+ src = copy_location_create_key (from, OLD_FTP_PROXY_HOST_KEY);
+
+ tstr = mateconf_client_get_string (client, src, NULL);
+ if (tstr != NULL)
+ {
+ mateconf_client_set_string (client, dest, tstr, NULL);
+ g_free (tstr);
+ }
+
+ g_free (dest);
+ g_free (src);
+
+ /* FTP_PROXY_PORT */
+ dest = copy_location_create_key (to, FTP_PROXY_PORT_KEY);
+ src = copy_location_create_key (from, FTP_PROXY_PORT_KEY);
+
+ ti = mateconf_client_get_int (client, src, NULL);
+ mateconf_client_set_int (client, dest, ti, NULL);
+
+ g_free (dest);
+ g_free (src);
+
+ /* OLD_FTP_PROXY_PORT */
+ dest = copy_location_create_key (to, OLD_FTP_PROXY_PORT_KEY);
+ src = copy_location_create_key (from, OLD_FTP_PROXY_PORT_KEY);
+
+ ti = mateconf_client_get_int (client, src, NULL);
+ mateconf_client_set_int (client, dest, ti, NULL);
+
+ g_free (dest);
+ g_free (src);
+
+ /* SOCKS_PROXY_HOST */
+ dest = copy_location_create_key (to, SOCKS_PROXY_HOST_KEY);
+ src = copy_location_create_key (from, SOCKS_PROXY_HOST_KEY);
+
+ tstr = mateconf_client_get_string (client, src, NULL);
+ if (tstr != NULL)
+ {
+ mateconf_client_set_string (client, dest, tstr, NULL);
+ g_free (tstr);
+ }
+
+ g_free (dest);
+ g_free (src);
+
+ /* OLD_SOCKS_PROXY_HOST */
+ dest = copy_location_create_key (to, OLD_SOCKS_PROXY_HOST_KEY);
+ src = copy_location_create_key (from, OLD_SOCKS_PROXY_HOST_KEY);
+
+ tstr = mateconf_client_get_string (client, src, NULL);
+ if (tstr != NULL)
+ {
+ mateconf_client_set_string (client, dest, tstr, NULL);
+ g_free (tstr);
+ }
+
+ g_free (dest);
+ g_free (src);
+
+ /* SOCKS_PROXY_PORT */
+ dest = copy_location_create_key (to, SOCKS_PROXY_PORT_KEY);
+ src = copy_location_create_key (from, SOCKS_PROXY_PORT_KEY);
+
+ ti = mateconf_client_get_int (client, src, NULL);
+ mateconf_client_set_int (client, dest, ti, NULL);
+
+ g_free (dest);
+ g_free (src);
+
+ /* OLD_SOCKS_PROXY_PORT */
+ dest = copy_location_create_key (to, OLD_SOCKS_PROXY_PORT_KEY);
+ src = copy_location_create_key (from, OLD_SOCKS_PROXY_PORT_KEY);
+
+ ti = mateconf_client_get_int (client, src, NULL);
+ mateconf_client_set_int (client, dest, ti, NULL);
+
+ g_free (dest);
+ g_free (src);
+
+ /* PROXY_AUTOCONFIG_URL */
+ dest = copy_location_create_key (to, PROXY_AUTOCONFIG_URL_KEY);
+ src = copy_location_create_key (from, PROXY_AUTOCONFIG_URL_KEY);
+
+ tstr = mateconf_client_get_string (client, src, NULL);
+ if (tstr != NULL)
+ {
+ mateconf_client_set_string (client, dest, tstr, NULL);
+ g_free (tstr);
+ }
+
+ g_free (dest);
+ g_free (src);
+}
+
+static gchar *
+get_current_location (MateConfClient *client)
+{
+ gchar *result;
+
+ result = mateconf_client_get_string (client, CURRENT_LOCATION, NULL);
+
+ if (result == NULL || result[0] == '\0')
+ {
+ g_free (result);
+ result = g_strdup (_("Default"));
+ }
+
+ return result;
+}
+
+static gboolean
+location_combo_separator (GtkTreeModel *model,
+ GtkTreeIter *iter,
+ gpointer data)
+{
+ gchar *name;
+ gboolean ret;
+
+ gtk_tree_model_get (model, iter, COL_NAME, &name, -1);
+
+ ret = name == NULL || name[0] == '\0';
+
+ g_free (name);
+
+ return ret;
+}
+
+static void
+update_locations (MateConfClient *client,
+ GtkBuilder *builder);
+
+static void
+cb_location_changed (GtkWidget *location,
+ GtkBuilder *builder);
+
+static void
+cb_current_location (MateConfClient *client,
+ guint cnxn_id,
+ MateConfEntry *entry,
+ GtkBuilder *builder)
+{
+ MateConfValue *value;
+ const gchar *newval;
+
+ value = mateconf_entry_get_value (entry);
+ if (value == NULL)
+ return;
+
+ newval = mateconf_value_get_string (value);
+ if (newval == NULL)
+ return;
+
+ /* prevent the current settings from being saved by blocking
+ * the signal handler */
+ g_signal_handlers_block_by_func (gtk_builder_get_object (builder, "location_combobox"),
+ cb_location_changed, builder);
+ update_locations (client, builder);
+ g_signal_handlers_unblock_by_func (gtk_builder_get_object (builder, "location_combobox"),
+ cb_location_changed, builder);
+}
+
+static void
+update_locations (MateConfClient *client,
+ GtkBuilder *builder)
+{
+ int i, select;
+ gchar *current;
+ GtkComboBox *location = GTK_COMBO_BOX (gtk_builder_get_object (builder, "location_combobox"));
+ GSList *list = mateconf_client_all_dirs (client, LOCATION_DIR, NULL);
+ GtkTreeIter titer;
+ GtkListStore *store;
+ GSList *iter, *last;
+
+ store = GTK_LIST_STORE (gtk_combo_box_get_model (location));
+ gtk_list_store_clear (store);
+
+ current = get_current_location (client);
+
+ list = g_slist_append (list, g_strconcat (LOCATION_DIR"/", current, NULL));
+ list = g_slist_sort (list, (GCompareFunc) strcmp);
+
+ select = -1;
+
+ for (i = 0, iter = list, last = NULL; iter != NULL; last = iter, iter = g_slist_next (iter), ++i)
+ {
+ if (last == NULL || strcmp (last->data, iter->data) != 0)
+ {
+ gchar *locp, *key_name;
+
+ locp = iter->data + strlen (LOCATION_DIR) + 1;
+ key_name = mateconf_unescape_key (locp, -1);
+
+ gtk_list_store_append (store, &titer);
+ gtk_list_store_set (store, &titer,
+ COL_NAME, key_name,
+ COL_STYLE, PANGO_STYLE_NORMAL, -1);
+
+ g_free (key_name);
+
+ if (strcmp (locp, current) == 0)
+ select = i;
+ }
+ }
+ if (select == -1)
+ {
+ gtk_list_store_append (store, &titer);
+ gtk_list_store_set (store, &titer,
+ COL_NAME , current,
+ COL_STYLE, PANGO_STYLE_NORMAL, -1);
+ select = i++;
+ }
+ gtk_widget_set_sensitive (_gtk_builder_get_widget (builder,
+ "delete_button"),
+ i > 1);
+
+ gtk_list_store_append (store, &titer);
+ gtk_list_store_set (store, &titer,
+ COL_NAME, NULL,
+ COL_STYLE, PANGO_STYLE_NORMAL, -1);
+
+ gtk_list_store_append (store, &titer);
+ gtk_list_store_set (store, &titer,
+ COL_NAME, _("New Location..."),
+ COL_STYLE, PANGO_STYLE_ITALIC, -1);
+
+ gtk_combo_box_set_row_separator_func (location, location_combo_separator, NULL, NULL);
+ gtk_combo_box_set_active (location, select);
+ g_free (current);
+ g_slist_foreach (list, (GFunc) mateconf_entry_free, NULL);
+ g_slist_free (list);
+}
+
+static void
+cb_location_new_text_changed (GtkEntry *entry, GtkBuilder *builder)
+{
+ gboolean exists;
+ gchar *current, *esc, *key;
+ const gchar *name;
+ MateConfClient *client;
+
+ client = mateconf_client_get_default ();
+
+ name = gtk_entry_get_text (entry);
+ if (name != NULL && name[0] != '\0')
+ {
+ esc = mateconf_escape_key (name, -1);
+
+ key = g_strconcat (LOCATION_DIR "/", esc, NULL);
+ g_free (esc);
+
+ current = get_current_location (client);
+
+ exists = (strcmp (current, name) == 0) ||
+ mateconf_client_dir_exists (client, key, NULL);
+ g_free (key);
+ } else exists = FALSE;
+
+ g_object_unref (client);
+
+ if (exists)
+ gtk_widget_show (_gtk_builder_get_widget (builder,
+ "error_label"));
+ else
+ gtk_widget_hide (_gtk_builder_get_widget (builder,
+ "error_label"));
+
+ gtk_widget_set_sensitive (_gtk_builder_get_widget (builder,
+ "new_location"),
+ !exists);
+}
+
+static void
+location_new (GtkBuilder *capplet_builder, GtkWidget *parent)
+{
+ GtkBuilder *builder;
+ GError *error = NULL;
+ gchar *builder_widgets[] = { "location_new_dialog",
+ "new_location_btn_img", NULL };
+ GtkWidget *askdialog;
+ const gchar *name;
+ int response;
+ MateConfClient *client;
+
+ client = mateconf_client_get_default ();
+
+ builder = gtk_builder_new ();
+ if (gtk_builder_add_objects_from_file (builder, MATECC_GNP_UI_FILE,
+ builder_widgets, &error) == 0) {
+ g_warning ("Could not load location dialog: %s",
+ error->message);
+ g_error_free (error);
+ g_object_unref (builder);
+ return;
+ }
+
+ askdialog = _gtk_builder_get_widget (builder, "location_new_dialog");
+ gtk_window_set_transient_for (GTK_WINDOW (askdialog), GTK_WINDOW (parent));
+ g_signal_connect (askdialog, "response",
+ G_CALLBACK (gtk_widget_hide), NULL);
+ g_signal_connect (gtk_builder_get_object (builder, "text"), "changed",
+ G_CALLBACK (cb_location_new_text_changed), builder);
+ response = gtk_dialog_run (GTK_DIALOG (askdialog));
+ name = gtk_entry_get_text (GTK_ENTRY (gtk_builder_get_object (builder, "text")));
+ g_object_unref (builder);
+
+ if (response == GTK_RESPONSE_OK && name[0] != '\0')
+ {
+ gboolean exists;
+ gchar *current, *esc, *key;
+ esc = mateconf_escape_key (name, -1);
+ key = g_strconcat (LOCATION_DIR "/", esc, NULL);
+ g_free (esc);
+
+ current = get_current_location (client);
+
+ exists = (strcmp (current, name) == 0) ||
+ mateconf_client_dir_exists (client, key, NULL);
+
+ g_free (key);
+
+ if (!exists)
+ {
+ esc = mateconf_escape_key (current, -1);
+ g_free (current);
+ key = g_strconcat (LOCATION_DIR "/", esc, NULL);
+ g_free (esc);
+
+ copy_location ("", key, client);
+ g_free (key);
+
+ mateconf_client_set_string (client, CURRENT_LOCATION, name, NULL);
+ update_locations (client, capplet_builder);
+ }
+ else
+ {
+ GtkWidget *err = gtk_message_dialog_new (GTK_WINDOW (askdialog),
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_CLOSE,
+ _("Location already exists"));
+ gtk_dialog_run (GTK_DIALOG (err));
+ gtk_widget_destroy (err);
+
+ /* switch back to the currently selected location */
+ mateconf_client_notify (client, CURRENT_LOCATION);
+ }
+ }
+ else
+ {
+ /* switch back to the currently selected location */
+ mateconf_client_notify (client, CURRENT_LOCATION);
+ }
+ gtk_widget_destroy (askdialog);
+ g_object_unref (client);
+}
+
+static void
+cb_location_changed (GtkWidget *location,
+ GtkBuilder *builder)
+{
+ gchar *current;
+ gchar *name = gtk_combo_box_get_active_text (GTK_COMBO_BOX (location));
+ MateConfClient *client;
+
+ if (name == NULL)
+ return;
+
+ client = mateconf_client_get_default ();
+
+ current = get_current_location (client);
+
+ if (strcmp (current, name) != 0)
+ {
+ if (strcmp (name, _("New Location...")) == 0)
+ {
+ location_new (builder, _gtk_builder_get_widget (builder, "network_dialog"));
+ }
+ else
+ {
+ gchar *key, *esc;
+
+ /* save current settings */
+ esc = mateconf_escape_key (current, -1);
+ key = g_strconcat (LOCATION_DIR "/", esc, NULL);
+ g_free (esc);
+
+ copy_location ("", key, client);
+ g_free (key);
+
+ /* load settings */
+ esc = mateconf_escape_key (name, -1);
+ key = g_strconcat (LOCATION_DIR "/", esc, NULL);
+ g_free (esc);
+
+ copy_location (key, "", client);
+ mateconf_client_recursive_unset (client, key,
+ MATECONF_UNSET_INCLUDING_SCHEMA_NAMES, NULL);
+ g_free (key);
+
+ mateconf_client_set_string (client, CURRENT_LOCATION, name, NULL);
+ }
+ }
+
+ g_free (current);
+ g_free (name);
+ g_object_unref (client);
+}
+
+static void
+cb_delete_button_clicked (GtkWidget *button,
+ GtkBuilder *builder)
+{
+ MateConfClient *client;
+ GtkComboBox *box = GTK_COMBO_BOX (gtk_builder_get_object (builder,
+ "location_combobox"));
+ int active = gtk_combo_box_get_active (box);
+ gchar *current, *key, *esc;
+
+ /* prevent the current settings from being saved by blocking
+ * the signal handler */
+ g_signal_handlers_block_by_func (box, cb_location_changed, builder);
+ gtk_combo_box_set_active (box, (active == 0) ? 1 : 0);
+ gtk_combo_box_remove_text (box, active);
+ g_signal_handlers_unblock_by_func (box, cb_location_changed, builder);
+
+ /* set the new location */
+ client = mateconf_client_get_default ();
+ current = gtk_combo_box_get_active_text (box);
+
+ esc = mateconf_escape_key (current, -1);
+ key = g_strconcat (LOCATION_DIR "/", esc, NULL);
+ g_free (esc);
+
+ copy_location (key, "", client);
+ mateconf_client_recursive_unset (client, key,
+ MATECONF_UNSET_INCLUDING_SCHEMA_NAMES, NULL);
+ mateconf_client_suggest_sync (client, NULL);
+ g_free (key);
+
+ mateconf_client_set_string (client, CURRENT_LOCATION, current, NULL);
+
+ g_free (current);
+
+ g_object_unref (client);
+}
+
+/* When using the same proxy for all protocols, updates every host_entry
+ * as the user types along */
+static void
+synchronize_hosts (GtkEntry *widget,
+ GtkBuilder *builder)
+{
+ const gchar *hosts[] = {
+ "secure_host_entry",
+ "ftp_host_entry",
+ "socks_host_entry",
+ NULL };
+ const gchar **host, *http_host;
+
+ http_host = gtk_entry_get_text (widget);
+
+ for (host = hosts; *host != NULL; ++host)
+ {
+ widget = GTK_ENTRY (gtk_builder_get_object (builder, *host));
+ gtk_entry_set_text (widget, http_host);
+ }
+}
+
+/* When using the same proxy for all protocols, copies the value of the
+ * http port to the other spinbuttons */
+static void
+synchronize_ports (GtkSpinButton *widget,
+ GtkBuilder *builder)
+{
+ const gchar *ports[] = {
+ "secure_port_spinbutton",
+ "ftp_port_spinbutton",
+ "socks_port_spinbutton",
+ NULL };
+ gdouble http_port;
+ const gchar **port;
+
+ http_port = gtk_spin_button_get_value (widget);
+
+ for (port = ports; *port != NULL; ++port)
+ {
+ widget = GTK_SPIN_BUTTON (
+ gtk_builder_get_object (builder, *port));
+ gtk_spin_button_set_value (widget, http_port);
+ }
+}
+
+/* Synchronizes all hosts and ports */
+static void
+synchronize_entries (GtkBuilder *builder)
+{
+ g_signal_connect (
+ gtk_builder_get_object (builder, "http_host_entry"),
+ "changed",
+ G_CALLBACK (synchronize_hosts),
+ builder);
+ g_signal_connect (
+ gtk_builder_get_object (builder, "http_port_spinbutton"),
+ "value-changed",
+ G_CALLBACK (synchronize_ports),
+ builder);
+}
+
+/* Unsynchronize hosts and ports */
+static void
+unsynchronize_entries (GtkBuilder *builder)
+{
+ g_signal_handlers_disconnect_by_func (
+ gtk_builder_get_object (builder, "http_host_entry"),
+ synchronize_hosts,
+ builder);
+ g_signal_handlers_disconnect_by_func (
+ gtk_builder_get_object (builder, "http_port_spinbutton"),
+ synchronize_ports,
+ builder);
+}
+
+static void
+cb_use_same_proxy_checkbutton_clicked (GtkWidget *checkbutton,
+ GtkBuilder *builder)
+{
+ MateConfClient *client;
+ gboolean same_proxy;
+ gchar *http_proxy;
+ gint http_port;
+ gchar *host;
+
+ client = mateconf_client_get_default ();
+ same_proxy = mateconf_client_get_bool (client, USE_SAME_PROXY_KEY, NULL);
+
+ http_proxy = mateconf_client_get_string (client, HTTP_PROXY_HOST_KEY, NULL);
+ http_port = mateconf_client_get_int (client, HTTP_PROXY_PORT_KEY, NULL);
+
+ if (same_proxy)
+ {
+ /* Save the old values */
+ host = mateconf_client_get_string (client, SECURE_PROXY_HOST_KEY, NULL);
+ mateconf_client_set_string (client, OLD_SECURE_PROXY_HOST_KEY, host, NULL);
+ mateconf_client_set_int (client, OLD_SECURE_PROXY_PORT_KEY,
+ mateconf_client_get_int (client, SECURE_PROXY_PORT_KEY, NULL), NULL);
+ g_free (host);
+
+ host = mateconf_client_get_string (client, FTP_PROXY_HOST_KEY, NULL);
+ mateconf_client_set_string (client, OLD_FTP_PROXY_HOST_KEY, host, NULL);
+ mateconf_client_set_int (client, OLD_FTP_PROXY_PORT_KEY,
+ mateconf_client_get_int (client, FTP_PROXY_PORT_KEY, NULL), NULL);
+ g_free (host);
+
+ host = mateconf_client_get_string (client, SOCKS_PROXY_HOST_KEY, NULL);
+ mateconf_client_set_string (client, OLD_SOCKS_PROXY_HOST_KEY, host, NULL);
+ mateconf_client_set_int (client, OLD_SOCKS_PROXY_PORT_KEY,
+ mateconf_client_get_int (client, SOCKS_PROXY_PORT_KEY, NULL), NULL);
+ g_free (host);
+
+ /* Set the new values */
+ mateconf_client_set_string (client, SECURE_PROXY_HOST_KEY, http_proxy, NULL);
+ mateconf_client_set_int (client, SECURE_PROXY_PORT_KEY, http_port, NULL);
+
+ mateconf_client_set_string (client, FTP_PROXY_HOST_KEY, http_proxy, NULL);
+ mateconf_client_set_int (client, FTP_PROXY_PORT_KEY, http_port, NULL);
+
+ mateconf_client_set_string (client, SOCKS_PROXY_HOST_KEY, http_proxy, NULL);
+ mateconf_client_set_int (client, SOCKS_PROXY_PORT_KEY, http_port, NULL);
+
+ /* Synchronize entries */
+ synchronize_entries (builder);
+ }
+ else
+ {
+ host = mateconf_client_get_string (client, OLD_SECURE_PROXY_HOST_KEY, NULL);
+ mateconf_client_set_string (client, SECURE_PROXY_HOST_KEY, host, NULL);
+ mateconf_client_set_int (client, SECURE_PROXY_PORT_KEY,
+ mateconf_client_get_int (client, OLD_SECURE_PROXY_PORT_KEY, NULL), NULL);
+ g_free (host);
+
+ host = mateconf_client_get_string (client, OLD_FTP_PROXY_HOST_KEY, NULL);
+ mateconf_client_set_string (client, FTP_PROXY_HOST_KEY, host, NULL);
+ mateconf_client_set_int (client, FTP_PROXY_PORT_KEY,
+ mateconf_client_get_int (client, OLD_FTP_PROXY_PORT_KEY, NULL), NULL);
+ g_free (host);
+
+ host = mateconf_client_get_string (client, OLD_SOCKS_PROXY_HOST_KEY, NULL);
+ mateconf_client_set_string (client, SOCKS_PROXY_HOST_KEY, host, NULL);
+ mateconf_client_set_int (client, SOCKS_PROXY_PORT_KEY,
+ mateconf_client_get_int (client, OLD_SOCKS_PROXY_PORT_KEY, NULL), NULL);
+ g_free (host);
+
+ /* Hosts and ports should not be synchronized any more */
+ unsynchronize_entries (builder);
+ }
+
+ /* Set the proxy entries insensitive if we are using the same proxy for all */
+ gtk_widget_set_sensitive (_gtk_builder_get_widget (builder,
+ "secure_host_entry"),
+ !same_proxy);
+ gtk_widget_set_sensitive (_gtk_builder_get_widget (builder,
+ "secure_port_spinbutton"),
+ !same_proxy);
+ gtk_widget_set_sensitive (_gtk_builder_get_widget (builder,
+ "ftp_host_entry"),
+ !same_proxy);
+ gtk_widget_set_sensitive (_gtk_builder_get_widget (builder,
+ "ftp_port_spinbutton"),
+ !same_proxy);
+ gtk_widget_set_sensitive (_gtk_builder_get_widget (builder,
+ "socks_host_entry"),
+ !same_proxy);
+ gtk_widget_set_sensitive (_gtk_builder_get_widget (builder,
+ "socks_port_spinbutton"),
+ !same_proxy);
+
+ g_object_unref (client);
+}
+
+static gchar *
+get_hostname_from_uri (const gchar *uri)
+{
+ const gchar *start, *end;
+ gchar *host;
+
+ if (uri == NULL)
+ return NULL;
+
+ /* skip the scheme part */
+ start = strchr (uri, ':');
+ if (start == NULL)
+ return NULL;
+
+ /* forward until after the last '/' */
+ do {
+ ++start;
+ } while (*start == '/');
+
+ if (*start == '\0')
+ return NULL;
+
+ /* maybe we have a port? */
+ end = strchr (start, ':');
+ if (end == NULL)
+ end = strchr (start, '/');
+
+ if (end != NULL)
+ host = g_strndup (start, end - start);
+ else
+ host = g_strdup (start);
+
+ return host;
+}
+
+static MateConfValue *
+extract_proxy_host (MateConfPropertyEditor *peditor, const MateConfValue *orig)
+{
+ char const *entered_text = mateconf_value_get_string (orig);
+ MateConfValue *res = NULL;
+
+ if (entered_text != NULL) {
+ gchar *host = get_hostname_from_uri (entered_text);
+
+ if (host != NULL) {
+ res = mateconf_value_new (MATECONF_VALUE_STRING);
+ mateconf_value_set_string (res, host);
+ g_free (host);
+ }
+ }
+
+ return (res != NULL) ? res : mateconf_value_copy (orig);
+}
+
+static void
+proxy_mode_radiobutton_clicked_cb (GtkWidget *widget,
+ GtkBuilder *builder)
+{
+ GSList *mode_group;
+ int mode;
+ MateConfClient *client;
+
+ if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(widget)))
+ return;
+
+ mode_group = g_slist_copy (gtk_radio_button_get_group
+ (GTK_RADIO_BUTTON (gtk_builder_get_object (builder, "none_radiobutton"))));
+ mode_group = g_slist_reverse (mode_group);
+ mode = g_slist_index (mode_group, widget);
+ g_slist_free (mode_group);
+
+ gtk_widget_set_sensitive (_gtk_builder_get_widget (builder, "manual_box"),
+ mode == PROXYMODE_MANUAL);
+ gtk_widget_set_sensitive (_gtk_builder_get_widget (builder, "same_proxy_checkbutton"),
+ mode == PROXYMODE_MANUAL);
+ gtk_widget_set_sensitive (_gtk_builder_get_widget (builder, "auto_box"),
+ mode == PROXYMODE_AUTO);
+ client = mateconf_client_get_default ();
+ mateconf_client_set_bool (client, USE_PROXY_KEY,
+ mode == PROXYMODE_AUTO || mode == PROXYMODE_MANUAL, NULL);
+ g_object_unref (client);
+}
+
+static void
+connect_sensitivity_signals (GtkBuilder *builder, GSList *mode_group)
+{
+ for (; mode_group != NULL; mode_group = mode_group->next)
+ {
+ g_signal_connect (G_OBJECT (mode_group->data), "clicked",
+ G_CALLBACK(proxy_mode_radiobutton_clicked_cb),
+ builder);
+ }
+}
+
+static void
+cb_ignore_hosts_mateconf_changed (MateConfClient *client, guint cnxn_id,
+ MateConfEntry *entry, gpointer user_data)
+{
+ g_slist_foreach (ignore_hosts, (GFunc) g_free, NULL);
+ g_slist_free (ignore_hosts);
+
+ ignore_hosts = mateconf_client_get_list (client, IGNORE_HOSTS_KEY,
+ MATECONF_VALUE_STRING, NULL);
+
+ populate_listmodel (GTK_LIST_STORE (model), ignore_hosts);
+}
+
+static void
+setup_dialog (GtkBuilder *builder)
+{
+ MateConfPropertyEditor *peditor;
+ GSList *mode_group;
+ GType mode_type = 0;
+ MateConfClient *client;
+ gint port_value;
+ GtkWidget *location_box, *same_proxy_toggle;
+ GtkCellRenderer *location_renderer;
+ GtkListStore *store;
+
+ mode_type = g_enum_register_static ("NetworkPreferencesProxyType",
+ proxytype_values);
+
+ client = mateconf_client_get_default ();
+
+ /* Locations */
+ location_box = _gtk_builder_get_widget (builder, "location_combobox");
+ store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_INT);
+ gtk_combo_box_set_model (GTK_COMBO_BOX (location_box), GTK_TREE_MODEL (store));
+
+ update_locations (client, builder);
+ mateconf_client_add_dir (client, LOCATION_DIR, MATECONF_CLIENT_PRELOAD_ONELEVEL, NULL);
+ mateconf_client_notify_add (client, CURRENT_LOCATION, (MateConfClientNotifyFunc) cb_current_location, builder, NULL, NULL);
+
+ mateconf_client_notify_add (client, IGNORE_HOSTS_KEY, cb_ignore_hosts_mateconf_changed, NULL, NULL, NULL);
+
+ g_signal_connect (location_box, "changed", G_CALLBACK (cb_location_changed), builder);
+ g_signal_connect (gtk_builder_get_object (builder, "delete_button"), "clicked", G_CALLBACK (cb_delete_button_clicked), builder);
+
+ location_renderer = gtk_cell_renderer_text_new ();
+ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (location_box), location_renderer, TRUE);
+ gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (location_box),
+ location_renderer,
+ "text", COL_NAME,
+ "style", COL_STYLE, NULL);
+
+ /* Mode */
+ mode_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (gtk_builder_get_object (builder, "none_radiobutton")));
+ connect_sensitivity_signals (builder, mode_group);
+
+ peditor = MATECONF_PROPERTY_EDITOR (mateconf_peditor_new_select_radio_with_enum (NULL,
+ PROXY_MODE_KEY, mode_group, mode_type,
+ TRUE, NULL));
+
+ /* Use same proxy for all protocols */
+ same_proxy_toggle = _gtk_builder_get_widget (builder, "same_proxy_checkbutton");
+ peditor = MATECONF_PROPERTY_EDITOR (mateconf_peditor_new_boolean (NULL,
+ USE_SAME_PROXY_KEY, same_proxy_toggle, NULL));
+
+ g_signal_connect (same_proxy_toggle,
+ "toggled",
+ G_CALLBACK (cb_use_same_proxy_checkbutton_clicked),
+ builder);
+
+ /* Http */
+ port_value = mateconf_client_get_int (client, HTTP_PROXY_PORT_KEY, NULL);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object (builder, "http_port_spinbutton")), (gdouble) port_value);
+ peditor = MATECONF_PROPERTY_EDITOR (mateconf_peditor_new_string (
+ NULL, HTTP_PROXY_HOST_KEY, _gtk_builder_get_widget (builder, "http_host_entry"),
+ "conv-from-widget-cb", extract_proxy_host,
+ NULL));
+ peditor = MATECONF_PROPERTY_EDITOR (mateconf_peditor_new_integer (
+ NULL, HTTP_PROXY_PORT_KEY,
+ _gtk_builder_get_widget (builder, "http_port_spinbutton"),
+ NULL));
+ g_signal_connect (gtk_builder_get_object (builder, "details_button"),
+ "clicked",
+ G_CALLBACK (cb_http_details_button_clicked),
+ _gtk_builder_get_widget (builder, "network_dialog"));
+
+ /* Secure */
+ port_value = mateconf_client_get_int (client, SECURE_PROXY_PORT_KEY, NULL);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object (builder, "secure_port_spinbutton")), (gdouble) port_value);
+ peditor = MATECONF_PROPERTY_EDITOR (mateconf_peditor_new_string (
+ NULL, SECURE_PROXY_HOST_KEY,
+ _gtk_builder_get_widget (builder, "secure_host_entry"),
+ "conv-from-widget-cb", extract_proxy_host,
+ NULL));
+ peditor = MATECONF_PROPERTY_EDITOR (mateconf_peditor_new_integer (
+ NULL, SECURE_PROXY_PORT_KEY,
+ _gtk_builder_get_widget (builder, "secure_port_spinbutton"),
+ NULL));
+
+ /* Ftp */
+ port_value = mateconf_client_get_int (client, FTP_PROXY_PORT_KEY, NULL);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object (builder, "ftp_port_spinbutton")), (gdouble) port_value);
+ peditor = MATECONF_PROPERTY_EDITOR (mateconf_peditor_new_string (
+ NULL, FTP_PROXY_HOST_KEY,
+ _gtk_builder_get_widget (builder, "ftp_host_entry"),
+ "conv-from-widget-cb", extract_proxy_host,
+ NULL));
+ peditor = MATECONF_PROPERTY_EDITOR (mateconf_peditor_new_integer (
+ NULL, FTP_PROXY_PORT_KEY,
+ _gtk_builder_get_widget (builder, "ftp_port_spinbutton"),
+ NULL));
+
+ /* Socks */
+ port_value = mateconf_client_get_int (client, SOCKS_PROXY_PORT_KEY, NULL);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object (builder, "socks_port_spinbutton")), (gdouble) port_value);
+ peditor = MATECONF_PROPERTY_EDITOR (mateconf_peditor_new_string (
+ NULL, SOCKS_PROXY_HOST_KEY,
+ _gtk_builder_get_widget (builder, "socks_host_entry"),
+ "conv-from-widget-cb", extract_proxy_host,
+ NULL));
+ peditor = MATECONF_PROPERTY_EDITOR (mateconf_peditor_new_integer (
+ NULL, SOCKS_PROXY_PORT_KEY,
+ _gtk_builder_get_widget (builder, "socks_port_spinbutton"),
+ NULL));
+
+ /* Set the proxy entries insensitive if we are using the same proxy for all,
+ and make sure they are all synchronized */
+ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (same_proxy_toggle)))
+ {
+ gtk_widget_set_sensitive (_gtk_builder_get_widget (builder, "secure_host_entry"), FALSE);
+ gtk_widget_set_sensitive (_gtk_builder_get_widget (builder, "secure_port_spinbutton"), FALSE);
+ gtk_widget_set_sensitive (_gtk_builder_get_widget (builder, "ftp_host_entry"), FALSE);
+ gtk_widget_set_sensitive (_gtk_builder_get_widget (builder, "ftp_port_spinbutton"), FALSE);
+ gtk_widget_set_sensitive (_gtk_builder_get_widget (builder, "socks_host_entry"), FALSE);
+ gtk_widget_set_sensitive (_gtk_builder_get_widget (builder, "socks_port_spinbutton"), FALSE);
+
+ synchronize_entries (builder);
+ }
+
+ /* Autoconfiguration */
+ peditor = MATECONF_PROPERTY_EDITOR (mateconf_peditor_new_string (
+ NULL, PROXY_AUTOCONFIG_URL_KEY,
+ _gtk_builder_get_widget (builder, "autoconfig_entry"),
+ NULL));
+
+ g_signal_connect (gtk_builder_get_object (builder, "network_dialog"),
+ "response", G_CALLBACK (cb_dialog_response), NULL);
+
+
+ ignore_hosts = mateconf_client_get_list(client, IGNORE_HOSTS_KEY, MATECONF_VALUE_STRING, NULL);
+ g_object_unref (client);
+
+ model = create_listmodel();
+ populate_listmodel(GTK_LIST_STORE(model), ignore_hosts);
+ config_treeview(GTK_TREE_VIEW(gtk_builder_get_object (builder, "treeview_ignore_host")), model);
+
+ g_signal_connect (gtk_builder_get_object (builder, "button_add_url"),
+ "clicked", G_CALLBACK (cb_add_url), builder);
+ g_signal_connect (gtk_builder_get_object (builder, "entry_url"),
+ "activate", G_CALLBACK (cb_add_url), builder);
+ g_signal_connect (gtk_builder_get_object (builder, "button_remove_url"),
+ "clicked", G_CALLBACK (cb_remove_url), builder);
+}
+
+int
+main (int argc, char **argv)
+{
+ GtkBuilder *builder;
+ GError *error = NULL;
+ gchar *builder_widgets[] = {"network_dialog", "adjustment1",
+ "adjustment2", "adjustment3", "adjustment4",
+ "delete_button_img", NULL};
+ MateConfClient *client;
+ GtkWidget *widget;
+
+ bindtextdomain (GETTEXT_PACKAGE, MATELOCALEDIR);
+ bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+ textdomain (GETTEXT_PACKAGE);
+
+ gtk_init (&argc, &argv);
+
+ client = mateconf_client_get_default ();
+ mateconf_client_add_dir (client, "/system/http_proxy",
+ MATECONF_CLIENT_PRELOAD_ONELEVEL, NULL);
+ mateconf_client_add_dir (client, "/system/proxy",
+ MATECONF_CLIENT_PRELOAD_ONELEVEL, NULL);
+
+ builder = gtk_builder_new ();
+ if (gtk_builder_add_objects_from_file (builder, MATECC_GNP_UI_FILE,
+ builder_widgets, &error) == 0) {
+ g_warning ("Could not load main dialog: %s",
+ error->message);
+ g_error_free (error);
+ g_object_unref (builder);
+ g_object_unref (client);
+ return (EXIT_FAILURE);
+ }
+
+ setup_dialog (builder);
+ widget = _gtk_builder_get_widget (builder, "network_dialog");
+ capplet_set_icon (widget, "mate-network-properties");
+ gtk_widget_show_all (widget);
+ gtk_main ();
+
+ g_object_unref (builder);
+ g_object_unref (client);
+
+ return 0;
+}
diff --git a/capplets/network/mate-network-properties.desktop.in.in b/capplets/network/mate-network-properties.desktop.in.in
new file mode 100644
index 00000000..e16b3d09
--- /dev/null
+++ b/capplets/network/mate-network-properties.desktop.in.in
@@ -0,0 +1,14 @@
+[Desktop Entry]
+_Name=Network Proxy
+_Comment=Set your network proxy preferences
+Exec=mate-network-properties
+Icon=mate-network-properties
+Terminal=false
+Type=Application
+StartupNotify=true
+Categories=MATE;GTK;Settings;X-MATE-NetworkSettings;
+OnlyShowIn=MATE;
+X-MATE-Bugzilla-Bugzilla=MATE
+X-MATE-Bugzilla-Product=mate-control-center
+X-MATE-Bugzilla-Component=network preferences
+X-MATE-Bugzilla-Version=@VERSION@
diff --git a/capplets/network/mate-network-properties.ui b/capplets/network/mate-network-properties.ui
new file mode 100644
index 00000000..29c3c3e1
--- /dev/null
+++ b/capplets/network/mate-network-properties.ui
@@ -0,0 +1,1056 @@
+<?xml version="1.0"?>
+<interface>
+ <requires lib="gtk+" version="2.16"/>
+ <!-- interface-naming-policy toplevel-contextual -->
+ <object class="GtkDialog" id="network_dialog">
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">Network Proxy Preferences</property>
+ <property name="resizable">False</property>
+ <property name="type_hint">dialog</property>
+ <property name="has_separator">False</property>
+ <child internal-child="vbox">
+ <object class="GtkVBox" id="dialog-vbox1">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkAlignment" id="alignment1">
+ <property name="xscale">0</property>
+ <child>
+ <object class="GtkHBox" id="hbox2">
+ <property name="visible">True</property>
+ <property name="spacing">3</property>
+ <child>
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">Location:</property>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="location_combobox">
+ <property name="visible">True</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkNotebook" id="notebook1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="border_width">5</property>
+ <child>
+ <object class="GtkVBox" id="vbox1">
+ <property name="visible">True</property>
+ <property name="border_width">12</property>
+ <property name="spacing">18</property>
+ <child>
+ <object class="GtkRadioButton" id="none_radiobutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <child>
+ <object class="GtkLabel" id="label4">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Di_rect internet connection&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="no_direct_vbox">
+ <property name="visible">True</property>
+ <property name="spacing">18</property>
+ <child>
+ <object class="GtkVBox" id="manual_vbox">
+ <property name="visible">True</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkRadioButton" id="manual_radiobutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">none_radiobutton</property>
+ <child>
+ <object class="GtkLabel" id="label3">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;_Manual proxy configuration&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="same_proxy_checkbutton">
+ <property name="label" translatable="yes">_Use the same proxy for all protocols</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="manual_box">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <child>
+ <object class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="label"> </property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkTable" id="manual_table">
+ <property name="visible">True</property>
+ <property name="n_rows">4</property>
+ <property name="n_columns">5</property>
+ <property name="column_spacing">12</property>
+ <property name="row_spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="label6">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">H_TTP proxy:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">http_host_entry</property>
+ </object>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label7">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">_Secure HTTP proxy:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">secure_host_entry</property>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label8">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">_FTP proxy:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">ftp_host_entry</property>
+ </object>
+ <packing>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label9">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">S_ocks host:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">socks_host_entry</property>
+ </object>
+ <packing>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="http_host_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="secure_host_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="ftp_host_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="socks_host_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label10">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Port:</property>
+ <accessibility>
+ <relation type="label-for" target="http_port_spinbutton"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label11">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Port:</property>
+ <accessibility>
+ <relation type="label-for" target="secure_port_spinbutton"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label12">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Port:</property>
+ <accessibility>
+ <relation type="label-for" target="ftp_port_spinbutton"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label13">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Port:</property>
+ <accessibility>
+ <relation type="label-for" target="socks_port_spinbutton"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="http_port_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment4</property>
+ <property name="climb_rate">1</property>
+ <accessibility>
+ <relation type="labelled-by" target="label10"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left_attach">3</property>
+ <property name="right_attach">4</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="secure_port_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment3</property>
+ <property name="climb_rate">1</property>
+ <accessibility>
+ <relation type="labelled-by" target="label11"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left_attach">3</property>
+ <property name="right_attach">4</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="ftp_port_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment2</property>
+ <property name="climb_rate">1</property>
+ <accessibility>
+ <relation type="labelled-by" target="label12"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left_attach">3</property>
+ <property name="right_attach">4</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="socks_port_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment1</property>
+ <property name="climb_rate">1</property>
+ <accessibility>
+ <relation type="labelled-by" target="label13"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left_attach">3</property>
+ <property name="right_attach">4</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="details_button">
+ <property name="label" translatable="yes">_Details</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">4</property>
+ <property name="right_attach">5</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="vbox2">
+ <property name="visible">True</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkRadioButton" id="auto_radiobutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="yalign">0.47</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">none_radiobutton</property>
+ <child>
+ <object class="GtkLabel" id="label5">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;_Automatic proxy configuration&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox1">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkLabel" id="label17">
+ <property name="visible">True</property>
+ <property name="label"> </property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="auto_box">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkLabel" id="label18">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Autoconfiguration _URL:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">autoconfig_entry</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="autoconfig_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label20">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Proxy Configuration</property>
+ </object>
+ <packing>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="vbox4">
+ <property name="visible">True</property>
+ <property name="border_width">12</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="label_ignore_host">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Ignore Host List</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox4">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkLabel" id="label22">
+ <property name="visible">True</property>
+ <property name="label"> </property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkTable" id="table1">
+ <property name="visible">True</property>
+ <property name="n_rows">2</property>
+ <property name="n_columns">2</property>
+ <property name="column_spacing">12</property>
+ <property name="row_spacing">6</property>
+ <child>
+ <object class="GtkEntry" id="entry_url">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </object>
+ <packing>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_add_url">
+ <property name="label">gtk-add</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">automatic</property>
+ <property name="vscrollbar_policy">automatic</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <object class="GtkTreeView" id="treeview_ignore_host">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="headers_visible">False</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment2">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0</property>
+ <property name="yscale">0</property>
+ <child>
+ <object class="GtkHBox" id="hbox3">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkButton" id="button_remove_url">
+ <property name="label">gtk-remove</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label21">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Ignored Hosts</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child internal-child="action_area">
+ <object class="GtkHButtonBox" id="dialog-action_area1">
+ <property name="visible">True</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="helpbutton1">
+ <property name="label">gtk-help</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="delete_button">
+ <property name="label" translatable="yes">_Delete Location</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="image">delete_button_img</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="closebutton1">
+ <property name="label">gtk-close</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="-11">helpbutton1</action-widget>
+ <action-widget response="0">delete_button</action-widget>
+ <action-widget response="-7">closebutton1</action-widget>
+ </action-widgets>
+ </object>
+ <object class="GtkDialog" id="details_dialog">
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">HTTP Proxy Details</property>
+ <property name="resizable">False</property>
+ <property name="type_hint">dialog</property>
+ <property name="has_separator">False</property>
+ <child internal-child="vbox">
+ <object class="GtkVBox" id="dialog-vbox2">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkVBox" id="vbox3">
+ <property name="visible">True</property>
+ <property name="border_width">5</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkCheckButton" id="use_auth_checkbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <child>
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;_Use authentication&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox3">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkLabel" id="label19">
+ <property name="visible">True</property>
+ <property name="label"> </property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkTable" id="auth_table">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="n_rows">2</property>
+ <property name="n_columns">2</property>
+ <property name="column_spacing">12</property>
+ <property name="row_spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="label15">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">U_sername:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">username_entry</property>
+ </object>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label16">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">_Password:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">password_entry</property>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="password_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="visibility">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="username_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child internal-child="action_area">
+ <object class="GtkHButtonBox" id="dialog-action_area2">
+ <property name="visible">True</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="helpbutton2">
+ <property name="label">gtk-help</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="closebutton2">
+ <property name="label">gtk-close</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="-11">helpbutton2</action-widget>
+ <action-widget response="-7">closebutton2</action-widget>
+ </action-widgets>
+ </object>
+ <object class="GtkDialog" id="location_new_dialog">
+ <property name="border_width">6</property>
+ <property name="title" translatable="yes">Create New Location</property>
+ <property name="resizable">False</property>
+ <property name="modal">True</property>
+ <property name="destroy_with_parent">True</property>
+ <property name="type_hint">dialog</property>
+ <property name="has_separator">False</property>
+ <child internal-child="vbox">
+ <object class="GtkVBox" id="dialog-vbox1">
+ <property name="visible">True</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <object class="GtkHBox" id="hbox5">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkLabel" id="label19">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Location name:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">text</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="text">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="activates_default">True</property>
+ </object>
+ <packing>
+ <property name="padding">6</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="error_label">
+ <property name="label" translatable="yes">The location already exists.</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child internal-child="action_area">
+ <object class="GtkHButtonBox" id="dialog-action_area1">
+ <property name="visible">True</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="new_location">
+ <property name="label" translatable="yes">C_reate</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="image">new_location_btn_img</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button2">
+ <property name="label">gtk-cancel</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="-5">new_location</action-widget>
+ <action-widget response="-6">button2</action-widget>
+ </action-widgets>
+ </object>
+ <object class="GtkAdjustment" id="adjustment1">
+ <property name="upper">65535</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment2">
+ <property name="upper">65535</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment3">
+ <property name="upper">65535</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment4">
+ <property name="upper">65535</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkImage" id="new_location_btn_img">
+ <property name="visible">True</property>
+ <property name="stock">gtk-add</property>
+ </object>
+ <object class="GtkImage" id="delete_button_img">
+ <property name="visible">True</property>
+ <property name="stock">gtk-delete</property>
+ </object>
+</interface>