Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Berg <benjamin@sipsolutions.net>2011-10-02 17:04:20 (GMT)
committer Benjamin Berg <benjamin@sipsolutions.net>2011-10-02 17:04:20 (GMT)
commit8b7663e85e20025afc08c5821849534cd7b3ac5b (patch)
tree920c4667aaad952e8b4d77cc21259db7d3220c09
parent0f2baa16a1314c4ec485ce382be031fe3631c9a1 (diff)
Some changes to the GTK3 theme, far from done or even being usefull.
-rw-r--r--configure.ac1
-rw-r--r--gtk3/theme/Makefile.am11
-rw-r--r--gtk3/theme/assets/Makefile.am24
-rw-r--r--gtk3/theme/assets/checkbox-checked-dark.svg268
-rw-r--r--gtk3/theme/assets/checkbox-checked-insensitive-dark.svg235
-rw-r--r--gtk3/theme/assets/checkbox-checked-insensitive.svg175
-rw-r--r--gtk3/theme/assets/checkbox-checked-scalable.svg191
-rw-r--r--gtk3/theme/assets/checkbox-checked.svg191
-rw-r--r--gtk3/theme/assets/checkbox-mixed-dark.svg320
-rw-r--r--gtk3/theme/assets/checkbox-mixed.svg250
-rw-r--r--gtk3/theme/assets/checkbox-unchecked-dark.svg263
-rw-r--r--gtk3/theme/assets/checkbox-unchecked-insensitive-dark.svg208
-rw-r--r--gtk3/theme/assets/checkbox-unchecked-insensitive.svg149
-rw-r--r--gtk3/theme/assets/checkbox-unchecked.svg168
-rw-r--r--gtk3/theme/assets/radio-mixed-dark.svg426
-rw-r--r--gtk3/theme/assets/radio-mixed.svg343
-rw-r--r--gtk3/theme/assets/radio-selected-dark.svg539
-rw-r--r--gtk3/theme/assets/radio-selected-insensitive-dark.svg243
-rw-r--r--gtk3/theme/assets/radio-selected-insensitive.svg264
-rw-r--r--gtk3/theme/assets/radio-selected.svg350
-rw-r--r--gtk3/theme/assets/radio-unselected-dark.svg412
-rw-r--r--gtk3/theme/assets/radio-unselected-insensitive-dark.svg233
-rw-r--r--gtk3/theme/assets/radio-unselected-insensitive.svg189
-rw-r--r--gtk3/theme/assets/radio-unselected.svg298
-rwxr-xr-xgtk3/theme/em.py3288
-rw-r--r--gtk3/theme/gtk-dark.css106
-rw-r--r--gtk3/theme/gtk-widgets-assets-dark.css66
-rw-r--r--gtk3/theme/gtk-widgets-assets.css65
-rw-r--r--gtk3/theme/gtk-widgets.css1252
-rw-r--r--gtk3/theme/gtk-widgets.css.em883
-rw-r--r--gtk3/theme/gtk.css12
-rw-r--r--gtk3/theme/settings.ini2
32 files changed, 4192 insertions, 7233 deletions
diff --git a/configure.ac b/configure.ac
index 55d4ff5..5d8c6aa 100644
--- a/configure.ac
+++ b/configure.ac
@@ -70,5 +70,4 @@ gtk/theme/Makefile
gtk3/Makefile
gtk3/engine/Makefile
gtk3/theme/Makefile
-gtk3/theme/assets/Makefile
])
diff --git a/gtk3/theme/Makefile.am b/gtk3/theme/Makefile.am
index 9f1ea5e..8d86bd8 100644
--- a/gtk3/theme/Makefile.am
+++ b/gtk3/theme/Makefile.am
@@ -1,14 +1,19 @@
-SUBDIRS = assets
+gtk-widgets.css: gtk-widgets.css.em
+ $(srcdir)/em.py -p $$ -D scaling=\'72\' $(srcdir)/gtk-widgets.css.em > \
+ $(top_builddir)/gtk3/theme/gtk-widgets.css
+
themedir = $(datadir)/themes/sugar/gtk-3.0
theme_DATA = \
gtk.css \
gtk-dark.css \
gtk-widgets.css \
- gtk-widgets-assets.css \
- gtk-widgets-assets-dark.css \
settings.ini
+clean:
+ $(RM) gtk-widgets.css
+
+
EXTRA_DIST = $(theme_DATA)
-include $(top_srcdir)/git.mk
diff --git a/gtk3/theme/assets/Makefile.am b/gtk3/theme/assets/Makefile.am
deleted file mode 100644
index ce4d43b..0000000
--- a/gtk3/theme/assets/Makefile.am
+++ /dev/null
@@ -1,24 +0,0 @@
-assetsdir = $(datadir)/themes/Adwaita/gtk-3.0/assets
-assets_DATA = \
- checkbox-checked.svg \
- checkbox-checked-dark.svg \
- checkbox-checked-insensitive.svg \
- checkbox-checked-insensitive-dark.svg \
- checkbox-unchecked.svg \
- checkbox-unchecked-dark.svg \
- checkbox-unchecked-insensitive.svg \
- checkbox-unchecked-insensitive-dark.svg \
- checkbox-mixed.svg \
- checkbox-mixed-dark.svg \
- radio-selected.svg \
- radio-selected-dark.svg \
- radio-selected-insensitive.svg \
- radio-selected-insensitive-dark.svg \
- radio-unselected.svg \
- radio-unselected-dark.svg \
- radio-unselected-insensitive.svg \
- radio-unselected-insensitive-dark.svg \
- radio-mixed.svg \
- radio-mixed-dark.svg
-
-EXTRA_DIST = $(assets_DATA) \ No newline at end of file
diff --git a/gtk3/theme/assets/checkbox-checked-dark.svg b/gtk3/theme/assets/checkbox-checked-dark.svg
deleted file mode 100644
index 40e88b5..0000000
--- a/gtk3/theme/assets/checkbox-checked-dark.svg
+++ /dev/null
@@ -1,268 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- id="svg814"
- version="1.1"
- inkscape:version="0.48.1 r9760"
- sodipodi:docname="checkbox-checked-scalable.svg">
- <defs
- id="defs816">
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient24133"
- id="linearGradient8394"
- gradientUnits="userSpaceOnUse"
- x1="1582.125"
- y1="201.98718"
- x2="1580.5312"
- y2="197.98718" />
- <linearGradient
- id="linearGradient24133"
- inkscape:collect="always">
- <stop
- id="stop24135"
- offset="0"
- style="stop-color:#145393;stop-opacity:1;" />
- <stop
- id="stop24137"
- offset="1"
- style="stop-color:#1b6fc5;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10354-2"
- id="linearGradient8378"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-1609.9926,-78.958432)"
- x1="1205.5752"
- y1="-186.45331"
- x2="1205.5752"
- y2="-202.34555" />
- <linearGradient
- id="linearGradient10354-2"
- inkscape:collect="always">
- <stop
- id="stop10356-2"
- offset="0"
- style="stop-color:#bcbfb8;stop-opacity:1" />
- <stop
- id="stop10358-2"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10332-5"
- id="linearGradient8380"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.84941206,0,0,0.84794288,-623.98415,-483.16392)"
- x1="260.92538"
- y1="233.77748"
- x2="260.92538"
- y2="248.97633" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient10332-5">
- <stop
- style="stop-color:#d3d7cf;stop-opacity:1"
- offset="0"
- id="stop10334-5" />
- <stop
- style="stop-color:#8f9985;stop-opacity:1"
- offset="1"
- id="stop10336-29" />
- </linearGradient>
- <linearGradient
- y2="-202.34555"
- x2="1205.5752"
- y1="-186.45331"
- x1="1205.5752"
- gradientTransform="translate(-1609.9926,-78.958432)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient3951"
- xlink:href="#linearGradient10354-2"
- inkscape:collect="always" />
- <linearGradient
- y2="248.97633"
- x2="260.92538"
- y1="233.77748"
- x1="260.92538"
- gradientTransform="matrix(0.84941206,0,0,0.84794288,-623.98415,-483.16392)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient3953"
- xlink:href="#linearGradient10332-5"
- inkscape:collect="always" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3859"
- id="linearGradient3977"
- gradientUnits="userSpaceOnUse"
- x1="-403.46503"
- y1="-280.60101"
- x2="-403.46503"
- y2="-273.35056" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3859">
- <stop
- style="stop-color:#282828;stop-opacity:1;"
- offset="0"
- id="stop3861" />
- <stop
- style="stop-color:#151515;stop-opacity:1"
- offset="1"
- id="stop3863" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3979"
- id="linearGradient4451"
- gradientUnits="userSpaceOnUse"
- x1="1576.6082"
- y1="196.56967"
- x2="1576.6082"
- y2="207.28766" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3979">
- <stop
- style="stop-color:#ce5c00;stop-opacity:1;"
- offset="0"
- id="stop3981" />
- <stop
- style="stop-color:#7d3800;stop-opacity:1"
- offset="1"
- id="stop3983" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4123"
- id="linearGradient4291"
- gradientUnits="userSpaceOnUse"
- x1="1575.5826"
- y1="206.14095"
- x2="1575.5826"
- y2="198.12938" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient4123">
- <stop
- style="stop-color:#e27000;stop-opacity:1"
- offset="0"
- id="stop4125" />
- <stop
- style="stop-color:#ff8c1b;stop-opacity:1"
- offset="1"
- id="stop4127" />
- </linearGradient>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="0.62928391"
- inkscape:cy="4.476232"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- borderlayer="true"
- inkscape:showpageshadow="false"
- inkscape:window-width="894"
- inkscape:window-height="914"
- inkscape:window-x="1600"
- inkscape:window-y="0"
- inkscape:window-maximized="0">
- <inkscape:grid
- type="xygrid"
- id="grid4084"
- empspacing="5"
- visible="true"
- enabled="true"
- snapvisiblegridlinesonly="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata819">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- id="layer1-9"
- inkscape:label="Layer 1">
- <g
- style="enable-background:new"
- id="g16853"
- transform="translate(410.00739,765.00002)">
- <rect
- transform="scale(1,-1)"
- style="opacity:0.1;color:#000000;fill:none;stroke:#ffffff;stroke-width:1;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="rect5025"
- width="11.042357"
- height="11.023263"
- x="-409.50739"
- y="-285.86218"
- rx="1.6105907"
- ry="1.6105907" />
- <rect
- ry="1.6105907"
- rx="1.6105907"
- y="-284.86218"
- x="-409.50739"
- height="11.023263"
- width="11.042357"
- id="rect6506"
- style="color:#000000;fill:url(#linearGradient3977);fill-opacity:1;fill-rule:nonzero;stroke:#131516;stroke-width:1;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- transform="scale(1,-1)" />
- </g>
- <g
- style="display:inline;enable-background:new"
- id="g24757"
- transform="translate(-1568.9928,841.00002)">
- <path
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:url(#linearGradient4451);fill-opacity:1;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ahem;-inkscape-font-specification:Ahem"
- d="m 1581.484,197.57451 -5.9527,5.49523 -1.5385,-1.70756 c -0.5675,-0.68154 -1.6986,-0.0737 -2.1043,0.84246 -0.3576,0.80771 -0.263,2.10509 0.2918,2.72004 l 2.3824,2.53125 c 0.3844,0.47604 1.1988,0.53546 1.7814,-0.0313 l 6.9309,-6.67011 c 0.8412,-0.89696 0.6398,-2.23127 0.2214,-2.8846 -0.4925,-0.76903 -1.4327,-0.78265 -2.0124,-0.29546 z m 0.1111,0.94016 1.1079,1.41031 -6.922,6.4375 -0.5937,0 -2.1875,-2.1875 0.1563,-1.45312 0.5312,-0.23438 1.4687,1.21875 0.3438,0.34375 0.2002,0.25 z"
- id="path24115"
- sodipodi:nodetypes="cccsccccsccccccccccccc"
- inkscape:connector-curvature="0" />
- <path
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#fcaf3e;fill-opacity:1;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ahem;-inkscape-font-specification:Ahem"
- d="m 1581.7056,198.35054 -6.2213,5.69077 -1.675,-1.75016 c -0.2927,-0.26248 -0.7322,1.5e-4 -0.8428,0.33163 l 0.028,1.54287 1.818,1.8656 7.9844,-7.53125 c -0.2564,-0.46127 -0.6632,-0.48234 -1.0915,-0.14946 z"
- id="path24119"
- sodipodi:nodetypes="cccccccc"
- inkscape:connector-curvature="0" />
- <path
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:url(#linearGradient4291);fill-opacity:1;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ahem;-inkscape-font-specification:Ahem"
- d="m 1582.7969,198.5 -7.3077,6.86432 -2.5348,-2.78466 c 0,0 -0.5675,0.90691 0.019,1.58656 l 2.1532,2.25362 c 0.1546,0.17678 0.4665,0.12213 0.6654,-0.0104 l 6.9002,-6.47188 c 0.5082,-0.50823 0.1094,-1.43751 0.1094,-1.43751 l 2e-4,0 z"
- id="path24117"
- sodipodi:nodetypes="cccccccccc"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- </g>
-</svg>
diff --git a/gtk3/theme/assets/checkbox-checked-insensitive-dark.svg b/gtk3/theme/assets/checkbox-checked-insensitive-dark.svg
deleted file mode 100644
index 0bc65b8..0000000
--- a/gtk3/theme/assets/checkbox-checked-insensitive-dark.svg
+++ /dev/null
@@ -1,235 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- id="svg814"
- version="1.1"
- inkscape:version="0.48.1 r9760"
- sodipodi:docname="checkbox-unchecked-dark.svg">
- <defs
- id="defs816">
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient24133"
- id="linearGradient8394"
- gradientUnits="userSpaceOnUse"
- x1="1582.125"
- y1="201.98718"
- x2="1580.5312"
- y2="197.98718" />
- <linearGradient
- id="linearGradient24133"
- inkscape:collect="always">
- <stop
- id="stop24135"
- offset="0"
- style="stop-color:#145393;stop-opacity:1;" />
- <stop
- id="stop24137"
- offset="1"
- style="stop-color:#1b6fc5;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10354-2"
- id="linearGradient8378"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-1609.9926,-78.958432)"
- x1="1205.5752"
- y1="-186.45331"
- x2="1205.5752"
- y2="-202.34555" />
- <linearGradient
- id="linearGradient10354-2"
- inkscape:collect="always">
- <stop
- id="stop10356-2"
- offset="0"
- style="stop-color:#bcbfb8;stop-opacity:1" />
- <stop
- id="stop10358-2"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10332-5"
- id="linearGradient8380"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.84941206,0,0,0.84794288,-623.98415,-483.16392)"
- x1="260.92538"
- y1="233.77748"
- x2="260.92538"
- y2="248.97633" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient10332-5">
- <stop
- style="stop-color:#d3d7cf;stop-opacity:1"
- offset="0"
- id="stop10334-5" />
- <stop
- style="stop-color:#8f9985;stop-opacity:1"
- offset="1"
- id="stop10336-29" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient24133-1"
- id="linearGradient8394-1"
- gradientUnits="userSpaceOnUse"
- x1="1582.125"
- y1="201.98718"
- x2="1580.5312"
- y2="197.98718"
- gradientTransform="translate(0,-20)" />
- <linearGradient
- id="linearGradient24133-1"
- inkscape:collect="always">
- <stop
- id="stop24135-6"
- offset="0"
- style="stop-color:#145393;stop-opacity:1;" />
- <stop
- id="stop24137-2"
- offset="1"
- style="stop-color:#1b6fc5;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient24133-9"
- id="linearGradient8394-11"
- gradientUnits="userSpaceOnUse"
- x1="1582.125"
- y1="201.98718"
- x2="1580.5312"
- y2="197.98718" />
- <linearGradient
- id="linearGradient24133-9"
- inkscape:collect="always">
- <stop
- id="stop24135-1"
- offset="0"
- style="stop-color:#145393;stop-opacity:1;" />
- <stop
- id="stop24137-3"
- offset="1"
- style="stop-color:#1b6fc5;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3859-9"
- id="linearGradient4677-3"
- gradientUnits="userSpaceOnUse"
- x1="-403.46503"
- y1="-280.60101"
- x2="-403.46503"
- y2="-273.35056" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3859-9">
- <stop
- style="stop-color:#282828;stop-opacity:1;"
- offset="0"
- id="stop3861-9" />
- <stop
- style="stop-color:#151515;stop-opacity:1"
- offset="1"
- id="stop3863-5" />
- </linearGradient>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="7.4845183"
- inkscape:cy="6.6249627"
- inkscape:document-units="px"
- inkscape:current-layer="layer1-3"
- showgrid="true"
- borderlayer="true"
- inkscape:showpageshadow="false"
- inkscape:window-width="1373"
- inkscape:window-height="1035"
- inkscape:window-x="1667"
- inkscape:window-y="103"
- inkscape:window-maximized="0"
- inkscape:snap-nodes="false"
- inkscape:snap-bbox="true">
- <inkscape:grid
- type="xygrid"
- id="grid4084"
- empspacing="5"
- visible="true"
- enabled="true"
- snapvisiblegridlinesonly="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata819">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- transform="translate(-1.7396303e-6,0.02325995)"
- id="layer1-3"
- inkscape:label="Layer 1">
- <g
- style="enable-background:new"
- id="g16853-5"
- transform="translate(410.00739,765.00002)" />
- <g
- transform="translate(-3.0064634e-6,-0.03618995)"
- id="layer1-96"
- inkscape:label="Layer 1"
- style="stroke:#717171;stroke-opacity:1">
- <g
- transform="translate(410.00739,765.05452)"
- id="g16895"
- style="opacity:0.5;stroke:#717171;stroke-opacity:1;enable-background:new">
- <rect
- transform="scale(1,-1)"
- style="color:#000000;fill:none;stroke:#717171;stroke-width:1;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="rect16897"
- width="11.042357"
- height="11.023263"
- x="-409.50739"
- y="-284.86218"
- rx="1.6105907"
- ry="1.6105907" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccc"
- d="m -406.2425,278.07061 2.7047,3.5 6.3577,-7"
- style="fill:none;stroke:#717171;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;enable-background:new"
- id="path16899" />
- </g>
- </g>
- </g>
- </g>
-</svg>
diff --git a/gtk3/theme/assets/checkbox-checked-insensitive.svg b/gtk3/theme/assets/checkbox-checked-insensitive.svg
deleted file mode 100644
index 326d133..0000000
--- a/gtk3/theme/assets/checkbox-checked-insensitive.svg
+++ /dev/null
@@ -1,175 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- id="svg814"
- version="1.1"
- inkscape:version="0.48+devel r10053 custom"
- sodipodi:docname="checkbox-unchecked.svg">
- <defs
- id="defs816">
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10354-2"
- id="linearGradient8378"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-1609.9926,-78.958432)"
- x1="1205.5752"
- y1="-186.45331"
- x2="1205.5752"
- y2="-202.34555" />
- <linearGradient
- id="linearGradient10354-2"
- inkscape:collect="always">
- <stop
- id="stop10356-2"
- offset="0"
- style="stop-color:#bcbfb8;stop-opacity:1" />
- <stop
- id="stop10358-2"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10332-5"
- id="linearGradient8380"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.84941206,0,0,0.84794288,-623.98415,-483.16392)"
- x1="260.92538"
- y1="233.77748"
- x2="260.92538"
- y2="248.97633" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient10332-5">
- <stop
- style="stop-color:#d3d7cf;stop-opacity:1"
- offset="0"
- id="stop10334-5" />
- <stop
- style="stop-color:#8f9985;stop-opacity:1"
- offset="1"
- id="stop10336-29" />
- </linearGradient>
- <linearGradient
- y2="-202.34555"
- x2="1205.5752"
- y1="-186.45331"
- x1="1205.5752"
- gradientTransform="translate(-1609.9926,-78.958432)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient3951"
- xlink:href="#linearGradient10354-2"
- inkscape:collect="always" />
- <linearGradient
- y2="248.97633"
- x2="260.92538"
- y1="233.77748"
- x1="260.92538"
- gradientTransform="matrix(0.84941206,0,0,0.84794288,-623.98415,-483.16392)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient3953"
- xlink:href="#linearGradient10332-5"
- inkscape:collect="always" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10332-5-8"
- id="linearGradient8390"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.84941206,0,0,0.84794288,-623.98415,-483.16392)"
- x1="260.92538"
- y1="233.77748"
- x2="260.92538"
- y2="248.97633" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient10332-5-8">
- <stop
- style="stop-color:#d3d7cf;stop-opacity:1"
- offset="0"
- id="stop10334-5-6" />
- <stop
- style="stop-color:#8f9985;stop-opacity:1"
- offset="1"
- id="stop10336-29-0" />
- </linearGradient>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="7.1381674"
- inkscape:cy="8.4772276"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- borderlayer="true"
- inkscape:showpageshadow="false"
- inkscape:window-width="981"
- inkscape:window-height="899"
- inkscape:window-x="1600"
- inkscape:window-y="0"
- inkscape:window-maximized="0">
- <inkscape:grid
- type="xygrid"
- id="grid4084"
- empspacing="5"
- visible="true"
- enabled="true"
- snapvisiblegridlinesonly="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata819">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- style="opacity:0.5;enable-background:new"
- id="g16895"
- transform="translate(410.00739,765.05452)">
- <rect
- ry="1.6105907"
- rx="1.6105907"
- y="-284.86218"
- x="-409.50739"
- height="11.023263"
- width="11.042357"
- id="rect16897"
- style="color:#000000;fill:none;stroke:url(#linearGradient8390);stroke-width:1;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- transform="scale(1,-1)" />
- <path
- id="path16899"
- style="fill:none;stroke:#a3a89c;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;enable-background:new"
- d="m -406.2425,278.07061 2.7047,3.5 6.3577,-7"
- sodipodi:nodetypes="ccc"
- inkscape:connector-curvature="0" />
- </g>
- </g>
-</svg>
diff --git a/gtk3/theme/assets/checkbox-checked-scalable.svg b/gtk3/theme/assets/checkbox-checked-scalable.svg
deleted file mode 100644
index f2492f1..0000000
--- a/gtk3/theme/assets/checkbox-checked-scalable.svg
+++ /dev/null
@@ -1,191 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- id="svg814"
- version="1.1"
- inkscape:version="0.48+devel r10053 custom"
- sodipodi:docname="checkbox-checked-scalable.svg">
- <defs
- id="defs816">
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient24133"
- id="linearGradient8394"
- gradientUnits="userSpaceOnUse"
- x1="1582.125"
- y1="201.98718"
- x2="1580.5312"
- y2="197.98718" />
- <linearGradient
- id="linearGradient24133"
- inkscape:collect="always">
- <stop
- id="stop24135"
- offset="0"
- style="stop-color:#145393;stop-opacity:1;" />
- <stop
- id="stop24137"
- offset="1"
- style="stop-color:#1b6fc5;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10354-2"
- id="linearGradient8378"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-1609.9926,-78.958432)"
- x1="1205.5752"
- y1="-186.45331"
- x2="1205.5752"
- y2="-202.34555" />
- <linearGradient
- id="linearGradient10354-2"
- inkscape:collect="always">
- <stop
- id="stop10356-2"
- offset="0"
- style="stop-color:#bcbfb8;stop-opacity:1" />
- <stop
- id="stop10358-2"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10332-5"
- id="linearGradient8380"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.84941206,0,0,0.84794288,-623.98415,-483.16392)"
- x1="260.92538"
- y1="233.77748"
- x2="260.92538"
- y2="248.97633" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient10332-5">
- <stop
- style="stop-color:#d3d7cf;stop-opacity:1"
- offset="0"
- id="stop10334-5" />
- <stop
- style="stop-color:#8f9985;stop-opacity:1"
- offset="1"
- id="stop10336-29" />
- </linearGradient>
- <linearGradient
- y2="-202.34555"
- x2="1205.5752"
- y1="-186.45331"
- x1="1205.5752"
- gradientTransform="translate(-1609.9926,-78.958432)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient3951"
- xlink:href="#linearGradient10354-2"
- inkscape:collect="always" />
- <linearGradient
- y2="248.97633"
- x2="260.92538"
- y1="233.77748"
- x1="260.92538"
- gradientTransform="matrix(0.84941206,0,0,0.84794288,-623.98415,-483.16392)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient3953"
- xlink:href="#linearGradient10332-5"
- inkscape:collect="always" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1"
- inkscape:cx="9.3023818"
- inkscape:cy="13.216234"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- borderlayer="true"
- inkscape:showpageshadow="false"
- inkscape:window-width="894"
- inkscape:window-height="914"
- inkscape:window-x="1600"
- inkscape:window-y="0"
- inkscape:window-maximized="0">
- <inkscape:grid
- type="xygrid"
- id="grid4084"
- empspacing="5"
- visible="true"
- enabled="true"
- snapvisiblegridlinesonly="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata819">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- transform="translate(410.00739,765.00002)"
- id="g16853"
- style="enable-background:new">
- <rect
- transform="scale(1,-1)"
- style="color:#000000;fill:url(#linearGradient3951);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient3953);stroke-width:1;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="rect6506"
- width="11.042357"
- height="11.023263"
- x="-409.50739"
- y="-284.86218"
- rx="1.6105907"
- ry="1.6105907" />
- </g>
- <g
- transform="translate(-1568.9928,841.00002)"
- id="g24757"
- style="display:inline;enable-background:new">
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccsccccsccccccccccccc"
- id="path24115"
- d="m 1581.484,197.57451 -5.9527,5.49523 -1.5385,-1.70756 c -0.5675,-0.68154 -1.6986,-0.0737 -2.1043,0.84246 -0.3576,0.80771 -0.263,2.10509 0.2918,2.72004 l 2.3824,2.53125 c 0.3844,0.47604 1.1988,0.53546 1.7814,-0.0313 l 6.9309,-6.67011 c 0.8412,-0.89696 0.6398,-2.23127 0.2214,-2.8846 -0.4925,-0.76903 -1.4327,-0.78265 -2.0124,-0.29546 z m 0.1111,0.94016 1.1079,1.41031 -6.922,6.4375 -0.5937,0 -2.1875,-2.1875 0.1563,-1.45312 0.5312,-0.23438 1.4687,1.21875 0.3438,0.34375 0.2002,0.25 z"
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:url(#linearGradient8394);fill-opacity:1;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ahem;-inkscape-font-specification:Ahem" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccccc"
- id="path24119"
- d="m 1581.7056,198.35054 -6.2213,5.69077 -1.675,-1.75016 c -0.2927,-0.26248 -0.7322,1.5e-4 -0.8428,0.33163 l 0.028,1.54287 1.818,1.8656 7.9844,-7.53125 c -0.2564,-0.46127 -0.6632,-0.48234 -1.0915,-0.14946 z"
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#a2c0dd;fill-opacity:1;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ahem;-inkscape-font-specification:Ahem" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccccccc"
- id="path24117"
- d="m 1582.7969,198.5 -7.3077,6.86432 -2.5348,-2.78466 c 0,0 -0.5675,0.90691 0.019,1.58656 l 2.1532,2.25362 c 0.1546,0.17678 0.4665,0.12213 0.6654,-0.0104 l 6.9002,-6.47188 c 0.5082,-0.50823 0.1094,-1.43751 0.1094,-1.43751 l 2e-4,0 z"
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#4a8dd1;fill-opacity:1;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ahem;-inkscape-font-specification:Ahem" />
- </g>
- </g>
-</svg>
diff --git a/gtk3/theme/assets/checkbox-checked.svg b/gtk3/theme/assets/checkbox-checked.svg
deleted file mode 100644
index f2492f1..0000000
--- a/gtk3/theme/assets/checkbox-checked.svg
+++ /dev/null
@@ -1,191 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- id="svg814"
- version="1.1"
- inkscape:version="0.48+devel r10053 custom"
- sodipodi:docname="checkbox-checked-scalable.svg">
- <defs
- id="defs816">
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient24133"
- id="linearGradient8394"
- gradientUnits="userSpaceOnUse"
- x1="1582.125"
- y1="201.98718"
- x2="1580.5312"
- y2="197.98718" />
- <linearGradient
- id="linearGradient24133"
- inkscape:collect="always">
- <stop
- id="stop24135"
- offset="0"
- style="stop-color:#145393;stop-opacity:1;" />
- <stop
- id="stop24137"
- offset="1"
- style="stop-color:#1b6fc5;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10354-2"
- id="linearGradient8378"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-1609.9926,-78.958432)"
- x1="1205.5752"
- y1="-186.45331"
- x2="1205.5752"
- y2="-202.34555" />
- <linearGradient
- id="linearGradient10354-2"
- inkscape:collect="always">
- <stop
- id="stop10356-2"
- offset="0"
- style="stop-color:#bcbfb8;stop-opacity:1" />
- <stop
- id="stop10358-2"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10332-5"
- id="linearGradient8380"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.84941206,0,0,0.84794288,-623.98415,-483.16392)"
- x1="260.92538"
- y1="233.77748"
- x2="260.92538"
- y2="248.97633" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient10332-5">
- <stop
- style="stop-color:#d3d7cf;stop-opacity:1"
- offset="0"
- id="stop10334-5" />
- <stop
- style="stop-color:#8f9985;stop-opacity:1"
- offset="1"
- id="stop10336-29" />
- </linearGradient>
- <linearGradient
- y2="-202.34555"
- x2="1205.5752"
- y1="-186.45331"
- x1="1205.5752"
- gradientTransform="translate(-1609.9926,-78.958432)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient3951"
- xlink:href="#linearGradient10354-2"
- inkscape:collect="always" />
- <linearGradient
- y2="248.97633"
- x2="260.92538"
- y1="233.77748"
- x1="260.92538"
- gradientTransform="matrix(0.84941206,0,0,0.84794288,-623.98415,-483.16392)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient3953"
- xlink:href="#linearGradient10332-5"
- inkscape:collect="always" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1"
- inkscape:cx="9.3023818"
- inkscape:cy="13.216234"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- borderlayer="true"
- inkscape:showpageshadow="false"
- inkscape:window-width="894"
- inkscape:window-height="914"
- inkscape:window-x="1600"
- inkscape:window-y="0"
- inkscape:window-maximized="0">
- <inkscape:grid
- type="xygrid"
- id="grid4084"
- empspacing="5"
- visible="true"
- enabled="true"
- snapvisiblegridlinesonly="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata819">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- transform="translate(410.00739,765.00002)"
- id="g16853"
- style="enable-background:new">
- <rect
- transform="scale(1,-1)"
- style="color:#000000;fill:url(#linearGradient3951);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient3953);stroke-width:1;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="rect6506"
- width="11.042357"
- height="11.023263"
- x="-409.50739"
- y="-284.86218"
- rx="1.6105907"
- ry="1.6105907" />
- </g>
- <g
- transform="translate(-1568.9928,841.00002)"
- id="g24757"
- style="display:inline;enable-background:new">
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccsccccsccccccccccccc"
- id="path24115"
- d="m 1581.484,197.57451 -5.9527,5.49523 -1.5385,-1.70756 c -0.5675,-0.68154 -1.6986,-0.0737 -2.1043,0.84246 -0.3576,0.80771 -0.263,2.10509 0.2918,2.72004 l 2.3824,2.53125 c 0.3844,0.47604 1.1988,0.53546 1.7814,-0.0313 l 6.9309,-6.67011 c 0.8412,-0.89696 0.6398,-2.23127 0.2214,-2.8846 -0.4925,-0.76903 -1.4327,-0.78265 -2.0124,-0.29546 z m 0.1111,0.94016 1.1079,1.41031 -6.922,6.4375 -0.5937,0 -2.1875,-2.1875 0.1563,-1.45312 0.5312,-0.23438 1.4687,1.21875 0.3438,0.34375 0.2002,0.25 z"
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:url(#linearGradient8394);fill-opacity:1;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ahem;-inkscape-font-specification:Ahem" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccccc"
- id="path24119"
- d="m 1581.7056,198.35054 -6.2213,5.69077 -1.675,-1.75016 c -0.2927,-0.26248 -0.7322,1.5e-4 -0.8428,0.33163 l 0.028,1.54287 1.818,1.8656 7.9844,-7.53125 c -0.2564,-0.46127 -0.6632,-0.48234 -1.0915,-0.14946 z"
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#a2c0dd;fill-opacity:1;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ahem;-inkscape-font-specification:Ahem" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccccccc"
- id="path24117"
- d="m 1582.7969,198.5 -7.3077,6.86432 -2.5348,-2.78466 c 0,0 -0.5675,0.90691 0.019,1.58656 l 2.1532,2.25362 c 0.1546,0.17678 0.4665,0.12213 0.6654,-0.0104 l 6.9002,-6.47188 c 0.5082,-0.50823 0.1094,-1.43751 0.1094,-1.43751 l 2e-4,0 z"
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#4a8dd1;fill-opacity:1;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ahem;-inkscape-font-specification:Ahem" />
- </g>
- </g>
-</svg>
diff --git a/gtk3/theme/assets/checkbox-mixed-dark.svg b/gtk3/theme/assets/checkbox-mixed-dark.svg
deleted file mode 100644
index d94482a..0000000
--- a/gtk3/theme/assets/checkbox-mixed-dark.svg
+++ /dev/null
@@ -1,320 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- id="svg814"
- version="1.1"
- inkscape:version="0.48.1 r9760"
- sodipodi:docname="checkbox-mixed.svg">
- <defs
- id="defs816">
- <linearGradient
- inkscape:collect="always"
- id="linearGradient7346">
- <stop
- style="stop-color:#1969ba;stop-opacity:1"
- offset="0"
- id="stop7348" />
- <stop
- style="stop-color:#145393;stop-opacity:1"
- offset="1"
- id="stop7350" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient24133"
- id="linearGradient8394"
- gradientUnits="userSpaceOnUse"
- x1="1582.125"
- y1="201.98718"
- x2="1580.5312"
- y2="197.98718" />
- <linearGradient
- id="linearGradient24133"
- inkscape:collect="always">
- <stop
- id="stop24135"
- offset="0"
- style="stop-color:#145393;stop-opacity:1;" />
- <stop
- id="stop24137"
- offset="1"
- style="stop-color:#1b6fc5;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10354-2"
- id="linearGradient8378"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-1609.9926,-78.958432)"
- x1="1205.5752"
- y1="-186.45331"
- x2="1205.5752"
- y2="-202.34555" />
- <linearGradient
- id="linearGradient10354-2"
- inkscape:collect="always">
- <stop
- id="stop10356-2"
- offset="0"
- style="stop-color:#bcbfb8;stop-opacity:1" />
- <stop
- id="stop10358-2"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10332-5"
- id="linearGradient8380"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.84941206,0,0,0.84794288,-623.98415,-483.16392)"
- x1="260.92538"
- y1="233.77748"
- x2="260.92538"
- y2="248.97633" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient10332-5">
- <stop
- style="stop-color:#d3d7cf;stop-opacity:1"
- offset="0"
- id="stop10334-5" />
- <stop
- style="stop-color:#8f9985;stop-opacity:1"
- offset="1"
- id="stop10336-29" />
- </linearGradient>
- <linearGradient
- y2="-202.34555"
- x2="1205.5752"
- y1="-186.45331"
- x1="1205.5752"
- gradientTransform="translate(-1609.9926,-78.958432)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient3951"
- xlink:href="#linearGradient10354-2"
- inkscape:collect="always" />
- <linearGradient
- y2="248.97633"
- x2="260.92538"
- y1="233.77748"
- x1="260.92538"
- gradientTransform="matrix(0.84941206,0,0,0.84794288,-623.98415,-483.16392)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient3953"
- xlink:href="#linearGradient10332-5"
- inkscape:collect="always" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient24133-1"
- id="linearGradient8394-1"
- gradientUnits="userSpaceOnUse"
- x1="1582.125"
- y1="201.98718"
- x2="1580.5312"
- y2="197.98718"
- gradientTransform="translate(0,-20)" />
- <linearGradient
- id="linearGradient24133-1"
- inkscape:collect="always">
- <stop
- id="stop24135-6"
- offset="0"
- style="stop-color:#145393;stop-opacity:1;" />
- <stop
- id="stop24137-2"
- offset="1"
- style="stop-color:#1b6fc5;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient24133-9"
- id="linearGradient8394-11"
- gradientUnits="userSpaceOnUse"
- x1="1582.125"
- y1="201.98718"
- x2="1580.5312"
- y2="197.98718" />
- <linearGradient
- id="linearGradient24133-9"
- inkscape:collect="always">
- <stop
- id="stop24135-1"
- offset="0"
- style="stop-color:#145393;stop-opacity:1;" />
- <stop
- id="stop24137-3"
- offset="1"
- style="stop-color:#1b6fc5;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient7346"
- id="linearGradient7352"
- x1="5.65625"
- y1="6.390625"
- x2="5.65625"
- y2="9.828125"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3859-9"
- id="linearGradient4677-3"
- gradientUnits="userSpaceOnUse"
- x1="-403.46503"
- y1="-280.60101"
- x2="-403.46503"
- y2="-273.35056" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3859-9">
- <stop
- style="stop-color:#282828;stop-opacity:1;"
- offset="0"
- id="stop3861-9" />
- <stop
- style="stop-color:#151515;stop-opacity:1"
- offset="1"
- id="stop3863-5" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4655-7"
- id="linearGradient4661-4"
- x1="6.8551636"
- y1="6.6672974"
- x2="7.1051636"
- y2="9.8606262"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient4655-7">
- <stop
- style="stop-color:#ce5c00;stop-opacity:1;"
- offset="0"
- id="stop4657-9" />
- <stop
- style="stop-color:#914100;stop-opacity:1"
- offset="1"
- id="stop4659-9" />
- </linearGradient>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="7.4845183"
- inkscape:cy="6.6249627"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- borderlayer="true"
- inkscape:showpageshadow="false"
- inkscape:window-width="1373"
- inkscape:window-height="1035"
- inkscape:window-x="1600"
- inkscape:window-y="223"
- inkscape:window-maximized="0"
- inkscape:snap-nodes="false"
- inkscape:snap-bbox="true">
- <inkscape:grid
- type="xygrid"
- id="grid4084"
- empspacing="5"
- visible="true"
- enabled="true"
- snapvisiblegridlinesonly="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata819">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- transform="translate(-1.7396303e-6,0.02325995)"
- id="layer1-3"
- inkscape:label="Layer 1">
- <g
- style="enable-background:new"
- id="g16853-5"
- transform="translate(410.00739,765.00002)" />
- <g
- inkscape:label="Layer 1"
- id="g4663-3"
- transform="translate(-3.0064635e-6,4.0976101e-7)">
- <g
- transform="translate(410.00739,765.00002)"
- id="g4665-1"
- style="enable-background:new">
- <rect
- ry="1.6105907"
- rx="1.6105907"
- y="-285.86218"
- x="-409.50739"
- height="11.023263"
- width="11.042357"
- id="rect5052"
- style="opacity:0.1;color:#000000;fill:none;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- transform="scale(1,-1)" />
- <rect
- transform="scale(1,-1)"
- style="color:#000000;fill:url(#linearGradient4677-3);fill-opacity:1;fill-rule:nonzero;stroke:#131516;stroke-width:1;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="rect4667-0"
- width="11.042357"
- height="11.023263"
- x="-409.50739"
- y="-284.86218"
- rx="1.6105907"
- ry="1.6105907" />
- </g>
- <g
- transform="translate(-1568.9928,841.00002)"
- id="g4669-6"
- style="display:inline;enable-background:new" />
- </g>
- <rect
- ry="1.515625"
- rx="1.515625"
- transform="translate(0,1036.3622)"
- y="6.5"
- x="1.53125"
- height="3.03125"
- width="8.9375"
- id="rect5494"
- style="color:#000000;fill:#f57900;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient4661-4);stroke-width:1;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:113.35856395;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- transform="translate(0,1036.3622)"
- inkscape:connector-curvature="0"
- id="path5496"
- d="m 2.53125,7.5625 6.9375,0"
- style="opacity:0.50431064;fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" />
- </g>
- </g>
-</svg>
diff --git a/gtk3/theme/assets/checkbox-mixed.svg b/gtk3/theme/assets/checkbox-mixed.svg
deleted file mode 100644
index ff8ee97..0000000
--- a/gtk3/theme/assets/checkbox-mixed.svg
+++ /dev/null
@@ -1,250 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- id="svg814"
- version="1.1"
- inkscape:version="0.48+devel r10053 custom"
- sodipodi:docname="checkbox-checked-pixelsharpened.svg">
- <defs
- id="defs816">
- <linearGradient
- inkscape:collect="always"
- id="linearGradient7346">
- <stop
- style="stop-color:#1969ba;stop-opacity:1"
- offset="0"
- id="stop7348" />
- <stop
- style="stop-color:#145393;stop-opacity:1"
- offset="1"
- id="stop7350" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient24133"
- id="linearGradient8394"
- gradientUnits="userSpaceOnUse"
- x1="1582.125"
- y1="201.98718"
- x2="1580.5312"
- y2="197.98718" />
- <linearGradient
- id="linearGradient24133"
- inkscape:collect="always">
- <stop
- id="stop24135"
- offset="0"
- style="stop-color:#145393;stop-opacity:1;" />
- <stop
- id="stop24137"
- offset="1"
- style="stop-color:#1b6fc5;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10354-2"
- id="linearGradient8378"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-1609.9926,-78.958432)"
- x1="1205.5752"
- y1="-186.45331"
- x2="1205.5752"
- y2="-202.34555" />
- <linearGradient
- id="linearGradient10354-2"
- inkscape:collect="always">
- <stop
- id="stop10356-2"
- offset="0"
- style="stop-color:#bcbfb8;stop-opacity:1" />
- <stop
- id="stop10358-2"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10332-5"
- id="linearGradient8380"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.84941206,0,0,0.84794288,-623.98415,-483.16392)"
- x1="260.92538"
- y1="233.77748"
- x2="260.92538"
- y2="248.97633" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient10332-5">
- <stop
- style="stop-color:#d3d7cf;stop-opacity:1"
- offset="0"
- id="stop10334-5" />
- <stop
- style="stop-color:#8f9985;stop-opacity:1"
- offset="1"
- id="stop10336-29" />
- </linearGradient>
- <linearGradient
- y2="-202.34555"
- x2="1205.5752"
- y1="-186.45331"
- x1="1205.5752"
- gradientTransform="translate(-1609.9926,-78.958432)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient3951"
- xlink:href="#linearGradient10354-2"
- inkscape:collect="always" />
- <linearGradient
- y2="248.97633"
- x2="260.92538"
- y1="233.77748"
- x1="260.92538"
- gradientTransform="matrix(0.84941206,0,0,0.84794288,-623.98415,-483.16392)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient3953"
- xlink:href="#linearGradient10332-5"
- inkscape:collect="always" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient24133-1"
- id="linearGradient8394-1"
- gradientUnits="userSpaceOnUse"
- x1="1582.125"
- y1="201.98718"
- x2="1580.5312"
- y2="197.98718"
- gradientTransform="translate(0,-20)" />
- <linearGradient
- id="linearGradient24133-1"
- inkscape:collect="always">
- <stop
- id="stop24135-6"
- offset="0"
- style="stop-color:#145393;stop-opacity:1;" />
- <stop
- id="stop24137-2"
- offset="1"
- style="stop-color:#1b6fc5;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient24133-9"
- id="linearGradient8394-11"
- gradientUnits="userSpaceOnUse"
- x1="1582.125"
- y1="201.98718"
- x2="1580.5312"
- y2="197.98718" />
- <linearGradient
- id="linearGradient24133-9"
- inkscape:collect="always">
- <stop
- id="stop24135-1"
- offset="0"
- style="stop-color:#145393;stop-opacity:1;" />
- <stop
- id="stop24137-3"
- offset="1"
- style="stop-color:#1b6fc5;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient7346"
- id="linearGradient7352"
- x1="5.65625"
- y1="6.390625"
- x2="5.65625"
- y2="9.828125"
- gradientUnits="userSpaceOnUse" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1"
- inkscape:cx="13.343981"
- inkscape:cy="9.0341616"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- borderlayer="true"
- inkscape:showpageshadow="false"
- inkscape:window-width="1373"
- inkscape:window-height="1035"
- inkscape:window-x="1600"
- inkscape:window-y="0"
- inkscape:window-maximized="0"
- inkscape:snap-nodes="false"
- inkscape:snap-bbox="true">
- <inkscape:grid
- type="xygrid"
- id="grid4084"
- empspacing="5"
- visible="true"
- enabled="true"
- snapvisiblegridlinesonly="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata819">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- transform="translate(410.00739,765.00002)"
- id="g16853"
- style="enable-background:new">
- <rect
- transform="scale(1,-1)"
- style="color:#000000;fill:url(#linearGradient3951);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient3953);stroke-width:1;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="rect6506"
- width="11.042357"
- height="11.023263"
- x="-409.50739"
- y="-284.86218"
- rx="1.6105907"
- ry="1.6105907" />
- </g>
- <rect
- style="color:#000000;fill:#4588ca;fill-opacity:0.98823529;fill-rule:nonzero;stroke:url(#linearGradient7352);stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="rect5494"
- width="8.9375"
- height="3.03125"
- x="1.53125"
- y="6.5"
- transform="translate(0,1036.3622)"
- rx="1.515625"
- ry="1.515625" />
- <path
- style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;opacity:0.50431034"
- d="m 2.53125,7.5625 6.9375,0"
- id="path5496"
- inkscape:connector-curvature="0"
- transform="translate(0,1036.3622)" />
- </g>
-</svg>
diff --git a/gtk3/theme/assets/checkbox-unchecked-dark.svg b/gtk3/theme/assets/checkbox-unchecked-dark.svg
deleted file mode 100644
index 759b1bb..0000000
--- a/gtk3/theme/assets/checkbox-unchecked-dark.svg
+++ /dev/null
@@ -1,263 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- id="svg814"
- version="1.1"
- inkscape:version="0.48.1 r9760"
- sodipodi:docname="checkbox-mixed-dark.svg">
- <defs
- id="defs816">
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient24133"
- id="linearGradient8394"
- gradientUnits="userSpaceOnUse"
- x1="1582.125"
- y1="201.98718"
- x2="1580.5312"
- y2="197.98718" />
- <linearGradient
- id="linearGradient24133"
- inkscape:collect="always">
- <stop
- id="stop24135"
- offset="0"
- style="stop-color:#145393;stop-opacity:1;" />
- <stop
- id="stop24137"
- offset="1"
- style="stop-color:#1b6fc5;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10354-2"
- id="linearGradient8378"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-1609.9926,-78.958432)"
- x1="1205.5752"
- y1="-186.45331"
- x2="1205.5752"
- y2="-202.34555" />
- <linearGradient
- id="linearGradient10354-2"
- inkscape:collect="always">
- <stop
- id="stop10356-2"
- offset="0"
- style="stop-color:#bcbfb8;stop-opacity:1" />
- <stop
- id="stop10358-2"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10332-5"
- id="linearGradient8380"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.84941206,0,0,0.84794288,-623.98415,-483.16392)"
- x1="260.92538"
- y1="233.77748"
- x2="260.92538"
- y2="248.97633" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient10332-5">
- <stop
- style="stop-color:#d3d7cf;stop-opacity:1"
- offset="0"
- id="stop10334-5" />
- <stop
- style="stop-color:#8f9985;stop-opacity:1"
- offset="1"
- id="stop10336-29" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient24133-1"
- id="linearGradient8394-1"
- gradientUnits="userSpaceOnUse"
- x1="1582.125"
- y1="201.98718"
- x2="1580.5312"
- y2="197.98718"
- gradientTransform="translate(0,-20)" />
- <linearGradient
- id="linearGradient24133-1"
- inkscape:collect="always">
- <stop
- id="stop24135-6"
- offset="0"
- style="stop-color:#145393;stop-opacity:1;" />
- <stop
- id="stop24137-2"
- offset="1"
- style="stop-color:#1b6fc5;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient24133-9"
- id="linearGradient8394-11"
- gradientUnits="userSpaceOnUse"
- x1="1582.125"
- y1="201.98718"
- x2="1580.5312"
- y2="197.98718" />
- <linearGradient
- id="linearGradient24133-9"
- inkscape:collect="always">
- <stop
- id="stop24135-1"
- offset="0"
- style="stop-color:#145393;stop-opacity:1;" />
- <stop
- id="stop24137-3"
- offset="1"
- style="stop-color:#1b6fc5;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3859-9"
- id="linearGradient4677-3"
- gradientUnits="userSpaceOnUse"
- x1="-403.46503"
- y1="-280.60101"
- x2="-403.46503"
- y2="-273.35056" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3859-9">
- <stop
- style="stop-color:#282828;stop-opacity:1;"
- offset="0"
- id="stop3861-9" />
- <stop
- style="stop-color:#151515;stop-opacity:1"
- offset="1"
- id="stop3863-5" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4655-7"
- id="linearGradient4661-4"
- x1="6.8551636"
- y1="6.6672974"
- x2="7.1051636"
- y2="9.8606262"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient4655-7">
- <stop
- style="stop-color:#ce5c00;stop-opacity:1;"
- offset="0"
- id="stop4657-9" />
- <stop
- style="stop-color:#914100;stop-opacity:1"
- offset="1"
- id="stop4659-9" />
- </linearGradient>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="7.4845183"
- inkscape:cy="6.6249627"
- inkscape:document-units="px"
- inkscape:current-layer="layer1-3"
- showgrid="true"
- borderlayer="true"
- inkscape:showpageshadow="false"
- inkscape:window-width="1373"
- inkscape:window-height="1035"
- inkscape:window-x="1600"
- inkscape:window-y="223"
- inkscape:window-maximized="0"
- inkscape:snap-nodes="false"
- inkscape:snap-bbox="true">
- <inkscape:grid
- type="xygrid"
- id="grid4084"
- empspacing="5"
- visible="true"
- enabled="true"
- snapvisiblegridlinesonly="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata819">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- transform="translate(-1.7396303e-6,0.02325995)"
- id="layer1-3"
- inkscape:label="Layer 1">
- <g
- style="enable-background:new"
- id="g16853-5"
- transform="translate(410.00739,765.00002)" />
- <g
- inkscape:label="Layer 1"
- id="g4663-3"
- transform="translate(-3.0064635e-6,4.0976101e-7)">
- <g
- transform="translate(410.00739,765.00002)"
- id="g4665-1"
- style="enable-background:new">
- <rect
- ry="1.6105907"
- rx="1.6105907"
- y="-285.86218"
- x="-409.50739"
- height="11.023263"
- width="11.042357"
- id="rect5052"
- style="opacity:0.1;color:#000000;fill:none;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- transform="scale(1,-1)" />
- <rect
- transform="scale(1,-1)"
- style="color:#000000;fill:url(#linearGradient4677-3);fill-opacity:1;fill-rule:nonzero;stroke:#131516;stroke-width:1;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="rect4667-0"
- width="11.042357"
- height="11.023263"
- x="-409.50739"
- y="-284.86218"
- rx="1.6105907"
- ry="1.6105907" />
- </g>
- <g
- transform="translate(-1568.9928,841.00002)"
- id="g4669-6"
- style="display:inline;enable-background:new" />
- </g>
- </g>
- </g>
-</svg>
diff --git a/gtk3/theme/assets/checkbox-unchecked-insensitive-dark.svg b/gtk3/theme/assets/checkbox-unchecked-insensitive-dark.svg
deleted file mode 100644
index 982c566..0000000
--- a/gtk3/theme/assets/checkbox-unchecked-insensitive-dark.svg
+++ /dev/null
@@ -1,208 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- id="svg814"
- version="1.1"
- inkscape:version="0.48.1 r9760"
- sodipodi:docname="checkbox-checked-insensitive-dark.svg">
- <defs
- id="defs816">
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient24133"
- id="linearGradient8394"
- gradientUnits="userSpaceOnUse"
- x1="1582.125"
- y1="201.98718"
- x2="1580.5312"
- y2="197.98718" />
- <linearGradient
- id="linearGradient24133"
- inkscape:collect="always">
- <stop
- id="stop24135"
- offset="0"
- style="stop-color:#145393;stop-opacity:1;" />
- <stop
- id="stop24137"
- offset="1"
- style="stop-color:#1b6fc5;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10354-2"
- id="linearGradient8378"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-1609.9926,-78.958432)"
- x1="1205.5752"
- y1="-186.45331"
- x2="1205.5752"
- y2="-202.34555" />
- <linearGradient
- id="linearGradient10354-2"
- inkscape:collect="always">
- <stop
- id="stop10356-2"
- offset="0"
- style="stop-color:#bcbfb8;stop-opacity:1" />
- <stop
- id="stop10358-2"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10332-5"
- id="linearGradient8380"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.84941206,0,0,0.84794288,-623.98415,-483.16392)"
- x1="260.92538"
- y1="233.77748"
- x2="260.92538"
- y2="248.97633" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient10332-5">
- <stop
- style="stop-color:#d3d7cf;stop-opacity:1"
- offset="0"
- id="stop10334-5" />
- <stop
- style="stop-color:#8f9985;stop-opacity:1"
- offset="1"
- id="stop10336-29" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient24133-1"
- id="linearGradient8394-1"
- gradientUnits="userSpaceOnUse"
- x1="1582.125"
- y1="201.98718"
- x2="1580.5312"
- y2="197.98718"
- gradientTransform="translate(0,-20)" />
- <linearGradient
- id="linearGradient24133-1"
- inkscape:collect="always">
- <stop
- id="stop24135-6"
- offset="0"
- style="stop-color:#145393;stop-opacity:1;" />
- <stop
- id="stop24137-2"
- offset="1"
- style="stop-color:#1b6fc5;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient24133-9"
- id="linearGradient8394-11"
- gradientUnits="userSpaceOnUse"
- x1="1582.125"
- y1="201.98718"
- x2="1580.5312"
- y2="197.98718" />
- <linearGradient
- id="linearGradient24133-9"
- inkscape:collect="always">
- <stop
- id="stop24135-1"
- offset="0"
- style="stop-color:#145393;stop-opacity:1;" />
- <stop
- id="stop24137-3"
- offset="1"
- style="stop-color:#1b6fc5;stop-opacity:1" />
- </linearGradient>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="7.4845183"
- inkscape:cy="6.6249627"
- inkscape:document-units="px"
- inkscape:current-layer="layer1-96"
- showgrid="true"
- borderlayer="true"
- inkscape:showpageshadow="false"
- inkscape:window-width="1373"
- inkscape:window-height="1035"
- inkscape:window-x="1667"
- inkscape:window-y="103"
- inkscape:window-maximized="0"
- inkscape:snap-nodes="false"
- inkscape:snap-bbox="true">
- <inkscape:grid
- type="xygrid"
- id="grid4084"
- empspacing="5"
- visible="true"
- enabled="true"
- snapvisiblegridlinesonly="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata819">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- transform="translate(-1.7396303e-6,0.02325995)"
- id="layer1-3"
- inkscape:label="Layer 1">
- <g
- style="enable-background:new"
- id="g16853-5"
- transform="translate(410.00739,765.00002)" />
- <g
- transform="translate(-3.0064634e-6,-0.03618995)"
- id="layer1-96"
- inkscape:label="Layer 1"
- style="stroke:#717171;stroke-opacity:1">
- <g
- transform="translate(410.00739,765.05452)"
- id="g16895"
- style="opacity:0.5;stroke:#717171;stroke-opacity:1;enable-background:new">
- <rect
- transform="scale(1,-1)"
- style="color:#000000;fill:none;stroke:#717171;stroke-width:1;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="rect16897"
- width="11.042357"
- height="11.023263"
- x="-409.50739"
- y="-284.86218"
- rx="1.6105907"
- ry="1.6105907" />
- </g>
- </g>
- </g>
- </g>
-</svg>
diff --git a/gtk3/theme/assets/checkbox-unchecked-insensitive.svg b/gtk3/theme/assets/checkbox-unchecked-insensitive.svg
deleted file mode 100644
index d5a6bd6..0000000
--- a/gtk3/theme/assets/checkbox-unchecked-insensitive.svg
+++ /dev/null
@@ -1,149 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- id="svg814"
- version="1.1"
- inkscape:version="0.48+devel r10053 custom"
- sodipodi:docname="checkbox-checked-insensitive.svg">
- <defs
- id="defs816">
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10354-2"
- id="linearGradient8378"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-1609.9926,-78.958432)"
- x1="1205.5752"
- y1="-186.45331"
- x2="1205.5752"
- y2="-202.34555" />
- <linearGradient
- id="linearGradient10354-2"
- inkscape:collect="always">
- <stop
- id="stop10356-2"
- offset="0"
- style="stop-color:#bcbfb8;stop-opacity:1" />
- <stop
- id="stop10358-2"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10332-5"
- id="linearGradient8380"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.84941206,0,0,0.84794288,-623.98415,-483.16392)"
- x1="260.92538"
- y1="233.77748"
- x2="260.92538"
- y2="248.97633" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient10332-5">
- <stop
- style="stop-color:#d3d7cf;stop-opacity:1"
- offset="0"
- id="stop10334-5" />
- <stop
- style="stop-color:#8f9985;stop-opacity:1"
- offset="1"
- id="stop10336-29" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10332-5-8"
- id="linearGradient8390"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.84941206,0,0,0.84794288,-623.98415,-483.16392)"
- x1="260.92538"
- y1="233.77748"
- x2="260.92538"
- y2="248.97633" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient10332-5-8">
- <stop
- style="stop-color:#d3d7cf;stop-opacity:1"
- offset="0"
- id="stop10334-5-6" />
- <stop
- style="stop-color:#8f9985;stop-opacity:1"
- offset="1"
- id="stop10336-29-0" />
- </linearGradient>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="7.1381674"
- inkscape:cy="8.4772276"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- borderlayer="true"
- inkscape:showpageshadow="false"
- inkscape:window-width="981"
- inkscape:window-height="899"
- inkscape:window-x="1600"
- inkscape:window-y="0"
- inkscape:window-maximized="0">
- <inkscape:grid
- type="xygrid"
- id="grid4084"
- empspacing="5"
- visible="true"
- enabled="true"
- snapvisiblegridlinesonly="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata819">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- style="opacity:0.5;enable-background:new"
- id="g16895"
- transform="translate(410.00739,765.05452)">
- <rect
- ry="1.6105907"
- rx="1.6105907"
- y="-284.86218"
- x="-409.50739"
- height="11.023263"
- width="11.042357"
- id="rect16897"
- style="color:#000000;fill:none;stroke:url(#linearGradient8390);stroke-width:1;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- transform="scale(1,-1)" />
- </g>
- </g>
-</svg>
diff --git a/gtk3/theme/assets/checkbox-unchecked.svg b/gtk3/theme/assets/checkbox-unchecked.svg
deleted file mode 100644
index 42760cb..0000000
--- a/gtk3/theme/assets/checkbox-unchecked.svg
+++ /dev/null
@@ -1,168 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- id="svg814"
- version="1.1"
- inkscape:version="0.48+devel r10053 custom"
- sodipodi:docname="checkbox-checked-scalable.svg">
- <defs
- id="defs816">
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient24133"
- id="linearGradient8394"
- gradientUnits="userSpaceOnUse"
- x1="1582.125"
- y1="201.98718"
- x2="1580.5312"
- y2="197.98718" />
- <linearGradient
- id="linearGradient24133"
- inkscape:collect="always">
- <stop
- id="stop24135"
- offset="0"
- style="stop-color:#145393;stop-opacity:1;" />
- <stop
- id="stop24137"
- offset="1"
- style="stop-color:#1b6fc5;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10354-2"
- id="linearGradient8378"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-1609.9926,-78.958432)"
- x1="1205.5752"
- y1="-186.45331"
- x2="1205.5752"
- y2="-202.34555" />
- <linearGradient
- id="linearGradient10354-2"
- inkscape:collect="always">
- <stop
- id="stop10356-2"
- offset="0"
- style="stop-color:#bcbfb8;stop-opacity:1" />
- <stop
- id="stop10358-2"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10332-5"
- id="linearGradient8380"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.84941206,0,0,0.84794288,-623.98415,-483.16392)"
- x1="260.92538"
- y1="233.77748"
- x2="260.92538"
- y2="248.97633" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient10332-5">
- <stop
- style="stop-color:#d3d7cf;stop-opacity:1"
- offset="0"
- id="stop10334-5" />
- <stop
- style="stop-color:#8f9985;stop-opacity:1"
- offset="1"
- id="stop10336-29" />
- </linearGradient>
- <linearGradient
- y2="-202.34555"
- x2="1205.5752"
- y1="-186.45331"
- x1="1205.5752"
- gradientTransform="translate(-1609.9926,-78.958432)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient3951"
- xlink:href="#linearGradient10354-2"
- inkscape:collect="always" />
- <linearGradient
- y2="248.97633"
- x2="260.92538"
- y1="233.77748"
- x1="260.92538"
- gradientTransform="matrix(0.84941206,0,0,0.84794288,-623.98415,-483.16392)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient3953"
- xlink:href="#linearGradient10332-5"
- inkscape:collect="always" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="7.1381674"
- inkscape:cy="8.4772276"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- borderlayer="true"
- inkscape:showpageshadow="false"
- inkscape:window-width="981"
- inkscape:window-height="899"
- inkscape:window-x="1600"
- inkscape:window-y="0"
- inkscape:window-maximized="0">
- <inkscape:grid
- type="xygrid"
- id="grid4084"
- empspacing="5"
- visible="true"
- enabled="true"
- snapvisiblegridlinesonly="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata819">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- transform="translate(410.00739,765.00002)"
- id="g16853"
- style="enable-background:new">
- <rect
- transform="scale(1,-1)"
- style="color:#000000;fill:url(#linearGradient3951);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient3953);stroke-width:1;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="rect6506"
- width="11.042357"
- height="11.023263"
- x="-409.50739"
- y="-284.86218"
- rx="1.6105907"
- ry="1.6105907" />
- </g>
- </g>
-</svg>
diff --git a/gtk3/theme/assets/radio-mixed-dark.svg b/gtk3/theme/assets/radio-mixed-dark.svg
deleted file mode 100644
index e33a89a..0000000
--- a/gtk3/theme/assets/radio-mixed-dark.svg
+++ /dev/null
@@ -1,426 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- id="svg814"
- version="1.1"
- inkscape:version="0.48.1 r9760"
- sodipodi:docname="radio-mixed.svg">
- <defs
- id="defs816">
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10354-2"
- id="linearGradient8378"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-1609.9926,-78.958432)"
- x1="1205.5752"
- y1="-186.45331"
- x2="1205.5752"
- y2="-202.34555" />
- <linearGradient
- id="linearGradient10354-2"
- inkscape:collect="always">
- <stop
- id="stop10356-2"
- offset="0"
- style="stop-color:#bcbfb8;stop-opacity:1" />
- <stop
- id="stop10358-2"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10332-5"
- id="linearGradient8380"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.84941206,0,0,0.84794288,-623.98415,-483.16392)"
- x1="260.92538"
- y1="233.77748"
- x2="260.92538"
- y2="248.97633" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient10332-5">
- <stop
- style="stop-color:#d3d7cf;stop-opacity:1"
- offset="0"
- id="stop10334-5" />
- <stop
- style="stop-color:#8f9985;stop-opacity:1"
- offset="1"
- id="stop10336-29" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient11577-0-5-0-2"
- id="linearGradient8358"
- gradientUnits="userSpaceOnUse"
- x1="662.53418"
- y1="249.29141"
- x2="662.53418"
- y2="262.49979" />
- <linearGradient
- id="linearGradient11577-0-5-0-2"
- inkscape:collect="always">
- <stop
- id="stop11579-5-6-7-4"
- offset="0"
- style="stop-color:#d3d7cf;stop-opacity:1;" />
- <stop
- id="stop11581-8-0-0-9"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient12415-4-1-5"
- id="linearGradient8360"
- gradientUnits="userSpaceOnUse"
- x1="664.26984"
- y1="261.44751"
- x2="664.26984"
- y2="248.05356" />
- <linearGradient
- id="linearGradient12415-4-1-5"
- inkscape:collect="always">
- <stop
- id="stop12417-2-8-0"
- offset="0"
- style="stop-color:#d3d7cf;stop-opacity:1;" />
- <stop
- id="stop12419-5-0-9"
- offset="1"
- style="stop-color:#8f9985;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient11623-4-5-4"
- id="linearGradient8362"
- gradientUnits="userSpaceOnUse"
- x1="661.04559"
- y1="251.6946"
- x2="661.04559"
- y2="258.26358" />
- <linearGradient
- id="linearGradient11623-4-5-4"
- inkscape:collect="always">
- <stop
- id="stop11625-5-6-0"
- offset="0"
- style="stop-color:#2e87e3;stop-opacity:1" />
- <stop
- id="stop11627-4-4-9"
- offset="1"
- style="stop-color:#76b0ec;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient12387-1-5"
- id="linearGradient8364"
- gradientUnits="userSpaceOnUse"
- x1="662.26074"
- y1="251.66537"
- x2="662.26074"
- y2="259.77792" />
- <linearGradient
- id="linearGradient12387-1-5"
- inkscape:collect="always">
- <stop
- id="stop12389-7-2"
- offset="0"
- style="stop-color:#1b6fc5;stop-opacity:1;" />
- <stop
- id="stop12391-1-4"
- offset="1"
- style="stop-color:#145393;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient11553-0-7-9"
- id="linearGradient8366"
- gradientUnits="userSpaceOnUse"
- x1="660.16144"
- y1="246.69635"
- x2="660.27411"
- y2="260.70532" />
- <linearGradient
- id="linearGradient11553-0-7-9">
- <stop
- id="stop11555-5-9-8"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop11557-1-9-0"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient12405-7"
- id="radialGradient8368"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.4685542,0,0,2.2820942,-309.65132,-324.35943)"
- cx="660.8656"
- cy="251.41324"
- fx="660.8656"
- fy="251.41324"
- r="5.0290799" />
- <linearGradient
- id="linearGradient12405-7"
- inkscape:collect="always">
- <stop
- id="stop12407-9"
- offset="0"
- style="stop-color:#000000;stop-opacity:1;" />
- <stop
- id="stop12409-7"
- offset="1"
- style="stop-color:#000000;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient12692-5-0"
- id="radialGradient8370"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.4143887,0,0,1.7213698,-937.76662,-194.09437)"
- cx="663.01904"
- cy="269.82831"
- fx="663.01904"
- fy="269.82831"
- r="2.3864853" />
- <linearGradient
- id="linearGradient12692-5-0"
- inkscape:collect="always">
- <stop
- id="stop12694-4-1"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop12696-5-2"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- r="2.3864853"
- fy="269.82831"
- fx="663.01904"
- cy="269.82831"
- cx="663.01904"
- gradientTransform="matrix(2.4143887,0,0,1.7213698,-937.76662,-194.09437)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient5029"
- xlink:href="#linearGradient12692-5-0"
- inkscape:collect="always" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient7346"
- id="linearGradient7352"
- x1="5.65625"
- y1="6.390625"
- x2="5.65625"
- y2="9.828125"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient7346">
- <stop
- style="stop-color:#1969ba;stop-opacity:1"
- offset="0"
- id="stop7348" />
- <stop
- style="stop-color:#145393;stop-opacity:1"
- offset="1"
- id="stop7350" />
- </linearGradient>
- <linearGradient
- gradientTransform="translate(1033.0001,265.99998)"
- y2="9.828125"
- x2="5.65625"
- y1="6.390625"
- x1="5.65625"
- gradientUnits="userSpaceOnUse"
- id="linearGradient119"
- xlink:href="#linearGradient7346"
- inkscape:collect="always" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3859-5"
- id="linearGradient5110"
- gradientUnits="userSpaceOnUse"
- x1="658.5564"
- y1="257.04449"
- x2="658.5564"
- y2="247.62109" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3859-5">
- <stop
- style="stop-color:#282828;stop-opacity:1;"
- offset="0"
- id="stop3861-2" />
- <stop
- style="stop-color:#151515;stop-opacity:1"
- offset="1"
- id="stop3863-6" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4631"
- id="radialGradient5112"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(4.055689,-0.04454196,0.00708427,1.6887546,-2020.4687,-144.9433)"
- cx="660.6142"
- cy="251.41986"
- fx="660.6142"
- fy="251.41986"
- r="5.0290799" />
- <linearGradient
- id="linearGradient4631"
- inkscape:collect="always">
- <stop
- id="stop4633"
- offset="0"
- style="stop-color:#000000;stop-opacity:1" />
- <stop
- id="stop4635"
- offset="1"
- style="stop-color:#000000;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- gradientTransform="translate(1033.0313,266)"
- y2="9.8606262"
- x2="7.1051636"
- y1="6.6672974"
- x1="6.8551636"
- gradientUnits="userSpaceOnUse"
- id="linearGradient5130"
- xlink:href="#linearGradient4655-7-9"
- inkscape:collect="always" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient4655-7-9">
- <stop
- style="stop-color:#ce5c00;stop-opacity:1;"
- offset="0"
- id="stop4657-9-3" />
- <stop
- style="stop-color:#914100;stop-opacity:1"
- offset="1"
- id="stop4659-9-4" />
- </linearGradient>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="11.495914"
- inkscape:cy="7.2986073"
- inkscape:document-units="px"
- inkscape:current-layer="g6305"
- showgrid="true"
- borderlayer="true"
- inkscape:showpageshadow="false"
- inkscape:window-width="1180"
- inkscape:window-height="950"
- inkscape:window-x="1600"
- inkscape:window-y="166"
- inkscape:window-maximized="0"
- inkscape:snap-nodes="false"
- inkscape:snap-bbox="true">
- <inkscape:grid
- type="xygrid"
- id="grid4084"
- empspacing="5"
- visible="true"
- enabled="true"
- snapvisiblegridlinesonly="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata819">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- transform="translate(-1031,770.36221)"
- id="g6305"
- style="display:inline;enable-background:new">
- <g
- transform="translate(3.7481965e-5,-1.1707725e-5)"
- id="g5102"
- style="display:inline;enable-background:new">
- <path
- sodipodi:type="arc"
- style="opacity:0.1;color:#000000;fill:none;stroke:#ffffff;stroke-width:0.88215655;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="path5104"
- sodipodi:cx="660.96808"
- sodipodi:cy="255.0668"
- sodipodi:rx="4.5078058"
- sodipodi:ry="7.2937827"
- d="m 665.47588,255.0668 c 0,4.02825 -2.01821,7.29379 -4.5078,7.29379 -2.48959,0 -4.50781,-3.26554 -4.50781,-7.29379 0,-4.02824 2.01822,-7.29378 4.50781,-7.29378 2.48959,0 4.5078,3.26554 4.5078,7.29378 z"
- transform="matrix(1.4419436,0,0,0.89116967,85.92127,47.692201)" />
- <path
- transform="matrix(1.4419436,0,0,0.89116967,85.92127,46.692201)"
- d="m 665.47588,255.0668 c 0,4.02825 -2.01821,7.29379 -4.5078,7.29379 -2.48959,0 -4.50781,-3.26554 -4.50781,-7.29379 0,-4.02824 2.01822,-7.29378 4.50781,-7.29378 2.48959,0 4.5078,3.26554 4.5078,7.29378 z"
- sodipodi:ry="7.2937827"
- sodipodi:rx="4.5078058"
- sodipodi:cy="255.0668"
- sodipodi:cx="660.96808"
- id="path5106"
- style="color:#000000;fill:url(#linearGradient5110);fill-opacity:1;fill-rule:nonzero;stroke:#131516;stroke-width:0.88215655;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- sodipodi:type="arc" />
- <path
- sodipodi:type="arc"
- style="opacity:0.37860083;fill:none;stroke:url(#radialGradient5112);stroke-width:1.04254842;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:100"
- id="path5108"
- sodipodi:cx="660.96808"
- sodipodi:cy="255.0668"
- sodipodi:rx="4.5078058"
- sodipodi:ry="7.2937827"
- d="m 665.47588,255.0668 c 0,4.02825 -2.01821,7.29379 -4.5078,7.29379 -2.48959,0 -4.50781,-3.26554 -4.50781,-7.29379 0,-4.02824 2.01822,-7.29378 4.50781,-7.29378 2.48959,0 4.5078,3.26554 4.5078,7.29378 z"
- transform="matrix(1.2201064,0,0,0.75406683,232.54855,81.662583)" />
- <rect
- ry="1.515625"
- rx="1.515625"
- y="272.5"
- x="1034.5625"
- height="3.03125"
- width="8.9375"
- id="rect5494-6"
- style="color:#000000;fill:#f57900;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient5130);stroke-width:1;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:113.35856395;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- id="path5496-5"
- d="m 1035.5625,273.5 6.9375,0"
- style="opacity:0.50431064;fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" />
- </g>
- </g>
- </g>
-</svg>
diff --git a/gtk3/theme/assets/radio-mixed.svg b/gtk3/theme/assets/radio-mixed.svg
deleted file mode 100644
index 5a5658f..0000000
--- a/gtk3/theme/assets/radio-mixed.svg
+++ /dev/null
@@ -1,343 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- id="svg814"
- version="1.1"
- inkscape:version="0.48+devel r10053 custom"
- sodipodi:docname="radio-unselected.svg">
- <defs
- id="defs816">
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10354-2"
- id="linearGradient8378"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-1609.9926,-78.958432)"
- x1="1205.5752"
- y1="-186.45331"
- x2="1205.5752"
- y2="-202.34555" />
- <linearGradient
- id="linearGradient10354-2"
- inkscape:collect="always">
- <stop
- id="stop10356-2"
- offset="0"
- style="stop-color:#bcbfb8;stop-opacity:1" />
- <stop
- id="stop10358-2"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10332-5"
- id="linearGradient8380"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.84941206,0,0,0.84794288,-623.98415,-483.16392)"
- x1="260.92538"
- y1="233.77748"
- x2="260.92538"
- y2="248.97633" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient10332-5">
- <stop
- style="stop-color:#d3d7cf;stop-opacity:1"
- offset="0"
- id="stop10334-5" />
- <stop
- style="stop-color:#8f9985;stop-opacity:1"
- offset="1"
- id="stop10336-29" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient11577-0-5-0-2"
- id="linearGradient8358"
- gradientUnits="userSpaceOnUse"
- x1="662.53418"
- y1="249.29141"
- x2="662.53418"
- y2="262.49979" />
- <linearGradient
- id="linearGradient11577-0-5-0-2"
- inkscape:collect="always">
- <stop
- id="stop11579-5-6-7-4"
- offset="0"
- style="stop-color:#d3d7cf;stop-opacity:1;" />
- <stop
- id="stop11581-8-0-0-9"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient12415-4-1-5"
- id="linearGradient8360"
- gradientUnits="userSpaceOnUse"
- x1="664.26984"
- y1="261.44751"
- x2="664.26984"
- y2="248.05356" />
- <linearGradient
- id="linearGradient12415-4-1-5"
- inkscape:collect="always">
- <stop
- id="stop12417-2-8-0"
- offset="0"
- style="stop-color:#d3d7cf;stop-opacity:1;" />
- <stop
- id="stop12419-5-0-9"
- offset="1"
- style="stop-color:#8f9985;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient11623-4-5-4"
- id="linearGradient8362"
- gradientUnits="userSpaceOnUse"
- x1="661.04559"
- y1="251.6946"
- x2="661.04559"
- y2="258.26358" />
- <linearGradient
- id="linearGradient11623-4-5-4"
- inkscape:collect="always">
- <stop
- id="stop11625-5-6-0"
- offset="0"
- style="stop-color:#2e87e3;stop-opacity:1" />
- <stop
- id="stop11627-4-4-9"
- offset="1"
- style="stop-color:#76b0ec;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient12387-1-5"
- id="linearGradient8364"
- gradientUnits="userSpaceOnUse"
- x1="662.26074"
- y1="251.66537"
- x2="662.26074"
- y2="259.77792" />
- <linearGradient
- id="linearGradient12387-1-5"
- inkscape:collect="always">
- <stop
- id="stop12389-7-2"
- offset="0"
- style="stop-color:#1b6fc5;stop-opacity:1;" />
- <stop
- id="stop12391-1-4"
- offset="1"
- style="stop-color:#145393;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient11553-0-7-9"
- id="linearGradient8366"
- gradientUnits="userSpaceOnUse"
- x1="660.16144"
- y1="246.69635"
- x2="660.27411"
- y2="260.70532" />
- <linearGradient
- id="linearGradient11553-0-7-9">
- <stop
- id="stop11555-5-9-8"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop11557-1-9-0"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient12405-7"
- id="radialGradient8368"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.4685542,0,0,2.2820942,-309.65132,-324.35943)"
- cx="660.8656"
- cy="251.41324"
- fx="660.8656"
- fy="251.41324"
- r="5.0290799" />
- <linearGradient
- id="linearGradient12405-7"
- inkscape:collect="always">
- <stop
- id="stop12407-9"
- offset="0"
- style="stop-color:#000000;stop-opacity:1;" />
- <stop
- id="stop12409-7"
- offset="1"
- style="stop-color:#000000;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient12692-5-0"
- id="radialGradient8370"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.4143887,0,0,1.7213698,-937.76662,-194.09437)"
- cx="663.01904"
- cy="269.82831"
- fx="663.01904"
- fy="269.82831"
- r="2.3864853" />
- <linearGradient
- id="linearGradient12692-5-0"
- inkscape:collect="always">
- <stop
- id="stop12694-4-1"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop12696-5-2"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- r="2.3864853"
- fy="269.82831"
- fx="663.01904"
- cy="269.82831"
- cx="663.01904"
- gradientTransform="matrix(2.4143887,0,0,1.7213698,-937.76662,-194.09437)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient5029"
- xlink:href="#linearGradient12692-5-0"
- inkscape:collect="always" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient7346"
- id="linearGradient7352"
- x1="5.65625"
- y1="6.390625"
- x2="5.65625"
- y2="9.828125"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient7346">
- <stop
- style="stop-color:#1969ba;stop-opacity:1"
- offset="0"
- id="stop7348" />
- <stop
- style="stop-color:#145393;stop-opacity:1"
- offset="1"
- id="stop7350" />
- </linearGradient>
- <linearGradient
- gradientTransform="translate(1033.0001,265.99998)"
- y2="9.828125"
- x2="5.65625"
- y1="6.390625"
- x1="5.65625"
- gradientUnits="userSpaceOnUse"
- id="linearGradient119"
- xlink:href="#linearGradient7346"
- inkscape:collect="always" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1"
- inkscape:cx="38.155252"
- inkscape:cy="2.4242657"
- inkscape:document-units="px"
- inkscape:current-layer="g6305"
- showgrid="false"
- borderlayer="true"
- inkscape:showpageshadow="false"
- inkscape:window-width="1180"
- inkscape:window-height="950"
- inkscape:window-x="2306"
- inkscape:window-y="143"
- inkscape:window-maximized="0">
- <inkscape:grid
- type="xygrid"
- id="grid4084"
- empspacing="5"
- visible="true"
- enabled="true"
- snapvisiblegridlinesonly="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata819">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- transform="translate(-1031,770.36221)"
- id="g6305"
- style="display:inline;enable-background:new">
- <path
- transform="matrix(1.4419436,0,0,0.89116967,85.92127,46.692201)"
- d="m 665.47588,255.0668 c 0,4.02825 -2.01821,7.29379 -4.5078,7.29379 -2.48959,0 -4.50781,-3.26554 -4.50781,-7.29379 0,-4.02824 2.01822,-7.29378 4.50781,-7.29378 2.48959,0 4.5078,3.26554 4.5078,7.29378 z"
- sodipodi:ry="7.2937827"
- sodipodi:rx="4.5078058"
- sodipodi:cy="255.0668"
- sodipodi:cx="660.96808"
- id="path6307"
- style="color:#000000;fill:url(#linearGradient8358);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient8360);stroke-width:0.88215655;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:100;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new"
- sodipodi:type="arc" />
- <path
- sodipodi:type="arc"
- style="opacity:0.12955466;fill:none;stroke:url(#radialGradient8368);stroke-width:1.04254842;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:100"
- id="path6313"
- sodipodi:cx="660.96808"
- sodipodi:cy="255.0668"
- sodipodi:rx="4.5078058"
- sodipodi:ry="7.2937827"
- d="m 665.47588,255.0668 c 0,4.02825 -2.01821,7.29379 -4.5078,7.29379 -2.48959,0 -4.50781,-3.26554 -4.50781,-7.29379 0,-4.02824 2.01822,-7.29378 4.50781,-7.29378 2.48959,0 4.5078,3.26554 4.5078,7.29378 z"
- transform="matrix(1.2201064,0,0,0.75406683,232.54855,81.662583)" />
- <rect
- style="color:#000000;fill:#4588ca;fill-opacity:0.98823529;fill-rule:nonzero;stroke:url(#linearGradient119);stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="rect5494"
- width="8.9375"
- height="3.03125"
- x="1034.5312"
- y="272.5"
- rx="1.515625"
- ry="1.515625" />
- <path
- style="opacity:0.50431064;fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
- d="m 1035.5313,273.56248 6.9375,0"
- id="path5496"
- inkscape:connector-curvature="0" />
- </g>
- </g>
-</svg>
diff --git a/gtk3/theme/assets/radio-selected-dark.svg b/gtk3/theme/assets/radio-selected-dark.svg
deleted file mode 100644
index caafcc9..0000000
--- a/gtk3/theme/assets/radio-selected-dark.svg
+++ /dev/null
@@ -1,539 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- id="svg814"
- version="1.1"
- inkscape:version="0.48.1 r9760"
- sodipodi:docname="radio-unselected-dark.svg">
- <defs
- id="defs816">
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10354-2"
- id="linearGradient8378"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-1609.9926,-78.958432)"
- x1="1205.5752"
- y1="-186.45331"
- x2="1205.5752"
- y2="-202.34555" />
- <linearGradient
- id="linearGradient10354-2"
- inkscape:collect="always">
- <stop
- id="stop10356-2"
- offset="0"
- style="stop-color:#bcbfb8;stop-opacity:1" />
- <stop
- id="stop10358-2"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10332-5"
- id="linearGradient8380"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.84941206,0,0,0.84794288,-623.98415,-483.16392)"
- x1="260.92538"
- y1="233.77748"
- x2="260.92538"
- y2="248.97633" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient10332-5">
- <stop
- style="stop-color:#d3d7cf;stop-opacity:1"
- offset="0"
- id="stop10334-5" />
- <stop
- style="stop-color:#8f9985;stop-opacity:1"
- offset="1"
- id="stop10336-29" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient11577-0-5-0-2"
- id="linearGradient8358"
- gradientUnits="userSpaceOnUse"
- x1="662.53418"
- y1="249.29141"
- x2="662.53418"
- y2="262.49979" />
- <linearGradient
- id="linearGradient11577-0-5-0-2"
- inkscape:collect="always">
- <stop
- id="stop11579-5-6-7-4"
- offset="0"
- style="stop-color:#d3d7cf;stop-opacity:1;" />
- <stop
- id="stop11581-8-0-0-9"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient12415-4-1-5"
- id="linearGradient8360"
- gradientUnits="userSpaceOnUse"
- x1="664.26984"
- y1="261.44751"
- x2="664.26984"
- y2="248.05356" />
- <linearGradient
- id="linearGradient12415-4-1-5"
- inkscape:collect="always">
- <stop
- id="stop12417-2-8-0"
- offset="0"
- style="stop-color:#d3d7cf;stop-opacity:1;" />
- <stop
- id="stop12419-5-0-9"
- offset="1"
- style="stop-color:#8f9985;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient11623-4-5-4"
- id="linearGradient8362"
- gradientUnits="userSpaceOnUse"
- x1="661.04559"
- y1="251.6946"
- x2="661.04559"
- y2="258.26358" />
- <linearGradient
- id="linearGradient11623-4-5-4"
- inkscape:collect="always">
- <stop
- id="stop11625-5-6-0"
- offset="0"
- style="stop-color:#2e87e3;stop-opacity:1" />
- <stop
- id="stop11627-4-4-9"
- offset="1"
- style="stop-color:#76b0ec;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient12387-1-5"
- id="linearGradient8364"
- gradientUnits="userSpaceOnUse"
- x1="662.26074"
- y1="251.66537"
- x2="662.26074"
- y2="259.77792" />
- <linearGradient
- id="linearGradient12387-1-5"
- inkscape:collect="always">
- <stop
- id="stop12389-7-2"
- offset="0"
- style="stop-color:#1b6fc5;stop-opacity:1;" />
- <stop
- id="stop12391-1-4"
- offset="1"
- style="stop-color:#145393;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient11553-0-7-9"
- id="linearGradient8366"
- gradientUnits="userSpaceOnUse"
- x1="660.16144"
- y1="246.69635"
- x2="660.27411"
- y2="260.70532" />
- <linearGradient
- id="linearGradient11553-0-7-9">
- <stop
- id="stop11555-5-9-8"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop11557-1-9-0"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient12405-7"
- id="radialGradient8368"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.4685542,0,0,2.2820942,-309.65132,-324.35943)"
- cx="660.8656"
- cy="251.41324"
- fx="660.8656"
- fy="251.41324"
- r="5.0290799" />
- <linearGradient
- id="linearGradient12405-7"
- inkscape:collect="always">
- <stop
- id="stop12407-9"
- offset="0"
- style="stop-color:#000000;stop-opacity:1;" />
- <stop
- id="stop12409-7"
- offset="1"
- style="stop-color:#000000;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient12692-5-0"
- id="radialGradient8370"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.4143887,0,0,1.7213698,-937.76662,-194.09437)"
- cx="663.01904"
- cy="269.82831"
- fx="663.01904"
- fy="269.82831"
- r="2.3864853" />
- <linearGradient
- id="linearGradient12692-5-0"
- inkscape:collect="always">
- <stop
- id="stop12694-4-1"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop12696-5-2"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- r="2.3864853"
- fy="269.82831"
- fx="663.01904"
- cy="269.82831"
- cx="663.01904"
- gradientTransform="matrix(2.4143887,0,0,1.7213698,-937.76662,-194.09437)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient5029"
- xlink:href="#linearGradient12692-5-0"
- inkscape:collect="always" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient7346"
- id="linearGradient7352"
- x1="5.65625"
- y1="6.390625"
- x2="5.65625"
- y2="9.828125"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient7346">
- <stop
- style="stop-color:#1969ba;stop-opacity:1"
- offset="0"
- id="stop7348" />
- <stop
- style="stop-color:#145393;stop-opacity:1"
- offset="1"
- id="stop7350" />
- </linearGradient>
- <linearGradient
- gradientTransform="translate(1033.0001,265.99998)"
- y2="9.828125"
- x2="5.65625"
- y1="6.390625"
- x1="5.65625"
- gradientUnits="userSpaceOnUse"
- id="linearGradient119"
- xlink:href="#linearGradient7346"
- inkscape:collect="always" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3859-5"
- id="linearGradient5110"
- gradientUnits="userSpaceOnUse"
- x1="658.5564"
- y1="257.04449"
- x2="658.5564"
- y2="247.62109" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3859-5">
- <stop
- style="stop-color:#282828;stop-opacity:1;"
- offset="0"
- id="stop3861-2" />
- <stop
- style="stop-color:#151515;stop-opacity:1"
- offset="1"
- id="stop3863-6" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4631"
- id="radialGradient5112"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(4.055689,-0.04454196,0.00708427,1.6887546,-2020.4687,-144.9433)"
- cx="660.6142"
- cy="251.41986"
- fx="660.6142"
- fy="251.41986"
- r="5.0290799" />
- <linearGradient
- id="linearGradient4631"
- inkscape:collect="always">
- <stop
- id="stop4633"
- offset="0"
- style="stop-color:#000000;stop-opacity:1" />
- <stop
- id="stop4635"
- offset="1"
- style="stop-color:#000000;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3859-5-9"
- id="linearGradient3977-7"
- gradientUnits="userSpaceOnUse"
- x1="658.5564"
- y1="257.04449"
- x2="658.5564"
- y2="247.62109" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3859-5-9">
- <stop
- style="stop-color:#282828;stop-opacity:1;"
- offset="0"
- id="stop3861-2-2" />
- <stop
- style="stop-color:#151515;stop-opacity:1"
- offset="1"
- id="stop3863-6-6" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4655"
- id="linearGradient4661"
- x1="661.60516"
- y1="251.4173"
- x2="661.60516"
- y2="262.36063"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient4655">
- <stop
- style="stop-color:#ce5c00;stop-opacity:1;"
- offset="0"
- id="stop4657" />
- <stop
- style="stop-color:#914100;stop-opacity:1"
- offset="1"
- id="stop4659" />
- </linearGradient>
- <linearGradient
- y2="260.70532"
- x2="660.27411"
- y1="246.69635"
- x1="660.16144"
- gradientUnits="userSpaceOnUse"
- id="linearGradient8366-2"
- xlink:href="#linearGradient11553-0-7-9-9"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient11553-0-7-9-9">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop11555-5-9-8-4" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop11557-1-9-0-2" />
- </linearGradient>
- <radialGradient
- r="5.0290799"
- fy="251.41324"
- fx="660.8656"
- cy="251.41324"
- cx="660.8656"
- gradientTransform="matrix(1.4685542,0,0,2.2820942,-309.65132,-324.35943)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient8368-8"
- xlink:href="#linearGradient12405-7-3"
- inkscape:collect="always" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient12405-7-3">
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="0"
- id="stop12407-9-7" />
- <stop
- style="stop-color:#000000;stop-opacity:0;"
- offset="1"
- id="stop12409-7-4" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient12692-5-0-9"
- id="radialGradient5029-2"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.4143887,0,0,1.7213698,-937.76662,-194.09437)"
- cx="663.01904"
- cy="269.82831"
- fx="663.01904"
- fy="269.82831"
- r="2.3864853" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient12692-5-0-9">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop12694-4-1-4" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop12696-5-2-3" />
- </linearGradient>
- <radialGradient
- r="2.3864853"
- fy="269.82831"
- fx="663.01904"
- cy="269.82831"
- cx="663.01904"
- gradientTransform="matrix(2.4143887,0,0,1.7213698,-937.76662,-194.09437)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient6814"
- xlink:href="#linearGradient12692-5-0-9"
- inkscape:collect="always" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="11.495914"
- inkscape:cy="7.2986073"
- inkscape:document-units="px"
- inkscape:current-layer="g6305"
- showgrid="true"
- borderlayer="true"
- inkscape:showpageshadow="false"
- inkscape:window-width="1180"
- inkscape:window-height="950"
- inkscape:window-x="1600"
- inkscape:window-y="166"
- inkscape:window-maximized="0"
- inkscape:snap-nodes="false"
- inkscape:snap-bbox="true">
- <inkscape:grid
- type="xygrid"
- id="grid4084"
- empspacing="5"
- visible="true"
- enabled="true"
- snapvisiblegridlinesonly="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata819">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- transform="translate(-1031,770.36221)"
- id="g6305"
- style="display:inline;enable-background:new">
- <g
- transform="translate(4.0996599e-5,-1.1707725e-5)"
- id="g6305-7"
- style="display:inline;enable-background:new">
- <path
- sodipodi:type="arc"
- style="opacity:0.1;color:#000000;fill:none;stroke:#ffffff;stroke-width:0.88215655;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="path5062"
- sodipodi:cx="660.96808"
- sodipodi:cy="255.0668"
- sodipodi:rx="4.5078058"
- sodipodi:ry="7.2937827"
- d="m 665.47588,255.0668 c 0,4.02825 -2.01821,7.29379 -4.5078,7.29379 -2.48959,0 -4.50781,-3.26554 -4.50781,-7.29379 0,-4.02824 2.01822,-7.29378 4.50781,-7.29378 2.48959,0 4.5078,3.26554 4.5078,7.29378 z"
- transform="matrix(1.4419436,0,0,0.89116967,85.92127,47.692201)" />
- <path
- transform="matrix(1.4419436,0,0,0.89116967,85.92127,46.692201)"
- d="m 665.47588,255.0668 c 0,4.02825 -2.01821,7.29379 -4.5078,7.29379 -2.48959,0 -4.50781,-3.26554 -4.50781,-7.29379 0,-4.02824 2.01822,-7.29378 4.50781,-7.29378 2.48959,0 4.5078,3.26554 4.5078,7.29378 z"
- sodipodi:ry="7.2937827"
- sodipodi:rx="4.5078058"
- sodipodi:cy="255.0668"
- sodipodi:cx="660.96808"
- id="path6307"
- style="color:#000000;fill:url(#linearGradient3977-7);fill-opacity:1;fill-rule:nonzero;stroke:#131516;stroke-width:0.88215655;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- sodipodi:type="arc" />
- <path
- sodipodi:type="arc"
- style="color:#000000;fill:#f57900;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient4661);stroke-width:1.27423298;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:144.44521581;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="path6309"
- sodipodi:cx="660.96808"
- sodipodi:cy="255.0668"
- sodipodi:rx="4.5078058"
- sodipodi:ry="7.2937827"
- d="m 665.47588,255.0668 c 0,4.02825 -2.01821,7.29379 -4.5078,7.29379 -2.48959,0 -4.50781,-3.26554 -4.50781,-7.29379 0,-4.02824 2.01822,-7.29378 4.50781,-7.29378 2.48959,0 4.5078,3.26554 4.5078,7.29378 z"
- transform="matrix(0.99826332,0,0,0.61696032,379.17979,116.6339)" />
- <path
- sodipodi:type="arc"
- style="opacity:0.55465585;fill:none;stroke:url(#linearGradient8366-2);stroke-width:1.63832664;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:100"
- id="path6311"
- sodipodi:cx="660.96808"
- sodipodi:cy="255.0668"
- sodipodi:rx="4.5078058"
- sodipodi:ry="7.2937827"
- d="m 665.47588,255.0668 c 0,4.02825 -2.01821,7.29379 -4.5078,7.29379 -2.48959,0 -4.50781,-3.26554 -4.50781,-7.29379 0,-4.02824 2.01822,-7.29378 4.50781,-7.29378 2.48959,0 4.5078,3.26554 4.5078,7.29378 z"
- transform="matrix(0.77641414,0,0,-0.47985006,525.81496,396.39382)" />
- <path
- sodipodi:type="arc"
- style="opacity:0.12955466;fill:none;stroke:url(#radialGradient8368-8);stroke-width:1.04254842;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:100"
- id="path6313"
- sodipodi:cx="660.96808"
- sodipodi:cy="255.0668"
- sodipodi:rx="4.5078058"
- sodipodi:ry="7.2937827"
- d="m 665.47588,255.0668 c 0,4.02825 -2.01821,7.29379 -4.5078,7.29379 -2.48959,0 -4.50781,-3.26554 -4.50781,-7.29379 0,-4.02824 2.01822,-7.29378 4.50781,-7.29378 2.48959,0 4.5078,3.26554 4.5078,7.29378 z"
- transform="matrix(1.2201064,0,0,0.75406683,232.54855,81.662583)" />
- <path
- transform="matrix(1.2570829,0,0,1.1611638,205.4417,-43.52207)"
- d="m 665.47584,271.75009 c 0,0.9397 -1.06847,1.70148 -2.38648,1.70148 -1.31802,0 -2.38649,-0.76178 -2.38649,-1.70148 0,-0.9397 1.06847,-1.70147 2.38649,-1.70147 1.31801,0 2.38648,0.76177 2.38648,1.70147 z"
- sodipodi:ry="1.7014757"
- sodipodi:rx="2.3864853"
- sodipodi:cy="271.75009"
- sodipodi:cx="663.08936"
- id="path6315"
- style="opacity:0.7854251;color:#000000;fill:url(#radialGradient6814);fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- sodipodi:type="arc" />
- </g>
- </g>
- </g>
-</svg>
diff --git a/gtk3/theme/assets/radio-selected-insensitive-dark.svg b/gtk3/theme/assets/radio-selected-insensitive-dark.svg
deleted file mode 100644
index 5e5768a..0000000
--- a/gtk3/theme/assets/radio-selected-insensitive-dark.svg
+++ /dev/null
@@ -1,243 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- id="svg814"
- version="1.1"
- inkscape:version="0.48.1 r9760"
- sodipodi:docname="radio-selected-insensitive.svg">
- <defs
- id="defs816">
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10354-2"
- id="linearGradient8378"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-1609.9926,-78.958432)"
- x1="1205.5752"
- y1="-186.45331"
- x2="1205.5752"
- y2="-202.34555" />
- <linearGradient
- id="linearGradient10354-2"
- inkscape:collect="always">
- <stop
- id="stop10356-2"
- offset="0"
- style="stop-color:#bcbfb8;stop-opacity:1" />
- <stop
- id="stop10358-2"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10332-5"
- id="linearGradient8380"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.84941206,0,0,0.84794288,-623.98415,-483.16392)"
- x1="260.92538"
- y1="233.77748"
- x2="260.92538"
- y2="248.97633" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient10332-5">
- <stop
- style="stop-color:#d3d7cf;stop-opacity:1"
- offset="0"
- id="stop10334-5" />
- <stop
- style="stop-color:#8f9985;stop-opacity:1"
- offset="1"
- id="stop10336-29" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient11577-0-5-0-2"
- id="linearGradient8358"
- gradientUnits="userSpaceOnUse"
- x1="662.53418"
- y1="249.29141"
- x2="662.53418"
- y2="262.49979" />
- <linearGradient
- id="linearGradient11577-0-5-0-2"
- inkscape:collect="always">
- <stop
- id="stop11579-5-6-7-4"
- offset="0"
- style="stop-color:#d3d7cf;stop-opacity:1;" />
- <stop
- id="stop11581-8-0-0-9"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient12415-4-1-5"
- id="linearGradient8360"
- gradientUnits="userSpaceOnUse"
- x1="664.26984"
- y1="261.44751"
- x2="664.26984"
- y2="248.05356" />
- <linearGradient
- id="linearGradient12415-4-1-5"
- inkscape:collect="always">
- <stop
- id="stop12417-2-8-0"
- offset="0"
- style="stop-color:#d3d7cf;stop-opacity:1;" />
- <stop
- id="stop12419-5-0-9"
- offset="1"
- style="stop-color:#8f9985;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- id="linearGradient11553-0-7-9">
- <stop
- id="stop11555-5-9-8"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop11557-1-9-0"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient12405-7"
- id="radialGradient8368"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.4685542,0,0,2.2820942,-309.65132,-324.35943)"
- cx="660.8656"
- cy="251.41324"
- fx="660.8656"
- fy="251.41324"
- r="5.0290799" />
- <linearGradient
- id="linearGradient12405-7"
- inkscape:collect="always">
- <stop
- id="stop12407-9"
- offset="0"
- style="stop-color:#000000;stop-opacity:1;" />
- <stop
- id="stop12409-7"
- offset="1"
- style="stop-color:#000000;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient12692-5-0"
- id="radialGradient8370"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.4143887,0,0,1.7213698,-937.76662,-194.09437)"
- cx="663.01904"
- cy="269.82831"
- fx="663.01904"
- fy="269.82831"
- r="2.3864853" />
- <linearGradient
- id="linearGradient12692-5-0"
- inkscape:collect="always">
- <stop
- id="stop12694-4-1"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop12696-5-2"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:0;" />
- </linearGradient>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="-0.71194906"
- inkscape:cy="8.5766833"
- inkscape:document-units="px"
- inkscape:current-layer="g6305"
- showgrid="true"
- borderlayer="true"
- inkscape:showpageshadow="false"
- inkscape:window-width="1180"
- inkscape:window-height="950"
- inkscape:window-x="1600"
- inkscape:window-y="0"
- inkscape:window-maximized="0"
- inkscape:snap-nodes="false"
- inkscape:snap-bbox="true">
- <inkscape:grid
- type="xygrid"
- id="grid4084"
- empspacing="5"
- visible="true"
- enabled="true"
- snapvisiblegridlinesonly="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata819">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- transform="translate(-1031,770.36221)"
- id="g6305"
- style="display:inline;enable-background:new">
- <g
- style="opacity:0.5;display:inline;enable-background:new"
- id="g16917"
- transform="translate(3.7481965e-5,-1.1707725e-5)">
- <path
- sodipodi:type="arc"
- style="color:#000000;fill:none;stroke:#717171;stroke-width:0.88215655;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="path16919"
- sodipodi:cx="660.96808"
- sodipodi:cy="255.0668"
- sodipodi:rx="4.5078058"
- sodipodi:ry="7.2937827"
- d="m 665.47588,255.0668 c 0,4.02825 -2.01821,7.29379 -4.5078,7.29379 -2.48959,0 -4.50781,-3.26554 -4.50781,-7.29379 0,-4.02824 2.01822,-7.29378 4.50781,-7.29378 2.48959,0 4.5078,3.26554 4.5078,7.29378 z"
- transform="matrix(1.4419436,0,0,0.89116967,85.92127,46.692201)" />
- <path
- transform="matrix(0.77479411,0,0,0.47884882,526.8858,151.86156)"
- d="m 665.47588,255.0668 c 0,4.02825 -2.01821,7.29379 -4.5078,7.29379 -2.48959,0 -4.50781,-3.26554 -4.50781,-7.29379 0,-4.02824 2.01822,-7.29378 4.50781,-7.29378 2.48959,0 4.5078,3.26554 4.5078,7.29378 z"
- sodipodi:ry="7.2937827"
- sodipodi:rx="4.5078058"
- sodipodi:cy="255.0668"
- sodipodi:cx="660.96808"
- id="path16921"
- style="color:#000000;fill:#717171;fill-opacity:1;fill-rule:nonzero;stroke:#717171;stroke-width:1.64175230000000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- sodipodi:type="arc" />
- </g>
- </g>
- </g>
-</svg>
diff --git a/gtk3/theme/assets/radio-selected-insensitive.svg b/gtk3/theme/assets/radio-selected-insensitive.svg
deleted file mode 100644
index 09eb693..0000000
--- a/gtk3/theme/assets/radio-selected-insensitive.svg
+++ /dev/null
@@ -1,264 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- id="svg814"
- version="1.1"
- inkscape:version="0.48+devel r10053 custom"
- sodipodi:docname="radio-unselected.svg">
- <defs
- id="defs816">
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10354-2"
- id="linearGradient8378"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-1609.9926,-78.958432)"
- x1="1205.5752"
- y1="-186.45331"
- x2="1205.5752"
- y2="-202.34555" />
- <linearGradient
- id="linearGradient10354-2"
- inkscape:collect="always">
- <stop
- id="stop10356-2"
- offset="0"
- style="stop-color:#bcbfb8;stop-opacity:1" />
- <stop
- id="stop10358-2"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10332-5"
- id="linearGradient8380"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.84941206,0,0,0.84794288,-623.98415,-483.16392)"
- x1="260.92538"
- y1="233.77748"
- x2="260.92538"
- y2="248.97633" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient10332-5">
- <stop
- style="stop-color:#d3d7cf;stop-opacity:1"
- offset="0"
- id="stop10334-5" />
- <stop
- style="stop-color:#8f9985;stop-opacity:1"
- offset="1"
- id="stop10336-29" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient11577-0-5-0-2"
- id="linearGradient8358"
- gradientUnits="userSpaceOnUse"
- x1="662.53418"
- y1="249.29141"
- x2="662.53418"
- y2="262.49979" />
- <linearGradient
- id="linearGradient11577-0-5-0-2"
- inkscape:collect="always">
- <stop
- id="stop11579-5-6-7-4"
- offset="0"
- style="stop-color:#d3d7cf;stop-opacity:1;" />
- <stop
- id="stop11581-8-0-0-9"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient12415-4-1-5"
- id="linearGradient8360"
- gradientUnits="userSpaceOnUse"
- x1="664.26984"
- y1="261.44751"
- x2="664.26984"
- y2="248.05356" />
- <linearGradient
- id="linearGradient12415-4-1-5"
- inkscape:collect="always">
- <stop
- id="stop12417-2-8-0"
- offset="0"
- style="stop-color:#d3d7cf;stop-opacity:1;" />
- <stop
- id="stop12419-5-0-9"
- offset="1"
- style="stop-color:#8f9985;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- id="linearGradient11553-0-7-9">
- <stop
- id="stop11555-5-9-8"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop11557-1-9-0"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient12405-7"
- id="radialGradient8368"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.4685542,0,0,2.2820942,-309.65132,-324.35943)"
- cx="660.8656"
- cy="251.41324"
- fx="660.8656"
- fy="251.41324"
- r="5.0290799" />
- <linearGradient
- id="linearGradient12405-7"
- inkscape:collect="always">
- <stop
- id="stop12407-9"
- offset="0"
- style="stop-color:#000000;stop-opacity:1;" />
- <stop
- id="stop12409-7"
- offset="1"
- style="stop-color:#000000;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient12692-5-0"
- id="radialGradient8370"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.4143887,0,0,1.7213698,-937.76662,-194.09437)"
- cx="663.01904"
- cy="269.82831"
- fx="663.01904"
- fy="269.82831"
- r="2.3864853" />
- <linearGradient
- id="linearGradient12692-5-0"
- inkscape:collect="always">
- <stop
- id="stop12694-4-1"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop12696-5-2"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient12415-4-1-5-2"
- id="linearGradient8392"
- gradientUnits="userSpaceOnUse"
- x1="664.26984"
- y1="261.44751"
- x2="664.26984"
- y2="248.05356" />
- <linearGradient
- id="linearGradient12415-4-1-5-2"
- inkscape:collect="always">
- <stop
- id="stop12417-2-8-0-7"
- offset="0"
- style="stop-color:#d3d7cf;stop-opacity:1;" />
- <stop
- id="stop12419-5-0-9-3"
- offset="1"
- style="stop-color:#8f9985;stop-opacity:1" />
- </linearGradient>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="7.2871964"
- inkscape:cy="8.5766833"
- inkscape:document-units="px"
- inkscape:current-layer="g6305"
- showgrid="true"
- borderlayer="true"
- inkscape:showpageshadow="false"
- inkscape:window-width="1180"
- inkscape:window-height="950"
- inkscape:window-x="1600"
- inkscape:window-y="0"
- inkscape:window-maximized="0"
- inkscape:snap-nodes="false"
- inkscape:snap-bbox="true">
- <inkscape:grid
- type="xygrid"
- id="grid4084"
- empspacing="5"
- visible="true"
- enabled="true"
- snapvisiblegridlinesonly="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata819">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- transform="translate(-1031,770.36221)"
- id="g6305"
- style="display:inline;enable-background:new">
- <g
- style="opacity:0.5;display:inline;enable-background:new"
- id="g16917"
- transform="translate(3.7481965e-5,-1.1707725e-5)">
- <path
- sodipodi:type="arc"
- style="color:#000000;fill:none;stroke:url(#linearGradient8392);stroke-width:0.88215655;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:100;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new"
- id="path16919"
- sodipodi:cx="660.96808"
- sodipodi:cy="255.0668"
- sodipodi:rx="4.5078058"
- sodipodi:ry="7.2937827"
- d="m 665.47588,255.0668 c 0,4.02825 -2.01821,7.29379 -4.5078,7.29379 -2.48959,0 -4.50781,-3.26554 -4.50781,-7.29379 0,-4.02824 2.01822,-7.29378 4.50781,-7.29378 2.48959,0 4.5078,3.26554 4.5078,7.29378 z"
- transform="matrix(1.4419436,0,0,0.89116967,85.92127,46.692201)" />
- <path
- transform="matrix(0.77479411,0,0,0.47884882,526.8858,151.86156)"
- d="m 665.47588,255.0668 c 0,4.02825 -2.01821,7.29379 -4.5078,7.29379 -2.48959,0 -4.50781,-3.26554 -4.50781,-7.29379 0,-4.02824 2.01822,-7.29378 4.50781,-7.29378 2.48959,0 4.5078,3.26554 4.5078,7.29378 z"
- sodipodi:ry="7.2937827"
- sodipodi:rx="4.5078058"
- sodipodi:cy="255.0668"
- sodipodi:cx="660.96808"
- id="path16921"
- style="color:#000000;fill:#8f9985;fill-opacity:1;fill-rule:nonzero;stroke:#8f9985;stroke-width:1.64175236;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:144.44521581;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- sodipodi:type="arc" />
- </g>
- </g>
- </g>
-</svg>
diff --git a/gtk3/theme/assets/radio-selected.svg b/gtk3/theme/assets/radio-selected.svg
deleted file mode 100644
index 178c4b3..0000000
--- a/gtk3/theme/assets/radio-selected.svg
+++ /dev/null
@@ -1,350 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- id="svg814"
- version="1.1"
- inkscape:version="0.48+devel r10053 custom"
- sodipodi:docname="checkbox-unchecked-insensitive.svg">
- <defs
- id="defs816">
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10354-2"
- id="linearGradient8378"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-1609.9926,-78.958432)"
- x1="1205.5752"
- y1="-186.45331"
- x2="1205.5752"
- y2="-202.34555" />
- <linearGradient
- id="linearGradient10354-2"
- inkscape:collect="always">
- <stop
- id="stop10356-2"
- offset="0"
- style="stop-color:#bcbfb8;stop-opacity:1" />
- <stop
- id="stop10358-2"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10332-5"
- id="linearGradient8380"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.84941206,0,0,0.84794288,-623.98415,-483.16392)"
- x1="260.92538"
- y1="233.77748"
- x2="260.92538"
- y2="248.97633" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient10332-5">
- <stop
- style="stop-color:#d3d7cf;stop-opacity:1"
- offset="0"
- id="stop10334-5" />
- <stop
- style="stop-color:#8f9985;stop-opacity:1"
- offset="1"
- id="stop10336-29" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10332-5-8"
- id="linearGradient8390"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.84941206,0,0,0.84794288,-623.98415,-483.16392)"
- x1="260.92538"
- y1="233.77748"
- x2="260.92538"
- y2="248.97633" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient10332-5-8">
- <stop
- style="stop-color:#d3d7cf;stop-opacity:1"
- offset="0"
- id="stop10334-5-6" />
- <stop
- style="stop-color:#8f9985;stop-opacity:1"
- offset="1"
- id="stop10336-29-0" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient11577-0-5-0-2"
- id="linearGradient8358"
- gradientUnits="userSpaceOnUse"
- x1="662.53418"
- y1="249.29141"
- x2="662.53418"
- y2="262.49979" />
- <linearGradient
- id="linearGradient11577-0-5-0-2"
- inkscape:collect="always">
- <stop
- id="stop11579-5-6-7-4"
- offset="0"
- style="stop-color:#d3d7cf;stop-opacity:1;" />
- <stop
- id="stop11581-8-0-0-9"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient12415-4-1-5"
- id="linearGradient8360"
- gradientUnits="userSpaceOnUse"
- x1="664.26984"
- y1="261.44751"
- x2="664.26984"
- y2="248.05356" />
- <linearGradient
- id="linearGradient12415-4-1-5"
- inkscape:collect="always">
- <stop
- id="stop12417-2-8-0"
- offset="0"
- style="stop-color:#d3d7cf;stop-opacity:1;" />
- <stop
- id="stop12419-5-0-9"
- offset="1"
- style="stop-color:#8f9985;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient11623-4-5-4"
- id="linearGradient8362"
- gradientUnits="userSpaceOnUse"
- x1="661.04559"
- y1="251.6946"
- x2="661.04559"
- y2="258.26358" />
- <linearGradient
- id="linearGradient11623-4-5-4"
- inkscape:collect="always">
- <stop
- id="stop11625-5-6-0"
- offset="0"
- style="stop-color:#2e87e3;stop-opacity:1" />
- <stop
- id="stop11627-4-4-9"
- offset="1"
- style="stop-color:#76b0ec;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient12387-1-5"
- id="linearGradient8364"
- gradientUnits="userSpaceOnUse"
- x1="662.26074"
- y1="251.66537"
- x2="662.26074"
- y2="259.77792" />
- <linearGradient
- id="linearGradient12387-1-5"
- inkscape:collect="always">
- <stop
- id="stop12389-7-2"
- offset="0"
- style="stop-color:#1b6fc5;stop-opacity:1;" />
- <stop
- id="stop12391-1-4"
- offset="1"
- style="stop-color:#145393;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient11553-0-7-9"
- id="linearGradient8366"
- gradientUnits="userSpaceOnUse"
- x1="660.16144"
- y1="246.69635"
- x2="660.27411"
- y2="260.70532" />
- <linearGradient
- id="linearGradient11553-0-7-9">
- <stop
- id="stop11555-5-9-8"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop11557-1-9-0"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient12405-7"
- id="radialGradient8368"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.4685542,0,0,2.2820942,-309.65132,-324.35943)"
- cx="660.8656"
- cy="251.41324"
- fx="660.8656"
- fy="251.41324"
- r="5.0290799" />
- <linearGradient
- id="linearGradient12405-7"
- inkscape:collect="always">
- <stop
- id="stop12407-9"
- offset="0"
- style="stop-color:#000000;stop-opacity:1;" />
- <stop
- id="stop12409-7"
- offset="1"
- style="stop-color:#000000;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient12692-5-0"
- id="radialGradient8370"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.4143887,0,0,1.7213698,-937.76662,-194.09437)"
- cx="663.01904"
- cy="269.82831"
- fx="663.01904"
- fy="269.82831"
- r="2.3864853" />
- <linearGradient
- id="linearGradient12692-5-0"
- inkscape:collect="always">
- <stop
- id="stop12694-4-1"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop12696-5-2"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- r="2.3864853"
- fy="269.82831"
- fx="663.01904"
- cy="269.82831"
- cx="663.01904"
- gradientTransform="matrix(2.4143887,0,0,1.7213698,-937.76662,-194.09437)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient5029"
- xlink:href="#linearGradient12692-5-0"
- inkscape:collect="always" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="8.7319174"
- inkscape:cy="7.9147276"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- borderlayer="true"
- inkscape:showpageshadow="false"
- inkscape:window-width="1180"
- inkscape:window-height="950"
- inkscape:window-x="1600"
- inkscape:window-y="0"
- inkscape:window-maximized="0">
- <inkscape:grid
- type="xygrid"
- id="grid4084"
- empspacing="5"
- visible="true"
- enabled="true"
- snapvisiblegridlinesonly="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata819">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- transform="translate(-1031,770.36221)"
- id="g6305"
- style="display:inline;enable-background:new">
- <path
- transform="matrix(1.4419436,0,0,0.89116967,85.92127,46.692201)"
- d="m 665.47588,255.0668 c 0,4.02825 -2.01821,7.29379 -4.5078,7.29379 -2.48959,0 -4.50781,-3.26554 -4.50781,-7.29379 0,-4.02824 2.01822,-7.29378 4.50781,-7.29378 2.48959,0 4.5078,3.26554 4.5078,7.29378 z"
- sodipodi:ry="7.2937827"
- sodipodi:rx="4.5078058"
- sodipodi:cy="255.0668"
- sodipodi:cx="660.96808"
- id="path6307"
- style="color:#000000;fill:url(#linearGradient8358);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient8360);stroke-width:0.88215655;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:100;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new"
- sodipodi:type="arc" />
- <path
- sodipodi:type="arc"
- style="color:#000000;fill:url(#linearGradient8362);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient8364);stroke-width:1.27423298;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:144.44521581;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="path6309"
- sodipodi:cx="660.96808"
- sodipodi:cy="255.0668"
- sodipodi:rx="4.5078058"
- sodipodi:ry="7.2937827"
- d="m 665.47588,255.0668 c 0,4.02825 -2.01821,7.29379 -4.5078,7.29379 -2.48959,0 -4.50781,-3.26554 -4.50781,-7.29379 0,-4.02824 2.01822,-7.29378 4.50781,-7.29378 2.48959,0 4.5078,3.26554 4.5078,7.29378 z"
- transform="matrix(0.99826332,0,0,0.61696032,379.17979,116.6339)" />
- <path
- sodipodi:type="arc"
- style="opacity:0.55465585;fill:none;stroke:url(#linearGradient8366);stroke-width:1.63832664;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:100"
- id="path6311"
- sodipodi:cx="660.96808"
- sodipodi:cy="255.0668"
- sodipodi:rx="4.5078058"
- sodipodi:ry="7.2937827"
- d="m 665.47588,255.0668 c 0,4.02825 -2.01821,7.29379 -4.5078,7.29379 -2.48959,0 -4.50781,-3.26554 -4.50781,-7.29379 0,-4.02824 2.01822,-7.29378 4.50781,-7.29378 2.48959,0 4.5078,3.26554 4.5078,7.29378 z"
- transform="matrix(0.77641414,0,0,-0.47985006,525.81496,396.39382)" />
- <path
- sodipodi:type="arc"
- style="opacity:0.12955466;fill:none;stroke:url(#radialGradient8368);stroke-width:1.04254842;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:100"
- id="path6313"
- sodipodi:cx="660.96808"
- sodipodi:cy="255.0668"
- sodipodi:rx="4.5078058"
- sodipodi:ry="7.2937827"
- d="m 665.47588,255.0668 c 0,4.02825 -2.01821,7.29379 -4.5078,7.29379 -2.48959,0 -4.50781,-3.26554 -4.50781,-7.29379 0,-4.02824 2.01822,-7.29378 4.50781,-7.29378 2.48959,0 4.5078,3.26554 4.5078,7.29378 z"
- transform="matrix(1.2201064,0,0,0.75406683,232.54855,81.662583)" />
- <path
- transform="matrix(1.2570829,0,0,1.1611638,205.4417,-43.52207)"
- d="m 665.47584,271.75009 c 0,0.9397 -1.06847,1.70148 -2.38648,1.70148 -1.31802,0 -2.38649,-0.76178 -2.38649,-1.70148 0,-0.9397 1.06847,-1.70147 2.38649,-1.70147 1.31801,0 2.38648,0.76177 2.38648,1.70147 z"
- sodipodi:ry="1.7014757"
- sodipodi:rx="2.3864853"
- sodipodi:cy="271.75009"
- sodipodi:cx="663.08936"
- id="path6315"
- style="opacity:0.7854251;color:#000000;fill:url(#radialGradient5029);fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- sodipodi:type="arc" />
- </g>
- </g>
-</svg>
diff --git a/gtk3/theme/assets/radio-unselected-dark.svg b/gtk3/theme/assets/radio-unselected-dark.svg
deleted file mode 100644
index f614fa9..0000000
--- a/gtk3/theme/assets/radio-unselected-dark.svg
+++ /dev/null
@@ -1,412 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- id="svg814"
- version="1.1"
- inkscape:version="0.48.1 r9760"
- sodipodi:docname="radio-mixed-dark.svg">
- <defs
- id="defs816">
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10354-2"
- id="linearGradient8378"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-1609.9926,-78.958432)"
- x1="1205.5752"
- y1="-186.45331"
- x2="1205.5752"
- y2="-202.34555" />
- <linearGradient
- id="linearGradient10354-2"
- inkscape:collect="always">
- <stop
- id="stop10356-2"
- offset="0"
- style="stop-color:#bcbfb8;stop-opacity:1" />
- <stop
- id="stop10358-2"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10332-5"
- id="linearGradient8380"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.84941206,0,0,0.84794288,-623.98415,-483.16392)"
- x1="260.92538"
- y1="233.77748"
- x2="260.92538"
- y2="248.97633" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient10332-5">
- <stop
- style="stop-color:#d3d7cf;stop-opacity:1"
- offset="0"
- id="stop10334-5" />
- <stop
- style="stop-color:#8f9985;stop-opacity:1"
- offset="1"
- id="stop10336-29" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient11577-0-5-0-2"
- id="linearGradient8358"
- gradientUnits="userSpaceOnUse"
- x1="662.53418"
- y1="249.29141"
- x2="662.53418"
- y2="262.49979" />
- <linearGradient
- id="linearGradient11577-0-5-0-2"
- inkscape:collect="always">
- <stop
- id="stop11579-5-6-7-4"
- offset="0"
- style="stop-color:#d3d7cf;stop-opacity:1;" />
- <stop
- id="stop11581-8-0-0-9"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient12415-4-1-5"
- id="linearGradient8360"
- gradientUnits="userSpaceOnUse"
- x1="664.26984"
- y1="261.44751"
- x2="664.26984"
- y2="248.05356" />
- <linearGradient
- id="linearGradient12415-4-1-5"
- inkscape:collect="always">
- <stop
- id="stop12417-2-8-0"
- offset="0"
- style="stop-color:#d3d7cf;stop-opacity:1;" />
- <stop
- id="stop12419-5-0-9"
- offset="1"
- style="stop-color:#8f9985;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient11623-4-5-4"
- id="linearGradient8362"
- gradientUnits="userSpaceOnUse"
- x1="661.04559"
- y1="251.6946"
- x2="661.04559"
- y2="258.26358" />
- <linearGradient
- id="linearGradient11623-4-5-4"
- inkscape:collect="always">
- <stop
- id="stop11625-5-6-0"
- offset="0"
- style="stop-color:#2e87e3;stop-opacity:1" />
- <stop
- id="stop11627-4-4-9"
- offset="1"
- style="stop-color:#76b0ec;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient12387-1-5"
- id="linearGradient8364"
- gradientUnits="userSpaceOnUse"
- x1="662.26074"
- y1="251.66537"
- x2="662.26074"
- y2="259.77792" />
- <linearGradient
- id="linearGradient12387-1-5"
- inkscape:collect="always">
- <stop
- id="stop12389-7-2"
- offset="0"
- style="stop-color:#1b6fc5;stop-opacity:1;" />
- <stop
- id="stop12391-1-4"
- offset="1"
- style="stop-color:#145393;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient11553-0-7-9"
- id="linearGradient8366"
- gradientUnits="userSpaceOnUse"
- x1="660.16144"
- y1="246.69635"
- x2="660.27411"
- y2="260.70532" />
- <linearGradient
- id="linearGradient11553-0-7-9">
- <stop
- id="stop11555-5-9-8"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop11557-1-9-0"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient12405-7"
- id="radialGradient8368"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.4685542,0,0,2.2820942,-309.65132,-324.35943)"
- cx="660.8656"
- cy="251.41324"
- fx="660.8656"
- fy="251.41324"
- r="5.0290799" />
- <linearGradient
- id="linearGradient12405-7"
- inkscape:collect="always">
- <stop
- id="stop12407-9"
- offset="0"
- style="stop-color:#000000;stop-opacity:1;" />
- <stop
- id="stop12409-7"
- offset="1"
- style="stop-color:#000000;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient12692-5-0"
- id="radialGradient8370"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.4143887,0,0,1.7213698,-937.76662,-194.09437)"
- cx="663.01904"
- cy="269.82831"
- fx="663.01904"
- fy="269.82831"
- r="2.3864853" />
- <linearGradient
- id="linearGradient12692-5-0"
- inkscape:collect="always">
- <stop
- id="stop12694-4-1"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop12696-5-2"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- r="2.3864853"
- fy="269.82831"
- fx="663.01904"
- cy="269.82831"
- cx="663.01904"
- gradientTransform="matrix(2.4143887,0,0,1.7213698,-937.76662,-194.09437)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient5029"
- xlink:href="#linearGradient12692-5-0"
- inkscape:collect="always" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient7346"
- id="linearGradient7352"
- x1="5.65625"
- y1="6.390625"
- x2="5.65625"
- y2="9.828125"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient7346">
- <stop
- style="stop-color:#1969ba;stop-opacity:1"
- offset="0"
- id="stop7348" />
- <stop
- style="stop-color:#145393;stop-opacity:1"
- offset="1"
- id="stop7350" />
- </linearGradient>
- <linearGradient
- gradientTransform="translate(1033.0001,265.99998)"
- y2="9.828125"
- x2="5.65625"
- y1="6.390625"
- x1="5.65625"
- gradientUnits="userSpaceOnUse"
- id="linearGradient119"
- xlink:href="#linearGradient7346"
- inkscape:collect="always" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3859-5"
- id="linearGradient5110"
- gradientUnits="userSpaceOnUse"
- x1="658.5564"
- y1="257.04449"
- x2="658.5564"
- y2="247.62109" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3859-5">
- <stop
- style="stop-color:#282828;stop-opacity:1;"
- offset="0"
- id="stop3861-2" />
- <stop
- style="stop-color:#151515;stop-opacity:1"
- offset="1"
- id="stop3863-6" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4631"
- id="radialGradient5112"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(4.055689,-0.04454196,0.00708427,1.6887546,-2020.4687,-144.9433)"
- cx="660.6142"
- cy="251.41986"
- fx="660.6142"
- fy="251.41986"
- r="5.0290799" />
- <linearGradient
- id="linearGradient4631"
- inkscape:collect="always">
- <stop
- id="stop4633"
- offset="0"
- style="stop-color:#000000;stop-opacity:1" />
- <stop
- id="stop4635"
- offset="1"
- style="stop-color:#000000;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- gradientTransform="translate(1033.0313,266)"
- y2="9.8606262"
- x2="7.1051636"
- y1="6.6672974"
- x1="6.8551636"
- gradientUnits="userSpaceOnUse"
- id="linearGradient5130"
- xlink:href="#linearGradient4655-7-9"
- inkscape:collect="always" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient4655-7-9">
- <stop
- style="stop-color:#ce5c00;stop-opacity:1;"
- offset="0"
- id="stop4657-9-3" />
- <stop
- style="stop-color:#914100;stop-opacity:1"
- offset="1"
- id="stop4659-9-4" />
- </linearGradient>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="11.495914"
- inkscape:cy="7.2986073"
- inkscape:document-units="px"
- inkscape:current-layer="g6305"
- showgrid="true"
- borderlayer="true"
- inkscape:showpageshadow="false"
- inkscape:window-width="1180"
- inkscape:window-height="950"
- inkscape:window-x="1600"
- inkscape:window-y="166"
- inkscape:window-maximized="0"
- inkscape:snap-nodes="false"
- inkscape:snap-bbox="true">
- <inkscape:grid
- type="xygrid"
- id="grid4084"
- empspacing="5"
- visible="true"
- enabled="true"
- snapvisiblegridlinesonly="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata819">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- transform="translate(-1031,770.36221)"
- id="g6305"
- style="display:inline;enable-background:new">
- <g
- transform="translate(3.7481965e-5,-1.1707725e-5)"
- id="g5102"
- style="display:inline;enable-background:new">
- <path
- sodipodi:type="arc"
- style="opacity:0.1;color:#000000;fill:none;stroke:#ffffff;stroke-width:0.88215655;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="path5104"
- sodipodi:cx="660.96808"
- sodipodi:cy="255.0668"
- sodipodi:rx="4.5078058"
- sodipodi:ry="7.2937827"
- d="m 665.47588,255.0668 c 0,4.02825 -2.01821,7.29379 -4.5078,7.29379 -2.48959,0 -4.50781,-3.26554 -4.50781,-7.29379 0,-4.02824 2.01822,-7.29378 4.50781,-7.29378 2.48959,0 4.5078,3.26554 4.5078,7.29378 z"
- transform="matrix(1.4419436,0,0,0.89116967,85.92127,47.692201)" />
- <path
- transform="matrix(1.4419436,0,0,0.89116967,85.92127,46.692201)"
- d="m 665.47588,255.0668 c 0,4.02825 -2.01821,7.29379 -4.5078,7.29379 -2.48959,0 -4.50781,-3.26554 -4.50781,-7.29379 0,-4.02824 2.01822,-7.29378 4.50781,-7.29378 2.48959,0 4.5078,3.26554 4.5078,7.29378 z"
- sodipodi:ry="7.2937827"
- sodipodi:rx="4.5078058"
- sodipodi:cy="255.0668"
- sodipodi:cx="660.96808"
- id="path5106"
- style="color:#000000;fill:url(#linearGradient5110);fill-opacity:1;fill-rule:nonzero;stroke:#131516;stroke-width:0.88215655;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- sodipodi:type="arc" />
- <path
- sodipodi:type="arc"
- style="opacity:0.37860083;fill:none;stroke:url(#radialGradient5112);stroke-width:1.04254842;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:100"
- id="path5108"
- sodipodi:cx="660.96808"
- sodipodi:cy="255.0668"
- sodipodi:rx="4.5078058"
- sodipodi:ry="7.2937827"
- d="m 665.47588,255.0668 c 0,4.02825 -2.01821,7.29379 -4.5078,7.29379 -2.48959,0 -4.50781,-3.26554 -4.50781,-7.29379 0,-4.02824 2.01822,-7.29378 4.50781,-7.29378 2.48959,0 4.5078,3.26554 4.5078,7.29378 z"
- transform="matrix(1.2201064,0,0,0.75406683,232.54855,81.662583)" />
- </g>
- </g>
- </g>
-</svg>
diff --git a/gtk3/theme/assets/radio-unselected-insensitive-dark.svg b/gtk3/theme/assets/radio-unselected-insensitive-dark.svg
deleted file mode 100644
index c7ca7dd..0000000
--- a/gtk3/theme/assets/radio-unselected-insensitive-dark.svg
+++ /dev/null
@@ -1,233 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- id="svg814"
- version="1.1"
- inkscape:version="0.48.1 r9760"
- sodipodi:docname="radio-selected-insensitive-dark.svg">
- <defs
- id="defs816">
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10354-2"
- id="linearGradient8378"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-1609.9926,-78.958432)"
- x1="1205.5752"
- y1="-186.45331"
- x2="1205.5752"
- y2="-202.34555" />
- <linearGradient
- id="linearGradient10354-2"
- inkscape:collect="always">
- <stop
- id="stop10356-2"
- offset="0"
- style="stop-color:#bcbfb8;stop-opacity:1" />
- <stop
- id="stop10358-2"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10332-5"
- id="linearGradient8380"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.84941206,0,0,0.84794288,-623.98415,-483.16392)"
- x1="260.92538"
- y1="233.77748"
- x2="260.92538"
- y2="248.97633" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient10332-5">
- <stop
- style="stop-color:#d3d7cf;stop-opacity:1"
- offset="0"
- id="stop10334-5" />
- <stop
- style="stop-color:#8f9985;stop-opacity:1"
- offset="1"
- id="stop10336-29" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient11577-0-5-0-2"
- id="linearGradient8358"
- gradientUnits="userSpaceOnUse"
- x1="662.53418"
- y1="249.29141"
- x2="662.53418"
- y2="262.49979" />
- <linearGradient
- id="linearGradient11577-0-5-0-2"
- inkscape:collect="always">
- <stop
- id="stop11579-5-6-7-4"
- offset="0"
- style="stop-color:#d3d7cf;stop-opacity:1;" />
- <stop
- id="stop11581-8-0-0-9"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient12415-4-1-5"
- id="linearGradient8360"
- gradientUnits="userSpaceOnUse"
- x1="664.26984"
- y1="261.44751"
- x2="664.26984"
- y2="248.05356" />
- <linearGradient
- id="linearGradient12415-4-1-5"
- inkscape:collect="always">
- <stop
- id="stop12417-2-8-0"
- offset="0"
- style="stop-color:#d3d7cf;stop-opacity:1;" />
- <stop
- id="stop12419-5-0-9"
- offset="1"
- style="stop-color:#8f9985;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- id="linearGradient11553-0-7-9">
- <stop
- id="stop11555-5-9-8"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop11557-1-9-0"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient12405-7"
- id="radialGradient8368"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.4685542,0,0,2.2820942,-309.65132,-324.35943)"
- cx="660.8656"
- cy="251.41324"
- fx="660.8656"
- fy="251.41324"
- r="5.0290799" />
- <linearGradient
- id="linearGradient12405-7"
- inkscape:collect="always">
- <stop
- id="stop12407-9"
- offset="0"
- style="stop-color:#000000;stop-opacity:1;" />
- <stop
- id="stop12409-7"
- offset="1"
- style="stop-color:#000000;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient12692-5-0"
- id="radialGradient8370"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.4143887,0,0,1.7213698,-937.76662,-194.09437)"
- cx="663.01904"
- cy="269.82831"
- fx="663.01904"
- fy="269.82831"
- r="2.3864853" />
- <linearGradient
- id="linearGradient12692-5-0"
- inkscape:collect="always">
- <stop
- id="stop12694-4-1"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop12696-5-2"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:0;" />
- </linearGradient>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="-0.71194906"
- inkscape:cy="8.5766833"
- inkscape:document-units="px"
- inkscape:current-layer="g6305"
- showgrid="true"
- borderlayer="true"
- inkscape:showpageshadow="false"
- inkscape:window-width="1180"
- inkscape:window-height="950"
- inkscape:window-x="1600"
- inkscape:window-y="0"
- inkscape:window-maximized="0"
- inkscape:snap-nodes="false"
- inkscape:snap-bbox="true">
- <inkscape:grid
- type="xygrid"
- id="grid4084"
- empspacing="5"
- visible="true"
- enabled="true"
- snapvisiblegridlinesonly="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata819">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- transform="translate(-1031,770.36221)"
- id="g6305"
- style="display:inline;enable-background:new">
- <g
- style="opacity:0.5;display:inline;enable-background:new"
- id="g16917"
- transform="translate(3.7481965e-5,-1.1707725e-5)">
- <path
- sodipodi:type="arc"
- style="color:#000000;fill:none;stroke:#717171;stroke-width:0.88215655;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="path16919"
- sodipodi:cx="660.96808"
- sodipodi:cy="255.0668"
- sodipodi:rx="4.5078058"
- sodipodi:ry="7.2937827"
- d="m 665.47588,255.0668 c 0,4.02825 -2.01821,7.29379 -4.5078,7.29379 -2.48959,0 -4.50781,-3.26554 -4.50781,-7.29379 0,-4.02824 2.01822,-7.29378 4.50781,-7.29378 2.48959,0 4.5078,3.26554 4.5078,7.29378 z"
- transform="matrix(1.4419436,0,0,0.89116967,85.92127,46.692201)" />
- </g>
- </g>
- </g>
-</svg>
diff --git a/gtk3/theme/assets/radio-unselected-insensitive.svg b/gtk3/theme/assets/radio-unselected-insensitive.svg
deleted file mode 100644
index 2c7c606..0000000
--- a/gtk3/theme/assets/radio-unselected-insensitive.svg
+++ /dev/null
@@ -1,189 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- id="svg814"
- version="1.1"
- inkscape:version="0.48+devel r10053 custom"
- sodipodi:docname="radio-selected-insensitive.svg">
- <defs
- id="defs816">
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10354-2"
- id="linearGradient8378"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-1609.9926,-78.958432)"
- x1="1205.5752"
- y1="-186.45331"
- x2="1205.5752"
- y2="-202.34555" />
- <linearGradient
- id="linearGradient10354-2"
- inkscape:collect="always">
- <stop
- id="stop10356-2"
- offset="0"
- style="stop-color:#bcbfb8;stop-opacity:1" />
- <stop
- id="stop10358-2"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10332-5"
- id="linearGradient8380"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.84941206,0,0,0.84794288,-623.98415,-483.16392)"
- x1="260.92538"
- y1="233.77748"
- x2="260.92538"
- y2="248.97633" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient10332-5">
- <stop
- style="stop-color:#d3d7cf;stop-opacity:1"
- offset="0"
- id="stop10334-5" />
- <stop
- style="stop-color:#8f9985;stop-opacity:1"
- offset="1"
- id="stop10336-29" />
- </linearGradient>
- <linearGradient
- id="linearGradient11553-0-7-9">
- <stop
- id="stop11555-5-9-8"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop11557-1-9-0"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient12692-5-0"
- id="radialGradient8370"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.4143887,0,0,1.7213698,-937.76662,-194.09437)"
- cx="663.01904"
- cy="269.82831"
- fx="663.01904"
- fy="269.82831"
- r="2.3864853" />
- <linearGradient
- id="linearGradient12692-5-0"
- inkscape:collect="always">
- <stop
- id="stop12694-4-1"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop12696-5-2"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient12415-4-1-5-2"
- id="linearGradient8392"
- gradientUnits="userSpaceOnUse"
- x1="664.26984"
- y1="261.44751"
- x2="664.26984"
- y2="248.05356" />
- <linearGradient
- id="linearGradient12415-4-1-5-2"
- inkscape:collect="always">
- <stop
- id="stop12417-2-8-0-7"
- offset="0"
- style="stop-color:#d3d7cf;stop-opacity:1;" />
- <stop
- id="stop12419-5-0-9-3"
- offset="1"
- style="stop-color:#8f9985;stop-opacity:1" />
- </linearGradient>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="7.2871964"
- inkscape:cy="8.5324892"
- inkscape:document-units="px"
- inkscape:current-layer="g6305"
- showgrid="true"
- borderlayer="true"
- inkscape:showpageshadow="false"
- inkscape:window-width="1180"
- inkscape:window-height="950"
- inkscape:window-x="1600"
- inkscape:window-y="0"
- inkscape:window-maximized="0"
- inkscape:snap-nodes="false"
- inkscape:snap-bbox="true">
- <inkscape:grid
- type="xygrid"
- id="grid4084"
- empspacing="5"
- visible="true"
- enabled="true"
- snapvisiblegridlinesonly="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata819">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- transform="translate(-1031,770.36221)"
- id="g6305"
- style="display:inline;enable-background:new">
- <g
- style="opacity:0.5;display:inline;enable-background:new"
- id="g16917"
- transform="translate(3.7481965e-5,-1.1707725e-5)">
- <path
- sodipodi:type="arc"
- style="color:#000000;fill:none;stroke:url(#linearGradient8392);stroke-width:0.88215655;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:100;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new"
- id="path16919"
- sodipodi:cx="660.96808"
- sodipodi:cy="255.0668"
- sodipodi:rx="4.5078058"
- sodipodi:ry="7.2937827"
- d="m 665.47588,255.0668 c 0,4.02825 -2.01821,7.29379 -4.5078,7.29379 -2.48959,0 -4.50781,-3.26554 -4.50781,-7.29379 0,-4.02824 2.01822,-7.29378 4.50781,-7.29378 2.48959,0 4.5078,3.26554 4.5078,7.29378 z"
- transform="matrix(1.4419436,0,0,0.89116967,85.92127,46.692201)" />
- </g>
- </g>
- </g>
-</svg>
diff --git a/gtk3/theme/assets/radio-unselected.svg b/gtk3/theme/assets/radio-unselected.svg
deleted file mode 100644
index 7cf1539..0000000
--- a/gtk3/theme/assets/radio-unselected.svg
+++ /dev/null
@@ -1,298 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- id="svg814"
- version="1.1"
- inkscape:version="0.48+devel r10053 custom"
- sodipodi:docname="radio-selected.svg">
- <defs
- id="defs816">
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10354-2"
- id="linearGradient8378"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-1609.9926,-78.958432)"
- x1="1205.5752"
- y1="-186.45331"
- x2="1205.5752"
- y2="-202.34555" />
- <linearGradient
- id="linearGradient10354-2"
- inkscape:collect="always">
- <stop
- id="stop10356-2"
- offset="0"
- style="stop-color:#bcbfb8;stop-opacity:1" />
- <stop
- id="stop10358-2"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10332-5"
- id="linearGradient8380"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.84941206,0,0,0.84794288,-623.98415,-483.16392)"
- x1="260.92538"
- y1="233.77748"
- x2="260.92538"
- y2="248.97633" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient10332-5">
- <stop
- style="stop-color:#d3d7cf;stop-opacity:1"
- offset="0"
- id="stop10334-5" />
- <stop
- style="stop-color:#8f9985;stop-opacity:1"
- offset="1"
- id="stop10336-29" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient11577-0-5-0-2"
- id="linearGradient8358"
- gradientUnits="userSpaceOnUse"
- x1="662.53418"
- y1="249.29141"
- x2="662.53418"
- y2="262.49979" />
- <linearGradient
- id="linearGradient11577-0-5-0-2"
- inkscape:collect="always">
- <stop
- id="stop11579-5-6-7-4"
- offset="0"
- style="stop-color:#d3d7cf;stop-opacity:1;" />
- <stop
- id="stop11581-8-0-0-9"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient12415-4-1-5"
- id="linearGradient8360"
- gradientUnits="userSpaceOnUse"
- x1="664.26984"
- y1="261.44751"
- x2="664.26984"
- y2="248.05356" />
- <linearGradient
- id="linearGradient12415-4-1-5"
- inkscape:collect="always">
- <stop
- id="stop12417-2-8-0"
- offset="0"
- style="stop-color:#d3d7cf;stop-opacity:1;" />
- <stop
- id="stop12419-5-0-9"
- offset="1"
- style="stop-color:#8f9985;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient11623-4-5-4"
- id="linearGradient8362"
- gradientUnits="userSpaceOnUse"
- x1="661.04559"
- y1="251.6946"
- x2="661.04559"
- y2="258.26358" />
- <linearGradient
- id="linearGradient11623-4-5-4"
- inkscape:collect="always">
- <stop
- id="stop11625-5-6-0"
- offset="0"
- style="stop-color:#2e87e3;stop-opacity:1" />
- <stop
- id="stop11627-4-4-9"
- offset="1"
- style="stop-color:#76b0ec;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient12387-1-5"
- id="linearGradient8364"
- gradientUnits="userSpaceOnUse"
- x1="662.26074"
- y1="251.66537"
- x2="662.26074"
- y2="259.77792" />
- <linearGradient
- id="linearGradient12387-1-5"
- inkscape:collect="always">
- <stop
- id="stop12389-7-2"
- offset="0"
- style="stop-color:#1b6fc5;stop-opacity:1;" />
- <stop
- id="stop12391-1-4"
- offset="1"
- style="stop-color:#145393;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient11553-0-7-9"
- id="linearGradient8366"
- gradientUnits="userSpaceOnUse"
- x1="660.16144"
- y1="246.69635"
- x2="660.27411"
- y2="260.70532" />
- <linearGradient
- id="linearGradient11553-0-7-9">
- <stop
- id="stop11555-5-9-8"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop11557-1-9-0"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient12405-7"
- id="radialGradient8368"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.4685542,0,0,2.2820942,-309.65132,-324.35943)"
- cx="660.8656"
- cy="251.41324"
- fx="660.8656"
- fy="251.41324"
- r="5.0290799" />
- <linearGradient
- id="linearGradient12405-7"
- inkscape:collect="always">
- <stop
- id="stop12407-9"
- offset="0"
- style="stop-color:#000000;stop-opacity:1;" />
- <stop
- id="stop12409-7"
- offset="1"
- style="stop-color:#000000;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient12692-5-0"
- id="radialGradient8370"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.4143887,0,0,1.7213698,-937.76662,-194.09437)"
- cx="663.01904"
- cy="269.82831"
- fx="663.01904"
- fy="269.82831"
- r="2.3864853" />
- <linearGradient
- id="linearGradient12692-5-0"
- inkscape:collect="always">
- <stop
- id="stop12694-4-1"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop12696-5-2"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- r="2.3864853"
- fy="269.82831"
- fx="663.01904"
- cy="269.82831"
- cx="663.01904"
- gradientTransform="matrix(2.4143887,0,0,1.7213698,-937.76662,-194.09437)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient5029"
- xlink:href="#linearGradient12692-5-0"
- inkscape:collect="always" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1"
- inkscape:cx="8.7319174"
- inkscape:cy="7.9147276"
- inkscape:document-units="px"
- inkscape:current-layer="g6305"
- showgrid="true"
- borderlayer="true"
- inkscape:showpageshadow="false"
- inkscape:window-width="1180"
- inkscape:window-height="950"
- inkscape:window-x="1600"
- inkscape:window-y="0"
- inkscape:window-maximized="0">
- <inkscape:grid
- type="xygrid"
- id="grid4084"
- empspacing="5"
- visible="true"
- enabled="true"
- snapvisiblegridlinesonly="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata819">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- transform="translate(-1031,770.36221)"
- id="g6305"
- style="display:inline;enable-background:new">
- <path
- transform="matrix(1.4419436,0,0,0.89116967,85.92127,46.692201)"
- d="m 665.47588,255.0668 c 0,4.02825 -2.01821,7.29379 -4.5078,7.29379 -2.48959,0 -4.50781,-3.26554 -4.50781,-7.29379 0,-4.02824 2.01822,-7.29378 4.50781,-7.29378 2.48959,0 4.5078,3.26554 4.5078,7.29378 z"
- sodipodi:ry="7.2937827"
- sodipodi:rx="4.5078058"
- sodipodi:cy="255.0668"
- sodipodi:cx="660.96808"
- id="path6307"
- style="color:#000000;fill:url(#linearGradient8358);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient8360);stroke-width:0.88215655;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:100;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new"
- sodipodi:type="arc" />
- <path
- sodipodi:type="arc"
- style="opacity:0.12955466;fill:none;stroke:url(#radialGradient8368);stroke-width:1.04254842;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:100"
- id="path6313"
- sodipodi:cx="660.96808"
- sodipodi:cy="255.0668"
- sodipodi:rx="4.5078058"
- sodipodi:ry="7.2937827"
- d="m 665.47588,255.0668 c 0,4.02825 -2.01821,7.29379 -4.5078,7.29379 -2.48959,0 -4.50781,-3.26554 -4.50781,-7.29379 0,-4.02824 2.01822,-7.29378 4.50781,-7.29378 2.48959,0 4.5078,3.26554 4.5078,7.29378 z"
- transform="matrix(1.2201064,0,0,0.75406683,232.54855,81.662583)" />
- </g>
- </g>
-</svg>
diff --git a/gtk3/theme/em.py b/gtk3/theme/em.py
new file mode 100755
index 0000000..9f92124
--- /dev/null
+++ b/gtk3/theme/em.py
@@ -0,0 +1,3288 @@
+#!/usr/bin/env python
+#
+# $Id: //projects/empy/em.py#146 $ $Date: 2003/10/27 $
+
+"""
+A system for processing Python as markup embedded in text.
+"""
+
+
+__program__ = 'empy'
+__version__ = '3.3'
+__url__ = 'http://www.alcyone.com/software/empy/'
+__author__ = 'Erik Max Francis <max@alcyone.com>'
+__copyright__ = 'Copyright (C) 2002-2003 Erik Max Francis'
+__license__ = 'LGPL'
+
+
+import copy
+import getopt
+import os
+import re
+import string
+import sys
+import types
+
+try:
+ # The equivalent of import cStringIO as StringIO.
+ import cStringIO
+ StringIO = cStringIO
+ del cStringIO
+except ImportError:
+ import StringIO
+
+# For backward compatibility, we can't assume these are defined.
+False, True = 0, 1
+
+# Some basic defaults.
+FAILURE_CODE = 1
+DEFAULT_PREFIX = '@'
+DEFAULT_PSEUDOMODULE_NAME = 'empy'
+DEFAULT_SCRIPT_NAME = '?'
+SIGNIFICATOR_RE_SUFFIX = r"%(\S+)\s*(.*)\s*$"
+SIGNIFICATOR_RE_STRING = DEFAULT_PREFIX + SIGNIFICATOR_RE_SUFFIX
+BANGPATH = '#!'
+DEFAULT_CHUNK_SIZE = 8192
+DEFAULT_ERRORS = 'strict'
+
+# Character information.
+IDENTIFIER_FIRST_CHARS = '_abcdefghijklmnopqrstuvwxyz' \
+ 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+IDENTIFIER_CHARS = IDENTIFIER_FIRST_CHARS + '0123456789.'
+ENDING_CHARS = {'(': ')', '[': ']', '{': '}'}
+
+# Environment variable names.
+OPTIONS_ENV = 'EMPY_OPTIONS'
+PREFIX_ENV = 'EMPY_PREFIX'
+PSEUDO_ENV = 'EMPY_PSEUDO'
+FLATTEN_ENV = 'EMPY_FLATTEN'
+RAW_ENV = 'EMPY_RAW_ERRORS'
+INTERACTIVE_ENV = 'EMPY_INTERACTIVE'
+BUFFERED_ENV = 'EMPY_BUFFERED_OUTPUT'
+NO_OVERRIDE_ENV = 'EMPY_NO_OVERRIDE'
+UNICODE_ENV = 'EMPY_UNICODE'
+INPUT_ENCODING_ENV = 'EMPY_UNICODE_INPUT_ENCODING'
+OUTPUT_ENCODING_ENV = 'EMPY_UNICODE_OUTPUT_ENCODING'
+INPUT_ERRORS_ENV = 'EMPY_UNICODE_INPUT_ERRORS'
+OUTPUT_ERRORS_ENV = 'EMPY_UNICODE_OUTPUT_ERRORS'
+
+# Interpreter options.
+BANGPATH_OPT = 'processBangpaths' # process bangpaths as comments?
+BUFFERED_OPT = 'bufferedOutput' # fully buffered output?
+RAW_OPT = 'rawErrors' # raw errors?
+EXIT_OPT = 'exitOnError' # exit on error?
+FLATTEN_OPT = 'flatten' # flatten pseudomodule namespace?
+OVERRIDE_OPT = 'override' # override sys.stdout with proxy?
+CALLBACK_OPT = 'noCallbackError' # is no custom callback an error?
+
+# Usage info.
+OPTION_INFO = [
+("-V --version", "Print version and exit"),
+("-h --help", "Print usage and exit"),
+("-H --extended-help", "Print extended usage and exit"),
+("-k --suppress-errors", "Do not exit on errors; go interactive"),
+("-p --prefix=<char>", "Change prefix to something other than @"),
+(" --no-prefix", "Do not do any markup processing at all"),
+("-m --module=<name>", "Change the internal pseudomodule name"),
+("-f --flatten", "Flatten the members of pseudmodule to start"),
+("-r --raw-errors", "Show raw Python errors"),
+("-i --interactive", "Go into interactive mode after processing"),
+("-n --no-override-stdout", "Do not override sys.stdout with proxy"),
+("-o --output=<filename>", "Specify file for output as write"),
+("-a --append=<filename>", "Specify file for output as append"),
+("-b --buffered-output", "Fully buffer output including open"),
+(" --binary", "Treat the file as a binary"),
+(" --chunk-size=<chunk>", "Use this chunk size for reading binaries"),
+("-P --preprocess=<filename>", "Interpret EmPy file before main processing"),
+("-I --import=<modules>", "Import Python modules before processing"),
+("-D --define=<definition>", "Execute Python assignment statement"),
+("-E --execute=<statement>", "Execute Python statement before processing"),
+("-F --execute-file=<filename>", "Execute Python file before processing"),
+(" --pause-at-end", "Prompt at the ending of processing"),
+(" --relative-path", "Add path of EmPy script to sys.path"),
+(" --no-callback-error", "Custom markup without callback is error"),
+(" --no-bangpath-processing", "Suppress bangpaths as comments"),
+("-u --unicode", "Enable Unicode subsystem (Python 2+ only)"),
+(" --unicode-encoding=<e>", "Set both input and output encodings"),
+(" --unicode-input-encoding=<e>", "Set input encoding"),
+(" --unicode-output-encoding=<e>", "Set output encoding"),
+(" --unicode-errors=<E>", "Set both input and output error handler"),
+(" --unicode-input-errors=<E>", "Set input error handler"),
+(" --unicode-output-errors=<E>", "Set output error handler"),
+]
+
+USAGE_NOTES = """\
+Notes: Whitespace immediately inside parentheses of @(...) are
+ignored. Whitespace immediately inside braces of @{...} are ignored,
+unless ... spans multiple lines. Use @{ ... }@ to suppress newline
+following expansion. Simple expressions ignore trailing dots; `@x.'
+means `@(x).'. A #! at the start of a file is treated as a @#
+comment."""
+
+MARKUP_INFO = [
+("@# ... NL", "Comment; remove everything up to newline"),
+("@? NAME NL", "Set the current context name"),
+("@! INTEGER NL", "Set the current context line number"),
+("@ WHITESPACE", "Remove following whitespace; line continuation"),
+("@\\ ESCAPE_CODE", "A C-style escape sequence"),
+("@@", "Literal @; @ is escaped (duplicated prefix)"),
+("@), @], @}", "Literal close parenthesis, bracket, brace"),
+("@ STRING_LITERAL", "Replace with string literal contents"),
+("@( EXPRESSION )", "Evaluate expression and substitute with str"),
+("@( TEST [? THEN [! ELSE]] )", "If test is true, evaluate then, otherwise else"),
+("@( TRY $ CATCH )", "Expand try expression, or catch if it raises"),
+("@ SIMPLE_EXPRESSION", "Evaluate simple expression and substitute;\n"
+ "e.g., @x, @x.y, @f(a, b), @l[i], etc."),
+("@` EXPRESSION `", "Evaluate expression and substitute with repr"),
+("@: EXPRESSION : [DUMMY] :", "Evaluates to @:...:expansion:"),
+("@{ STATEMENTS }", "Statements are executed for side effects"),
+("@[ CONTROL ]", "Control markups: if E; elif E; for N in E;\n"
+ "while E; try; except E, N; finally; continue;\n"
+ "break; end X"),
+("@%% KEY WHITESPACE VALUE NL", "Significator form of __KEY__ = VALUE"),
+("@< CONTENTS >", "Custom markup; meaning provided by user"),
+]
+
+ESCAPE_INFO = [
+("@\\0", "NUL, null"),
+("@\\a", "BEL, bell"),
+("@\\b", "BS, backspace"),
+("@\\dDDD", "three-digit decimal code DDD"),
+("@\\e", "ESC, escape"),
+("@\\f", "FF, form feed"),
+("@\\h", "DEL, delete"),
+("@\\n", "LF, linefeed, newline"),
+("@\\N{NAME}", "Unicode character named NAME"),
+("@\\oOOO", "three-digit octal code OOO"),
+("@\\qQQQQ", "four-digit quaternary code QQQQ"),
+("@\\r", "CR, carriage return"),
+("@\\s", "SP, space"),
+("@\\t", "HT, horizontal tab"),
+("@\\uHHHH", "16-bit hexadecimal Unicode HHHH"),
+("@\\UHHHHHHHH", "32-bit hexadecimal Unicode HHHHHHHH"),
+("@\\v", "VT, vertical tab"),
+("@\\xHH", "two-digit hexadecimal code HH"),
+("@\\z", "EOT, end of transmission"),
+]
+
+PSEUDOMODULE_INFO = [
+("VERSION", "String representing EmPy version"),
+("SIGNIFICATOR_RE_STRING", "Regular expression matching significators"),
+("SIGNIFICATOR_RE_SUFFIX", "The above stub, lacking the prefix"),
+("interpreter", "Currently-executing interpreter instance"),
+("argv", "The EmPy script name and command line arguments"),
+("args", "The command line arguments only"),
+("identify()", "Identify top context as name, line"),
+("setContextName(name)", "Set the name of the current context"),
+("setContextLine(line)", "Set the line number of the current context"),
+("atExit(callable)", "Invoke no-argument function at shutdown"),
+("getGlobals()", "Retrieve this interpreter's globals"),
+("setGlobals(dict)", "Set this interpreter's globals"),
+("updateGlobals(dict)", "Merge dictionary into interpreter's globals"),
+("clearGlobals()", "Start globals over anew"),
+("saveGlobals([deep])", "Save a copy of the globals"),
+("restoreGlobals([pop])", "Restore the most recently saved globals"),
+("defined(name, [loc])", "Find if the name is defined"),
+("evaluate(expression, [loc])", "Evaluate the expression"),
+("serialize(expression, [loc])", "Evaluate and serialize the expression"),
+("execute(statements, [loc])", "Execute the statements"),
+("single(source, [loc])", "Execute the 'single' object"),
+("atomic(name, value, [loc])", "Perform an atomic assignment"),
+("assign(name, value, [loc])", "Perform an arbitrary assignment"),
+("significate(key, [value])", "Significate the given key, value pair"),
+("include(file, [loc])", "Include filename or file-like object"),
+("expand(string, [loc])", "Explicitly expand string and return"),
+("string(data, [name], [loc])", "Process string-like object"),
+("quote(string)", "Quote prefixes in provided string and return"),
+("flatten([keys])", "Flatten module contents into globals namespace"),
+("getPrefix()", "Get current prefix"),
+("setPrefix(char)", "Set new prefix"),
+("stopDiverting()", "Stop diverting; data sent directly to output"),
+("createDiversion(name)", "Create a diversion but do not divert to it"),
+("retrieveDiversion(name)", "Retrieve the actual named diversion object"),
+("startDiversion(name)", "Start diverting to given diversion"),
+("playDiversion(name)", "Recall diversion and then eliminate it"),
+("replayDiversion(name)", "Recall diversion but retain it"),
+("purgeDiversion(name)", "Erase diversion"),
+("playAllDiversions()", "Stop diverting and play all diversions in order"),
+("replayAllDiversions()", "Stop diverting and replay all diversions"),
+("purgeAllDiversions()", "Stop diverting and purge all diversions"),
+("getFilter()", "Get current filter"),
+("resetFilter()", "Reset filter; no filtering"),
+("nullFilter()", "Install null filter"),
+("setFilter(shortcut)", "Install new filter or filter chain"),
+("attachFilter(shortcut)", "Attach single filter to end of current chain"),
+("areHooksEnabled()", "Return whether or not hooks are enabled"),
+("enableHooks()", "Enable hooks (default)"),
+("disableHooks()", "Disable hook invocation"),
+("getHooks()", "Get all the hooks"),
+("clearHooks()", "Clear all hooks"),
+("addHook(hook, [i])", "Register the hook (optionally insert)"),
+("removeHook(hook)", "Remove an already-registered hook from name"),
+("invokeHook(name_, ...)", "Manually invoke hook"),
+("getCallback()", "Get interpreter callback"),
+("registerCallback(callback)", "Register callback with interpreter"),
+("deregisterCallback()", "Deregister callback from interpreter"),
+("invokeCallback(contents)", "Invoke the callback directly"),
+("Interpreter", "The interpreter class"),
+]
+
+ENVIRONMENT_INFO = [
+(OPTIONS_ENV, "Specified options will be included"),
+(PREFIX_ENV, "Specify the default prefix: -p <value>"),
+(PSEUDO_ENV, "Specify name of pseudomodule: -m <value>"),
+(FLATTEN_ENV, "Flatten empy pseudomodule if defined: -f"),
+(RAW_ENV, "Show raw errors if defined: -r"),
+(INTERACTIVE_ENV, "Enter interactive mode if defined: -i"),
+(BUFFERED_ENV, "Fully buffered output if defined: -b"),
+(NO_OVERRIDE_ENV, "Do not override sys.stdout if defined: -n"),
+(UNICODE_ENV, "Enable Unicode subsystem: -n"),
+(INPUT_ENCODING_ENV, "Unicode input encoding"),
+(OUTPUT_ENCODING_ENV, "Unicode output encoding"),
+(INPUT_ERRORS_ENV, "Unicode input error handler"),
+(OUTPUT_ERRORS_ENV, "Unicode output error handler"),
+]
+
+class Error(Exception):
+ """The base class for all EmPy errors."""
+ pass
+
+EmpyError = EmPyError = Error # DEPRECATED
+
+class DiversionError(Error):
+ """An error related to diversions."""
+ pass
+
+class FilterError(Error):
+ """An error related to filters."""
+ pass
+
+class StackUnderflowError(Error):
+ """A stack underflow."""
+ pass
+
+class SubsystemError(Error):
+ """An error associated with the Unicode subsystem."""
+ pass
+
+class FlowError(Error):
+ """An exception related to control flow."""
+ pass
+
+class ContinueFlow(FlowError):
+ """A continue control flow."""
+ pass
+
+class BreakFlow(FlowError):
+ """A break control flow."""
+ pass
+
+class ParseError(Error):
+ """A parse error occurred."""
+ pass
+
+class TransientParseError(ParseError):
+ """A parse error occurred which may be resolved by feeding more data.
+ Such an error reaching the toplevel is an unexpected EOF error."""
+ pass
+
+
+class MetaError(Exception):
+
+ """A wrapper around a real Python exception for including a copy of
+ the context."""
+
+ def __init__(self, contexts, exc):
+ Exception.__init__(self, exc)
+ self.contexts = contexts
+ self.exc = exc
+
+ def __str__(self):
+ backtrace = map(lambda x: str(x), self.contexts)
+ return "%s: %s (%s)" % (self.exc.__class__, self.exc, \
+ (string.join(backtrace, ', ')))
+
+
+class Subsystem:
+
+ """The subsystem class defers file creation so that it can create
+ Unicode-wrapped files if desired (and possible)."""
+
+ def __init__(self):
+ self.useUnicode = False
+ self.inputEncoding = None
+ self.outputEncoding = None
+ self.errors = None
+
+ def initialize(self, inputEncoding=None, outputEncoding=None, \
+ inputErrors=None, outputErrors=None):
+ self.useUnicode = True
+ try:
+ unicode
+ import codecs
+ except (NameError, ImportError):
+ raise SubsystemError, "Unicode subsystem unavailable"
+ defaultEncoding = sys.getdefaultencoding()
+ if inputEncoding is None:
+ inputEncoding = defaultEncoding
+ self.inputEncoding = inputEncoding
+ if outputEncoding is None:
+ outputEncoding = defaultEncoding
+ self.outputEncoding = outputEncoding
+ if inputErrors is None:
+ inputErrors = DEFAULT_ERRORS
+ self.inputErrors = inputErrors
+ if outputErrors is None:
+ outputErrors = DEFAULT_ERRORS
+ self.outputErrors = outputErrors
+
+ def assertUnicode(self):
+ if not self.useUnicode:
+ raise SubsystemError, "Unicode subsystem unavailable"
+
+ def open(self, name, mode=None):
+ if self.useUnicode:
+ return self.unicodeOpen(name, mode)
+ else:
+ return self.defaultOpen(name, mode)
+
+ def defaultOpen(self, name, mode=None):
+ if mode is None:
+ mode = 'r'
+ return open(name, mode)
+
+ def unicodeOpen(self, name, mode=None):
+ import codecs
+ if mode is None:
+ mode = 'rb'
+ if mode.find('w') >= 0 or mode.find('a') >= 0:
+ encoding = self.outputEncoding
+ errors = self.outputErrors
+ else:
+ encoding = self.inputEncoding
+ errors = self.inputErrors
+ return codecs.open(name, mode, encoding, errors)
+
+theSubsystem = Subsystem()
+
+
+class Stack:
+
+ """A simple stack that behaves as a sequence (with 0 being the top
+ of the stack, not the bottom)."""
+
+ def __init__(self, seq=None):
+ if seq is None:
+ seq = []
+ self.data = seq
+
+ def top(self):
+ """Access the top element on the stack."""
+ try:
+ return self.data[-1]
+ except IndexError:
+ raise StackUnderflowError, "stack is empty for top"
+
+ def pop(self):
+ """Pop the top element off the stack and return it."""
+ try:
+ return self.data.pop()
+ except IndexError:
+ raise StackUnderflowError, "stack is empty for pop"
+
+ def push(self, object):
+ """Push an element onto the top of the stack."""
+ self.data.append(object)
+
+ def filter(self, function):
+ """Filter the elements of the stack through the function."""
+ self.data = filter(function, self.data)
+
+ def purge(self):
+ """Purge the stack."""
+ self.data = []
+
+ def clone(self):
+ """Create a duplicate of this stack."""
+ return self.__class__(self.data[:])
+
+ def __nonzero__(self): return len(self.data) != 0
+ def __len__(self): return len(self.data)
+ def __getitem__(self, index): return self.data[-(index + 1)]
+
+ def __repr__(self):
+ return '<%s instance at 0x%x [%s]>' % \
+ (self.__class__, id(self), \
+ string.join(map(repr, self.data), ', '))
+
+
+class AbstractFile:
+
+ """An abstracted file that, when buffered, will totally buffer the
+ file, including even the file open."""
+
+ def __init__(self, filename, mode='w', buffered=False):
+ # The calls below might throw, so start off by marking this
+ # file as "done." This way destruction of a not-completely-
+ # initialized AbstractFile will generate no further errors.
+ self.done = True
+ self.filename = filename
+ self.mode = mode
+ self.buffered = buffered
+ if buffered:
+ self.bufferFile = StringIO.StringIO()
+ else:
+ self.bufferFile = theSubsystem.open(filename, mode)
+ # Okay, we got this far, so the AbstractFile is initialized.
+ # Flag it as "not done."
+ self.done = False
+
+ def __del__(self):
+ self.close()
+
+ def write(self, data):
+ self.bufferFile.write(data)
+
+ def writelines(self, data):
+ self.bufferFile.writelines(data)
+
+ def flush(self):
+ self.bufferFile.flush()
+
+ def close(self):
+ if not self.done:
+ self.commit()
+ self.done = True
+
+ def commit(self):
+ if self.buffered:
+ file = theSubsystem.open(self.filename, self.mode)
+ file.write(self.bufferFile.getvalue())
+ file.close()
+ else:
+ self.bufferFile.close()
+
+ def abort(self):
+ if self.buffered:
+ self.bufferFile = None
+ else:
+ self.bufferFile.close()
+ self.bufferFile = None
+ self.done = True
+
+
+class Diversion:
+
+ """The representation of an active diversion. Diversions act as
+ (writable) file objects, and then can be recalled either as pure
+ strings or (readable) file objects."""
+
+ def __init__(self):
+ self.file = StringIO.StringIO()
+
+ # These methods define the writable file-like interface for the
+ # diversion.
+
+ def write(self, data):
+ self.file.write(data)
+
+ def writelines(self, lines):
+ for line in lines:
+ self.write(line)
+
+ def flush(self):
+ self.file.flush()
+
+ def close(self):
+ self.file.close()
+
+ # These methods are specific to diversions.
+
+ def asString(self):
+ """Return the diversion as a string."""
+ return self.file.getvalue()
+
+ def asFile(self):
+ """Return the diversion as a file."""
+ return StringIO.StringIO(self.file.getvalue())
+
+
+class Stream:
+
+ """A wrapper around an (output) file object which supports
+ diversions and filtering."""
+
+ def __init__(self, file):
+ self.file = file
+ self.currentDiversion = None
+ self.diversions = {}
+ self.filter = file
+ self.done = False
+
+ def write(self, data):
+ if self.currentDiversion is None:
+ self.filter.write(data)
+ else:
+ self.diversions[self.currentDiversion].write(data)
+
+ def writelines(self, lines):
+ for line in lines:
+ self.write(line)
+
+ def flush(self):
+ self.filter.flush()
+
+ def close(self):
+ if not self.done:
+ self.undivertAll(True)
+ self.filter.close()
+ self.done = True
+
+ def shortcut(self, shortcut):
+ """Take a filter shortcut and translate it into a filter, returning
+ it. Sequences don't count here; these should be detected
+ independently."""
+ if shortcut == 0:
+ return NullFilter()
+ elif type(shortcut) is types.FunctionType or \
+ type(shortcut) is types.BuiltinFunctionType or \
+ type(shortcut) is types.BuiltinMethodType or \
+ type(shortcut) is types.LambdaType:
+ return FunctionFilter(shortcut)
+ elif type(shortcut) is types.StringType:
+ return StringFilter(filter)
+ elif type(shortcut) is types.DictType:
+ raise NotImplementedError, "mapping filters not yet supported"
+ else:
+ # Presume it's a plain old filter.
+ return shortcut
+
+ def last(self):
+ """Find the last filter in the current filter chain, or None if
+ there are no filters installed."""
+ if self.filter is None:
+ return None
+ thisFilter, lastFilter = self.filter, None
+ while thisFilter is not None and thisFilter is not self.file:
+ lastFilter = thisFilter
+ thisFilter = thisFilter.next()
+ return lastFilter
+
+ def install(self, shortcut=None):
+ """Install a new filter; None means no filter. Handle all the
+ special shortcuts for filters here."""
+ # Before starting, execute a flush.
+ self.filter.flush()
+ if shortcut is None or shortcut == [] or shortcut == ():
+ # Shortcuts for "no filter."
+ self.filter = self.file
+ else:
+ if type(shortcut) in (types.ListType, types.TupleType):
+ shortcuts = list(shortcut)
+ else:
+ shortcuts = [shortcut]
+ # Run through the shortcut filter names, replacing them with
+ # full-fledged instances of Filter.
+ filters = []
+ for shortcut in shortcuts:
+ filters.append(self.shortcut(shortcut))
+ if len(filters) > 1:
+ # If there's more than one filter provided, chain them
+ # together.
+ lastFilter = None
+ for filter in filters:
+ if lastFilter is not None:
+ lastFilter.attach(filter)
+ lastFilter = filter
+ lastFilter.attach(self.file)
+ self.filter = filters[0]
+ else:
+ # If there's only one filter, assume that it's alone or it's
+ # part of a chain that has already been manually chained;
+ # just find the end.
+ filter = filters[0]
+ lastFilter = filter.last()
+ lastFilter.attach(self.file)
+ self.filter = filter
+
+ def attach(self, shortcut):
+ """Attached a solitary filter (no sequences allowed here) at the
+ end of the current filter chain."""
+ lastFilter = self.last()
+ if lastFilter is None:
+ # Just install it from scratch if there is no active filter.
+ self.install(shortcut)
+ else:
+ # Attach the last filter to this one, and this one to the file.
+ filter = self.shortcut(shortcut)
+ lastFilter.attach(filter)
+ filter.attach(self.file)
+
+ def revert(self):
+ """Reset any current diversions."""
+ self.currentDiversion = None
+
+ def create(self, name):
+ """Create a diversion if one does not already exist, but do not
+ divert to it yet."""
+ if name is None:
+ raise DiversionError, "diversion name must be non-None"
+ if not self.diversions.has_key(name):
+ self.diversions[name] = Diversion()
+
+ def retrieve(self, name):
+ """Retrieve the given diversion."""
+ if name is None:
+ raise DiversionError, "diversion name must be non-None"
+ if self.diversions.has_key(name):
+ return self.diversions[name]
+ else:
+ raise DiversionError, "nonexistent diversion: %s" % name
+
+ def divert(self, name):
+ """Start diverting."""
+ if name is None:
+ raise DiversionError, "diversion name must be non-None"
+ self.create(name)
+ self.currentDiversion = name
+
+ def undivert(self, name, purgeAfterwards=False):
+ """Undivert a particular diversion."""
+ if name is None:
+ raise DiversionError, "diversion name must be non-None"
+ if self.diversions.has_key(name):
+ diversion = self.diversions[name]
+ self.filter.write(diversion.asString())
+ if purgeAfterwards:
+ self.purge(name)
+ else:
+ raise DiversionError, "nonexistent diversion: %s" % name
+
+ def purge(self, name):
+ """Purge the specified diversion."""
+ if name is None:
+ raise DiversionError, "diversion name must be non-None"
+ if self.diversions.has_key(name):
+ del self.diversions[name]
+ if self.currentDiversion == name:
+ self.currentDiversion = None
+
+ def undivertAll(self, purgeAfterwards=True):
+ """Undivert all pending diversions."""
+ if self.diversions:
+ self.revert() # revert before undiverting!
+ names = self.diversions.keys()
+ names.sort()
+ for name in names:
+ self.undivert(name)
+ if purgeAfterwards:
+ self.purge(name)
+
+ def purgeAll(self):
+ """Eliminate all existing diversions."""
+ if self.diversions:
+ self.diversions = {}
+ self.currentDiversion = None
+
+
+class NullFile:
+
+ """A simple class that supports all the file-like object methods
+ but simply does nothing at all."""
+
+ def __init__(self): pass
+ def write(self, data): pass
+ def writelines(self, lines): pass
+ def flush(self): pass
+ def close(self): pass
+
+
+class UncloseableFile:
+
+ """A simple class which wraps around a delegate file-like object
+ and lets everything through except close calls."""
+
+ def __init__(self, delegate):
+ self.delegate = delegate
+
+ def write(self, data):
+ self.delegate.write(data)
+
+ def writelines(self, lines):
+ self.delegate.writelines(data)
+
+ def flush(self):
+ self.delegate.flush()
+
+ def close(self):
+ """Eat this one."""
+ pass
+
+
+class ProxyFile:
+
+ """The proxy file object that is intended to take the place of
+ sys.stdout. The proxy can manage a stack of file objects it is
+ writing to, and an underlying raw file object."""
+
+ def __init__(self, bottom):
+ self.stack = Stack()
+ self.bottom = bottom
+
+ def current(self):
+ """Get the current stream to write to."""
+ if self.stack:
+ return self.stack[-1][1]
+ else:
+ return self.bottom
+
+ def push(self, interpreter):
+ self.stack.push((interpreter, interpreter.stream()))
+
+ def pop(self, interpreter):
+ result = self.stack.pop()
+ assert interpreter is result[0]
+
+ def clear(self, interpreter):
+ self.stack.filter(lambda x, i=interpreter: x[0] is not i)
+
+ def write(self, data):
+ self.current().write(data)
+
+ def writelines(self, lines):
+ self.current().writelines(lines)
+
+ def flush(self):
+ self.current().flush()
+
+ def close(self):
+ """Close the current file. If the current file is the bottom, then
+ close it and dispose of it."""
+ current = self.current()
+ if current is self.bottom:
+ self.bottom = None
+ current.close()
+
+ def _testProxy(self): pass
+
+
+class Filter:
+
+ """An abstract filter."""
+
+ def __init__(self):
+ if self.__class__ is Filter:
+ raise NotImplementedError
+ self.sink = None
+
+ def next(self):
+ """Return the next filter/file-like object in the sequence, or None."""
+ return self.sink
+
+ def write(self, data):
+ """The standard write method; this must be overridden in subclasses."""
+ raise NotImplementedError
+
+ def writelines(self, lines):
+ """Standard writelines wrapper."""
+ for line in lines:
+ self.write(line)
+
+ def _flush(self):
+ """The _flush method should always flush the sink and should not
+ be overridden."""
+ self.sink.flush()
+
+ def flush(self):
+ """The flush method can be overridden."""
+ self._flush()
+
+ def close(self):
+ """Close the filter. Do an explicit flush first, then close the
+ sink."""
+ self.flush()
+ self.sink.close()
+
+ def attach(self, filter):
+ """Attach a filter to this one."""
+ if self.sink is not None:
+ # If it's already attached, detach it first.
+ self.detach()
+ self.sink = filter
+
+ def detach(self):
+ """Detach a filter from its sink."""
+ self.flush()
+ self._flush() # do a guaranteed flush to just to be safe
+ self.sink = None
+
+ def last(self):
+ """Find the last filter in this chain."""
+ this, last = self, self
+ while this is not None:
+ last = this
+ this = this.next()
+ return last
+
+class NullFilter(Filter):
+
+ """A filter that never sends any output to its sink."""
+
+ def write(self, data): pass
+
+class FunctionFilter(Filter):
+
+ """A filter that works simply by pumping its input through a
+ function which maps strings into strings."""
+
+ def __init__(self, function):
+ Filter.__init__(self)
+ self.function = function
+
+ def write(self, data):
+ self.sink.write(self.function(data))
+
+class StringFilter(Filter):
+
+ """A filter that takes a translation string (256 characters) and
+ filters any incoming data through it."""
+
+ def __init__(self, table):
+ if not (type(table) == types.StringType and len(table) == 256):
+ raise FilterError, "table must be 256-character string"
+ Filter.__init__(self)
+ self.table = table
+
+ def write(self, data):
+ self.sink.write(string.translate(data, self.table))
+
+class BufferedFilter(Filter):
+
+ """A buffered filter is one that doesn't modify the source data
+ sent to the sink, but instead holds it for a time. The standard
+ variety only sends the data along when it receives a flush
+ command."""
+
+ def __init__(self):
+ Filter.__init__(self)
+ self.buffer = ''
+
+ def write(self, data):
+ self.buffer = self.buffer + data
+
+ def flush(self):
+ if self.buffer:
+ self.sink.write(self.buffer)
+ self._flush()
+
+class SizeBufferedFilter(BufferedFilter):
+
+ """A size-buffered filter only in fixed size chunks (excepting the
+ final chunk)."""
+
+ def __init__(self, bufferSize):
+ BufferedFilter.__init__(self)
+ self.bufferSize = bufferSize
+
+ def write(self, data):
+ BufferedFilter.write(self, data)
+ while len(self.buffer) > self.bufferSize:
+ chunk, self.buffer = \
+ self.buffer[:self.bufferSize], self.buffer[self.bufferSize:]
+ self.sink.write(chunk)
+
+class LineBufferedFilter(BufferedFilter):
+
+ """A line-buffered filter only lets data through when it sees
+ whole lines."""
+
+ def __init__(self):
+ BufferedFilter.__init__(self)
+
+ def write(self, data):
+ BufferedFilter.write(self, data)
+ chunks = string.split(self.buffer, '\n')
+ for chunk in chunks[:-1]:
+ self.sink.write(chunk + '\n')
+ self.buffer = chunks[-1]
+
+class MaximallyBufferedFilter(BufferedFilter):
+
+ """A maximally-buffered filter only lets its data through on the final
+ close. It ignores flushes."""
+
+ def __init__(self):
+ BufferedFilter.__init__(self)
+
+ def flush(self): pass
+
+ def close(self):
+ if self.buffer:
+ BufferedFilter.flush(self)
+ self.sink.close()
+
+
+class Context:
+
+ """An interpreter context, which encapsulates a name, an input
+ file object, and a parser object."""
+
+ DEFAULT_UNIT = 'lines'
+
+ def __init__(self, name, line=0, units=DEFAULT_UNIT):
+ self.name = name
+ self.line = line
+ self.units = units
+ self.pause = False
+
+ def bump(self, quantity=1):
+ if self.pause:
+ self.pause = False
+ else:
+ self.line = self.line + quantity
+
+ def identify(self):
+ return self.name, self.line
+
+ def __str__(self):
+ if self.units == self.DEFAULT_UNIT:
+ return "%s:%s" % (self.name, self.line)
+ else:
+ return "%s:%s[%s]" % (self.name, self.line, self.units)
+
+
+class Hook:
+
+ """The base class for implementing hooks."""
+
+ def __init__(self):
+ self.interpreter = None
+
+ def register(self, interpreter):
+ self.interpreter = interpreter
+
+ def deregister(self, interpreter):
+ if interpreter is not self.interpreter:
+ raise Error, "hook not associated with this interpreter"
+ self.interpreter = None
+
+ def push(self):
+ self.interpreter.push()
+
+ def pop(self):
+ self.interpreter.pop()
+
+ def null(self): pass
+
+ def atStartup(self): pass
+ def atReady(self): pass
+ def atFinalize(self): pass
+ def atShutdown(self): pass
+ def atParse(self, scanner, locals): pass
+ def atToken(self, token): pass
+ def atHandle(self, meta): pass
+ def atInteract(self): pass
+
+ def beforeInclude(self, name, file, locals): pass
+ def afterInclude(self): pass
+
+ def beforeExpand(self, string, locals): pass
+ def afterExpand(self, result): pass
+
+ def beforeFile(self, name, file, locals): pass
+ def afterFile(self): pass
+
+ def beforeBinary(self, name, file, chunkSize, locals): pass
+ def afterBinary(self): pass
+
+ def beforeString(self, name, string, locals): pass
+ def afterString(self): pass
+
+ def beforeQuote(self, string): pass
+ def afterQuote(self, result): pass
+
+ def beforeEscape(self, string, more): pass
+ def afterEscape(self, result): pass
+
+ def beforeControl(self, type, rest, locals): pass
+ def afterControl(self): pass
+
+ def beforeSignificate(self, key, value, locals): pass
+ def afterSignificate(self): pass
+
+ def beforeAtomic(self, name, value, locals): pass
+ def afterAtomic(self): pass
+
+ def beforeMulti(self, name, values, locals): pass
+ def afterMulti(self): pass
+
+ def beforeImport(self, name, locals): pass
+ def afterImport(self): pass
+
+ def beforeClause(self, catch, locals): pass
+ def afterClause(self, exception, variable): pass
+
+ def beforeSerialize(self, expression, locals): pass
+ def afterSerialize(self): pass
+
+ def beforeDefined(self, name, locals): pass
+ def afterDefined(self, result): pass
+
+ def beforeLiteral(self, text): pass
+ def afterLiteral(self): pass
+
+ def beforeEvaluate(self, expression, locals): pass
+ def afterEvaluate(self, result): pass
+
+ def beforeExecute(self, statements, locals): pass
+ def afterExecute(self): pass
+
+ def beforeSingle(self, source, locals): pass
+ def afterSingle(self): pass
+
+class VerboseHook(Hook):
+
+ """A verbose hook that reports all information received by the
+ hook interface. This class dynamically scans the Hook base class
+ to ensure that all hook methods are properly represented."""
+
+ EXEMPT_ATTRIBUTES = ['register', 'deregister', 'push', 'pop']
+
+ def __init__(self, output=sys.stderr):
+ Hook.__init__(self)
+ self.output = output
+ self.indent = 0
+
+ class FakeMethod:
+ """This is a proxy method-like object."""
+ def __init__(self, hook, name):
+ self.hook = hook
+ self.name = name
+
+ def __call__(self, **keywords):
+ self.hook.output.write("%s%s: %s\n" % \
+ (' ' * self.hook.indent, \
+ self.name, repr(keywords)))
+
+ for attribute in dir(Hook):
+ if attribute[:1] != '_' and \
+ attribute not in self.EXEMPT_ATTRIBUTES:
+ self.__dict__[attribute] = FakeMethod(self, attribute)
+
+
+class Token:
+
+ """An element of expansion."""
+
+ def run(self, interpreter, locals):
+ raise NotImplementedError
+
+ def string(self):
+ raise NotImplementedError
+
+ def __str__(self): return self.string()
+
+class NullToken(Token):
+ """A chunk of data not containing markups."""
+ def __init__(self, data):
+ self.data = data
+
+ def run(self, interpreter, locals):
+ interpreter.write(self.data)
+
+ def string(self):
+ return self.data
+
+class ExpansionToken(Token):
+ """A token that involves an expansion."""
+ def __init__(self, prefix, first):
+ self.prefix = prefix
+ self.first = first
+
+ def scan(self, scanner):
+ pass
+
+ def run(self, interpreter, locals):
+ pass
+
+class WhitespaceToken(ExpansionToken):
+ """A whitespace markup."""
+ def string(self):
+ return '%s%s' % (self.prefix, self.first)
+
+class LiteralToken(ExpansionToken):
+ """A literal markup."""
+ def run(self, interpreter, locals):
+ interpreter.write(self.first)
+
+ def string(self):
+ return '%s%s' % (self.prefix, self.first)
+
+class PrefixToken(ExpansionToken):
+ """A prefix markup."""
+ def run(self, interpreter, locals):
+ interpreter.write(interpreter.prefix)
+
+ def string(self):
+ return self.prefix * 2
+
+class CommentToken(ExpansionToken):
+ """A comment markup."""
+ def scan(self, scanner):
+ loc = scanner.find('\n')
+ if loc >= 0:
+ self.comment = scanner.chop(loc, 1)
+ else:
+ raise TransientParseError, "comment expects newline"
+
+ def string(self):
+ return '%s#%s\n' % (self.prefix, self.comment)
+
+class ContextNameToken(ExpansionToken):
+ """A context name change markup."""
+ def scan(self, scanner):
+ loc = scanner.find('\n')
+ if loc >= 0:
+ self.name = string.strip(scanner.chop(loc, 1))
+ else:
+ raise TransientParseError, "context name expects newline"
+
+ def run(self, interpreter, locals):
+ context = interpreter.context()
+ context.name = self.name
+
+class ContextLineToken(ExpansionToken):
+ """A context line change markup."""
+ def scan(self, scanner):
+ loc = scanner.find('\n')
+ if loc >= 0:
+ try:
+ self.line = int(scanner.chop(loc, 1))
+ except ValueError:
+ raise ParseError, "context line requires integer"
+ else:
+ raise TransientParseError, "context line expects newline"
+
+ def run(self, interpreter, locals):
+ context = interpreter.context()
+ context.line = self.line
+ context.pause = True
+
+class EscapeToken(ExpansionToken):
+ """An escape markup."""
+ def scan(self, scanner):
+ try:
+ code = scanner.chop(1)
+ result = None
+ if code in '()[]{}\'\"\\': # literals
+ result = code
+ elif code == '0': # NUL
+ result = '\x00'
+ elif code == 'a': # BEL
+ result = '\x07'
+ elif code == 'b': # BS
+ result = '\x08'
+ elif code == 'd': # decimal code
+ decimalCode = scanner.chop(3)
+ result = chr(string.atoi(decimalCode, 10))
+ elif code == 'e': # ESC
+ result = '\x1b'
+ elif code == 'f': # FF
+ result = '\x0c'
+ elif code == 'h': # DEL
+ result = '\x7f'
+ elif code == 'n': # LF (newline)
+ result = '\x0a'
+ elif code == 'N': # Unicode character name
+ theSubsystem.assertUnicode()
+ import unicodedata
+ if scanner.chop(1) != '{':
+ raise ParseError, r"Unicode name escape should be \N{...}"
+ i = scanner.find('}')
+ name = scanner.chop(i, 1)
+ try:
+ result = unicodedata.lookup(name)
+ except KeyError:
+ raise SubsystemError, \
+ "unknown Unicode character name: %s" % name
+ elif code == 'o': # octal code
+ octalCode = scanner.chop(3)
+ result = chr(string.atoi(octalCode, 8))
+ elif code == 'q': # quaternary code
+ quaternaryCode = scanner.chop(4)
+ result = chr(string.atoi(quaternaryCode, 4))
+ elif code == 'r': # CR
+ result = '\x0d'
+ elif code in 's ': # SP
+ result = ' '
+ elif code == 't': # HT
+ result = '\x09'
+ elif code in 'u': # Unicode 16-bit hex literal
+ theSubsystem.assertUnicode()
+ hexCode = scanner.chop(4)
+ result = unichr(string.atoi(hexCode, 16))
+ elif code in 'U': # Unicode 32-bit hex literal
+ theSubsystem.assertUnicode()
+ hexCode = scanner.chop(8)
+ result = unichr(string.atoi(hexCode, 16))
+ elif code == 'v': # VT
+ result = '\x0b'
+ elif code == 'x': # hexadecimal code
+ hexCode = scanner.chop(2)
+ result = chr(string.atoi(hexCode, 16))
+ elif code == 'z': # EOT
+ result = '\x04'
+ elif code == '^': # control character
+ controlCode = string.upper(scanner.chop(1))
+ if controlCode >= '@' and controlCode <= '`':
+ result = chr(ord(controlCode) - ord('@'))
+ elif controlCode == '?':
+ result = '\x7f'
+ else:
+ raise ParseError, "invalid escape control code"
+ else:
+ raise ParseError, "unrecognized escape code"
+ assert result is not None
+ self.code = result
+ except ValueError:
+ raise ParseError, "invalid numeric escape code"
+
+ def run(self, interpreter, locals):
+ interpreter.write(self.code)
+
+ def string(self):
+ return '%s\\x%02x' % (self.prefix, ord(self.code))
+
+class SignificatorToken(ExpansionToken):
+ """A significator markup."""
+ def scan(self, scanner):
+ loc = scanner.find('\n')
+ if loc >= 0:
+ line = scanner.chop(loc, 1)
+ if not line:
+ raise ParseError, "significator must have nonblank key"
+ if line[0] in ' \t\v\n':
+ raise ParseError, "no whitespace between % and key"
+ # Work around a subtle CPython-Jython difference by stripping
+ # the string before splitting it: 'a '.split(None, 1) has two
+ # elements in Jython 2.1).
+ fields = string.split(string.strip(line), None, 1)
+ if len(fields) == 2 and fields[1] == '':
+ fields.pop()
+ self.key = fields[0]
+ if len(fields) < 2:
+ fields.append(None)
+ self.key, self.valueCode = fields
+ else:
+ raise TransientParseError, "significator expects newline"
+
+ def run(self, interpreter, locals):
+ value = self.valueCode
+ if value is not None:
+ value = interpreter.evaluate(string.strip(value), locals)
+ interpreter.significate(self.key, value)
+
+ def string(self):
+ if self.valueCode is None:
+ return '%s%%%s\n' % (self.prefix, self.key)
+ else:
+ return '%s%%%s %s\n' % (self.prefix, self.key, self.valueCode)
+
+class ExpressionToken(ExpansionToken):
+ """An expression markup."""
+ def scan(self, scanner):
+ z = scanner.complex('(', ')', 0)
+ try:
+ q = scanner.next('$', 0, z, True)
+ except ParseError:
+ q = z
+ try:
+ i = scanner.next('?', 0, q, True)
+ try:
+ j = scanner.next('!', i, q, True)
+ except ParseError:
+ try:
+ j = scanner.next(':', i, q, True) # DEPRECATED
+ except ParseError:
+ j = q
+ except ParseError:
+ i = j = q
+ code = scanner.chop(z, 1)
+ self.testCode = code[:i]
+ self.thenCode = code[i + 1:j]
+ self.elseCode = code[j + 1:q]
+ self.exceptCode = code[q + 1:z]
+
+ def run(self, interpreter, locals):
+ try:
+ result = interpreter.evaluate(self.testCode, locals)
+ if self.thenCode:
+ if result:
+ result = interpreter.evaluate(self.thenCode, locals)
+ else:
+ if self.elseCode:
+ result = interpreter.evaluate(self.elseCode, locals)
+ else:
+ result = None
+ except SyntaxError:
+ # Don't catch syntax errors; let them through.
+ raise
+ except:
+ if self.exceptCode:
+ result = interpreter.evaluate(self.exceptCode, locals)
+ else:
+ raise
+ if result is not None:
+ interpreter.write(str(result))
+
+ def string(self):
+ result = self.testCode
+ if self.thenCode:
+ result = result + '?' + self.thenCode
+ if self.elseCode:
+ result = result + '!' + self.elseCode
+ if self.exceptCode:
+ result = result + '$' + self.exceptCode
+ return '%s(%s)' % (self.prefix, result)
+
+class StringLiteralToken(ExpansionToken):
+ """A string token markup."""
+ def scan(self, scanner):
+ scanner.retreat()
+ assert scanner[0] == self.first
+ i = scanner.quote()
+ self.literal = scanner.chop(i)
+
+ def run(self, interpreter, locals):
+ interpreter.literal(self.literal)
+
+ def string(self):
+ return '%s%s' % (self.prefix, self.literal)
+
+class SimpleExpressionToken(ExpansionToken):
+ """A simple expression markup."""
+ def scan(self, scanner):
+ i = scanner.simple()
+ self.code = self.first + scanner.chop(i)
+
+ def run(self, interpreter, locals):
+ interpreter.serialize(self.code, locals)
+
+ def string(self):
+ return '%s%s' % (self.prefix, self.code)
+
+class ReprToken(ExpansionToken):
+ """A repr markup."""
+ def scan(self, scanner):
+ i = scanner.next('`', 0)
+ self.code = scanner.chop(i, 1)
+
+ def run(self, interpreter, locals):
+ interpreter.write(repr(interpreter.evaluate(self.code, locals)))
+
+ def string(self):
+ return '%s`%s`' % (self.prefix, self.code)
+
+class InPlaceToken(ExpansionToken):
+ """An in-place markup."""
+ def scan(self, scanner):
+ i = scanner.next(':', 0)
+ j = scanner.next(':', i + 1)
+ self.code = scanner.chop(i, j - i + 1)
+
+ def run(self, interpreter, locals):
+ interpreter.write("%s:%s:" % (interpreter.prefix, self.code))
+ try:
+ interpreter.serialize(self.code, locals)
+ finally:
+ interpreter.write(":")
+
+ def string(self):
+ return '%s:%s::' % (self.prefix, self.code)
+
+class StatementToken(ExpansionToken):
+ """A statement markup."""
+ def scan(self, scanner):
+ i = scanner.complex('{', '}', 0)
+ self.code = scanner.chop(i, 1)
+
+ def run(self, interpreter, locals):
+ interpreter.execute(self.code, locals)
+
+ def string(self):
+ return '%s{%s}' % (self.prefix, self.code)
+
+class CustomToken(ExpansionToken):
+ """A custom markup."""
+ def scan(self, scanner):
+ i = scanner.complex('<', '>', 0)
+ self.contents = scanner.chop(i, 1)
+
+ def run(self, interpreter, locals):
+ interpreter.invokeCallback(self.contents)
+
+ def string(self):
+ return '%s<%s>' % (self.prefix, self.contents)
+
+class ControlToken(ExpansionToken):
+
+ """A control token."""
+
+ PRIMARY_TYPES = ['if', 'for', 'while', 'try', 'def']
+ SECONDARY_TYPES = ['elif', 'else', 'except', 'finally']
+ TERTIARY_TYPES = ['continue', 'break']
+ GREEDY_TYPES = ['if', 'elif', 'for', 'while', 'def', 'end']
+ END_TYPES = ['end']
+
+ IN_RE = re.compile(r"\bin\b")
+
+ def scan(self, scanner):
+ scanner.acquire()
+ i = scanner.complex('[', ']', 0)
+ self.contents = scanner.chop(i, 1)
+ fields = string.split(string.strip(self.contents), ' ', 1)
+ if len(fields) > 1:
+ self.type, self.rest = fields
+ else:
+ self.type = fields[0]
+ self.rest = None
+ self.subtokens = []
+ if self.type in self.GREEDY_TYPES and self.rest is None:
+ raise ParseError, "control '%s' needs arguments" % self.type
+ if self.type in self.PRIMARY_TYPES:
+ self.subscan(scanner, self.type)
+ self.kind = 'primary'
+ elif self.type in self.SECONDARY_TYPES:
+ self.kind = 'secondary'
+ elif self.type in self.TERTIARY_TYPES:
+ self.kind = 'tertiary'
+ elif self.type in self.END_TYPES:
+ self.kind = 'end'
+ else:
+ raise ParseError, "unknown control markup: '%s'" % self.type
+ scanner.release()
+
+ def subscan(self, scanner, primary):
+ """Do a subscan for contained tokens."""
+ while True:
+ token = scanner.one()
+ if token is None:
+ raise TransientParseError, \
+ "control '%s' needs more tokens" % primary
+ if isinstance(token, ControlToken) and \
+ token.type in self.END_TYPES:
+ if token.rest != primary:
+ raise ParseError, \
+ "control must end with 'end %s'" % primary
+ break
+ self.subtokens.append(token)
+
+ def build(self, allowed=None):
+ """Process the list of subtokens and divide it into a list of
+ 2-tuples, consisting of the dividing tokens and the list of
+ subtokens that follow them. If allowed is specified, it will
+ represent the list of the only secondary markup types which
+ are allowed."""
+ if allowed is None:
+ allowed = SECONDARY_TYPES
+ result = []
+ latest = []
+ result.append((self, latest))
+ for subtoken in self.subtokens:
+ if isinstance(subtoken, ControlToken) and \
+ subtoken.kind == 'secondary':
+ if subtoken.type not in allowed:
+ raise ParseError, \
+ "control unexpected secondary: '%s'" % subtoken.type
+ latest = []
+ result.append((subtoken, latest))
+ else:
+ latest.append(subtoken)
+ return result
+
+ def run(self, interpreter, locals):
+ interpreter.invoke('beforeControl', type=self.type, rest=self.rest, \
+ locals=locals)
+ if self.type == 'if':
+ info = self.build(['elif', 'else'])
+ elseTokens = None
+ if info[-1][0].type == 'else':
+ elseTokens = info.pop()[1]
+ for secondary, subtokens in info:
+ if secondary.type not in ('if', 'elif'):
+ raise ParseError, \
+ "control 'if' unexpected secondary: '%s'" % secondary.type
+ if interpreter.evaluate(secondary.rest, locals):
+ self.subrun(subtokens, interpreter, locals)
+ break
+ else:
+ if elseTokens:
+ self.subrun(elseTokens, interpreter, locals)
+ elif self.type == 'for':
+ sides = self.IN_RE.split(self.rest, 1)
+ if len(sides) != 2:
+ raise ParseError, "control expected 'for x in seq'"
+ iterator, sequenceCode = sides
+ info = self.build(['else'])
+ elseTokens = None
+ if info[-1][0].type == 'else':
+ elseTokens = info.pop()[1]
+ if len(info) != 1:
+ raise ParseError, "control 'for' expects at most one 'else'"
+ sequence = interpreter.evaluate(sequenceCode, locals)
+ for element in sequence:
+ try:
+ interpreter.assign(iterator, element, locals)
+ self.subrun(info[0][1], interpreter, locals)
+ except ContinueFlow:
+ continue
+ except BreakFlow:
+ break
+ else:
+ if elseTokens:
+ self.subrun(elseTokens, interpreter, locals)
+ elif self.type == 'while':
+ testCode = self.rest
+ info = self.build(['else'])
+ elseTokens = None
+ if info[-1][0].type == 'else':
+ elseTokens = info.pop()[1]
+ if len(info) != 1:
+ raise ParseError, "control 'while' expects at most one 'else'"
+ atLeastOnce = False
+ while True:
+ try:
+ if not interpreter.evaluate(testCode, locals):
+ break
+ atLeastOnce = True
+ self.subrun(info[0][1], interpreter, locals)
+ except ContinueFlow:
+ continue
+ except BreakFlow:
+ break
+ if not atLeastOnce and elseTokens:
+ self.subrun(elseTokens, interpreter, locals)
+ elif self.type == 'try':
+ info = self.build(['except', 'finally'])
+ if len(info) == 1:
+ raise ParseError, "control 'try' needs 'except' or 'finally'"
+ type = info[-1][0].type
+ if type == 'except':
+ for secondary, _tokens in info[1:]:
+ if secondary.type != 'except':
+ raise ParseError, \
+ "control 'try' cannot have 'except' and 'finally'"
+ else:
+ assert type == 'finally'
+ if len(info) != 2:
+ raise ParseError, \
+ "control 'try' can only have one 'finally'"
+ if type == 'except':
+ try:
+ self.subrun(info[0][1], interpreter, locals)
+ except FlowError:
+ raise
+ except Exception, e:
+ for secondary, tokens in info[1:]:
+ exception, variable = interpreter.clause(secondary.rest)
+ if variable is not None:
+ interpreter.assign(variable, e)
+ if isinstance(e, exception):
+ self.subrun(tokens, interpreter, locals)
+ break
+ else:
+ raise
+ else:
+ try:
+ self.subrun(info[0][1], interpreter, locals)
+ finally:
+ self.subrun(info[1][1], interpreter, locals)
+ elif self.type == 'continue':
+ raise ContinueFlow, "control 'continue' without 'for', 'while'"
+ elif self.type == 'break':
+ raise BreakFlow, "control 'break' without 'for', 'while'"
+ elif self.type == 'def':
+ signature = self.rest
+ definition = self.substring()
+ code = 'def %s:\n' \
+ ' r"""%s"""\n' \
+ ' return %s.expand(r"""%s""", locals())\n' % \
+ (signature, definition, interpreter.pseudo, definition)
+ interpreter.execute(code, locals)
+ elif self.type == 'end':
+ raise ParseError, "control 'end' requires primary markup"
+ else:
+ raise ParseError, \
+ "control '%s' cannot be at this level" % self.type
+ interpreter.invoke('afterControl')
+
+ def subrun(self, tokens, interpreter, locals):
+ """Execute a sequence of tokens."""
+ for token in tokens:
+ token.run(interpreter, locals)
+
+ def substring(self):
+ return string.join(map(str, self.subtokens), '')
+
+ def string(self):
+ if self.kind == 'primary':
+ return '%s[%s]%s%s[end %s]' % \
+ (self.prefix, self.contents, self.substring(), \
+ self.prefix, self.type)
+ else:
+ return '%s[%s]' % (self.prefix, self.contents)
+
+
+class Scanner:
+
+ """A scanner holds a buffer for lookahead parsing and has the
+ ability to scan for special symbols and indicators in that
+ buffer."""
+
+ # This is the token mapping table that maps first characters to
+ # token classes.
+ TOKEN_MAP = [
+ (None, PrefixToken),
+ (' \t\v\r\n', WhitespaceToken),
+ (')]}', LiteralToken),
+ ('\\', EscapeToken),
+ ('#', CommentToken),
+ ('?', ContextNameToken),
+ ('!', ContextLineToken),
+ ('%', SignificatorToken),
+ ('(', ExpressionToken),
+ (IDENTIFIER_FIRST_CHARS, SimpleExpressionToken),
+ ('\'\"', StringLiteralToken),
+ ('`', ReprToken),
+ (':', InPlaceToken),
+ ('[', ControlToken),
+ ('{', StatementToken),
+ ('<', CustomToken),
+ ]
+
+ def __init__(self, prefix, data=''):
+ self.prefix = prefix
+ self.pointer = 0
+ self.buffer = data
+ self.lock = 0
+
+ def __nonzero__(self): return self.pointer < len(self.buffer)
+ def __len__(self): return len(self.buffer) - self.pointer
+ def __getitem__(self, index): return self.buffer[self.pointer + index]
+
+ def __getslice__(self, start, stop):
+ if stop > len(self):
+ stop = len(self)
+ return self.buffer[self.pointer + start:self.pointer + stop]
+
+ def advance(self, count=1):
+ """Advance the pointer count characters."""
+ self.pointer = self.pointer + count
+
+ def retreat(self, count=1):
+ self.pointer = self.pointer - count
+ if self.pointer < 0:
+ raise ParseError, "can't retreat back over synced out chars"
+
+ def set(self, data):
+ """Start the scanner digesting a new batch of data; start the pointer
+ over from scratch."""
+ self.pointer = 0
+ self.buffer = data
+
+ def feed(self, data):
+ """Feed some more data to the scanner."""
+ self.buffer = self.buffer + data
+
+ def chop(self, count=None, slop=0):
+ """Chop the first count + slop characters off the front, and return
+ the first count. If count is not specified, then return
+ everything."""
+ if count is None:
+ assert slop == 0
+ count = len(self)
+ if count > len(self):
+ raise TransientParseError, "not enough data to read"
+ result = self[:count]
+ self.advance(count + slop)
+ return result
+
+ def acquire(self):
+ """Lock the scanner so it doesn't destroy data on sync."""
+ self.lock = self.lock + 1
+
+ def release(self):
+ """Unlock the scanner."""
+ self.lock = self.lock - 1
+
+ def sync(self):
+ """Sync up the buffer with the read head."""
+ if self.lock == 0 and self.pointer != 0:
+ self.buffer = self.buffer[self.pointer:]
+ self.pointer = 0
+
+ def unsync(self):
+ """Undo changes; reset the read head."""
+ if self.pointer != 0:
+ self.lock = 0
+ self.pointer = 0
+
+ def rest(self):
+ """Get the remainder of the buffer."""
+ return self[:]
+
+ def read(self, i=0, count=1):
+ """Read count chars starting from i; raise a transient error if
+ there aren't enough characters remaining."""
+ if len(self) < i + count:
+ raise TransientParseError, "need more data to read"
+ else:
+ return self[i:i + count]
+
+ def check(self, i, archetype=None):
+ """Scan for the next single or triple quote, with the specified
+ archetype. Return the found quote or None."""
+ quote = None
+ if self[i] in '\'\"':
+ quote = self[i]
+ if len(self) - i < 3:
+ for j in range(i, len(self)):
+ if self[i] == quote:
+ return quote
+ else:
+ raise TransientParseError, "need to scan for rest of quote"
+ if self[i + 1] == self[i + 2] == quote:
+ quote = quote * 3
+ if quote is not None:
+ if archetype is None:
+ return quote
+ else:
+ if archetype == quote:
+ return quote
+ elif len(archetype) < len(quote) and archetype[0] == quote[0]:
+ return archetype
+ else:
+ return None
+ else:
+ return None
+
+ def find(self, sub, start=0, end=None):
+ """Find the next occurrence of the character, or return -1."""
+ if end is not None:
+ return string.find(self.rest(), sub, start, end)
+ else:
+ return string.find(self.rest(), sub, start)
+
+ def last(self, char, start=0, end=None):
+ """Find the first character that is _not_ the specified character."""
+ if end is None:
+ end = len(self)
+ i = start
+ while i < end:
+ if self[i] != char:
+ return i
+ i = i + 1
+ else:
+ raise TransientParseError, "expecting other than %s" % char
+
+ def next(self, target, start=0, end=None, mandatory=False):
+ """Scan for the next occurrence of one of the characters in
+ the target string; optionally, make the scan mandatory."""
+ if mandatory:
+ assert end is not None
+ quote = None
+ if end is None:
+ end = len(self)
+ i = start
+ while i < end:
+ newQuote = self.check(i, quote)
+ if newQuote:
+ if newQuote == quote:
+ quote = None
+ else:
+ quote = newQuote
+ i = i + len(newQuote)
+ else:
+ c = self[i]
+ if quote:
+ if c == '\\':
+ i = i + 1
+ else:
+ if c in target:
+ return i
+ i = i + 1
+ else:
+ if mandatory:
+ raise ParseError, "expecting %s, not found" % target
+ else:
+ raise TransientParseError, "expecting ending character"
+
+ def quote(self, start=0, end=None, mandatory=False):
+ """Scan for the end of the next quote."""
+ assert self[start] in '\'\"'
+ quote = self.check(start)
+ if end is None:
+ end = len(self)
+ i = start + len(quote)
+ while i < end:
+ newQuote = self.check(i, quote)
+ if newQuote:
+ i = i + len(newQuote)
+ if newQuote == quote:
+ return i
+ else:
+ c = self[i]
+ if c == '\\':
+ i = i + 1
+ i = i + 1
+ else:
+ if mandatory:
+ raise ParseError, "expecting end of string literal"
+ else:
+ raise TransientParseError, "expecting end of string literal"
+
+ def nested(self, enter, exit, start=0, end=None):
+ """Scan from i for an ending sequence, respecting entries and exits
+ only."""
+ depth = 0
+ if end is None:
+ end = len(self)
+ i = start
+ while i < end:
+ c = self[i]
+ if c == enter:
+ depth = depth + 1
+ elif c == exit:
+ depth = depth - 1
+ if depth < 0:
+ return i
+ i = i + 1
+ else:
+ raise TransientParseError, "expecting end of complex expression"
+
+ def complex(self, enter, exit, start=0, end=None, skip=None):
+ """Scan from i for an ending sequence, respecting quotes,
+ entries and exits."""
+ quote = None
+ depth = 0
+ if end is None:
+ end = len(self)
+ last = None
+ i = start
+ while i < end:
+ newQuote = self.check(i, quote)
+ if newQuote:
+ if newQuote == quote:
+ quote = None
+ else:
+ quote = newQuote
+ i = i + len(newQuote)
+ else:
+ c = self[i]
+ if quote:
+ if c == '\\':
+ i = i + 1
+ else:
+ if skip is None or last != skip:
+ if c == enter:
+ depth = depth + 1
+ elif c == exit:
+ depth = depth - 1
+ if depth < 0:
+ return i
+ last = c
+ i = i + 1
+ else:
+ raise TransientParseError, "expecting end of complex expression"
+
+ def word(self, start=0):
+ """Scan from i for a simple word."""
+ length = len(self)
+ i = start
+ while i < length:
+ if not self[i] in IDENTIFIER_CHARS:
+ return i
+ i = i + 1
+ else:
+ raise TransientParseError, "expecting end of word"
+
+ def phrase(self, start=0):
+ """Scan from i for a phrase (e.g., 'word', 'f(a, b, c)', 'a[i]', or
+ combinations like 'x[i](a)'."""
+ # Find the word.
+ i = self.word(start)
+ while i < len(self) and self[i] in '([{':
+ enter = self[i]
+ if enter == '{':
+ raise ParseError, "curly braces can't open simple expressions"
+ exit = ENDING_CHARS[enter]
+ i = self.complex(enter, exit, i + 1) + 1
+ return i
+
+ def simple(self, start=0):
+ """Scan from i for a simple expression, which consists of one
+ more phrases separated by dots."""
+ i = self.phrase(start)
+ length = len(self)
+ while i < length and self[i] == '.':
+ i = self.phrase(i)
+ # Make sure we don't end with a trailing dot.
+ while i > 0 and self[i - 1] == '.':
+ i = i - 1
+ return i
+
+ def one(self):
+ """Parse and return one token, or None if the scanner is empty."""
+ if not self:
+ return None
+ if not self.prefix:
+ loc = -1
+ else:
+ loc = self.find(self.prefix)
+ if loc < 0:
+ # If there's no prefix in the buffer, then set the location to
+ # the end so the whole thing gets processed.
+ loc = len(self)
+ if loc == 0:
+ # If there's a prefix at the beginning of the buffer, process
+ # an expansion.
+ prefix = self.chop(1)
+ assert prefix == self.prefix
+ first = self.chop(1)
+ if first == self.prefix:
+ first = None
+ for firsts, factory in self.TOKEN_MAP:
+ if firsts is None:
+ if first is None:
+ break
+ elif first in firsts:
+ break
+ else:
+ raise ParseError, "unknown markup: %s%s" % (self.prefix, first)
+ token = factory(self.prefix, first)
+ try:
+ token.scan(self)
+ except TransientParseError:
+ # If a transient parse error occurs, reset the buffer pointer
+ # so we can (conceivably) try again later.
+ self.unsync()
+ raise
+ else:
+ # Process everything up to loc as a null token.
+ data = self.chop(loc)
+ token = NullToken(data)
+ self.sync()
+ return token
+
+
+class Interpreter:
+
+ """An interpreter can process chunks of EmPy code."""
+
+ # Constants.
+
+ VERSION = __version__
+ SIGNIFICATOR_RE_SUFFIX = SIGNIFICATOR_RE_SUFFIX
+ SIGNIFICATOR_RE_STRING = None
+
+ # Types.
+
+ Interpreter = None # define this below to prevent a circular reference
+ Hook = Hook # DEPRECATED
+ Filter = Filter # DEPRECATED
+ NullFilter = NullFilter # DEPRECATED
+ FunctionFilter = FunctionFilter # DEPRECATED
+ StringFilter = StringFilter # DEPRECATED
+ BufferedFilter = BufferedFilter # DEPRECATED
+ SizeBufferedFilter = SizeBufferedFilter # DEPRECATED
+ LineBufferedFilter = LineBufferedFilter # DEPRECATED
+ MaximallyBufferedFilter = MaximallyBufferedFilter # DEPRECATED
+
+ # Tables.
+
+ ESCAPE_CODES = {0x00: '0', 0x07: 'a', 0x08: 'b', 0x1b: 'e', 0x0c: 'f', \
+ 0x7f: 'h', 0x0a: 'n', 0x0d: 'r', 0x09: 't', 0x0b: 'v', \
+ 0x04: 'z'}
+
+ ASSIGN_TOKEN_RE = re.compile(r"[_a-zA-Z][_a-zA-Z0-9]*|\(|\)|,")
+
+ DEFAULT_OPTIONS = {BANGPATH_OPT: True,
+ BUFFERED_OPT: False,
+ RAW_OPT: False,
+ EXIT_OPT: True,
+ FLATTEN_OPT: False,
+ OVERRIDE_OPT: True,
+ CALLBACK_OPT: False}
+
+ _wasProxyInstalled = False # was a proxy installed?
+
+ # Construction, initialization, destruction.
+
+ def __init__(self, output=None, argv=None, prefix=DEFAULT_PREFIX, \
+ pseudo=None, options=None, globals=None, hooks=None):
+ self.interpreter = self # DEPRECATED
+ # Set up the stream.
+ if output is None:
+ output = UncloseableFile(sys.__stdout__)
+ self.output = output
+ self.prefix = prefix
+ if pseudo is None:
+ pseudo = DEFAULT_PSEUDOMODULE_NAME
+ self.pseudo = pseudo
+ if argv is None:
+ argv = [DEFAULT_SCRIPT_NAME]
+ self.argv = argv
+ self.args = argv[1:]
+ if options is None:
+ options = {}
+ self.options = options
+ # Initialize any hooks.
+ self.hooksEnabled = None # special sentinel meaning "false until added"
+ self.hooks = []
+ if hooks is None:
+ hooks = []
+ for hook in hooks:
+ self.register(hook)
+ # Initialize callback.
+ self.callback = None
+ # Finalizers.
+ self.finals = []
+ # The interpreter stacks.
+ self.contexts = Stack()
+ self.streams = Stack()
+ # Now set up the globals.
+ self.globals = globals
+ self.fix()
+ self.history = Stack()
+ # Install a proxy stdout if one hasn't been already.
+ self.installProxy()
+ # Finally, reset the state of all the stacks.
+ self.reset()
+ # Okay, now flatten the namespaces if that option has been set.
+ if self.options.get(FLATTEN_OPT, False):
+ self.flatten()
+ # Set up old pseudomodule attributes.
+ if prefix is None:
+ self.SIGNIFICATOR_RE_STRING = None
+ else:
+ self.SIGNIFICATOR_RE_STRING = prefix + self.SIGNIFICATOR_RE_SUFFIX
+ self.Interpreter = self.__class__
+ # Done. Now declare that we've started up.
+ self.invoke('atStartup')
+
+ def __del__(self):
+ self.shutdown()
+
+ def __repr__(self):
+ return '<%s pseudomodule/interpreter at 0x%x>' % \
+ (self.pseudo, id(self))
+
+ def ready(self):
+ """Declare the interpreter ready for normal operations."""
+ self.invoke('atReady')
+
+ def fix(self):
+ """Reset the globals, stamping in the pseudomodule."""
+ if self.globals is None:
+ self.globals = {}
+ # Make sure that there is no collision between two interpreters'
+ # globals.
+ if self.globals.has_key(self.pseudo):
+ if self.globals[self.pseudo] is not self:
+ raise Error, "interpreter globals collision"
+ self.globals[self.pseudo] = self
+
+ def unfix(self):
+ """Remove the pseudomodule (if present) from the globals."""
+ UNWANTED_KEYS = [self.pseudo, '__builtins__']
+ for unwantedKey in UNWANTED_KEYS:
+ if self.globals.has_key(unwantedKey):
+ del self.globals[unwantedKey]
+
+ def update(self, other):
+ """Update the current globals dictionary with another dictionary."""
+ self.globals.update(other)
+ self.fix()
+
+ def clear(self):
+ """Clear out the globals dictionary with a brand new one."""
+ self.globals = {}
+ self.fix()
+
+ def save(self, deep=True):
+ if deep:
+ copyMethod = copy.deepcopy
+ else:
+ copyMethod = copy.copy
+ """Save a copy of the current globals on the history stack."""
+ self.unfix()
+ self.history.push(copyMethod(self.globals))
+ self.fix()
+
+ def restore(self, destructive=True):
+ """Restore the topmost historic globals."""
+ if destructive:
+ fetchMethod = self.history.pop
+ else:
+ fetchMethod = self.history.top
+ self.unfix()
+ self.globals = fetchMethod()
+ self.fix()
+
+ def shutdown(self):
+ """Declare this interpreting session over; close the stream file
+ object. This method is idempotent."""
+ if self.streams is not None:
+ try:
+ self.finalize()
+ self.invoke('atShutdown')
+ while self.streams:
+ stream = self.streams.pop()
+ stream.close()
+ finally:
+ self.streams = None
+
+ def ok(self):
+ """Is the interpreter still active?"""
+ return self.streams is not None
+
+ # Writeable file-like methods.
+
+ def write(self, data):
+ self.stream().write(data)
+
+ def writelines(self, stuff):
+ self.stream().writelines(stuff)
+
+ def flush(self):
+ self.stream().flush()
+
+ def close(self):
+ self.shutdown()
+
+ # Stack-related activity.
+
+ def context(self):
+ return self.contexts.top()
+
+ def stream(self):
+ return self.streams.top()
+
+ def reset(self):
+ self.contexts.purge()
+ self.streams.purge()
+ self.streams.push(Stream(self.output))
+ if self.options.get(OVERRIDE_OPT, True):
+ sys.stdout.clear(self)
+
+ def push(self):
+ if self.options.get(OVERRIDE_OPT, True):
+ sys.stdout.push(self)
+
+ def pop(self):
+ if self.options.get(OVERRIDE_OPT, True):
+ sys.stdout.pop(self)
+
+ # Higher-level operations.
+
+ def include(self, fileOrFilename, locals=None):
+ """Do an include pass on a file or filename."""
+ if type(fileOrFilename) is types.StringType:
+ # Either it's a string representing a filename ...
+ filename = fileOrFilename
+ name = filename
+ file = theSubsystem.open(filename, 'r')
+ else:
+ # ... or a file object.
+ file = fileOrFilename
+ name = "<%s>" % str(file.__class__)
+ self.invoke('beforeInclude', name=name, file=file, locals=locals)
+ self.file(file, name, locals)
+ self.invoke('afterInclude')
+
+ def expand(self, data, locals=None):
+ """Do an explicit expansion on a subordinate stream."""
+ outFile = StringIO.StringIO()
+ stream = Stream(outFile)
+ self.invoke('beforeExpand', string=data, locals=locals)
+ self.streams.push(stream)
+ try:
+ self.string(data, '<expand>', locals)
+ stream.flush()
+ expansion = outFile.getvalue()
+ self.invoke('afterExpand', result=expansion)
+ return expansion
+ finally:
+ self.streams.pop()
+
+ def quote(self, data):
+ """Quote the given string so that if it were expanded it would
+ evaluate to the original."""
+ self.invoke('beforeQuote', string=data)
+ scanner = Scanner(self.prefix, data)
+ result = []
+ i = 0
+ try:
+ j = scanner.next(self.prefix, i)
+ result.append(data[i:j])
+ result.append(self.prefix * 2)
+ i = j + 1
+ except TransientParseError:
+ pass
+ result.append(data[i:])
+ result = string.join(result, '')
+ self.invoke('afterQuote', result=result)
+ return result
+
+ def escape(self, data, more=''):
+ """Escape a string so that nonprintable characters are replaced
+ with compatible EmPy expansions."""
+ self.invoke('beforeEscape', string=data, more=more)
+ result = []
+ for char in data:
+ if char < ' ' or char > '~':
+ charOrd = ord(char)
+ if Interpreter.ESCAPE_CODES.has_key(charOrd):
+ result.append(self.prefix + '\\' + \
+ Interpreter.ESCAPE_CODES[charOrd])
+ else:
+ result.append(self.prefix + '\\x%02x' % charOrd)
+ elif char in more:
+ result.append(self.prefix + '\\' + char)
+ else:
+ result.append(char)
+ result = string.join(result, '')
+ self.invoke('afterEscape', result=result)
+ return result
+
+ # Processing.
+
+ def wrap(self, callable, args):
+ """Wrap around an application of a callable and handle errors.
+ Return whether no error occurred."""
+ try:
+ apply(callable, args)
+ self.reset()
+ return True
+ except KeyboardInterrupt, e:
+ # Handle keyboard interrupts specially: we should always exit
+ # from these.
+ self.fail(e, True)
+ except Exception, e:
+ # A standard exception (other than a keyboard interrupt).
+ self.fail(e)
+ except:
+ # If we get here, then either it's an exception not derived from
+ # Exception or it's a string exception, so get the error type
+ # from the sys module.
+ e = sys.exc_type
+ self.fail(e)
+ # An error occurred if we leak through to here, so do cleanup.
+ self.reset()
+ return False
+
+ def interact(self):
+ """Perform interaction."""
+ self.invoke('atInteract')
+ done = False
+ while not done:
+ result = self.wrap(self.file, (sys.stdin, '<interact>'))
+ if self.options.get(EXIT_OPT, True):
+ done = True
+ else:
+ if result:
+ done = True
+ else:
+ self.reset()
+
+ def fail(self, error, fatal=False):
+ """Handle an actual error that occurred."""
+ if self.options.get(BUFFERED_OPT, False):
+ try:
+ self.output.abort()
+ except AttributeError:
+ # If the output file object doesn't have an abort method,
+ # something got mismatched, but it's too late to do
+ # anything about it now anyway, so just ignore it.
+ pass
+ meta = self.meta(error)
+ self.handle(meta)
+ if self.options.get(RAW_OPT, False):
+ raise
+ if fatal or self.options.get(EXIT_OPT, True):
+ sys.exit(FAILURE_CODE)
+
+ def file(self, file, name='<file>', locals=None):
+ """Parse the entire contents of a file-like object, line by line."""
+ context = Context(name)
+ self.contexts.push(context)
+ self.invoke('beforeFile', name=name, file=file, locals=locals)
+ scanner = Scanner(self.prefix)
+ first = True
+ done = False
+ while not done:
+ self.context().bump()
+ line = file.readline()
+ if first:
+ if self.options.get(BANGPATH_OPT, True) and self.prefix:
+ # Replace a bangpath at the beginning of the first line
+ # with an EmPy comment.
+ if string.find(line, BANGPATH) == 0:
+ line = self.prefix + '#' + line[2:]
+ first = False
+ if line:
+ scanner.feed(line)
+ else:
+ done = True
+ self.safe(scanner, done, locals)
+ self.invoke('afterFile')
+ self.contexts.pop()
+
+ def binary(self, file, name='<binary>', chunkSize=0, locals=None):
+ """Parse the entire contents of a file-like object, in chunks."""
+ if chunkSize <= 0:
+ chunkSize = DEFAULT_CHUNK_SIZE
+ context = Context(name, units='bytes')
+ self.contexts.push(context)
+ self.invoke('beforeBinary', name=name, file=file, \
+ chunkSize=chunkSize, locals=locals)
+ scanner = Scanner(self.prefix)
+ done = False
+ while not done:
+ chunk = file.read(chunkSize)
+ if chunk:
+ scanner.feed(chunk)
+ else:
+ done = True
+ self.safe(scanner, done, locals)
+ self.context().bump(len(chunk))
+ self.invoke('afterBinary')
+ self.contexts.pop()
+
+ def string(self, data, name='<string>', locals=None):
+ """Parse a string."""
+ context = Context(name)
+ self.contexts.push(context)
+ self.invoke('beforeString', name=name, string=data, locals=locals)
+ context.bump()
+ scanner = Scanner(self.prefix, data)
+ self.safe(scanner, True, locals)
+ self.invoke('afterString')
+ self.contexts.pop()
+
+ def safe(self, scanner, final=False, locals=None):
+ """Do a protected parse. Catch transient parse errors; if
+ final is true, then make a final pass with a terminator,
+ otherwise ignore the transient parse error (more data is
+ pending)."""
+ try:
+ self.parse(scanner, locals)
+ except TransientParseError:
+ if final:
+ # If the buffer doesn't end with a newline, try tacking on
+ # a dummy terminator.
+ buffer = scanner.rest()
+ if buffer and buffer[-1] != '\n':
+ scanner.feed(self.prefix + '\n')
+ # A TransientParseError thrown from here is a real parse
+ # error.
+ self.parse(scanner, locals)
+
+ def parse(self, scanner, locals=None):
+ """Parse and run as much from this scanner as possible."""
+ self.invoke('atParse', scanner=scanner, locals=locals)
+ while True:
+ token = scanner.one()
+ if token is None:
+ break
+ self.invoke('atToken', token=token)
+ token.run(self, locals)
+
+ # Medium-level evaluation and execution.
+
+ def tokenize(self, name):
+ """Take an lvalue string and return a name or a (possibly recursive)
+ list of names."""
+ result = []
+ stack = [result]
+ for garbage in self.ASSIGN_TOKEN_RE.split(name):
+ garbage = string.strip(garbage)
+ if garbage:
+ raise ParseError, "unexpected assignment token: '%s'" % garbage
+ tokens = self.ASSIGN_TOKEN_RE.findall(name)
+ # While processing, put a None token at the start of any list in which
+ # commas actually appear.
+ for token in tokens:
+ if token == '(':
+ stack.append([])
+ elif token == ')':
+ top = stack.pop()
+ if len(top) == 1:
+ top = top[0] # no None token means that it's not a 1-tuple
+ elif top[0] is None:
+ del top[0] # remove the None token for real tuples
+ stack[-1].append(top)
+ elif token == ',':
+ if len(stack[-1]) == 1:
+ stack[-1].insert(0, None)
+ else:
+ stack[-1].append(token)
+ # If it's a 1-tuple at the top level, turn it into a real subsequence.
+ if result and result[0] is None:
+ result = [result[1:]]
+ if len(result) == 1:
+ return result[0]
+ else:
+ return result
+
+ def significate(self, key, value=None, locals=None):
+ """Declare a significator."""
+ self.invoke('beforeSignificate', key=key, value=value, locals=locals)
+ name = '__%s__' % key
+ self.atomic(name, value, locals)
+ self.invoke('afterSignificate')
+
+ def atomic(self, name, value, locals=None):
+ """Do an atomic assignment."""
+ self.invoke('beforeAtomic', name=name, value=value, locals=locals)
+ if locals is None:
+ self.globals[name] = value
+ else:
+ locals[name] = value
+ self.invoke('afterAtomic')
+
+ def multi(self, names, values, locals=None):
+ """Do a (potentially recursive) assignment."""
+ self.invoke('beforeMulti', names=names, values=values, locals=locals)
+ # No zip in 1.5, so we have to do it manually.
+ i = 0
+ try:
+ values = tuple(values)
+ except TypeError:
+ raise TypeError, "unpack non-sequence"
+ if len(names) != len(values):
+ raise ValueError, "unpack tuple of wrong size"
+ for i in range(len(names)):
+ name = names[i]
+ if type(name) is types.StringType:
+ self.atomic(name, values[i], locals)
+ else:
+ self.multi(name, values[i], locals)
+ self.invoke('afterMulti')
+
+ def assign(self, name, value, locals=None):
+ """Do a potentially complex (including tuple unpacking) assignment."""
+ left = self.tokenize(name)
+ # The return value of tokenize can either be a string or a list of
+ # (lists of) strings.
+ if type(left) is types.StringType:
+ self.atomic(left, value, locals)
+ else:
+ self.multi(left, value, locals)
+
+ def import_(self, name, locals=None):
+ """Do an import."""
+ self.invoke('beforeImport', name=name, locals=locals)
+ self.execute('import %s' % name, locals)
+ self.invoke('afterImport')
+
+ def clause(self, catch, locals=None):
+ """Given the string representation of an except clause, turn it into
+ a 2-tuple consisting of the class name, and either a variable name
+ or None."""
+ self.invoke('beforeClause', catch=catch, locals=locals)
+ if catch is None:
+ exceptionCode, variable = None, None
+ elif string.find(catch, ',') >= 0:
+ exceptionCode, variable = string.split(string.strip(catch), ',', 1)
+ variable = string.strip(variable)
+ else:
+ exceptionCode, variable = string.strip(catch), None
+ if not exceptionCode:
+ exception = Exception
+ else:
+ exception = self.evaluate(exceptionCode, locals)
+ self.invoke('afterClause', exception=exception, variable=variable)
+ return exception, variable
+
+ def serialize(self, expression, locals=None):
+ """Do an expansion, involving evaluating an expression, then
+ converting it to a string and writing that string to the
+ output if the evaluation is not None."""
+ self.invoke('beforeSerialize', expression=expression, locals=locals)
+ result = self.evaluate(expression, locals)
+ if result is not None:
+ self.write(str(result))
+ self.invoke('afterSerialize')
+
+ def defined(self, name, locals=None):
+ """Return a Boolean indicating whether or not the name is
+ defined either in the locals or the globals."""
+ self.invoke('beforeDefined', name=name, local=local)
+ if locals is not None:
+ if locals.has_key(name):
+ result = True
+ else:
+ result = False
+ elif self.globals.has_key(name):
+ result = True
+ else:
+ result = False
+ self.invoke('afterDefined', result=result)
+
+ def literal(self, text):
+ """Process a string literal."""
+ self.invoke('beforeLiteral', text=text)
+ self.serialize(text)
+ self.invoke('afterLiteral')
+
+ # Low-level evaluation and execution.
+
+ def evaluate(self, expression, locals=None):
+ """Evaluate an expression."""
+ if expression in ('1', 'True'): return True
+ if expression in ('0', 'False'): return False
+ self.push()
+ try:
+ self.invoke('beforeEvaluate', \
+ expression=expression, locals=locals)
+ if locals is not None:
+ result = eval(expression, self.globals, locals)
+ else:
+ result = eval(expression, self.globals)
+ self.invoke('afterEvaluate', result=result)
+ return result
+ finally:
+ self.pop()
+
+ def execute(self, statements, locals=None):
+ """Execute a statement."""
+ # If there are any carriage returns (as opposed to linefeeds/newlines)
+ # in the statements code, then remove them. Even on DOS/Windows
+ # platforms,
+ if string.find(statements, '\r') >= 0:
+ statements = string.replace(statements, '\r', '')
+ # If there are no newlines in the statements code, then strip any
+ # leading or trailing whitespace.
+ if string.find(statements, '\n') < 0:
+ statements = string.strip(statements)
+ self.push()
+ try:
+ self.invoke('beforeExecute', \
+ statements=statements, locals=locals)
+ if locals is not None:
+ exec statements in self.globals, locals
+ else:
+ exec statements in self.globals
+ self.invoke('afterExecute')
+ finally:
+ self.pop()
+
+ def single(self, source, locals=None):
+ """Execute an expression or statement, just as if it were
+ entered into the Python interactive interpreter."""
+ self.push()
+ try:
+ self.invoke('beforeSingle', \
+ source=source, locals=locals)
+ code = compile(source, '<single>', 'single')
+ if locals is not None:
+ exec code in self.globals, locals
+ else:
+ exec code in self.globals
+ self.invoke('afterSingle')
+ finally:
+ self.pop()
+
+ # Hooks.
+
+ def register(self, hook, prepend=False):
+ """Register the provided hook."""
+ hook.register(self)
+ if self.hooksEnabled is None:
+ # A special optimization so that hooks can be effectively
+ # disabled until one is added or they are explicitly turned on.
+ self.hooksEnabled = True
+ if prepend:
+ self.hooks.insert(0, hook)
+ else:
+ self.hooks.append(hook)
+
+ def deregister(self, hook):
+ """Remove an already registered hook."""
+ hook.deregister(self)
+ self.hooks.remove(hook)
+
+ def invoke(self, _name, **keywords):
+ """Invoke the hook(s) associated with the hook name, should they
+ exist."""
+ if self.hooksEnabled:
+ for hook in self.hooks:
+ hook.push()
+ try:
+ method = getattr(hook, _name)
+ apply(method, (), keywords)
+ finally:
+ hook.pop()
+
+ def finalize(self):
+ """Execute any remaining final routines."""
+ self.push()
+ self.invoke('atFinalize')
+ try:
+ # Pop them off one at a time so they get executed in reverse
+ # order and we remove them as they're executed in case something
+ # bad happens.
+ while self.finals:
+ final = self.finals.pop()
+ final()
+ finally:
+ self.pop()
+
+ # Error handling.
+
+ def meta(self, exc=None):
+ """Construct a MetaError for the interpreter's current state."""
+ return MetaError(self.contexts.clone(), exc)
+
+ def handle(self, meta):
+ """Handle a MetaError."""
+ first = True
+ self.invoke('atHandle', meta=meta)
+ for context in meta.contexts:
+ if first:
+ if meta.exc is not None:
+ desc = "error: %s: %s" % (meta.exc.__class__, meta.exc)
+ else:
+ desc = "error"
+ else:
+ desc = "from this context"
+ first = False
+ sys.stderr.write('%s: %s\n' % (context, desc))
+
+ def installProxy(self):
+ """Install a proxy if necessary."""
+ # Unfortunately, there's no surefire way to make sure that installing
+ # a sys.stdout proxy is idempotent, what with different interpreters
+ # running from different modules. The best we can do here is to try
+ # manipulating the proxy's test function ...
+ try:
+ sys.stdout._testProxy()
+ except AttributeError:
+ # ... if the current stdout object doesn't have one, then check
+ # to see if we think _this_ particularly Interpreter class has
+ # installed it before ...
+ if Interpreter._wasProxyInstalled:
+ # ... and if so, we have a proxy problem.
+ raise Error, "interpreter stdout proxy lost"
+ else:
+ # Otherwise, install the proxy and set the flag.
+ sys.stdout = ProxyFile(sys.stdout)
+ Interpreter._wasProxyInstalled = True
+
+ #
+ # Pseudomodule routines.
+ #
+
+ # Identification.
+
+ def identify(self):
+ """Identify the topmost context with a 2-tuple of the name and
+ line number."""
+ return self.context().identify()
+
+ def atExit(self, callable):
+ """Register a function to be called at exit."""
+ self.finals.append(callable)
+
+ # Context manipulation.
+
+ def pushContext(self, name='<unnamed>', line=0):
+ """Create a new context and push it."""
+ self.contexts.push(Context(name, line))
+
+ def popContext(self):
+ """Pop the top context."""
+ self.contexts.pop()
+
+ def setContextName(self, name):
+ """Set the name of the topmost context."""
+ context = self.context()
+ context.name = name
+
+ def setContextLine(self, line):
+ """Set the name of the topmost context."""
+ context = self.context()
+ context.line = line
+
+ setName = setContextName # DEPRECATED
+ setLine = setContextLine # DEPRECATED
+
+ # Globals manipulation.
+
+ def getGlobals(self):
+ """Retrieve the globals."""
+ return self.globals
+
+ def setGlobals(self, globals):
+ """Set the globals to the specified dictionary."""
+ self.globals = globals
+ self.fix()
+
+ def updateGlobals(self, otherGlobals):
+ """Merge another mapping object into this interpreter's globals."""
+ self.update(otherGlobals)
+
+ def clearGlobals(self):
+ """Clear out the globals with a brand new dictionary."""
+ self.clear()
+
+ def saveGlobals(self, deep=True):
+ """Save a copy of the globals off onto the history stack."""
+ self.save(deep)
+
+ def restoreGlobals(self, destructive=True):
+ """Restore the most recently saved copy of the globals."""
+ self.restore(destructive)
+
+ # Hook support.
+
+ def areHooksEnabled(self):
+ """Return whether or not hooks are presently enabled."""
+ if self.hooksEnabled is None:
+ return True
+ else:
+ return self.hooksEnabled
+
+ def enableHooks(self):
+ """Enable hooks."""
+ self.hooksEnabled = True
+
+ def disableHooks(self):
+ """Disable hooks."""
+ self.hooksEnabled = False
+
+ def getHooks(self):
+ """Get the current hooks."""
+ return self.hooks[:]
+
+ def clearHooks(self):
+ """Clear all hooks."""
+ self.hooks = []
+
+ def addHook(self, hook, prepend=False):
+ """Add a new hook; optionally insert it rather than appending it."""
+ self.register(hook, prepend)
+
+ def removeHook(self, hook):
+ """Remove a preexisting hook."""
+ self.deregister(hook)
+
+ def invokeHook(self, _name, **keywords):
+ """Manually invoke a hook."""
+ apply(self.invoke, (_name,), keywords)
+
+ # Callbacks.
+
+ def getCallback(self):
+ """Get the callback registered with this interpreter, or None."""
+ return self.callback
+
+ def registerCallback(self, callback):
+ """Register a custom markup callback with this interpreter."""
+ self.callback = callback
+
+ def deregisterCallback(self):
+ """Remove any previously registered callback with this interpreter."""
+ self.callback = None
+
+ def invokeCallback(self, contents):
+ """Invoke the callback."""
+ if self.callback is None:
+ if self.options.get(CALLBACK_OPT, False):
+ raise Error, "custom markup invoked with no defined callback"
+ else:
+ self.callback(contents)
+
+ # Pseudomodule manipulation.
+
+ def flatten(self, keys=None):
+ """Flatten the contents of the pseudo-module into the globals
+ namespace."""
+ if keys is None:
+ keys = self.__dict__.keys() + self.__class__.__dict__.keys()
+ dict = {}
+ for key in keys:
+ # The pseudomodule is really a class instance, so we need to
+ # fumble use getattr instead of simply fumbling through the
+ # instance's __dict__.
+ dict[key] = getattr(self, key)
+ # Stomp everything into the globals namespace.
+ self.globals.update(dict)
+
+ # Prefix.
+
+ def getPrefix(self):
+ """Get the current prefix."""
+ return self.prefix
+
+ def setPrefix(self, prefix):
+ """Set the prefix."""
+ self.prefix = prefix
+
+ # Diversions.
+
+ def stopDiverting(self):
+ """Stop any diverting."""
+ self.stream().revert()
+
+ def createDiversion(self, name):
+ """Create a diversion (but do not divert to it) if it does not
+ already exist."""
+ self.stream().create(name)
+
+ def retrieveDiversion(self, name):
+ """Retrieve the diversion object associated with the name."""
+ return self.stream().retrieve(name)
+
+ def startDiversion(self, name):
+ """Start diverting to the given diversion name."""
+ self.stream().divert(name)
+
+ def playDiversion(self, name):
+ """Play the given diversion and then purge it."""
+ self.stream().undivert(name, True)
+
+ def replayDiversion(self, name):
+ """Replay the diversion without purging it."""
+ self.stream().undivert(name, False)
+
+ def purgeDiversion(self, name):
+ """Eliminate the given diversion."""
+ self.stream().purge(name)
+
+ def playAllDiversions(self):
+ """Play all existing diversions and then purge them."""
+ self.stream().undivertAll(True)
+
+ def replayAllDiversions(self):
+ """Replay all existing diversions without purging them."""
+ self.stream().undivertAll(False)
+
+ def purgeAllDiversions(self):
+ """Purge all existing diversions."""
+ self.stream().purgeAll()
+
+ def getCurrentDiversion(self):
+ """Get the name of the current diversion."""
+ return self.stream().currentDiversion
+
+ def getAllDiversions(self):
+ """Get the names of all existing diversions."""
+ names = self.stream().diversions.keys()
+ names.sort()
+ return names
+
+ # Filter.
+
+ def resetFilter(self):
+ """Reset the filter so that it does no filtering."""
+ self.stream().install(None)
+
+ def nullFilter(self):
+ """Install a filter that will consume all text."""
+ self.stream().install(0)
+
+ def getFilter(self):
+ """Get the current filter."""
+ filter = self.stream().filter
+ if filter is self.stream().file:
+ return None
+ else:
+ return filter
+
+ def setFilter(self, shortcut):
+ """Set the filter."""
+ self.stream().install(shortcut)
+
+ def attachFilter(self, shortcut):
+ """Attach a single filter to the end of the current filter chain."""
+ self.stream().attach(shortcut)
+
+
+class Document:
+
+ """A representation of an individual EmPy document, as used by a
+ processor."""
+
+ def __init__(self, ID, filename):
+ self.ID = ID
+ self.filename = filename
+ self.significators = {}
+
+
+class Processor:
+
+ """An entity which is capable of processing a hierarchy of EmPy
+ files and building a dictionary of document objects associated
+ with them describing their significator contents."""
+
+ DEFAULT_EMPY_EXTENSIONS = ('.em',)
+ SIGNIFICATOR_RE = re.compile(SIGNIFICATOR_RE_STRING)
+
+ def __init__(self, factory=Document):
+ self.factory = factory
+ self.documents = {}
+
+ def identifier(self, pathname, filename): return filename
+
+ def clear(self):
+ self.documents = {}
+
+ def scan(self, basename, extensions=DEFAULT_EMPY_EXTENSIONS):
+ if type(extensions) is types.StringType:
+ extensions = (extensions,)
+ def _noCriteria(x):
+ return True
+ def _extensionsCriteria(pathname, extensions=extensions):
+ if extensions:
+ for extension in extensions:
+ if pathname[-len(extension):] == extension:
+ return True
+ return False
+ else:
+ return True
+ self.directory(basename, _noCriteria, _extensionsCriteria, None)
+ self.postprocess()
+
+ def postprocess(self):
+ pass
+
+ def directory(self, basename, dirCriteria, fileCriteria, depth=None):
+ if depth is not None:
+ if depth <= 0:
+ return
+ else:
+ depth = depth - 1
+ filenames = os.listdir(basename)
+ for filename in filenames:
+ pathname = os.path.join(basename, filename)
+ if os.path.isdir(pathname):
+ if dirCriteria(pathname):
+ self.directory(pathname, dirCriteria, fileCriteria, depth)
+ elif os.path.isfile(pathname):
+ if fileCriteria(pathname):
+ documentID = self.identifier(pathname, filename)
+ document = self.factory(documentID, pathname)
+ self.file(document, open(pathname))
+ self.documents[documentID] = document
+
+ def file(self, document, file):
+ while True:
+ line = file.readline()
+ if not line:
+ break
+ self.line(document, line)
+
+ def line(self, document, line):
+ match = self.SIGNIFICATOR_RE.search(line)
+ if match:
+ key, valueS = match.groups()
+ valueS = string.strip(valueS)
+ if valueS:
+ value = eval(valueS)
+ else:
+ value = None
+ document.significators[key] = value
+
+
+def expand(_data, _globals=None, \
+ _argv=None, _prefix=DEFAULT_PREFIX, _pseudo=None, _options=None, \
+ **_locals):
+ """Do an atomic expansion of the given source data, creating and
+ shutting down an interpreter dedicated to the task. The sys.stdout
+ object is saved off and then replaced before this function
+ returns."""
+ if len(_locals) == 0:
+ # If there were no keyword arguments specified, don't use a locals
+ # dictionary at all.
+ _locals = None
+ output = NullFile()
+ interpreter = Interpreter(output, argv=_argv, prefix=_prefix, \
+ pseudo=_pseudo, options=_options, \
+ globals=_globals)
+ if interpreter.options.get(OVERRIDE_OPT, True):
+ oldStdout = sys.stdout
+ try:
+ result = interpreter.expand(_data, _locals)
+ finally:
+ interpreter.shutdown()
+ if _globals is not None:
+ interpreter.unfix() # remove pseudomodule to prevent clashes
+ if interpreter.options.get(OVERRIDE_OPT, True):
+ sys.stdout = oldStdout
+ return result
+
+def environment(name, default=None):
+ """Get data from the current environment. If the default is True
+ or False, then presume that we're only interested in the existence
+ or non-existence of the environment variable."""
+ if os.environ.has_key(name):
+ # Do the True/False test by value for future compatibility.
+ if default == False or default == True:
+ return True
+ else:
+ return os.environ[name]
+ else:
+ return default
+
+def info(table):
+ DEFAULT_LEFT = 28
+ maxLeft = 0
+ maxRight = 0
+ for left, right in table:
+ if len(left) > maxLeft:
+ maxLeft = len(left)
+ if len(right) > maxRight:
+ maxRight = len(right)
+ FORMAT = ' %%-%ds %%s\n' % max(maxLeft, DEFAULT_LEFT)
+ for left, right in table:
+ if right.find('\n') >= 0:
+ for right in right.split('\n'):
+ sys.stderr.write(FORMAT % (left, right))
+ left = ''
+ else:
+ sys.stderr.write(FORMAT % (left, right))
+
+def usage(verbose=True):
+ """Print usage information."""
+ programName = sys.argv[0]
+ def warn(line=''):
+ sys.stderr.write("%s\n" % line)
+ warn("""\
+Usage: %s [options] [<filename, or '-' for stdin> [<argument>...]]
+Welcome to EmPy version %s.""" % (programName, __version__))
+ warn()
+ warn("Valid options:")
+ info(OPTION_INFO)
+ if verbose:
+ warn()
+ warn("The following markups are supported:")
+ info(MARKUP_INFO)
+ warn()
+ warn("Valid escape sequences are:")
+ info(ESCAPE_INFO)
+ warn()
+ warn("The %s pseudomodule contains the following attributes:" % \
+ DEFAULT_PSEUDOMODULE_NAME)
+ info(PSEUDOMODULE_INFO)
+ warn()
+ warn("The following environment variables are recognized:")
+ info(ENVIRONMENT_INFO)
+ warn()
+ warn(USAGE_NOTES)
+ else:
+ warn()
+ warn("Type %s -H for more extensive help." % programName)
+
+def invoke(args):
+ """Run a standalone instance of an EmPy interpeter."""
+ # Initialize the options.
+ _output = None
+ _options = {BUFFERED_OPT: environment(BUFFERED_ENV, False),
+ RAW_OPT: environment(RAW_ENV, False),
+ EXIT_OPT: True,
+ FLATTEN_OPT: environment(FLATTEN_ENV, False),
+ OVERRIDE_OPT: not environment(NO_OVERRIDE_ENV, False),
+ CALLBACK_OPT: False}
+ _preprocessing = []
+ _prefix = environment(PREFIX_ENV, DEFAULT_PREFIX)
+ _pseudo = environment(PSEUDO_ENV, None)
+ _interactive = environment(INTERACTIVE_ENV, False)
+ _extraArguments = environment(OPTIONS_ENV)
+ _binary = -1 # negative for not, 0 for default size, positive for size
+ _unicode = environment(UNICODE_ENV, False)
+ _unicodeInputEncoding = environment(INPUT_ENCODING_ENV, None)
+ _unicodeOutputEncoding = environment(OUTPUT_ENCODING_ENV, None)
+ _unicodeInputErrors = environment(INPUT_ERRORS_ENV, None)
+ _unicodeOutputErrors = environment(OUTPUT_ERRORS_ENV, None)
+ _hooks = []
+ _pauseAtEnd = False
+ _relativePath = False
+ if _extraArguments is not None:
+ _extraArguments = string.split(_extraArguments)
+ args = _extraArguments + args
+ # Parse the arguments.
+ pairs, remainder = getopt.getopt(args, 'VhHvkp:m:frino:a:buBP:I:D:E:F:', ['version', 'help', 'extended-help', 'verbose', 'null-hook', 'suppress-errors', 'prefix=', 'no-prefix', 'module=', 'flatten', 'raw-errors', 'interactive', 'no-override-stdout', 'binary', 'chunk-size=', 'output=' 'append=', 'preprocess=', 'import=', 'define=', 'execute=', 'execute-file=', 'buffered-output', 'pause-at-end', 'relative-path', 'no-callback-error', 'no-bangpath-processing', 'unicode', 'unicode-encoding=', 'unicode-input-encoding=', 'unicode-output-encoding=', 'unicode-errors=', 'unicode-input-errors=', 'unicode-output-errors='])
+ for option, argument in pairs:
+ if option in ('-V', '--version'):
+ sys.stderr.write("%s version %s\n" % (__program__, __version__))
+ return
+ elif option in ('-h', '--help'):
+ usage(False)
+ return
+ elif option in ('-H', '--extended-help'):
+ usage(True)
+ return
+ elif option in ('-v', '--verbose'):
+ _hooks.append(VerboseHook())
+ elif option in ('--null-hook',):
+ _hooks.append(Hook())
+ elif option in ('-k', '--suppress-errors'):
+ _options[EXIT_OPT] = False
+ _interactive = True # suppress errors implies interactive mode
+ elif option in ('-m', '--module'):
+ _pseudo = argument
+ elif option in ('-f', '--flatten'):
+ _options[FLATTEN_OPT] = True
+ elif option in ('-p', '--prefix'):
+ _prefix = argument
+ elif option in ('--no-prefix',):
+ _prefix = None
+ elif option in ('-r', '--raw-errors'):
+ _options[RAW_OPT] = True
+ elif option in ('-i', '--interactive'):
+ _interactive = True
+ elif option in ('-n', '--no-override-stdout'):
+ _options[OVERRIDE_OPT] = False
+ elif option in ('-o', '--output'):
+ _output = argument, 'w', _options[BUFFERED_OPT]
+ elif option in ('-a', '--append'):
+ _output = argument, 'a', _options[BUFFERED_OPT]
+ elif option in ('-b', '--buffered-output'):
+ _options[BUFFERED_OPT] = True
+ elif option in ('-B',): # DEPRECATED
+ _options[BUFFERED_OPT] = True
+ elif option in ('--binary',):
+ _binary = 0
+ elif option in ('--chunk-size',):
+ _binary = int(argument)
+ elif option in ('-P', '--preprocess'):
+ _preprocessing.append(('pre', argument))
+ elif option in ('-I', '--import'):
+ for module in string.split(argument, ','):
+ module = string.strip(module)
+ _preprocessing.append(('import', module))
+ elif option in ('-D', '--define'):
+ _preprocessing.append(('define', argument))
+ elif option in ('-E', '--execute'):
+ _preprocessing.append(('exec', argument))
+ elif option in ('-F', '--execute-file'):
+ _preprocessing.append(('file', argument))
+ elif option in ('-u', '--unicode'):
+ _unicode = True
+ elif option in ('--pause-at-end',):
+ _pauseAtEnd = True
+ elif option in ('--relative-path',):
+ _relativePath = True
+ elif option in ('--no-callback-error',):
+ _options[CALLBACK_OPT] = True
+ elif option in ('--no-bangpath-processing',):
+ _options[BANGPATH_OPT] = False
+ elif option in ('--unicode-encoding',):
+ _unicodeInputEncoding = _unicodeOutputEncoding = argument
+ elif option in ('--unicode-input-encoding',):
+ _unicodeInputEncoding = argument
+ elif option in ('--unicode-output-encoding',):
+ _unicodeOutputEncoding = argument
+ elif option in ('--unicode-errors',):
+ _unicodeInputErrors = _unicodeOutputErrors = argument
+ elif option in ('--unicode-input-errors',):
+ _unicodeInputErrors = argument
+ elif option in ('--unicode-output-errors',):
+ _unicodeOutputErrors = argument
+ # Set up the Unicode subsystem if required.
+ if _unicode or \
+ _unicodeInputEncoding or _unicodeOutputEncoding or \
+ _unicodeInputErrors or _unicodeOutputErrors:
+ theSubsystem.initialize(_unicodeInputEncoding, \
+ _unicodeOutputEncoding, \
+ _unicodeInputErrors, _unicodeOutputErrors)
+ # Now initialize the output file if something has already been selected.
+ if _output is not None:
+ _output = apply(AbstractFile, _output)
+ # Set up the main filename and the argument.
+ if not remainder:
+ remainder.append('-')
+ filename, arguments = remainder[0], remainder[1:]
+ # Set up the interpreter.
+ if _options[BUFFERED_OPT] and _output is None:
+ raise ValueError, "-b only makes sense with -o or -a arguments"
+ if _prefix == 'None':
+ _prefix = None
+ if _prefix and type(_prefix) is types.StringType and len(_prefix) != 1:
+ raise Error, "prefix must be single-character string"
+ interpreter = Interpreter(output=_output, \
+ argv=remainder, \
+ prefix=_prefix, \
+ pseudo=_pseudo, \
+ options=_options, \
+ hooks=_hooks)
+ try:
+ # Execute command-line statements.
+ i = 0
+ for which, thing in _preprocessing:
+ if which == 'pre':
+ command = interpreter.file
+ target = theSubsystem.open(thing, 'r')
+ name = thing
+ elif which == 'define':
+ command = interpreter.string
+ if string.find(thing, '=') >= 0:
+ target = '%s{%s}' % (_prefix, thing)
+ else:
+ target = '%s{%s = None}' % (_prefix, thing)
+ name = '<define:%d>' % i
+ elif which == 'exec':
+ command = interpreter.string
+ target = '%s{%s}' % (_prefix, thing)
+ name = '<exec:%d>' % i
+ elif which == 'file':
+ command = interpreter.string
+ name = '<file:%d (%s)>' % (i, thing)
+ target = '%s{execfile("""%s""")}' % (_prefix, thing)
+ elif which == 'import':
+ command = interpreter.string
+ name = '<import:%d>' % i
+ target = '%s{import %s}' % (_prefix, thing)
+ else:
+ assert 0
+ interpreter.wrap(command, (target, name))
+ i = i + 1
+ # Now process the primary file.
+ interpreter.ready()
+ if filename == '-':
+ if not _interactive:
+ name = '<stdin>'
+ path = ''
+ file = sys.stdin
+ else:
+ name, file = None, None
+ else:
+ name = filename
+ file = theSubsystem.open(filename, 'r')
+ path = os.path.split(filename)[0]
+ if _relativePath:
+ sys.path.insert(0, path)
+ if file is not None:
+ if _binary < 0:
+ interpreter.wrap(interpreter.file, (file, name))
+ else:
+ chunkSize = _binary
+ interpreter.wrap(interpreter.binary, (file, name, chunkSize))
+ # If we're supposed to go interactive afterwards, do it.
+ if _interactive:
+ interpreter.interact()
+ finally:
+ interpreter.shutdown()
+ # Finally, if we should pause at the end, do it.
+ if _pauseAtEnd:
+ try:
+ raw_input()
+ except EOFError:
+ pass
+
+def main():
+ invoke(sys.argv[1:])
+
+if __name__ == '__main__': main()
diff --git a/gtk3/theme/gtk-dark.css b/gtk3/theme/gtk-dark.css
index afe7131..1d2b796 100644
--- a/gtk3/theme/gtk-dark.css
+++ b/gtk3/theme/gtk-dark.css
@@ -1,107 +1,3 @@
-/* dark colormap */
-@define-color theme_base_color #333333;
-@define-color theme_text_color #ddddde;
-@define-color theme_bg_color #222222;
-@define-color theme_fg_color @theme_text_color;
-@define-color theme_selected_bg_color #f57900;
-@define-color theme_selected_fg_color #ffffff;
+@import url("gtk.css");
-@define-color menu_bg_color shade (@theme_bg_color, 0.4);
-@define-color menu_fg_color #ffffff;
-
-@define-color theme_tooltip_bg_color #000000;
-@define-color theme_tooltip_fg_color #eeeeee;
-
-@define-color button_gradient_color_a #363636;
-@define-color button_gradient_color_b #222222;
-@define-color button_border #111111;
-
-@define-color button_active_gradient_color_a #000000;
-@define-color button_active_gradient_color_b shade (@button_active_gradient_color_a, 0.93);
-
-@define-color button_hover_gradient_color_a shade (@button_gradient_color_a, 1.07);
-@define-color button_hover_gradient_color_b @theme_base_color;
-
-@define-color insensitive_bg_color #0b0b0d;
-@define-color insensitive_fg_color #585458;
-@define-color insensitive_border_color shade (@internal_element_color, 0.70);
-
-@define-color inactive_frame_color shade (@theme_bg_color, 1.19);
-
-@define-color notebook_border #111111;
-@define-color notebook_active_tab_border alpha (@theme_selected_bg_color, 1.0);
-@define-color notebook_selected_tab_color alpha (@theme_selected_bg_color, 0.75);
-
-@define-color notebook_tab_gradient_a shade (@button_gradient_color_a, 0.8);
-@define-color notebook_tab_gradient_b shade (@button_gradient_color_b, 0.8);
-
-@define-color switch_slider_color #111113;
-@define-color switch_slider_border #a5b8cc;
-
-@define-color highlighted_border @button_border;
-@define-color internal_element_color #77757a;
-
-@define-color progressbar_background_a alpha (@theme_fg_color, 0.70);
-@define-color progressbar_background_b alpha (@theme_fg_color, 0.45);
-@define-color progressbar_border alpha (@theme_fg_color, 0.60);
-@define-color progressbar_pattern #000000;
-
-@define-color focused_entry_border @theme_selected_bg_color;
-@define-color focused_entry_inset alpha (@theme_selected_bg_color, 0.50);
-
-@define-color toolbar_gradient_base #080808;
-@define-color toolbar_gradient_step1 #0a0a0a;
-@define-color toolbar_gradient_step2 #111111;
-@define-color toolbar_gradient_final #151515;
-
-@define-color toolbar_active_button_color #222222;
-
-@define-color expander_row_selected_color alpha (@theme_base_color, 0.60);
-
-@define-color menu_controls_color #aaa8ac;
-
-@define-color keyboard_focus_border_a alpha (@theme_fg_color, 0.30);
-@define-color keyboard_focus_border_b alpha (@theme_fg_color, 0.10);
-
-@define-color trough_bg_color_a #000000;
-@define-color trough_bg_color_b #111111;
-
-@define-color frame_color #756a7f;
-
-@define-color active_switch_bg_color_a shade (@theme_selected_bg_color, 0.85);
-@define-color active_switch_bg_color_b @theme_selected_bg_color;
-
-@define-color scale_fill shade (@insensitive_border_color, 0.90);
-@define-color scale_border_a shade (@internal_element_color, 0.90);
-@define-color scale_border_b shade (@internal_element_color, 0.65);
-
-/* FIXME: needs dark colors from here */
-@define-color link_color #4a90d9;
-@define-color warning_color #f57900;
-@define-color error_color #cc0000;
-@define-color success_color #4e9a06;
-
-@define-color info_fg_color rgb (181, 171, 156);
-@define-color info_bg_color rgb (252, 252, 189);
-@define-color warning_fg_color rgb (173, 120, 41);
-@define-color warning_bg_color rgb (250, 173, 61);
-@define-color question_fg_color rgb (97, 122, 214);
-@define-color question_bg_color rgb (138, 173, 212);
-@define-color error_fg_color rgb (166, 38, 38);
-@define-color error_bg_color rgb (237, 54, 54);
-
-@define-color os_chrome_bg_color black;
-@define-color os_chrome_fg_color #ccc;
-@define-color os_chrome_selected_bg_color #333;
-@define-color os_chrome_selected_fg_color white;
-
-@define-color chrome_bg_color #1e1a17;
-@define-color chrome_fg_color #fff;
-
-@define-color scale_progress_fill #2c85e2;
-@define-color scale_progress_border #1864b2;
-@define-color scale_progress_border_b #3e90e5;
-
-@import url("gtk-widgets-assets-dark.css");
-@import url("gtk-widgets.css");
diff --git a/gtk3/theme/gtk-widgets-assets-dark.css b/gtk3/theme/gtk-widgets-assets-dark.css
deleted file mode 100644
index 9a5ddee..0000000
--- a/gtk3/theme/gtk-widgets-assets-dark.css
+++ /dev/null
@@ -1,66 +0,0 @@
-/*************************
- * Check and Radio items *
- *************************/
-
-/* draw regular check and radio items using our SVG assets */
-.check,
-.check row:selected,
-.check row:selected:focused {
- background-image: url ("assets/checkbox-unchecked-dark.svg");
-}
-
-.check:insensitive,
-.check row:selected:insensitive,
-.check row:selected:focused:insensitive {
- background-image: url ("assets/checkbox-unchecked-insensitive-dark.svg");
-}
-
-.check:active,
-.check row:selected:active,
-.check row:selected:focused:active {
- background-image: url ("assets/checkbox-checked-dark.svg");
-}
-
-.check:active:insensitive,
-.check row:selected:active:insensitive,
-.check row:selected:focused:active:insensitive
-{
- background-image: url ("assets/checkbox-checked-insensitive-dark.svg");
-}
-
-.check:inconsistent,
-.check row:selected:inconsistent,
-.check row:selected:focused:inconsistent {
- background-image: url ("assets/checkbox-mixed-dark.svg");
-}
-
-.radio,
-.radio row:selected,
-.radio row:selected:focused {
- background-image: url ("assets/radio-unselected-dark.svg");
-}
-
-.radio:insensitive,
-.radio row:selected:insensitive,
-.radio row:selected:focused:insensitive {
- background-image: url ("assets/radio-unselected-insensitive-dark.svg");
-}
-
-.radio:active,
-.radio row:selected:active,
-.radio row:selected:focused:active {
- background-image: url ("assets/radio-selected-dark.svg");
-}
-
-.radio:active:insensitive,
-.radio row:selected:active:insensitive,
-.radio row:selected:focused:active:insensitive {
- background-image: url ("assets/radio-selected-insensitive-dark.svg");
-}
-
-.radio:inconsistent,
-.radio row:selected:inconsistent,
-.radio row:selected:focused:inconsistent {
- background-image: url ("assets/radio-mixed-dark.svg");
-}
-
diff --git a/gtk3/theme/gtk-widgets-assets.css b/gtk3/theme/gtk-widgets-assets.css
deleted file mode 100644
index a1bc8e7..0000000
--- a/gtk3/theme/gtk-widgets-assets.css
+++ /dev/null
@@ -1,65 +0,0 @@
-/*************************
- * Check and Radio items *
- *************************/
-
-/* draw regular check and radio items using our SVG assets */
-.check,
-.check row:selected,
-.check row:selected:focused {
- background-image: url ("assets/checkbox-unchecked.svg");
-}
-
-.check:insensitive,
-.check row:selected:insensitive,
-.check row:selected:focused:insensitive {
- background-image: url ("assets/checkbox-unchecked-insensitive.svg");
-}
-
-.check:active,
-.check row:selected:active,
-.check row:selected:focused:active {
- background-image: url ("assets/checkbox-checked.svg");
-}
-
-.check:active:insensitive,
-.check row:selected:active:insensitive,
-.check row:selected:focused:active:insensitive
-{
- background-image: url ("assets/checkbox-checked-insensitive.svg");
-}
-
-.check:inconsistent,
-.check row:selected:inconsistent,
-.check row:selected:focused:inconsistent {
- background-image: url ("assets/checkbox-mixed.svg");
-}
-
-.radio,
-.radio row:selected,
-.radio row:selected:focused {
- background-image: url ("assets/radio-unselected.svg");
-}
-
-.radio:insensitive,
-.radio row:selected:insensitive,
-.radio row:selected:focused:insensitive {
- background-image: url ("assets/radio-unselected-insensitive.svg");
-}
-
-.radio:active,
-.radio row:selected:active,
-.radio row:selected:focused:active {
- background-image: url ("assets/radio-selected.svg");
-}
-
-.radio:active:insensitive,
-.radio row:selected:active:insensitive,
-.radio row:selected:focused:active:insensitive {
- background-image: url ("assets/radio-selected-insensitive.svg");
-}
-
-.radio:inconsistent,
-.radio row:selected:inconsistent,
-.radio row:selected:focused:inconsistent {
- background-image: url ("assets/radio-mixed.svg");
-}
diff --git a/gtk3/theme/gtk-widgets.css b/gtk3/theme/gtk-widgets.css
deleted file mode 100644
index e93c29f..0000000
--- a/gtk3/theme/gtk-widgets.css
+++ /dev/null
@@ -1,1252 +0,0 @@
-* {
- engine: adwaita;
- padding: 1;
-
- /* Style properties */
- -GtkToolButton-icon-spacing: 4;
-
- -GtkTextView-error-underline-color: @error_color;
-
- -GtkPaned-handle-size: 5;
-
- -GtkCheckButton-indicator-size: 16;
- -GtkCheckMenuItem-indicator-size: 12;
-
- /* The size for scrollbars. The slider is 2px smaller, but we keep it
- * up so that the whole area is sensitive to button presses for the
- * slider. The stepper button is larger in both directions, the slider
- * only in the width
- */
-
- -GtkScrolledWindow-scrollbar-spacing: 0;
- -GtkScrolledWindow-scrollbars-within-bevel: 1;
-
- -GtkToolItemGroup-expander-size: 12;
- -GtkExpander-expander-size: 12;
- -GtkToolbar-internal-padding: 4; /* ??? */
-
- -GtkMenu-horizontal-padding: 0;
- -GtkMenu-vertical-padding: 0;
-
- -GtkWidget-link-color: @link_color;
- -GtkWidget-visited-link-color: @link_color;
- -GtkIMHtml-hyperlink-color: @link_color;
- -GtkHTML-link-color: @link_color;
-
- -GtkWidget-wide-separators: 1;
-
- -WnckTasklist-fade-overlay-rect: 0;
-
- -GtkEntry-inner-border: 2;
- -GtkEntry-progress-border: 0;
-
- /* Style */
- background-color: @theme_bg_color;
- color: @theme_fg_color;
-
- -GtkWidget-focus-padding: 2;
- -GtkWidget-focus-line-width: 1;
- -adwaita-focus-border-color: alpha (@theme_text_color, 0.4);
- -adwaita-focus-border-radius: 2;
- -adwaita-focus-fill-color: none;
- -adwaita-focus-border-gradient: none;
- -adwaita-focus-border-dashes: 1;
-
- -adwaita-inset-left: none;
- -adwaita-inset-right: none;
- -adwaita-inset-top: none;
- -adwaita-inset-bottom: none;
-}
-
-/***************
- * Base States *
- ***************/
-*:hover {
- background-color: shade (@theme_bg_color, 1.02);
- color: @theme_fg_color;
-}
-
-*:selected {
- background-color: @theme_selected_bg_color;
- color: @theme_selected_fg_color;
-}
-
-*:selected:focused {
- background-color: @theme_selected_bg_color;
- color: @theme_selected_fg_color;
-}
-
-*:insensitive {
- background-color: @insensitive_bg_color;
- color: @insensitive_fg_color;
- border-color: @insensitive_border_color;
-}
-
-*:active {
- background-color: shade (@theme_bg_color, 0.915);
-}
-
-.background {
- border-style: none;
- border-width: 0;
- border-radius: 0;
-}
-
-.tooltip {
- padding: 4 4;
- border-style: none;
- background-color: @theme_tooltip_bg_color;
- color: @theme_tooltip_fg_color;
-}
-
-.grip {
- background-color: shade (@inactive_frame_color, 0.93);
-}
-
-.rubberband {
- background-color: alpha (@theme_selected_bg_color, 0.35);
- border-color: @theme_selected_bg_color;
- border-style: solid;
- border-width: 1;
- border-radius: 2;
-}
-
-.pane-separator {
- border-style: none;
- border-width: 0;
- color: shade (@inactive_frame_color, 0.80);
-}
-
-.pane-separator:prelight,
-.pane-separator:selected {
- color: @theme_text_color;
-}
-
-/****************
- * Text Entries *
- ****************/
-.entry,
-.toolbar.entry {
- background-color: @theme_base_color;
- background-image: none;
-
- border-radius: 2;
- border-width: 1;
- border-style: solid;
- -adwaita-border-gradient: -gtk-gradient (linear,
- left top, left bottom,
- from (shade (@internal_element_color, 1.14)),
- to (shade (@internal_element_color, 1.37)));
-
- padding: 3;
-
- -adwaita-inset-top: alpha (@switch_slider_color, 0.50);
-}
-
-.entry:focused {
- border-color: @focused_entry_border;
- -adwaita-border-gradient: none;
-
- -adwaita-inset-top: @focused_entry_inset;
-}
-
-.entry:insensitive {
- background-color: @insensitive_bg_color;
- -adwaita-border-gradient: none;
-
- -adwaita-inset-top: none;
-}
-
-.entry.progressbar {
- /* FIXME: need correct colors/gradient */
- background-color: @theme_selected_bg_color;
- color: @theme_selected_fg_color;
-
- border-width: 1;
- border-radius: 1;
- border-color: @progressbar_border;
-
- -adwaita-progressbar-pattern: none;
-}
-
-/*****************
- * GtkSpinButton *
- *****************/
-.spinbutton,
-.spinbutton:focused {
- padding: 3 2;
-
- -adwaita-inset-top: none;
-}
-
-.spinbutton.button,
-.spinbutton.button:prelight,
-.spinbutton.button:active {
- color: @internal_element_color;
- background-image: none;
- background-color: @theme_base_color;
- border-width: 1;
- border-style: none;
-}
-
-/****************
- * Progress bar *
- ****************/
-.progressbar,
-.progressbar row,
-.progressbar row:hover,
-.progressbar row:selected,
-.progressbar row:selected:focused {
- background-image: -gtk-gradient (linear,
- left top, left bottom,
- from (@progressbar_background_a),
- to (@progressbar_background_b));
-
- border-radius: 3;
- border-style: solid;
- border-width: 1;
- border-color: @progressbar_border;
-
- -adwaita-inset-top: alpha (@theme_base_color, 0.20);
- -adwaita-progressbar-pattern: -gtk-gradient (linear,
- left top, right bottom,
- from (alpha (@progressbar_pattern, 0.00)),
- color-stop (0.49, alpha (@progressbar_pattern, 0.00)),
- color-stop (0.50, alpha (@progressbar_pattern, 0.10)),
- to (alpha (@progressbar_pattern, 0.10)));
-}
-
-GtkProgressBar.trough,
-.trough row,
-.trough row:hover {
- background-image: -gtk-gradient (linear,
- left top, left bottom,
- from (@trough_bg_color_a),
- to (@trough_bg_color_b));
-
- border-width: 1;
- border-style: solid;
- border-radius: 3;
- border-color: shade (@inactive_frame_color, 0.925);
-}
-
-.trough row:selected,
-.trough row:selected:focused {
- background-image: -gtk-gradient (linear,
- left top, left bottom,
- from (mix (@trough_bg_color_a, @theme_selected_bg_color, 0.25)),
- to (mix (@trough_bg_color_b, @theme_selected_bg_color, 0.25)));
-}
-
-GtkProgressBar,
-.trough row {
- padding: 0;
-}
-
-/************
- * GtkScale *
- ************/
-GtkScale {
- -GtkScale-slider-length: 16;
- -GtkRange-slider-width: 22;
- -GtkRange-trough-border: 0;
-}
-
-GtkScale.slider {
- border-width: 1;
- border-radius: 3;
-
- background-image: -gtk-gradient (linear,
- left top, left bottom,
- from (@theme_base_color),
- to (@switch_slider_color));
-
- -adwaita-border-gradient: -gtk-gradient (linear,
- left top, left bottom,
- from (shade (@internal_element_color, 0.90)),
- to (shade (@internal_element_color, 1.35)));
-}
-
-GtkScale.slider:insensitive {
- background-image: none;
- -adwaita-border-gradient: none;
-}
-
-GtkScale.scale-has-marks-below.slider.horizontal {
- -adwaita-border-gradient: -gtk-gradient (linear,
- left top, left bottom,
- from (shade (@internal_element_color, 0.90)),
- to (shade (@internal_element_color, 1.35)));
-}
-
-GtkScale.scale-has-marks-below.slider.vertical {
- -adwaita-border-gradient: -gtk-gradient (linear,
- left top, right top,
- from (shade (@internal_element_color, 0.90)),
- to (shade (@internal_element_color, 1.35)));
-}
-
-GtkScale.scale-has-marks-above.slider.horizontal {
- -adwaita-border-gradient: -gtk-gradient (linear,
- left bottom, left top,
- from (shade (@internal_element_color, 0.90)),
- to (shade (@internal_element_color, 1.35)));
-}
-
-GtkScale.scale-has-marks-above.slider.vertical {
- -adwaita-border-gradient: -gtk-gradient (linear,
- right top, left top,
- from (shade (@internal_element_color, 0.90)),
- to (shade (@internal_element_color, 1.35)));
-}
-
-GtkScale.trough {
- border-width: 1;
- border-radius: 2;
- border-style: solid;
-
- -adwaita-border-gradient: -gtk-gradient (linear,
- left top, left bottom,
- from (@scale_border_a),
- to (@scale_border_b));
- background-color: @scale_fill;
-}
-
-GtkScale.trough.horizontal {
- -adwaita-inset-bottom: alpha (@theme_base_color, 0.50);
-}
-
-GtkScale.trough.vertical {
- -adwaita-inset-right: alpha (@theme_base_color, 0.50);
-}
-
-GtkScale.trough:insensitive {
- background-color: @insensitive_bg_color;
- background-image: none;
-
- -adwaita-border-gradient: none;
- -adwaita-inset-bottom: none;
-}
-
-GtkScale.progressbar {
- background-color: @scale_progress_fill;
-
- border-width: 1;
- border-radius: 3;
- border-style: solid;
-
- -adwaita-border-gradient: -gtk-gradient (linear,
- left top, left bottom,
- from (@scale_progress_border_a),
- to (@scale_progress_border_b));
- -adwaita-progressbar-pattern: none;
-}
-
-GtkScale.mark {
- background-color: shade (@theme_bg_color, 0.56);
-}
-
-GtkFrame,
-GtkCalendar {
- padding: 2;
-}
-
-.frame {
- color: lighter (@theme_fg_color);
- border-style: none;
- border-width: 0;
-}
-
-/*****************
- * Notebooks and *
- * tabs *
- *****************/
-.notebook {
- padding: 2;
-
- border-color: @notebook_border;
- border-style: solid;
- border-width: 1;
- border-radius: 0;
-
- background-color: @theme_base_color;
-
- -GtkNotebook-tab-overlap: 8;
- -GtkNotebook-tab-curvature: 6;
-}
-
-.notebook tab {
- padding: 3 8 0;
- background-image: -gtk-gradient (linear,
- left top, left bottom,
- from (@notebook_tab_gradient_a),
- to (@notebook_tab_gradient_b));
-
- -adwaita-focus-border-radius: 2;
-}
-
-.notebook tab:active {
- border-width: 1;
-
- -adwaita-border-gradient: -gtk-gradient (linear,
- left top, left bottom,
- from (@notebook_active_tab_border),
- to (@notebook_border));
-
- -adwaita-selected-tab-color: @notebook_selected_tab_color;
- background-color: @theme_base_color;
- background-image: none;
-}
-
-.notebook tab .button,
-.notebook tab .button:hover,
-.notebook tab .button:hover:active {
- border-style: none;
- background-color: alpha (@theme_bg_color, 0.0);
- background-image: none;
-}
-
-/**************
- * ComboBoxes *
- **************/
-
-GtkComboBox {
- padding: 1 2;
-
- -GtkWidget-focus-padding: 0;
- -GtkWidget-focus-line-width: 0;
-
- -GtkComboBox-arrow-scaling: 0.5;
- -GtkComboBox-shadow-type: 2;
-}
-
-GtkComboBox .button {
- color: @internal_element_color;
- padding: 1;
-}
-
-GtkComboBox .button:prelight {
- color: shade (@internal_element_color, 0.66);
-}
-
-/**************
- * Scrollbars *
- **************/
-
-.scrollbar {
- background-image: none;
- border-style: solid;
- -GtkRange-trough-border: 2;
- -GtkRange-arrow-scaling: 0.444;
- -GtkRange-slider-width: 18;
- -GtkRange-stepper-size: 18;
- -GtkScrollbar-min-slider-length: 30; /* minimum size for the slider. sadly can't be in '.slider' where it belongs */
-
- -GtkRange-stepper-spacing: 1;
- -GtkRange-trough-under-steppers: 1;
-}
-
-.scrollbar.trough {
- background-image: none;
- background-color: shade (@theme_bg_color, 0.882);
- border-width: 0;
- border-radius: 0;
-}
-
-.scrollbar.slider,
-.scrollbar.button {
- background-image: none;
- background-color: @theme_base_color;
- border-color: @button_border;
- border-radius: 3;
- border-width: 1;
-}
-
-.scrollbar.slider:prelight {
- background-image: none;
- background-color: @theme_base_color;
- border-color: shade (@highlighted_border, 0.964);
-}
-
-.scrollbar.slider:prelight:active {
- background-image: none;
- background-color: @theme_base_color;
- border-color: @theme_selected_bg_color;
-}
-
-.scrollbar.button {
- color: @internal_element_color;
-}
-
-.scrollbar.button:prelight {
- background-image: none;
- background-color: @theme_base_color;
- border-color: shade (@highlighted_border, 0.964)
-}
-
-.scrollbar.button:prelight:active {
- background-image: none;
- background-color: @theme_base_color;
- border-color: shade (@highlighted_border, 0.964)
-}
-
-.scrollbar.button:insensitive {
- color: lighter (@internal_element_color);
- background-color: @theme_base_color;
-}
-
-.scrollbar.slider:insensitive {
- background-color: @theme_base_color;
-}
-
-.scrollbar.trough:insensitive {
- background-color: shade (@theme_bg_color, 0.882);
-}
-
-/***********
- * Buttons *
- ***********/
-.button {
- padding: 1 4;
-
- -adwaita-focus-fill-color: alpha (@theme_base_color, 0.35);
- -adwaita-focus-border-gradient: -gtk-gradient (linear,
- left top, left bottom,
- from (alpha (@keyboard_focus_border_a, 0.62)),
- to (alpha (@keyboard_focus_border_b, 0.62)));
- -adwaita-focus-border-radius: 1;
- -adwaita-focus-border-dashes: 0;
- -GtkWidget-focus-line-width: 2;
-
- -GtkButton-child-displacement-x: 1;
- -GtkButton-child-displacement-y: 1;
- -GtkButton-image-spacing: 4;
- -GtkButton-interior-focus: true;
- -GtkButton-default-border: 0;
- -GtkButton-inner-border: 0;
-
- border-radius: 2;
- border-width: 1;
- border-color: @button_border;
- border-style: solid;
-
- background-image: -gtk-gradient (linear,
- left top, left bottom,
- from (@button_gradient_color_a),
- to (@button_gradient_color_b));
-}
-
-.button:hover,
-.toolbar.button:hover {
- border-color: @button_border;
- background-image: -gtk-gradient (linear,
- left top, left bottom,
- from (@button_hover_gradient_color_a),
- to (@button_hover_gradient_color_b));
-}
-
-.button:active,
-.toolbar .button:active,
-.button:hover:active,
-.toolbar.button:hover:active {
- background-image: -gtk-gradient (linear,
- left top, left bottom,
- from (@button_active_gradient_color_a),
- to (alpha (@button_active_gradient_color_b, 0.13)));
- border-color: @highlighted_border;
-}
-
-.button:insensitive {
- background-image: none;
- background-color: @insensitive_bg_color;
- color: @insensitive_fg_color;
-}
-
-.button.default {
- border-width: 2;
- border-color: shade (@button_border, 1.10);
-}
-
-/*********
- * Menus *
- *********/
-
-* .menu {
- background-color: @menu_bg_color;
- color: @menu_fg_color;
-}
-
-.menu {
- border-style: solid;
- border-width: 0;
- border-radius: 0;
- border-color: @inactive_frame_color;
-
- -GtkMenuItem-arrow-scaling: 0.4;
-}
-
-/* this controls the general appearance of the menubar */
-.menubar {
- background-image: -gtk-gradient (linear,
- left top, left bottom,
- from (@theme_bg_color),
- color-stop (0.45, shade (@theme_bg_color, 0.97)),
- to (shade (@theme_bg_color, 0.99)));
- border-width: 0;
- border-style: none;
- padding: 4;
- color: @theme_text_color;
-
- -GtkWidget-window-dragging: true;
- -GtkMenuBar-internal-padding: 0;
-}
-
-.menubar.menuitem {
- border-width: 0;
- border-style: none;
- padding: 3 5;
-}
-
-/* remove the image from the prelight areas */
-.menubar.menuitem:prelight {
- background-image: none;
- background-color: @menu_bg_color;
- color: @menu_fg_color;
-
- border-style: solid;
- border-radius: 5;
- border-width: 0;
- border-color: @inactive_frame_color;
-}
-
-.menuitem:insensitive {
- /* there is some weird alpha precomposing issues with this - ghosts on dark background */
- color: mix (@menu_fg_color, @menu_bg_color, 0.8);
- background-color: shade (@menu_bg_color, 1.10);
-}
-
-.menuitem {
- -adwaita-menuitem-arrow-color: @menu_controls_color;
- padding: 4;
-}
-
-.menuitem.accelerator {
- color: alpha (@menu_fg_color, 0.4);
-}
-
-.menuitem.accelerator:prelight,
-.menuitem.accelerator:active {
- color: alpha (@menu_fg_color, 0.3);
-}
-
-.menuitem:active,
-.menuitem:prelight {
- background-color: @theme_selected_bg_color;
- color: @theme_selected_fg_color;
- border-style: solid;
- border-width: 0;
- border-radius: 0;
- border-color: darker (@theme_selected_bg_color);
-}
-
-.menu.separator {
- border-color: @inactive_frame_color;
-
- -GtkSeparatorMenuItem-horizontal-padding: 0;
- -GtkWidget-separator-height: 1;
-}
-
-/* menu radio and check items are drawn differently */
-.menu.check:active {
- color: @menu_controls_color;
-}
-
-.menu.radio:active {
- color: @menu_controls_color;
-}
-
-.menu.check:prelight {
- color: @theme_selected_fg_color;
-}
-
-.menu.radio:prelight {
- color: @theme_selected_fg_color;
-}
-
-/************
- * Toolbars *
- ************/
-.toolbar {
- border-style: solid;
- border-color: darker (@theme_bg_color);
- border-width: 1;
- border-radius: 0;
- padding: 1;
-}
-
-.toolbar:insensitive {
- color: alpha (@theme_fg_color, 0.6);
-}
-
-/********************
- * Primary Toolbars *
- ********************/
-
-.primary-toolbar.toolbar {
- background-image: -gtk-gradient (linear,
- left top,
- left bottom,
- from (@toolbar_gradient_base),
- color-stop (0.16, @toolbar_gradient_step1),
- color-stop (0.90, @toolbar_gradient_step2),
- to (@toolbar_gradient_final));
- border-width: 1 0 1 0;
- border-radius: 0;
- border-style: solid;
-
- -adwaita-border-gradient: -gtk-gradient (linear,
- left top, left bottom,
- from (shade (@theme_bg_color, 0.56)),
- to (shade (@theme_bg_color, 0.83)));
-
- padding: 2;
-
- -GtkWidget-window-dragging: true;
- -GtkToolbar-button-relief: 0;
-}
-
-.primary-toolbar.toolbar:insensitive {
- background-image: none;
- background-color: shade (@theme_bg_color, 0.97);
-
- border-style: solid;
- border-width: 1 0 1 0;
- -adwaita-border-gradient: none;
- border-color: shade (@theme_bg_color, 0.91);
-}
-
-/* primary toolbar buttons */
-.primary-toolbar.toolbar.button {
- border-style: none;
- border-width: 1;
- border-radius: 4;
- background-image: none;
- background-color: alpha (@theme_base_color, 0.0);
-
- -adwaita-focus-border-radius: 3;
- -adwaita-focus-fill-color: alpha (@theme_base_color, 0.20);
- -adwaita-focus-border-gradient: -gtk-gradient (linear,
- left top, left bottom,
- from (alpha (shade (@toolbar_active_button_color, 1.25), 0.90)),
- to (alpha (@toolbar_active_button_color, 0.62)));
-}
-
-.primary-toolbar.toolbar.button:insensitive {
- border-style: none;
- border-width: 0;
-
- color: @insensitive_fg_color;
-
- background-image: none;
- background-color: alpha (@theme_base_color, 0.0);
- -GtkWidget-focus-line-width: 0;
-}
-
-.primary-toolbar.toolbar.button:hover {
- border-style: none;
- background-image: -gtk-gradient (linear,
- left top, left bottom,
- from (alpha (@theme_base_color, 0.0)),
- color-stop (0.54, alpha (shade (@theme_base_color, 0.92), 0.49)),
- to (alpha (@theme_base_color, 0.0)));
-}
-
-.primary-toolbar.toolbar.button:active {
- border-style: solid;
- -adwaita-border-gradient: -gtk-gradient (linear,
- left top, left bottom,
- from (shade (@toolbar_active_button_color, 0.8)),
- to (shade (@toolbar_active_button_color, 1.4)));
-
- background-image: -gtk-gradient (linear,
- left top, left bottom,
- from (shade (@toolbar_gradient_base, 0.95)),
- to (alpha (shade (@toolbar_gradient_base, 0.85), 0.0)));
-
- color: @theme_fg_color;
-}
-
-.primary-toolbar.toolbar.button:active:hover {
- border-style: solid;
- background-image: -gtk-gradient (linear,
- left top, left bottom,
- from (alpha (shade (@toolbar_gradient_base, 0.96), 0.7)),
- to (alpha (shade (@toolbar_gradient_base, 1.14), 0.0)));
-
- color: @theme_base_color;
-}
-
-.primary-toolbar.toolbar.button:active:insensitive {
- border-color: @insensitive_border_color;
-
- -adwaita-border-gradient: none;
- background-image: none;
-}
-
-.primary-toolbar.toolbar GtkSeparatorToolItem {
- -GtkWidget-wide-separators: 1;
- -GtkWidget-separator-width: 1;
-
- border-style: solid;
- border-width: 1;
- border-color: shade (@theme_bg_color, 0.56);
- -adwaita-border-gradient: none;
-}
-
-/* primary toolbar raised buttons */
-.primary-toolbar.toolbar.raised.button {
- border-width: 1;
- border-style: solid;
-
- background-image: -gtk-gradient (linear,
- left top, left bottom,
- from (@button_gradient_color_a),
- to (@button_gradient_color_b));
-
- -GtkWidget-focus-line-width: 2;
-}
-
-.primary-toolbar.toolbar.raised.button:insensitive {
- background-image: none;
-}
-
-.primary-toolbar.toolbar.raised.button:hover {
- border-color: @button_border;
- background-image: -gtk-gradient (linear,
- left top, left bottom,
- from (@button_hover_gradient_color_a),
- to (@button_hover_gradient_color_b));
- border-width: 1;
- border-style: solid;
-}
-
-.primary-toolbar.toolbar.raised.button:hover:active,
-.primary-toolbar.toolbar.raised.button:active {
- background-image: -gtk-gradient (linear,
- left top, left bottom,
- from (@button_active_gradient_color_a),
- to (alpha (@button_active_gradient_color_b, 0.13)));
- background-color: @theme_base_color;
-
- border-color: @highlighted_border;
- border-width: 1;
- border-style: solid;
-}
-
-.primary-toolbar.toolbar.raised.button:insensitive:active {
- border-style: solid;
- border-width: 1;
- background-image: none;
-}
-
-/* progressbars on primary toolbar entries are special */
-.primary-toolbar.toolbar.entry.progressbar {
- /* FIXME: need correct colors/gradient */
- background-image: -gtk-gradient (linear,
- left top, left bottom,
- from (@trough_bg_color_a),
- to (@trough_bg_color_b));
-
- border-width: 0;
- border-radius: 2;
- border-color: shade (@inactive_frame_color, 0.925);
-
- color: @theme_text_color;
-
- -adwaita-progressbar-pattern: none;
-}
-
-/*******************
- * Inline toolbars *
- *******************/
-
-.inline-toolbar.toolbar {
- border-width: 1;
- border-radius: 3;
- border-style: solid;
-
- background-image: -gtk-gradient (linear,
- left top,
- left bottom,
- from (@toolbar_gradient_base),
- color-stop (0.16, @toolbar_gradient_step1),
- color-stop (0.90, @toolbar_gradient_step2),
- color-stop (0.98, @toolbar_gradient_final),
- color-stop (0.99, shade (@theme_bg_color, 0.83)),
- to (shade (@theme_bg_color, 0.83)));
-}
-
-/*************
- * GtkSwitch *
- *************/
-
-GtkSwitch {
- font: bold condensed 10;
-}
-
-GtkSwitch.trough {
- color: shade (@internal_element_color, 0.60);
- border-radius: 1;
- border-width: 1;
- border-style: solid;
- border-color: shade (@frame_color, 1.22);
- background-image: -gtk-gradient (linear,
- left top, left bottom,
- from (@trough_bg_color_a),
- to (@trough_bg_color_b));
-
- -adwaita-inset-bottom: alpha (@theme_base_color, 0.24);
-}
-
-GtkSwitch.trough:active {
- color: @theme_base_color;
- background-image: -gtk-gradient (linear,
- left top, left bottom,
- from (@active_switch_bg_color_a),
- to (@active_switch_bg_color_b));
-
- -adwaita-border-gradient: -gtk-gradient (linear,
- left top, left bottom,
- from (shade (@theme_selected_bg_color, 0.70)),
- to (shade (@theme_selected_bg_color, 0.94)));
-}
-
-GtkSwitch.trough:insensitive {
- background-image: none;
- background-color: shade (@theme_bg_color, 0.9);
- -adwaita-border-gradient: none;
-
- -adwaita-inset-bottom: none;
-}
-
-GtkSwitch.slider {
- border-width: 1;
- border-radius: 1;
- border-color: shade (@frame_color, 1.31);
- border-style: solid;
- padding: 2;
- background-image: -gtk-gradient (linear,
- left top, left bottom,
- from (@theme_base_color),
- to (@switch_slider_color));
-
- -adwaita-switch-grip-color: shade (@switch_slider_color, 0.97);
-
- -adwaita-inset-top: @switch_slider_color;
- -adwaita-inset-bottom: alpha (@theme_base_color, 0.50);
-}
-
-GtkSwitch.slider:active {
- border-color: @switch_slider_border;
-}
-
-GtkSwitch.slider:insensitive {
- border-style: none;
- background-image: none;
- background-color: @insensitive_bg_color;
-
- -adwaita-inset-top: none;
- -adwaita-inset-bottom: none;
-}
-
-GtkStatusbar {
- padding: 5;
- color: @theme_fg_color;
- -GtkStatusbar-shadow-type: none;
-}
-
-GtkScrolledWindow.frame {
- border-style: solid;
- border-color: darker (@theme_bg_color);
- border-width: 1;
- border-radius: 3;
-}
-
-GtkViewport,
-GtkIconView {
- border-radius: 3;
- padding: 0;
-}
-
-GtkIconView.view.cell:selected,
-GtkIconView.view.cell:selected:focused {
- background-color: @theme_selected_bg_color;
- border-radius: 4;
-
- /* FIXME: this probably needs to be better;
- * see https://bugzilla.gnome.org/show_bug.cgi?id=644157
- */
- -adwaita-focus-border-color: @progressbar_border;
- -adwaita-focus-border-radius: 3;
- -adwaita-focus-border-dashes: 0;
-}
-
-.view {
- background-color: @theme_base_color;
- color: @theme_fg_color;
- border-radius: 0;
- border-width: 3;
-}
-
-GtkTreeView {
- -GtkTreeView-vertical-separator: 0;
- -GtkTreeView-expander-size: 9;
-
- -GtkWidget-focus-line-width: 1;
- -adwaita-focus-border-radius: 0;
- -adwaita-focus-border-dashes: 0;
- -adwaita-focus-border-color: @keyboard_focus_border_a;
-}
-
-GtkTreeView.separator {
- background-color: darker (@theme_bg_color);
-}
-
-column-header {
- padding: 1 2;
-}
-
-column-header .button {
- border-width: 0;
- border-radius: 0;
-}
-
-row:hover {
- border-width: 0;
-}
-
-row:insensitive {
- border-width: 0;
-}
-
-row:selected:focused {
- border-width: 0;
- background-image: -gtk-gradient (linear,
- left top, left bottom,
- from (@progressbar_border),
- color-stop (0.02, @progressbar_border),
- color-stop (0.03, @theme_selected_bg_color),
- color-stop (0.97, @theme_selected_bg_color),
- color-stop (0.98, @progressbar_border),
- to (@progressbar_border));
- background-color: @theme_selected_bg_color;
-}
-
-row:selected {
- border-width: 0;
- background-image: -gtk-gradient (linear,
- left top, left bottom,
- from (@theme_selected_bg_color),
- to (@theme_selected_bg_color));
-}
-
-.cell {
- color: @theme_text_color;
- padding: 2;
- border-width: 0;
-}
-
-.cell:selected {
- background-color: @theme_selected_bg_color;
-}
-
-.expander {
- border-style: solid;
- border-width: 1;
- border-radius: 2;
- border-color: @internal_element_color;
-
- color: @internal_element_color;
- background-color: @theme_base_color;
-}
-
-.expander:active {
- border-style: solid;
- border-width: 1;
-
- color: @internal_element_color;
- border-color: @internal_element_color;
-
- background-color: @theme_base_color;
-}
-
-.expander:prelight {
- border-style: solid;
- border-width: 1;
-
- color: @internal_element_color;
- border-color: @internal_element_color;
-
- background-color: shade (@theme_bg_color, 1.02);
-}
-
-.expander row:selected,
-.expander row:selected:focused {
- border-style: solid;
- border-width: 1;
-
- border-color: @expander_row_selected_color;
- color: @expander_row_selected_color;
- background-color: @theme_selected_bg_color;
-}
-
-/* Calendars */
-GtkCalendar.view {
- border-radius: 3;
- border-style: solid;
- border-width: 1;
- padding: 2;
-}
-
-GtkCalendar.header {
- border-radius: 0;
- background-image: -gtk-gradient (linear,
- left top,
- left bottom,
- from (shade (@theme_bg_color, 1.04)),
- to (shade (@theme_bg_color, 0.89)));
- border-width: 0;
-}
-
-GtkCalendar.button {
- background-image: -gtk-gradient (linear,
- left top,
- left bottom,
- from (rgba (0, 0, 0, 0)),
- to (rgba (0, 0, 0, 0)));
-}
-
-.highlight,
-GtkCalendar.highlight {
- background-color: @theme_selected_bg_color;
- color: @theme_selected_fg_color;
- border-radius: 0;
- padding: 0;
- border-width: 0;
-}
-
-.info {
- background-color: @info_bg_color;
- color: @info_fg_color;
-}
-
-.warning {
- background-color: @warning_bg_color;
- color: @warning_fg_color;
-}
-
-.question {
- background-color: @question_bg_color;
- color: @question_fg_color;
-}
-
-.error {
- background-color: @error_bg_color;
- color: @error_fg_color;
-}
-
-.dim-label {
- color: mix (@theme_fg_color, @theme_bg_color, 0.50);
-}
-
-.sidebar,
-.sidebar.view {
- background-color: shade (@theme_bg_color, 0.99);
-}
-
-ApDocView, /* Abiword */
-EogScrollView, /* Eog */
-CheeseThumbView /* Cheese */
-{
- background-color: @chrome_bg_color;
- -EogScrollView-shadow-type: none;
-}
-
-/* gnome-terminal */
-TerminalScreen {
- background-color: @theme_base_color;
- color: @theme_fg_color;
- -TerminalScreen-background-darkness: 0.95;
-}
-
-/**********************
- * Fallback Mode Panel
- **********************/
-
-PanelWidget,
-PanelApplet,
-PanelApplet > GtkMenuBar.menubar,
-.gnome-panel-menu-bar,
-PanelAppletFrame,
-PanelMenuBar.menubar,
-PanelToplevel {
- background-color: @os_chrome_bg_color;
- background-image: none;
- color: @os_chrome_fg_color;
-}
-
-ClockBox,
-.gnome-panel-menu-bar {
- font: bold;
-}
-
-PanelApplet > GtkMenuBar.menubar.menuitem:prelight,
-.gnome-panel-menu-bar.menuitem:prelight {
- background-color: @os_chrome_selected_bg_color;
- color: @os_chrome_selected_fg_color;
- border-color: lighter (@os_chrome_selected_bg_color);
-}
-
-/* panel buttons (clock, tasklist etc) */
-PanelApplet GtkToggleButton {
- background-color: @os_chrome_bg_color;
- background-image: none;
- border-color: @os_chrome_bg_color;
- border-width: 1;
- color: @os_chrome_fg_color;
-}
-
-PanelApplet GtkToggleButton:prelight:active,
-PanelApplet GtkToggleButton:active {
- background-color: @os_chrome_selected_bg_color;
- background-image: none;
- border-color: lighter (@os_chrome_selected_bg_color);
- border-width: 1;
- color: @os_chrome_selected_fg_color;
-}
-
-PanelApplet GtkToggleButton:prelight {
- background-color: @os_chrome_bg_color;
- background-image: none;
- border-color: @os_chrome_bg_color;
- border-width: 1;
- color: @os_chrome_selected_fg_color;
-}
-
-NaTrayApplet {
- -NaTrayApplet-icon-padding: 12;
- -NaTrayApplet-icon-size: 16;
-}
-
-WnckPager, WnckTasklist {
- background-color: @os_chrome_selected_bg_color;
- background-image: none;
- color: @os_chrome_fg_color;
-}
-
-GsmFailWhaleDialog,
-GsmFailWhaleDialog * {
- background-color: @os_chrome_bg_color;
- background-image: none;
- color: @os_chrome_fg_color;
-}
diff --git a/gtk3/theme/gtk-widgets.css.em b/gtk3/theme/gtk-widgets.css.em
new file mode 100644
index 0000000..1459b9f
--- /dev/null
+++ b/gtk3/theme/gtk-widgets.css.em
@@ -0,0 +1,883 @@
+${
+import math
+
+def my_floor(num):
+ return int(math.floor(num))
+
+def my_ceil(num):
+ return int(math.ceil(num))
+
+
+# Should we set the line width in the engine to 2.25, and draw non pixel aligned lines?
+# Are these already the correct sizes for the XO?
+
+# These sizes need to be sanity checked ...
+if scaling == "100":
+ xo = True
+ line_width = 2.0 # 2.25px, rounded down
+ thick_line_width = 3.5 # 3.5
+ subcell_size = 15
+ icon_base = 11
+ bullet_size = 9.5
+ font_height = 24
+ default_padding = 6
+ toolbutton_padding = 9
+else: # About 72% of the XO size, adjusted so that eg. toolbuttons work
+ xo = False
+ line_width = 2.0 # 1.62 rounded up
+ thick_line_width = 3.0 # 2.52
+ subcell_size = 11 # 10.8
+ icon_base = 8 # 7.92
+ bullet_size = 6.5 # 6.84
+ # This is a guess on the font size (Sans 10 at 96 DPI)
+ font_height = 17
+ default_padding = 4 # 4.32
+ toolbutton_padding = 6 # 7.68
+
+
+radio_size = my_floor(subcell_size + bullet_size + line_width)
+scale_slider_width = my_floor(2 * subcell_size + line_width)
+thickness = my_ceil(line_width)
+
+icon_small = icon_base * 3
+icon_large = icon_base * 5
+
+}
+
+* {
+ -sugar-focus-line: @white;
+
+ background-color: @button_grey;
+ color: @black;
+
+ border-width: $(thickness)px;
+ border-color: none;
+ border-radius: 0;
+ border-style: none;
+
+ padding: $thickness;
+
+ /* A lot of these will probably need to be changed, but this has to
+ be done when the exact sizes are known */
+ -GtkWidget-interior-focus: 0;
+
+ /* we have to disable focus border for GtkTreeView, see #1261 */
+ -GtkTreeView-interior-focus: 1;
+ -GtkTreeView-focus-line-width: 0;
+
+ -GtkTextView-interior-focus: 1;
+
+ -GtkWidget-focus-line-width: 0; /* Prevents some drawing glitches */
+ -GtkEntry-focus-line-width: 0;
+ -GtkScale-focus-line-width: 0;
+ -GtkScale-focus-line-width: 0;
+ -GtkWidget-focus-padding: 0;
+ /* 0.05 works good for both the sugar and sugar-xo themes */
+ -GtkWidget-cursor-aspect-ratio: 0.05;
+
+ -GtkWidget-wide-separators: false;
+ -GtkWidget-separator-height: $thickness;
+ -GtkWidget-separator-width: $thickness;
+
+ -GtkWidget-scroll-arrow-hlength: $subcell_size;
+ -GtkWidget-scroll-arrow-vlength: $subcell_size;
+
+ -GtkRange-activate-slider: 1;
+
+ /* We fake the default border in the theme */
+ -GtkButton-default-border: 0 0 0 0;
+ -GtkButton-default-outside-border: 0 0 0 0;
+ -GtkButton-image-spacing: $subcell_size;
+
+ -GtkEntry-progress-border: $thickness $thickness $thickness $thickness;
+
+ -GtkScrolledWindow-scrollbar-spacing: 0;
+
+ -GtkExpander-expander-size: $font_height;
+ -GtkExpander-expander-spacing: 2;
+
+ -GtkTreeView-expander-size: $font_height;
+
+ /* we have to disable focus border for GtkTreeView, see #1261 */
+ -GtkTreeView-interior-focus: 1;
+ -GtkTreeView-focus-line-width: 0;
+
+ -GtkArrow-arrow-size: 1.0;
+
+ /* -GtkToolbar-shadow-type: ; */
+ -GtkToolbar-space-size: $(2*subcell_size);
+
+ -GtkProgressBar-min-horizontal-bar-height: $subcell_size;
+ -GtkProgressBar-min-vertical-bar-width: $subcell_size;
+
+ -GtkButtonBox-child-min-height: $(3*subcell_size);
+ -GtkButtonBox-child-min-width: $(3*subcell_size);
+ -GtkButtonBox-child-internal-pad-x: 0;
+ -GtkButtonBox-child-internal-pad-y: 0;
+
+/* engine "sugar" {
+ line_width: $line_width
+ thick_line_width: $thick_line_width
+ subcell_size: $subcell_size
+
+ max_radius: $( 2*subcell_size )
+ }*/
+}
+
+/* spinbutton should be *above* button */
+.spinbutton {
+ ${ spin_ythickness = my_ceil(3*subcell_size - font_height) }
+ ${ spin_xthickness = subcell_size }
+ ${ spin_btn_ythickness = spin_ythickness }
+ ${ spin_btn_xthickness = subcell_size * 2 }
+
+ /* small inner border and a lage x/ythickness for entries
+ to reduce the number of hacks needed :-) */
+ padding: $(spin_xthickness)px $(spin_ythickness)px;
+}
+
+.spinbutton.button,
+.spinbutton.button:prelight,
+.spinbutton.button:focused,
+.spinbutton.button:active {
+ padding: $(spin_ythickness)px $(spin_xthickness)px;
+
+ border-color: @white;
+ border-width: 0px;
+ background-color: @button_grey;
+ color: @white;
+}
+
+.spinbutton.button:focused {
+ border-width: $(thickness)px;
+}
+
+
+.spinbutton.button:active {
+ background-color: @white;
+ color: @button_grey;
+}
+
+/* Text selection */
+.entry:selected:focused, .view:selected:focused {
+ background-color: @text_field_grey;
+ color: @white;
+}
+
+*:insensitive {
+ /* the insensitive background is visible in GtkToolButtons (where a label exists, see gedit back button)??? */
+ background-color: #00ff00;
+ color: @button_grey;
+ border-color: @button_grey;
+}
+
+*:active {
+ background-color: @white;
+ color: @black;
+}
+
+.view {
+ border-width: 0px;
+ border-style: none;
+ border-radius: 0;
+ padding: 0px;
+ background-color: @text_field_grey;
+}
+
+.entry {
+ border-radius: $(2*subcell_size);
+ border-width: $(thickness);
+ border-color: @button_grey;
+ border-style: solid;
+ background-color: @text_field_grey;
+ color: @black;
+}
+
+.entry:focused {
+ background-color: @white;
+}
+
+.entry:insensitive, .view:insensitive {
+ background-color: @button_grey;
+}
+
+.view:selected {
+ background-color: @panel_grey;
+ color: @black;
+}
+
+.entry:selected, .entry:selected:focused,
+.view:selected:focused {
+ background-color: @selection_grey;
+ color: @black;
+}
+
+.button {
+ ${ border = max(0, my_ceil((3*subcell_size/2.0 - icon_small / 2.0))) }
+ /* It would be nicer to just set the inner-border, but that does not work
+ for combo boxes ... The combobox ignores it, so set it to 0px
+ See http://bugzilla.gnome.org/show_bug.cgi?id=485762 */
+
+ -GtkButton-inner-border: 0 0 0 0;
+ padding: $(border)px $(border)px $(border)px $(border)px;
+
+ border-radius: $(2*subcell_size);
+ background-color: @button_grey;
+ color: @white;
+}
+
+.button:focused {
+ border-width: $(thickness);
+ border-color: @white;
+ border-style: solid;
+}
+
+.button:active {
+ background-color: @;
+ color: #ff00ff;
+}
+
+.button:selected {
+ background-color: #ff0000;
+
+ border-width: 0;
+ border-color: none;
+ border-radius: 10;
+ border-style: none;
+
+ color: #0000ff;
+}
+
+
+.notebook:active {
+ background-color: @button_grey;
+}
+
+.background {
+ padding: 0px;
+ border-width: 0px;
+ background-color: @panel_grey;
+}
+
+.window {
+ background-color: @panel_grey;
+ color: @black;
+}
+
+/* Handle this differently? */
+.window *:insensitive {
+ background-color: @panel_grey;
+}
+
+
+SugarSectionView {
+ background-color: @white;
+ color: @black;
+}
+
+SugarSectionView *:insensitive {
+ background-color: @white;
+}
+
+
+SugarAlert {
+ background-color: @black;
+ color: @white;
+}
+
+SugarAlert *:insensitive {
+ background-color: @black;
+}
+
+
+SugarGroupBox {
+ background-color: @selection_grey;
+ color: @black;
+}
+
+SugarGroupBox *:insensitive {
+ background-color: @selection_grey;
+}
+
+
+SugarPaletteWindow SugarGroupBox {
+ background-color: @toolbar_grey;
+ color: @white;
+}
+
+SugarPaletteWindow SugarGroupBox *:insensitive {
+ background-color: @toolbar_grey;
+}
+
+
+.menu, .palette {
+ background-color: @black;
+ color: @white;
+
+
+ -GtkMenu-scroll-arrow-vlength: $(my_floor(subcell_size/0.7 + 2*thickness));
+ -GtkMenu-horizontal-padding: $thickness;
+ -GtkMenu-vertical-padding : $thickness;
+ /* This means the outline of the submenu overlaps with a palette.
+ * However in the case of two normal menus, they are next to each other.
+ * It is not possible to be smarter about this, because the style comes from
+ * the submenu. */
+ -GtkMenu-horizontal-offset : 0;
+ -GtkMenu-vertical-offset : 0;
+
+ padding: 0;
+}
+
+.menu :prelight, palette :prelight {
+ color: @white
+}
+
+.menu :active, palette :active {
+ background-color: @button_grey;
+}
+
+.palette {
+ padding: $(thickness)px;
+}
+
+.palette .menu {
+ -GtkMenu-horizontal-padding: 0;
+ -GtkMenu-vertical-padding: 0;
+
+ padding: 0px $(subcell_size)px;
+}
+
+/* Correct? */
+.menu * {
+ background-color: @button_grey;
+ color: @white;
+}
+
+.menu * :insensitive {
+ background-color: @black;
+}
+
+.scrollbar {
+ -GtkScrollbar-slider-width: $subcell_size;
+ -GtkScrollbar-trough-border: 0;
+ -GtkScrollbar-stepper-spacing: 0;
+ -GtkScrollbar-min-slider-length: $(3*subcell_size);
+ -GtkScrollbar-has-forward-stepper: 0;
+ -GtkScrollbar-has-backward-stepper: 0;
+ -GtkScrollbar-has-secondary-forward-stepper: 0;
+ -GtkScrollbar-has-secondary-backward-stepper: 0;
+}
+
+/* Scrollbar padding hack? What was that about? */
+
+/*
+
+# hints for the trough padding hacks
+# We cannot go trough GTK+, as we don't want a padding on all sides, but only one
+# If we wanted padding on all sides, trough-border would work great.
+style "hscrollbar": "scrollbar"
+{
+ engine "sugar" {
+ hint: "hscrollbar"
+ scrollbar_border: $thickness
+ }
+}
+
+style "vscrollbar": "scrollbar"
+{
+ engine "sugar" {
+ hint: "vscrollbar"
+ scrollbar_border: $thickness
+ }
+}
+
+style "hscrollbar-scrolled-window"
+{
+ GtkScrollbar-slider-width: $(subcell_size - thickness)
+ GtkScrollbar-stepper-spacing: $thickness
+ GtkScrollbar-has-forward-stepper: 1
+ GtkScrollbar-has-backward-stepper: 1
+ GtkScrollbar-stepper-size: 0
+
+ engine "sugar" {
+ hint: "hscrollbar-scrolled-window"
+ }
+}
+
+style "vscrollbar-scrolled-window"
+{
+ GtkScrollbar-slider-width: $(subcell_size - thickness)
+ GtkScrollbar-stepper-spacing: $thickness
+ GtkScrollbar-has-forward-stepper: 1
+ GtkScrollbar-has-backward-stepper: 1
+ GtkScrollbar-stepper-size: 0
+
+ engine "sugar" {
+ hint: "vscrollbar-scrolled-window"
+ }
+}
+
+style "scale"
+{
+ GtkWidget-focus-line-width: 0
+
+ bg[NORMAL]: @button_grey
+
+ # "square" slider (really round of course)
+ # Same as indicator-size?
+ GtkRange-slider-width: $scale_slider_width
+ GtkScale-slider-length: $scale_slider_width
+ GtkRange-trough-border: 0
+ GtkRange-stepper-spacing: 0
+ GtkRange-trough-side-details: 1
+}
+
+# hints for the trough sizing hacks
+style "hscale": "scale"
+{
+ engine "sugar" {
+ hint: "hscale"
+ }
+}
+
+style "vscale": "scale"
+{
+ engine "sugar" {
+ hint: "vscale"
+ }
+}
+
+style "spinbutton"
+{
+ bg[NORMAL] : @button_grey
+ bg[ACTIVE] : @white
+ fg[NORMAL] : @white
+ fg[ACTIVE] : @black
+
+ ${ spin_ythickness = my_ceil(0.2 * (subcell_size*3.0/2.0 - thickness) + thickness) }
+ ${ spin_xthickness = subcell_size }
+
+ # small inner border and a large x/ythickness for entries
+ # to reduce the number of hacks needed :-)
+ xthickness: $spin_xthickness
+ ythickness: $spin_ythickness
+ GtkWidget-focus-line-width: 0
+
+ # This tries to get a height of exactly 45 pixel for the entry.
+ GtkEntry-inner-border: { $(max(subcell_size - spin_xthickness, 0)), $(max(subcell_size - spin_xthickness, 0)),
+ $(max(my_ceil((3*subcell_size - font_height - spin_ythickness*2)/2.0),0)), $(max(my_floor((3*subcell_size - font_height - spin_ythickness*2)/2.0), 0)) }
+
+ engine "sugar" {
+ hint: "spinbutton"
+ }
+}
+
+
+style "frame"
+{
+ bg[NORMAL]: @toolbar_grey
+
+ engine "sugar" {
+ parent_bg_color: @toolbar_grey
+ parent_fg_color: @white
+ }
+}
+
+style "notebook-tab"
+{
+ bg[ACTIVE]: @button_grey
+ fg[ACTIVE]: @white
+}
+
+style "notebook-panel"
+{
+ GtkNotebook-tab-overlap: -2
+ GtkNotebook-tab-curvature: $default_padding
+
+ xthickness: 0
+ ythickness: 0
+
+ bg[NORMAL]: @selection_grey
+}
+
+style "toolbox-notebook"
+{
+ GtkNotebook-tab-overlap: -2
+
+ xthickness: 0
+ ythickness: 0
+}
+
+style "toolbutton"
+{
+ xthickness: 0
+ ythickness: 0
+ GtkButton-inner-border: { $toolbutton_padding,
+ $toolbutton_padding,
+ $toolbutton_padding,
+ $toolbutton_padding }
+ GtkWidget-focus-padding: 0
+
+ bg[PRELIGHT]: @black
+ bg[ACTIVE]: @button_grey
+ bg[NORMAL]: @black
+
+ fg[NORMAL]: @white
+ fg[ACTIVE]: @white
+ fg[PRELIGHT]: @white
+
+ engine "sugar" {
+ max_radius: 5.0
+ fake_padding: $default_padding
+ }
+}
+
+style "separatortoolbutton"
+{
+ # The sizing is handled in the engine.
+ bg[NORMAL]: @button_grey
+}
+
+style "toolbar"
+{
+ xthickness: 0
+ ythickness: 0
+
+ bg[NORMAL]: @toolbar_grey
+ bg[INSENSITIVE]: @toolbar_grey
+ base[INSENSITIVE]: @toolbar_grey
+
+ engine "sugar" {
+ parent_fg_color: @white
+ parent_bg_color: @toolbar_grey
+ }
+}
+
+style "toolbox"
+{
+ fg[NORMAL]: @white
+ fg[ACTIVE]: @white
+
+ bg[NORMAL]: @toolbar_grey
+ bg[INSENSITIVE]: @toolbar_grey
+ base[INSENSITIVE]: @toolbar_grey
+
+ engine "sugar" {
+ parent_fg_color: @white
+ parent_bg_color: @toolbar_grey
+ }
+}
+
+style "panel"
+{
+ bg[NORMAL]: @panel_grey
+ fg[NORMAL]: @black
+}
+
+style "entry"
+{
+ color["focus_line"]: @text_field_grey
+
+ ${ entry_ythickness = my_ceil(0.2 * (subcell_size*3.0/2.0 - thickness) + thickness) }
+ ${ entry_xthickness = my_ceil(0.32 * (subcell_size*3.0/2.0 - thickness) + thickness) }
+
+ # small inner border and a large x/ythickness for entries
+ # to reduce the number of hacks needed :-)
+ xthickness: $entry_xthickness
+ ythickness: $entry_ythickness
+ GtkWidget-focus-line-width: 0
+
+ # Colors for the progress bar.
+ bg[SELECTED]: @selection_grey
+ fg[SELECTED]: @black
+
+ # This tries to get a height of exactly 45 pixel for the entry.
+ GtkEntry-inner-border: { $(max(subcell_size - entry_xthickness, 0)), $(max(subcell_size - entry_xthickness, 0)),
+ $(max(my_ceil((3*subcell_size - font_height - entry_ythickness*2)/2.0),0)), $(max(my_floor((3*subcell_size - font_height - entry_ythickness*2)/2.0), 0)) }
+}
+
+style "button"
+{
+ ${ border = max(0, my_ceil((3*subcell_size/2.0 - icon_small / 2.0))) }
+ # It would be nicer to just set the inner-border, but that does not work
+ # for combo boxes ... The combobox ignores it, so set it to 0px
+ # See http://bugzilla.gnome.org/show_bug.cgi?id:485762
+
+ GtkButton-inner-border: { 0, 0, 0, 0 }
+
+ # So set the x/ythickness; y-padding is $subcell_size overall
+ xthickness: $(border)
+ ythickness: $(border)
+
+
+ fg[NORMAL]: @white
+ fg[ACTIVE]: @black
+
+ bg[NORMAL]: @button_grey
+}
+
+style "combobox"
+{
+ # "Disable" the ACTIVE state of the button, it only creates problems :-(
+ bg[ACTIVE]: @button_grey
+ fg[ACTIVE]: @white
+
+ # Work around GTK+ bug #382646
+ text[NORMAL] : @white
+ text[ACTIVE] : @white
+ text[PRELIGHT] : @white
+}
+
+style "comboboxentry"
+{
+ # Copied from the "default" style. Part of the workaround for bug #382646.
+ text[NORMAL]: @black
+ text[ACTIVE]: @black
+ text[SELECTED]: @black
+ text[PRELIGHT]: @black
+
+ # It just happens that the entry xthickness works good for the button,
+ # which simplefies matters a bit.
+ xthickness: $entry_xthickness
+
+ engine "sugar" {
+ hint: "comboboxentry"
+ }
+}
+
+style "checkbutton"
+{
+ base[NORMAL] : @white
+ base[PRELIGHT] : @white
+ base[ACTIVE] : @text_field_grey
+
+ text[PRELIGHT] : @toolbar_grey
+ text[NORMAL] : @toolbar_grey
+ text[ACTIVE] : @toolbar_grey
+
+ # I won't get the exact sizing, but this should be pretty close
+ GtkCheckButton-indicator-size: $radio_size
+ GtkCheckButton-indicator-spacing: 3
+ GtkWidget-focus-padding: 3
+
+ engine "sugar" {
+ # Reset the colors to the normal color again
+ # as they were overriden by the button style
+ fg[NORMAL] : parent_fg_color
+ fg[PRELIGHT] : parent_fg_color
+ fg[ACTIVE] : parent_fg_color
+ }
+}
+
+style "progressbar"
+{
+ # text[PRELIGHT] is used for the bar in the sugar engine
+ text[PRELIGHT]: @white
+
+ # Text on top of the bar
+ fg[PRELIGHT]: @black
+ xthickness: $thickness
+ ythickness: $thickness
+
+ engine "sugar" {
+ # Someone seems to have decided, that the background fill of a progress
+ # bar should be done with bg[ACTIVE].
+ bg[ACTIVE]: parent_bg_color
+
+ # Color to fill the progress bar ("transparent" usually, except for the
+ # white background case)
+ bg[NORMAL]: parent_bg_color
+ fg[NORMAL]: parent_fg_color
+ }
+}
+
+style "progressbar-on-white" {
+ bg[NORMAL]: @panel_grey
+ fg[NORMAL]: @black
+}
+
+style "menuitem"
+{
+ GtkMenuItem-horizontal-padding: 0
+ GtkMenuItem-arrow-spacing: $subcell_size
+ GtkMenuItem-toggle-spacing: $subcell_size
+
+ bg[PRELIGHT]: @button_grey
+
+ # Work around bug #382646
+ text[PRELIGHT] : @white
+ text[NORMAL] : @white
+ text[ACTIVE] : @white
+
+ xthickness: $subcell_size
+ ythickness: $((subcell_size * 3 - font_height) / 2)
+}
+
+style "checkmenuitem"
+{
+ GtkCheckMenuItem-indicator-size: $radio_size
+ GtkMenuItem-toggle-spacing: $(subcell_size * 2 / 3)
+
+ ythickness: $((subcell_size * 3 - max(font_height, subcell_size * 2 / 3)) / 2)
+
+ # This is only there because of bug #382646 ...
+ base[NORMAL] : @white
+ base[PRELIGHT] : @white
+ base[ACTIVE] : @text_field_grey
+
+ text[PRELIGHT] : @toolbar_grey
+ text[NORMAL] : @toolbar_grey
+ text[ACTIVE] : @toolbar_grey
+}
+
+style "imagemenuitem"
+{
+ # Assume a $(icon_small)px image and height of $(4*subcell_size)
+ ythickness: $(max(0, (3*subcell_size - icon_small) / 2))
+}
+
+style "separatormenuitem"
+{
+ GtkWidget-wide-separators: 1
+ GtkWidget-separator-height: $(2*subcell_size)
+
+ ythickness: 0
+ xthickness: 0
+}
+
+style "trayicon"
+{
+ bg[PRELIGHT]: @black
+ bg[ACTIVE]: @button_grey
+}
+
+style "parent-bg"
+{
+ engine "sugar" {
+ bg[NORMAL]: parent_bg_color
+ bg[INSENSITIVE]: parent_bg_color
+ }
+}
+
+####################################################################
+# Default style, setting some generic options and style properties
+####################################################################
+class "GtkWidget" style "default"
+
+
+####################################################################
+# Styles that apply the different background (and foreground) colors
+####################################################################
+
+# This one should probably be the default (ie. no window-child style)
+widget_class "<GtkWindow>" style "window"
+widget_class "<GtkWindow>*" style "window-child"
+
+widget_class "*<SugarAlert>" style "black-bg"
+widget_class "*<SugarAlert>*" style "black-bg-child"
+
+widget_class "*<SugarSectionView>" style "white-bg"
+widget_class "*<SugarSectionView>*" style "white-bg-child"
+
+
+# The notebook is very high, so that everything is overriden
+# Only the color of the tab labels needs to be modified inside the
+# notebooks in this style (and the widget itself).
+# Assume that there is either just a normal label in the notebook tab, or
+# it is inside a GtkBox (H- or VBox) together with eg. a close button.
+widget_class "*<GtkNotebook>" style "notebook-tab"
+widget_class "*<GtkNotebook>.<GtkLabel>" style "notebook-tab"
+widget_class "*<GtkNotebook>.<GtkBox>.<GtkLabel>" style "notebook-tab"
+
+
+# SugarPalette and Menu
+widget_class "*<GtkMenu>" style "menu"
+widget_class "<SugarPaletteWindow>" style "palette"
+widget_class "<SugarPaletteWindow>.*" style "menu-child"
+widget_class "<SugarPaletteWindow>*<GtkMenu>" style "palette-menu"
+widget_class "*<GtkMenuShell>.*" style "menu-child"
+
+# SugarFrameWindow
+widget_class "*<SugarFrameWindow>*" style "frame"
+
+# SugarPanel
+widget_class "*<SugarPanel>*" style "panel"
+
+
+# GroupBoxes (don't set bg[NORMAL] on the widget itself)
+widget_class "<GtkWindow>*<SugarGroupBox>*" style "groupbox-panel-child"
+
+widget_class "<GtkWindow>*<GtkNotebook>*" style "groupbox-panel-child"
+widget_class "<GtkWindow>*<GtkNotebook>" style "notebook-panel"
+
+
+widget_class "<SugarPaletteWindow>*<SugarGroupBox>*" style "groupbox-palette-child"
+
+
+# SugarToolbox
+#widget_class "*<SugarToolbox>" style "toolbox"
+#widget_class "*<SugarToolbox>*" style "toolbox-child"
+#widget_class "*<SugarToolbox>*<GtkEventBox>" style "toolbox"
+#widget_class "*<SugarToolbox>*<GtkLayout>" style "toolbox"
+widget_class "*<SugarToolbox>*" style "toolbox"
+widget_class "*<GtkToolbar>*" style "toolbox"
+widget_class "*<SugarToolbox>.<GtkNotebook>" style "toolbox-notebook"
+
+
+####################################################################
+# Normal widget styles, using the above things
+####################################################################
+# The following only uses widget_class matches to get the priority
+# right. An alternative would be to lower the priority of the
+# background matches (which need widget_class) to eg. "application"
+
+widget_class "*<GtkMenuItem>*" style "menuitem"
+widget_class "*<GtkCheckMenuItem>" style "checkmenuitem"
+widget_class "*<GtkImageMenuItem>" style "imagemenuitem"
+widget_class "*<GtkSeparatorMenuItem>*" style "separatormenuitem"
+
+# Buttons and Combos
+widget_class "*<GtkButton>*" style "button"
+widget_class "*<GtkCheckButton>*" style "checkbutton"
+widget_class "*<GtkComboBox>*" style "combobox"
+widget_class "*<GtkComboBoxEntry>*" style "comboboxentry"
+widget_class "*<GtkCombo>*" style "comboboxentry"
+
+# Entries
+widget_class "*<GtkEntry>" style "entry"
+widget_class "*<GtkSpinButton>" style "spinbutton"
+widget_class "*<GtkTextView>" style "textview"
+
+
+# Misc widgets
+widget_class "*<GtkHScrollbar>" style "hscrollbar"
+widget_class "*<GtkVScrollbar>" style "vscrollbar"
+widget_class "*<GtkHScale>" style "hscale"
+widget_class "*<GtkVScale>" style "vscale"
+widget_class "*<GtkProgressBar>" style "progressbar"
+
+widget_class "*<SugarSectionView>*<GtkProgress>" style "progressbar-on-white"
+
+
+# Scrolled window scrollbars
+widget_class "*<GtkScrolledWindow>.<GtkVScrollbar>" style "vscrollbar-scrolled-window"
+widget_class "*<GtkScrolledWindow>.<GtkHScrollbar>" style "hscrollbar-scrolled-window"
+
+# Toolbar
+widget_class "*<GtkToolButton>*" style "toolbutton"
+widget_class "*<SugarColorToolButton>*" style "toolbutton"
+widget_class "*<GtkSeparatorToolItem>*" style "separatortoolbutton"
+widget_class "*<GtkToolbar>" style "toolbar"
+
+# Tray
+widget_class "*<SugarTrayIcon>*" style "trayicon"
+
+# Widgets that should get the background color from the parent
+widget_class "*<GtkEventBox>" style "parent-bg"
+widget_class "*<GtkLayout>" style "parent-bg"
+widget_class "*<GtkViewport>" style "parent-bg"
+widget_class "*<GtkDrawingArea>" style "parent-bg"
+widget_class "*<GtkScrolledWindow>" style "parent-bg"
+
+*/
+
diff --git a/gtk3/theme/gtk.css b/gtk3/theme/gtk.css
index a1eb610..0c51959 100644
--- a/gtk3/theme/gtk.css
+++ b/gtk3/theme/gtk.css
@@ -1,3 +1,13 @@
+
+/* Sugar colors */
+@define-color black #000000;
+@define-color toolbar_grey #282828;
+@define-color button_grey /*#ff0000*/ #808080 ;
+@define-color selection_grey #A6A6A6;
+@define-color panel_grey #C0C0C0;
+@define-color text_field_grey #E5E5E5;
+@define-color white #FFFFFF;
+
/* Default color scheme */
@define-color base_color #ffffff;
@define-color bg_color #ededed;
@@ -107,5 +117,5 @@
@define-color expander_row_selected_color #acccee;
-@import url("gtk-widgets-assets.css");
@import url("gtk-widgets.css");
+
diff --git a/gtk3/theme/settings.ini b/gtk3/theme/settings.ini
index 1a08b65..f0fe541 100644
--- a/gtk3/theme/settings.ini
+++ b/gtk3/theme/settings.ini
@@ -1,3 +1,3 @@
[Settings]
-gtk-color-scheme = "base_color:#ffffff\nbg_color:#ededed\ntooltip_bg_color:#343434\nselected_bg_color:#4a90d9\ntext_color:#2e3436\nfg_color:#2e3436;\ntooltip_fg_color:#ffffff\nselected_fg_color:#ffffff"
+#gtk-color-scheme = "base_color:#ffffff\nbg_color:#ededed\ntooltip_bg_color:#343434\nselected_bg_color:#4a90d9\ntext_color:#2e3436\nfg_color:#2e3436;\ntooltip_fg_color:#ffffff\nselected_fg_color:#ffffff"
gtk-auto-mnemonics = 1