summaryrefslogtreecommitdiff
path: root/data
diff options
context:
space:
mode:
Diffstat (limited to 'data')
-rw-r--r--data/icons/scalable/actions/flip-before.svg2
-rw-r--r--data/icons/scalable/actions/flip-even.svg2
-rw-r--r--data/icons/scalable/actions/flip-odd.svg2
-rw-r--r--data/icons/scalable/actions/interleave-after.svg2
-rw-r--r--data/icons/scalable/actions/interleave-before.svg2
-rw-r--r--data/icons/scalable/actions/interleave-reverse-after.svg2
-rw-r--r--data/icons/scalable/actions/reverse-after.svg2
-rw-r--r--data/icons/scalable/actions/reverse-before.svg2
-rw-r--r--data/icons/scalable/actions/right-large-symbolic.svg2
-rw-r--r--data/meson.build25
-rw-r--r--data/org.gnome.SimpleScan.appdata.xml.in (renamed from data/simple-scan.appdata.xml.in)23
-rw-r--r--data/simple-scan.gresource.xml15
-rw-r--r--data/ui/app-window.ui946
-rw-r--r--data/ui/authorize-dialog.ui131
-rw-r--r--data/ui/drivers-dialog.ui137
-rw-r--r--data/ui/help-overlay.ui24
-rw-r--r--data/ui/preferences-dialog.ui191
-rw-r--r--data/ui/reorder-pages-dialog.ui92
-rw-r--r--data/ui/reorder-pages-item.ui51
19 files changed, 725 insertions, 928 deletions
diff --git a/data/icons/scalable/actions/flip-before.svg b/data/icons/scalable/actions/flip-before.svg
new file mode 100644
index 0000000..3fdb241
--- /dev/null
+++ b/data/icons/scalable/actions/flip-before.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg width="89.286171" height="78.230553" viewBox="0 0 23.623634 20.698502" version="1.1" id="svg8" sodipodi:docname="page-order-design.svg" inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" inkscape:export-filename="document-scanner.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90" xml:space="preserve" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"><defs id="defs2"><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect2181" /><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect2183" /><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect2185" /><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect2187" /></defs><sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="1" inkscape:pageshadow="2" inkscape:zoom="1.4142136" inkscape:cx="288.14601" inkscape:cy="210.01071" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="false" units="px" inkscape:pagecheckerboard="false" inkscape:window-width="1920" inkscape:window-height="1011" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="1" inkscape:snap-page="true" inkscape:snap-text-baseline="false" inkscape:snap-center="false" inkscape:snap-object-midpoints="true" inkscape:object-paths="true" inkscape:snap-intersection-paths="true" inkscape:snap-bbox="true" inkscape:bbox-paths="true" inkscape:bbox-nodes="true" inkscape:snap-bbox-edge-midpoints="false" inkscape:snap-bbox-midpoints="false" inkscape:snap-smooth-nodes="true" inkscape:snap-midpoints="true" inkscape:snap-nodes="false" inkscape:snap-global="true" inkscape:snap-others="false" fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" showguides="false" inkscape:showpageshadow="false" inkscape:guide-bbox="true" inkscape:deskcolor="#d1d1d1"><inkscape:grid type="xygrid" id="grid3492" originx="-3346.8094" originy="-757.24814" /><sodipodi:guide position="317.7991,-512.60175" orientation="1,0" id="guide241284" inkscape:locked="false" /><sodipodi:guide position="418.34075,-515.24759" orientation="1,0" id="guide241286" inkscape:locked="false" /><sodipodi:guide position="368.06994,-560.22677" orientation="1,0" id="guide241528" inkscape:locked="false" /></sodipodi:namedview><metadata id="metadata5"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><g inkscape:label="PageOrder" inkscape:groupmode="layer" id="layer1" transform="translate(-3439.2844,884.74139)"><filter id="a" height="1" width="1" x="0" y="0"><feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" id="feColorMatrix112013" /></filter><mask id="b"><g filter="url(#a)" id="g112018"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.3" id="path112016" /></g></mask><clipPath id="c"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112021" /></clipPath><mask id="d"><g filter="url(#a)" id="g112026"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112024" /></g></mask><clipPath id="e"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112029" /></clipPath><mask id="f"><g filter="url(#a)" id="g112034"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112032" /></g></mask><clipPath id="g"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112037" /></clipPath><mask id="h"><g filter="url(#a)" id="g112042"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112040" /></g></mask><clipPath id="i"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112045" /></clipPath><mask id="j"><g filter="url(#a)" id="g112050"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112048" /></g></mask><clipPath id="k"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112053" /></clipPath><mask id="l"><g filter="url(#a)" id="g112058"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112056" /></g></mask><clipPath id="m"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112061" /></clipPath><mask id="n"><g filter="url(#a)" id="g112066"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112064" /></g></mask><clipPath id="o"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112069" /></clipPath><mask id="p"><g filter="url(#a)" id="g112074"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.3" id="path112072" /></g></mask><clipPath id="q"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112077" /></clipPath><mask id="r"><g filter="url(#a)" id="g112082"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.5" id="path112080" /></g></mask><clipPath id="s"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112085" /></clipPath><mask id="t"><g filter="url(#a)" id="g112090"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.4" id="path112088" /></g></mask><clipPath id="u"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112093" /></clipPath><mask id="v"><g filter="url(#a)" id="g112098"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.4" id="path112096" /></g></mask><clipPath id="w"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112101" /></clipPath><mask id="x"><g filter="url(#a)" id="g112106"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.5" id="path112104" /></g></mask><clipPath id="y"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112109" /></clipPath><mask id="z"><g filter="url(#a)" id="g112114"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.5" id="path112112" /></g></mask><clipPath id="A"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112117" /></clipPath><filter id="a-5" height="1" width="1" x="0" y="0"><feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" id="feColorMatrix36614" /></filter><mask id="b-4"><g filter="url(#a)" id="g36619" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.3" id="path36617" /></g></mask><clipPath id="c-7"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36622" /></clipPath><mask id="d-6"><g filter="url(#a)" id="g36627" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36625" /></g></mask><clipPath id="e-5"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36630" /></clipPath><mask id="f-6"><g filter="url(#a)" id="g36635" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36633" /></g></mask><clipPath id="g-9"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36638" /></clipPath><mask id="h-3"><g filter="url(#a)" id="g36643" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36641" /></g></mask><clipPath id="i-7"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36646" /></clipPath><mask id="j-4"><g filter="url(#a)" id="g36651" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36649" /></g></mask><clipPath id="k-5"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36654" /></clipPath><mask id="l-2"><g filter="url(#a)" id="g36659" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36657" /></g></mask><clipPath id="m-5"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36662" /></clipPath><mask id="n-4"><g filter="url(#a)" id="g36667" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36665" /></g></mask><clipPath id="o-7"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36670" /></clipPath><mask id="p-4"><g filter="url(#a)" id="g36675" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.3" id="path36673" /></g></mask><clipPath id="q-4"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36678" /></clipPath><mask id="r-3"><g filter="url(#a)" id="g36683" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.5" id="path36681" /></g></mask><clipPath id="s-0"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36686" /></clipPath><g id="g2179" style="stroke-width:1.77641" transform="matrix(0.56530015,0,0,0.56057826,1575.0247,-749.61738)" inkscape:label="flip-before" inkscape:export-filename="flip-before.svg" inkscape:export-xdpi="90" inkscape:export-ydpi="90"><g id="g2147" inkscape:label="Page 1"><rect style="opacity:1;fill:#c1d8f3;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect2139" width="14.816667" height="20.108334" x="3298.2927" y="-240.57396" rx="2.8082428" ry="2.8318973" /><text xml:space="preserve" transform="matrix(0.53168659,0,0,0.53260281,2099.375,-1685.7101)" id="text2145" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect2181);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0"><tspan x="2258.5316" y="2745.5048" id="tspan5421"><tspan style="text-align:center;text-anchor:middle" id="tspan5419">1</tspan></tspan></text></g><g id="g2157" inkscape:label="Page 2" transform="translate(16.053851)" style="stroke-width:1.77641"><rect style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect2149" width="14.816667" height="20.108334" x="-3305.6521" y="216.3275" rx="2.8082428" ry="2.8318973" transform="scale(-1)" /><text xml:space="preserve" transform="matrix(0.53168659,0,0,0.53260281,2092.0563,-1680.653)" id="text2155" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect2183);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0"><tspan x="2258.1093" y="2745.5048" id="tspan5425"><tspan style="text-align:center;text-anchor:middle" id="tspan5423">2</tspan></tspan></text></g><g id="g2167" inkscape:label="Page 3" transform="translate(16.053851)" style="stroke-width:1.77641"><rect style="opacity:1;fill:#c1d8f3;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect2159" width="14.816667" height="20.108334" x="3299.8293" y="-229.12819" rx="2.8082428" ry="2.8318973" /><text xml:space="preserve" transform="matrix(0.53168659,0,0,0.53260281,2100.9115,-1673.767)" id="text2165" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect2185);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0"><tspan x="2258.0188" y="2745.5048" id="tspan5429"><tspan style="text-align:center;text-anchor:middle" id="tspan5427">3</tspan></tspan></text></g><g id="g2177" inkscape:label="Page 4" transform="translate(23.02555,6.7331853)" style="stroke-width:1.77641"><rect style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect2169" width="14.816667" height="20.108334" x="-3316.1167" y="211.32367" rx="2.8082428" ry="2.8318973" transform="scale(-1)" /><text xml:space="preserve" transform="matrix(0.53168659,0,0,0.53260281,2102.4668,-1675.659)" id="text2175" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect2187);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0"><tspan x="2257.8163" y="2745.5048" id="tspan5433"><tspan style="text-align:center;text-anchor:middle" id="tspan5431">4</tspan></tspan></text></g></g></g></svg> \ No newline at end of file
diff --git a/data/icons/scalable/actions/flip-even.svg b/data/icons/scalable/actions/flip-even.svg
new file mode 100644
index 0000000..b8a97e6
--- /dev/null
+++ b/data/icons/scalable/actions/flip-even.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg width="89.286171" height="78.230598" viewBox="0 0 23.623634 20.698513" version="1.1" id="svg8" sodipodi:docname="page-order-design.svg" inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" inkscape:export-filename="document-scanner.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90" xml:space="preserve" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"><defs id="defs2"><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect37040" /><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect37042" /><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect37044" /><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect37046" /></defs><sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="1" inkscape:pageshadow="2" inkscape:zoom="1" inkscape:cx="491.49999" inkscape:cy="186.99999" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="false" units="px" inkscape:pagecheckerboard="false" inkscape:window-width="1920" inkscape:window-height="1011" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="1" inkscape:snap-page="true" inkscape:snap-text-baseline="false" inkscape:snap-center="false" inkscape:snap-object-midpoints="true" inkscape:object-paths="true" inkscape:snap-intersection-paths="true" inkscape:snap-bbox="true" inkscape:bbox-paths="true" inkscape:bbox-nodes="true" inkscape:snap-bbox-edge-midpoints="false" inkscape:snap-bbox-midpoints="false" inkscape:snap-smooth-nodes="true" inkscape:snap-midpoints="true" inkscape:snap-nodes="false" inkscape:snap-global="true" inkscape:snap-others="false" fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" showguides="false" inkscape:showpageshadow="false" inkscape:guide-bbox="true" inkscape:deskcolor="#d1d1d1"><inkscape:grid type="xygrid" id="grid3492" originx="-3346.8094" originy="-757.24812" /><sodipodi:guide position="317.79906,-540.63726" orientation="1,0" id="guide241284" inkscape:locked="false" /><sodipodi:guide position="418.34071,-543.2831" orientation="1,0" id="guide241286" inkscape:locked="false" /><sodipodi:guide position="368.0699,-588.26228" orientation="1,0" id="guide241528" inkscape:locked="false" /></sodipodi:namedview><metadata id="metadata5"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><g inkscape:label="PageOrder" inkscape:groupmode="layer" id="layer1" transform="translate(-3439.2844,912.77692)"><filter id="a" height="1" width="1" x="0" y="0"><feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" id="feColorMatrix112013" /></filter><mask id="b"><g filter="url(#a)" id="g112018"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.3" id="path112016" /></g></mask><clipPath id="c"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112021" /></clipPath><mask id="d"><g filter="url(#a)" id="g112026"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112024" /></g></mask><clipPath id="e"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112029" /></clipPath><mask id="f"><g filter="url(#a)" id="g112034"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112032" /></g></mask><clipPath id="g"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112037" /></clipPath><mask id="h"><g filter="url(#a)" id="g112042"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112040" /></g></mask><clipPath id="i"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112045" /></clipPath><mask id="j"><g filter="url(#a)" id="g112050"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112048" /></g></mask><clipPath id="k"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112053" /></clipPath><mask id="l"><g filter="url(#a)" id="g112058"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112056" /></g></mask><clipPath id="m"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112061" /></clipPath><mask id="n"><g filter="url(#a)" id="g112066"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112064" /></g></mask><clipPath id="o"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112069" /></clipPath><mask id="p"><g filter="url(#a)" id="g112074"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.3" id="path112072" /></g></mask><clipPath id="q"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112077" /></clipPath><mask id="r"><g filter="url(#a)" id="g112082"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.5" id="path112080" /></g></mask><clipPath id="s"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112085" /></clipPath><mask id="t"><g filter="url(#a)" id="g112090"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.4" id="path112088" /></g></mask><clipPath id="u"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112093" /></clipPath><mask id="v"><g filter="url(#a)" id="g112098"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.4" id="path112096" /></g></mask><clipPath id="w"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112101" /></clipPath><mask id="x"><g filter="url(#a)" id="g112106"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.5" id="path112104" /></g></mask><clipPath id="y"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112109" /></clipPath><mask id="z"><g filter="url(#a)" id="g112114"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.5" id="path112112" /></g></mask><clipPath id="A"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112117" /></clipPath><filter id="a-5" height="1" width="1" x="0" y="0"><feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" id="feColorMatrix36614" /></filter><mask id="b-4"><g filter="url(#a)" id="g36619" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.3" id="path36617" /></g></mask><clipPath id="c-7"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36622" /></clipPath><mask id="d-6"><g filter="url(#a)" id="g36627" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36625" /></g></mask><clipPath id="e-5"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36630" /></clipPath><mask id="f-6"><g filter="url(#a)" id="g36635" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36633" /></g></mask><clipPath id="g-9"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36638" /></clipPath><mask id="h-3"><g filter="url(#a)" id="g36643" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36641" /></g></mask><clipPath id="i-7"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36646" /></clipPath><mask id="j-4"><g filter="url(#a)" id="g36651" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36649" /></g></mask><clipPath id="k-5"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36654" /></clipPath><mask id="l-2"><g filter="url(#a)" id="g36659" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36657" /></g></mask><clipPath id="m-5"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36662" /></clipPath><mask id="n-4"><g filter="url(#a)" id="g36667" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36665" /></g></mask><clipPath id="o-7"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36670" /></clipPath><mask id="p-4"><g filter="url(#a)" id="g36675" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.3" id="path36673" /></g></mask><clipPath id="q-4"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36678" /></clipPath><mask id="r-3"><g filter="url(#a)" id="g36683" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.5" id="path36681" /></g></mask><clipPath id="s-0"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36686" /></clipPath><g id="g37038" style="stroke-width:1.77641" transform="matrix(0.56530016,0,0,0.56057827,1575.0247,-777.65291)" inkscape:label="flip-even-after" inkscape:export-filename="reverse-before.svg" inkscape:export-xdpi="90" inkscape:export-ydpi="90"><g id="g37006" inkscape:label="Page 1"><rect style="opacity:1;fill:#c1d8f3;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect36998" width="14.816667" height="20.108334" x="3298.2927" y="-240.57396" rx="2.8082428" ry="2.8318973" /><text xml:space="preserve" transform="matrix(0.53168659,0,0,0.53260281,2099.375,-1685.7101)" id="text37004" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect37040);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0"><tspan x="2258.5316" y="2745.5048" id="tspan39288"><tspan style="text-align:center;text-anchor:middle" id="tspan39286">1</tspan></tspan></text></g><g id="g37016" inkscape:label="Page 2" transform="translate(16.053851)" style="stroke-width:1.77641"><rect style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect37008" width="14.816667" height="20.108334" x="-3305.6521" y="216.3275" rx="2.8082428" ry="2.8318973" transform="scale(-1)" /><text xml:space="preserve" transform="matrix(-0.53168659,0,0,-0.53260281,4504.5859,1228.2022)" id="text37014" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect37042);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0"><tspan x="2258.1093" y="2745.5048" id="tspan39292"><tspan style="text-align:center;text-anchor:middle" id="tspan39290">2</tspan></tspan></text></g><g id="g37026" inkscape:label="Page 3" transform="translate(16.053851)" style="stroke-width:1.77641"><rect style="opacity:1;fill:#c1d8f3;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect37018" width="14.816667" height="20.108334" x="3299.8293" y="-229.12819" rx="2.8082428" ry="2.8318973" /><text xml:space="preserve" transform="matrix(0.53168659,0,0,0.53260281,2100.9115,-1674.2643)" id="text37024" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect37044);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0"><tspan x="2258.0188" y="2745.5048" id="tspan39296"><tspan style="text-align:center;text-anchor:middle" id="tspan39294">3</tspan></tspan></text></g><g id="g37036" inkscape:label="Page 4" transform="translate(23.02555,6.7331853)" style="stroke-width:1.77641"><rect style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect37028" width="14.816667" height="20.108334" x="-3316.1167" y="211.32367" rx="2.8082428" ry="2.8318973" transform="scale(-1)" /><text xml:space="preserve" transform="matrix(-0.53168659,0,0,-0.53260281,4514.7256,1233.3478)" id="text37034" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect37046);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0"><tspan x="2257.8163" y="2745.5048" id="tspan39300"><tspan style="text-align:center;text-anchor:middle" id="tspan39298">4</tspan></tspan></text></g></g></g></svg> \ No newline at end of file
diff --git a/data/icons/scalable/actions/flip-odd.svg b/data/icons/scalable/actions/flip-odd.svg
new file mode 100644
index 0000000..5e335ce
--- /dev/null
+++ b/data/icons/scalable/actions/flip-odd.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg width="89.286171" height="78.230598" viewBox="0 0 23.623634 20.698513" version="1.1" id="svg8" sodipodi:docname="page-order-design.svg" inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" inkscape:export-filename="document-scanner.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90" xml:space="preserve" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"><defs id="defs2"><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect30983" /><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect36698" /><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect36765" /><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect36777" /></defs><sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="1" inkscape:pageshadow="2" inkscape:zoom="1" inkscape:cx="491.49999" inkscape:cy="186.99999" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="false" units="px" inkscape:pagecheckerboard="false" inkscape:window-width="1920" inkscape:window-height="1011" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="1" inkscape:snap-page="true" inkscape:snap-text-baseline="false" inkscape:snap-center="false" inkscape:snap-object-midpoints="true" inkscape:object-paths="true" inkscape:snap-intersection-paths="true" inkscape:snap-bbox="true" inkscape:bbox-paths="true" inkscape:bbox-nodes="true" inkscape:snap-bbox-edge-midpoints="false" inkscape:snap-bbox-midpoints="false" inkscape:snap-smooth-nodes="true" inkscape:snap-midpoints="true" inkscape:snap-nodes="false" inkscape:snap-global="true" inkscape:snap-others="false" fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" showguides="false" inkscape:showpageshadow="false" inkscape:guide-bbox="true" inkscape:deskcolor="#d1d1d1"><inkscape:grid type="xygrid" id="grid3492" originx="-3346.8094" originy="-757.24812" /><sodipodi:guide position="290.01506,-540.63726" orientation="1,0" id="guide241284" inkscape:locked="false" /><sodipodi:guide position="390.55671,-543.2831" orientation="1,0" id="guide241286" inkscape:locked="false" /><sodipodi:guide position="340.2859,-588.26228" orientation="1,0" id="guide241528" inkscape:locked="false" /></sodipodi:namedview><metadata id="metadata5"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><g inkscape:label="PageOrder" inkscape:groupmode="layer" id="layer1" transform="translate(-3467.0684,912.77692)"><filter id="a" height="1" width="1" x="0" y="0"><feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" id="feColorMatrix112013" /></filter><mask id="b"><g filter="url(#a)" id="g112018"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.3" id="path112016" /></g></mask><clipPath id="c"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112021" /></clipPath><mask id="d"><g filter="url(#a)" id="g112026"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112024" /></g></mask><clipPath id="e"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112029" /></clipPath><mask id="f"><g filter="url(#a)" id="g112034"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112032" /></g></mask><clipPath id="g"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112037" /></clipPath><mask id="h"><g filter="url(#a)" id="g112042"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112040" /></g></mask><clipPath id="i"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112045" /></clipPath><mask id="j"><g filter="url(#a)" id="g112050"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112048" /></g></mask><clipPath id="k"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112053" /></clipPath><mask id="l"><g filter="url(#a)" id="g112058"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112056" /></g></mask><clipPath id="m"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112061" /></clipPath><mask id="n"><g filter="url(#a)" id="g112066"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112064" /></g></mask><clipPath id="o"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112069" /></clipPath><mask id="p"><g filter="url(#a)" id="g112074"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.3" id="path112072" /></g></mask><clipPath id="q"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112077" /></clipPath><mask id="r"><g filter="url(#a)" id="g112082"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.5" id="path112080" /></g></mask><clipPath id="s"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112085" /></clipPath><mask id="t"><g filter="url(#a)" id="g112090"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.4" id="path112088" /></g></mask><clipPath id="u"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112093" /></clipPath><mask id="v"><g filter="url(#a)" id="g112098"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.4" id="path112096" /></g></mask><clipPath id="w"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112101" /></clipPath><mask id="x"><g filter="url(#a)" id="g112106"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.5" id="path112104" /></g></mask><clipPath id="y"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112109" /></clipPath><mask id="z"><g filter="url(#a)" id="g112114"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.5" id="path112112" /></g></mask><clipPath id="A"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112117" /></clipPath><filter id="a-5" height="1" width="1" x="0" y="0"><feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" id="feColorMatrix36614" /></filter><mask id="b-4"><g filter="url(#a)" id="g36619" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.3" id="path36617" /></g></mask><clipPath id="c-7"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36622" /></clipPath><mask id="d-6"><g filter="url(#a)" id="g36627" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36625" /></g></mask><clipPath id="e-5"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36630" /></clipPath><mask id="f-6"><g filter="url(#a)" id="g36635" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36633" /></g></mask><clipPath id="g-9"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36638" /></clipPath><mask id="h-3"><g filter="url(#a)" id="g36643" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36641" /></g></mask><clipPath id="i-7"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36646" /></clipPath><mask id="j-4"><g filter="url(#a)" id="g36651" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36649" /></g></mask><clipPath id="k-5"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36654" /></clipPath><mask id="l-2"><g filter="url(#a)" id="g36659" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36657" /></g></mask><clipPath id="m-5"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36662" /></clipPath><mask id="n-4"><g filter="url(#a)" id="g36667" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36665" /></g></mask><clipPath id="o-7"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36670" /></clipPath><mask id="p-4"><g filter="url(#a)" id="g36675" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.3" id="path36673" /></g></mask><clipPath id="q-4"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36678" /></clipPath><mask id="r-3"><g filter="url(#a)" id="g36683" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.5" id="path36681" /></g></mask><clipPath id="s-0"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36686" /></clipPath><g id="g30971" style="stroke-width:1.77641" transform="matrix(0.56530016,0,0,0.56057827,1602.8087,-777.65291)" inkscape:label="flip-odd-after" inkscape:export-filename="reverse-before.svg" inkscape:export-xdpi="90" inkscape:export-ydpi="90"><g id="g36696" inkscape:label="Page 1"><rect style="opacity:1;fill:#c1d8f3;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect36688" width="14.816667" height="20.108334" x="3298.2927" y="-240.57396" rx="2.8082428" ry="2.8318973" /><text xml:space="preserve" transform="matrix(-0.53168659,0,0,-0.53260281,4512.0553,1223.1835)" id="text36694" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect36698);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0"><tspan x="2258.5316" y="2745.5048" id="tspan40718"><tspan style="text-align:center;text-anchor:middle" id="tspan40716">1</tspan></tspan></text></g><g id="g31070" inkscape:label="Page 2" transform="translate(16.053851)" style="stroke-width:1.77641"><rect style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect30963" width="14.816667" height="20.108334" x="-3305.6521" y="214.36133" rx="2.8082428" ry="2.8318973" transform="scale(-1)" /><text xml:space="preserve" transform="matrix(0.53168659,0,0,0.53260281,2091.575,-1678.7491)" id="text30969" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect30983);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0"><tspan x="2258.1093" y="2745.5048" id="tspan40722"><tspan style="text-align:center;text-anchor:middle" id="tspan40720">2</tspan></tspan></text></g><g id="g36763" inkscape:label="Page 3" transform="translate(16.053851)" style="stroke-width:1.77641"><rect style="opacity:1;fill:#c1d8f3;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect36755" width="14.816667" height="20.108334" x="3299.8293" y="-230.4964" rx="2.8082428" ry="2.8318973" /><text xml:space="preserve" transform="matrix(-0.53168659,0,0,-0.53260281,4513.3375,1233.2771)" id="text36761" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect36765);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0"><tspan x="2258.0188" y="2745.5048" id="tspan40726"><tspan style="text-align:center;text-anchor:middle" id="tspan40724">3</tspan></tspan></text></g><g id="g36775" inkscape:label="Page 4" transform="translate(23.02555,6.7331853)" style="stroke-width:1.77641"><rect style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect36767" width="14.816667" height="20.108334" x="-3316.1167" y="211.32367" rx="2.8082428" ry="2.8318973" transform="scale(-1)" /><text xml:space="preserve" transform="matrix(0.53168659,0,0,0.53260281,2102.0435,-1675.733)" id="text36773" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect36777);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0"><tspan x="2257.8163" y="2745.5048" id="tspan40730"><tspan style="text-align:center;text-anchor:middle" id="tspan40728">4</tspan></tspan></text></g></g></g></svg> \ No newline at end of file
diff --git a/data/icons/scalable/actions/interleave-after.svg b/data/icons/scalable/actions/interleave-after.svg
new file mode 100644
index 0000000..cba0f3f
--- /dev/null
+++ b/data/icons/scalable/actions/interleave-after.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg width="129.81598" height="78.230499" viewBox="0 0 34.347144 20.698487" version="1.1" id="svg8" sodipodi:docname="page-order-design.svg" inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" inkscape:export-filename="document-scanner.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90" xml:space="preserve" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"><defs id="defs2"><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect19939" /><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect19941" /><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect19943" /><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect19945" /><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect19949" /><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect23441" /></defs><sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="1" inkscape:pageshadow="2" inkscape:zoom="0.7071068" inkscape:cx="533.1585" inkscape:cy="309.71276" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="false" units="px" inkscape:pagecheckerboard="false" inkscape:window-width="1920" inkscape:window-height="1011" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="1" inkscape:snap-page="true" inkscape:snap-text-baseline="false" inkscape:snap-center="false" inkscape:snap-object-midpoints="true" inkscape:object-paths="true" inkscape:snap-intersection-paths="true" inkscape:snap-bbox="true" inkscape:bbox-paths="true" inkscape:bbox-nodes="true" inkscape:snap-bbox-edge-midpoints="false" inkscape:snap-bbox-midpoints="false" inkscape:snap-smooth-nodes="true" inkscape:snap-midpoints="true" inkscape:snap-nodes="false" inkscape:snap-global="true" inkscape:snap-others="false" fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" showguides="false" inkscape:showpageshadow="false" inkscape:guide-bbox="true" inkscape:deskcolor="#d1d1d1"><inkscape:grid type="xygrid" id="grid3492" originx="-3346.8095" originy="-757.24808" /><sodipodi:guide position="358.64005,-456.80317" orientation="1,0" id="guide241284" inkscape:locked="false" /><sodipodi:guide position="459.1817,-459.44901" orientation="1,0" id="guide241286" inkscape:locked="false" /><sodipodi:guide position="408.91089,-504.42818" orientation="1,0" id="guide241528" inkscape:locked="false" /></sodipodi:namedview><metadata id="metadata5"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><g inkscape:label="PageOrder" inkscape:groupmode="layer" id="layer1" transform="translate(-3398.4434,938.25814)"><filter id="a" height="1" width="1" x="0" y="0"><feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" id="feColorMatrix112013" /></filter><mask id="b"><g filter="url(#a)" id="g112018"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.3" id="path112016" /></g></mask><clipPath id="c"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112021" /></clipPath><mask id="d"><g filter="url(#a)" id="g112026"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112024" /></g></mask><clipPath id="e"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112029" /></clipPath><mask id="f"><g filter="url(#a)" id="g112034"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112032" /></g></mask><clipPath id="g"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112037" /></clipPath><mask id="h"><g filter="url(#a)" id="g112042"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112040" /></g></mask><clipPath id="i"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112045" /></clipPath><mask id="j"><g filter="url(#a)" id="g112050"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112048" /></g></mask><clipPath id="k"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112053" /></clipPath><mask id="l"><g filter="url(#a)" id="g112058"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112056" /></g></mask><clipPath id="m"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112061" /></clipPath><mask id="n"><g filter="url(#a)" id="g112066"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112064" /></g></mask><clipPath id="o"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112069" /></clipPath><mask id="p"><g filter="url(#a)" id="g112074"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.3" id="path112072" /></g></mask><clipPath id="q"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112077" /></clipPath><mask id="r"><g filter="url(#a)" id="g112082"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.5" id="path112080" /></g></mask><clipPath id="s"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112085" /></clipPath><mask id="t"><g filter="url(#a)" id="g112090"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.4" id="path112088" /></g></mask><clipPath id="u"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112093" /></clipPath><mask id="v"><g filter="url(#a)" id="g112098"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.4" id="path112096" /></g></mask><clipPath id="w"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112101" /></clipPath><mask id="x"><g filter="url(#a)" id="g112106"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.5" id="path112104" /></g></mask><clipPath id="y"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112109" /></clipPath><mask id="z"><g filter="url(#a)" id="g112114"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.5" id="path112112" /></g></mask><clipPath id="A"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112117" /></clipPath><filter id="a-5" height="1" width="1" x="0" y="0"><feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" id="feColorMatrix36614" /></filter><mask id="b-4"><g filter="url(#a)" id="g36619" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.3" id="path36617" /></g></mask><clipPath id="c-7"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36622" /></clipPath><mask id="d-6"><g filter="url(#a)" id="g36627" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36625" /></g></mask><clipPath id="e-5"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36630" /></clipPath><mask id="f-6"><g filter="url(#a)" id="g36635" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36633" /></g></mask><clipPath id="g-9"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36638" /></clipPath><mask id="h-3"><g filter="url(#a)" id="g36643" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36641" /></g></mask><clipPath id="i-7"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36646" /></clipPath><mask id="j-4"><g filter="url(#a)" id="g36651" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36649" /></g></mask><clipPath id="k-5"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36654" /></clipPath><mask id="l-2"><g filter="url(#a)" id="g36659" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36657" /></g></mask><clipPath id="m-5"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36662" /></clipPath><mask id="n-4"><g filter="url(#a)" id="g36667" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36665" /></g></mask><clipPath id="o-7"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36670" /></clipPath><mask id="p-4"><g filter="url(#a)" id="g36675" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.3" id="path36673" /></g></mask><clipPath id="q-4"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36678" /></clipPath><mask id="r-3"><g filter="url(#a)" id="g36683" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.5" id="path36681" /></g></mask><clipPath id="s-0"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36686" /></clipPath><g id="g19937" style="stroke-width:1.77641" transform="matrix(0.56530016,0,0,0.56057828,1534.1837,-804.43556)" inkscape:label="interleave-after" inkscape:export-filename="scaner-icons/interleave-after.svg" inkscape:export-xdpi="90" inkscape:export-ydpi="90"><rect style="opacity:1;fill:#c1d8f3;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect19889" width="14.816667" height="20.108334" x="3343.2952" y="-222.37726" rx="2.8082428" ry="2.8318973" inkscape:export-filename="./interlave-before.svg" inkscape:export-xdpi="90" inkscape:export-ydpi="90" inkscape:label="6" /><text xml:space="preserve" transform="matrix(0.53168659,0,0,0.53260281,2152.0523,-1667.5131)" id="text19895" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect19939);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0" inkscape:label="6l"><tspan x="2257.924" y="2745.5048" id="tspan22552"><tspan style="text-align:center;text-anchor:middle" id="tspan22550">6</tspan></tspan></text><rect style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect19897" width="14.816667" height="20.108334" x="3334.3013" y="-225.55232" rx="2.8082428" ry="2.8318973" inkscape:label="3" /><text xml:space="preserve" transform="matrix(0.53168659,0,0,0.53260281,2143.0559,-1670.6883)" id="text19903" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect19941);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0" inkscape:label="3l"><tspan x="2258.0188" y="2745.5048" id="tspan22556"><tspan style="text-align:center;text-anchor:middle" id="tspan22554">3</tspan></tspan></text><rect style="opacity:1;fill:#c1d8f3;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect19905" width="14.816667" height="20.108334" x="3325.2803" y="-228.72739" rx="2.8082428" ry="2.8318973" inkscape:label="5" /><text xml:space="preserve" transform="matrix(0.53168659,0,0,0.53260281,2134.0595,-1673.8635)" id="text19911" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect19943);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0" inkscape:label="5l"><tspan x="2258.0662" y="2745.5048" id="tspan22560"><tspan style="text-align:center;text-anchor:middle" id="tspan22558">5</tspan></tspan></text><rect style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect19913" width="14.816667" height="20.108334" x="3316.8376" y="-231.90225" rx="2.8082428" ry="2.8318973" inkscape:label="2" /><text xml:space="preserve" transform="matrix(0.53168659,0,0,0.53260281,2125.5935,-1677.0381)" id="text19919" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect19945);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0" inkscape:label="2l"><tspan x="2258.1093" y="2745.5048" id="tspan22564"><tspan style="text-align:center;text-anchor:middle" id="tspan22562">2</tspan></tspan></text><rect style="opacity:1;fill:#c1d8f3;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect19921" width="14.816667" height="20.108334" x="3307.8438" y="-235.07732" rx="2.8082428" ry="2.8318973" inkscape:label="4" /><text xml:space="preserve" transform="matrix(0.5316866,0,0,0.53260283,2116.7986,-1680.2131)" id="text23439" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect23441);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0" inkscape:label="4l"><tspan x="2257.8163" y="2745.5048" id="tspan22568"><tspan style="text-align:center;text-anchor:middle" id="tspan22566">4</tspan></tspan></text><rect style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect19929" width="14.816667" height="20.108334" x="3298.2927" y="-238.25237" rx="2.8082428" ry="2.8318973" inkscape:label="1" /><text xml:space="preserve" transform="matrix(0.53168659,0,0,0.53260281,2107.6007,-1683.3885)" id="text19935" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect19949);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0" inkscape:label="1l"><tspan x="2258.5316" y="2745.5048" id="tspan22572"><tspan style="text-align:center;text-anchor:middle" id="tspan22570">1</tspan></tspan></text></g></g></svg> \ No newline at end of file
diff --git a/data/icons/scalable/actions/interleave-before.svg b/data/icons/scalable/actions/interleave-before.svg
new file mode 100644
index 0000000..88d4ad8
--- /dev/null
+++ b/data/icons/scalable/actions/interleave-before.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg width="129.81598" height="78.230499" viewBox="0 0 34.347144 20.698487" version="1.1" id="svg8" sodipodi:docname="page-order-design.svg" inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" inkscape:export-filename="document-scanner.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90" xml:space="preserve" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"><defs id="defs2"><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect58582-3" /><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect58584-6" /><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect58586-7" /><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect58588-5" /><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect58590-3" /><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect58592-5" /></defs><sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="1" inkscape:pageshadow="2" inkscape:zoom="0.7071068" inkscape:cx="533.1585" inkscape:cy="309.71276" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="false" units="px" inkscape:pagecheckerboard="false" inkscape:window-width="1920" inkscape:window-height="1011" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="1" inkscape:snap-page="true" inkscape:snap-text-baseline="false" inkscape:snap-center="false" inkscape:snap-object-midpoints="true" inkscape:object-paths="true" inkscape:snap-intersection-paths="true" inkscape:snap-bbox="true" inkscape:bbox-paths="true" inkscape:bbox-nodes="true" inkscape:snap-bbox-edge-midpoints="false" inkscape:snap-bbox-midpoints="false" inkscape:snap-smooth-nodes="true" inkscape:snap-midpoints="true" inkscape:snap-nodes="false" inkscape:snap-global="true" inkscape:snap-others="false" fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" showguides="false" inkscape:showpageshadow="false" inkscape:guide-bbox="true" inkscape:deskcolor="#d1d1d1"><inkscape:grid type="xygrid" id="grid3492" originx="-3346.8095" originy="-757.24808" /><sodipodi:guide position="396.80615,-456.80317" orientation="1,0" id="guide241284" inkscape:locked="false" /><sodipodi:guide position="497.3478,-459.44901" orientation="1,0" id="guide241286" inkscape:locked="false" /><sodipodi:guide position="447.07699,-504.42818" orientation="1,0" id="guide241528" inkscape:locked="false" /></sodipodi:namedview><metadata id="metadata5"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><g inkscape:label="PageOrder" inkscape:groupmode="layer" id="layer1" transform="translate(-3360.2773,938.25814)"><filter id="a" height="1" width="1" x="0" y="0"><feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" id="feColorMatrix112013" /></filter><mask id="b"><g filter="url(#a)" id="g112018"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.3" id="path112016" /></g></mask><clipPath id="c"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112021" /></clipPath><mask id="d"><g filter="url(#a)" id="g112026"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112024" /></g></mask><clipPath id="e"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112029" /></clipPath><mask id="f"><g filter="url(#a)" id="g112034"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112032" /></g></mask><clipPath id="g"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112037" /></clipPath><mask id="h"><g filter="url(#a)" id="g112042"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112040" /></g></mask><clipPath id="i"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112045" /></clipPath><mask id="j"><g filter="url(#a)" id="g112050"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112048" /></g></mask><clipPath id="k"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112053" /></clipPath><mask id="l"><g filter="url(#a)" id="g112058"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112056" /></g></mask><clipPath id="m"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112061" /></clipPath><mask id="n"><g filter="url(#a)" id="g112066"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112064" /></g></mask><clipPath id="o"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112069" /></clipPath><mask id="p"><g filter="url(#a)" id="g112074"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.3" id="path112072" /></g></mask><clipPath id="q"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112077" /></clipPath><mask id="r"><g filter="url(#a)" id="g112082"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.5" id="path112080" /></g></mask><clipPath id="s"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112085" /></clipPath><mask id="t"><g filter="url(#a)" id="g112090"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.4" id="path112088" /></g></mask><clipPath id="u"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112093" /></clipPath><mask id="v"><g filter="url(#a)" id="g112098"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.4" id="path112096" /></g></mask><clipPath id="w"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112101" /></clipPath><mask id="x"><g filter="url(#a)" id="g112106"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.5" id="path112104" /></g></mask><clipPath id="y"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112109" /></clipPath><mask id="z"><g filter="url(#a)" id="g112114"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.5" id="path112112" /></g></mask><clipPath id="A"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112117" /></clipPath><filter id="a-5" height="1" width="1" x="0" y="0"><feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" id="feColorMatrix36614" /></filter><mask id="b-4"><g filter="url(#a)" id="g36619" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.3" id="path36617" /></g></mask><clipPath id="c-7"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36622" /></clipPath><mask id="d-6"><g filter="url(#a)" id="g36627" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36625" /></g></mask><clipPath id="e-5"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36630" /></clipPath><mask id="f-6"><g filter="url(#a)" id="g36635" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36633" /></g></mask><clipPath id="g-9"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36638" /></clipPath><mask id="h-3"><g filter="url(#a)" id="g36643" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36641" /></g></mask><clipPath id="i-7"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36646" /></clipPath><mask id="j-4"><g filter="url(#a)" id="g36651" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36649" /></g></mask><clipPath id="k-5"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36654" /></clipPath><mask id="l-2"><g filter="url(#a)" id="g36659" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36657" /></g></mask><clipPath id="m-5"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36662" /></clipPath><mask id="n-4"><g filter="url(#a)" id="g36667" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36665" /></g></mask><clipPath id="o-7"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36670" /></clipPath><mask id="p-4"><g filter="url(#a)" id="g36675" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.3" id="path36673" /></g></mask><clipPath id="q-4"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36678" /></clipPath><mask id="r-3"><g filter="url(#a)" id="g36683" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.5" id="path36681" /></g></mask><clipPath id="s-0"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36686" /></clipPath><g id="g19586-6" style="stroke-width:1.77641" transform="matrix(0.56530016,0,0,0.56057828,1496.0176,-804.43556)" inkscape:label="interleave-before" inkscape:export-filename="interleave-before.svg" inkscape:export-xdpi="90" inkscape:export-ydpi="90"><rect style="opacity:1;fill:#c1d8f3;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect58504-2" width="14.816667" height="20.108334" x="3343.2952" y="-222.37726" rx="2.8082428" ry="2.8318973" inkscape:export-filename="./interlave-before.svg" inkscape:export-xdpi="90" inkscape:export-ydpi="90" inkscape:label="6" /><text xml:space="preserve" transform="matrix(0.53168659,0,0,0.53260281,2152.0523,-1667.5131)" id="text58508-9" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect58582-3);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0" inkscape:label="6l"><tspan x="2257.924" y="2745.5048" id="tspan20642"><tspan style="text-align:center;text-anchor:middle" id="tspan20640">6</tspan></tspan></text><rect style="opacity:1;fill:#c1d8f3;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect58510-1" width="14.816667" height="20.108334" x="3334.3013" y="-225.55232" rx="2.8082428" ry="2.8318973" inkscape:label="5" /><text xml:space="preserve" transform="matrix(0.53168659,0,0,0.53260281,2143.0559,-1670.6883)" id="text58514-2" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect58584-6);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0" inkscape:label="5l"><tspan x="2258.0662" y="2745.5048" id="tspan20646"><tspan style="text-align:center;text-anchor:middle" id="tspan20644">5</tspan></tspan></text><rect style="opacity:1;fill:#c1d8f3;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect58516-7" width="14.816667" height="20.108334" x="3325.2803" y="-228.72739" rx="2.8082428" ry="2.8318973" inkscape:label="4" /><text xml:space="preserve" transform="matrix(0.53168659,0,0,0.53260281,2134.0595,-1673.8635)" id="text58520-0" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect58586-7);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0" inkscape:label="4l"><tspan x="2257.8163" y="2745.5048" id="tspan20650"><tspan style="text-align:center;text-anchor:middle" id="tspan20648">4</tspan></tspan></text><rect style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect58522-9" width="14.816667" height="20.108334" x="3316.8376" y="-231.90225" rx="2.8082428" ry="2.8318973" inkscape:label="3" /><text xml:space="preserve" transform="matrix(0.53168659,0,0,0.53260281,2125.5935,-1677.0381)" id="text58526-3" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect58588-5);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0" inkscape:label="3l"><tspan x="2258.0188" y="2745.5048" id="tspan20654"><tspan style="text-align:center;text-anchor:middle" id="tspan20652">3</tspan></tspan></text><rect style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect58528-6" width="14.816667" height="20.108334" x="3307.8438" y="-235.07732" rx="2.8082428" ry="2.8318973" inkscape:label="2" /><text xml:space="preserve" transform="matrix(0.53168659,0,0,0.53260281,2116.5971,-1680.2133)" id="text58532-0" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect58590-3);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0" inkscape:label="2l"><tspan x="2258.1093" y="2745.5048" id="tspan20658"><tspan style="text-align:center;text-anchor:middle" id="tspan20656">2</tspan></tspan></text><rect style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect58534-6" width="14.816667" height="20.108334" x="3298.2927" y="-238.25237" rx="2.8082428" ry="2.8318973" inkscape:label="1" /><text xml:space="preserve" transform="matrix(0.53168659,0,0,0.53260281,2107.6007,-1683.3885)" id="text58538-2" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect58592-5);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0" inkscape:label="1l"><tspan x="2258.5316" y="2745.5048" id="tspan20662"><tspan style="text-align:center;text-anchor:middle" id="tspan20660">1</tspan></tspan></text></g></g></svg> \ No newline at end of file
diff --git a/data/icons/scalable/actions/interleave-reverse-after.svg b/data/icons/scalable/actions/interleave-reverse-after.svg
new file mode 100644
index 0000000..dfd3a40
--- /dev/null
+++ b/data/icons/scalable/actions/interleave-reverse-after.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg width="129.81598" height="78.230499" viewBox="0 0 34.347144 20.698487" version="1.1" id="svg8" sodipodi:docname="page-order-design.svg" inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" inkscape:export-filename="document-scanner.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90" xml:space="preserve" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"><defs id="defs2"><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect23521" /><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect23523" /><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect23525" /><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect23527" /><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect23529" /><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect23531" /></defs><sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="1" inkscape:pageshadow="2" inkscape:zoom="0.7071068" inkscape:cx="533.1585" inkscape:cy="309.71276" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="false" units="px" inkscape:pagecheckerboard="false" inkscape:window-width="1920" inkscape:window-height="1011" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="1" inkscape:snap-page="true" inkscape:snap-text-baseline="false" inkscape:snap-center="false" inkscape:snap-object-midpoints="true" inkscape:object-paths="true" inkscape:snap-intersection-paths="true" inkscape:snap-bbox="true" inkscape:bbox-paths="true" inkscape:bbox-nodes="true" inkscape:snap-bbox-edge-midpoints="false" inkscape:snap-bbox-midpoints="false" inkscape:snap-smooth-nodes="true" inkscape:snap-midpoints="true" inkscape:snap-nodes="false" inkscape:snap-global="true" inkscape:snap-others="false" fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" showguides="false" inkscape:showpageshadow="false" inkscape:guide-bbox="true" inkscape:deskcolor="#d1d1d1"><inkscape:grid type="xygrid" id="grid3492" originx="-3346.8095" originy="-757.24808" /><sodipodi:guide position="318.33865,-456.80317" orientation="1,0" id="guide241284" inkscape:locked="false" /><sodipodi:guide position="418.8803,-459.44901" orientation="1,0" id="guide241286" inkscape:locked="false" /><sodipodi:guide position="368.60949,-504.42818" orientation="1,0" id="guide241528" inkscape:locked="false" /></sodipodi:namedview><metadata id="metadata5"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><g inkscape:label="PageOrder" inkscape:groupmode="layer" id="layer1" transform="translate(-3438.7448,938.25814)"><filter id="a" height="1" width="1" x="0" y="0"><feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" id="feColorMatrix112013" /></filter><mask id="b"><g filter="url(#a)" id="g112018"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.3" id="path112016" /></g></mask><clipPath id="c"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112021" /></clipPath><mask id="d"><g filter="url(#a)" id="g112026"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112024" /></g></mask><clipPath id="e"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112029" /></clipPath><mask id="f"><g filter="url(#a)" id="g112034"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112032" /></g></mask><clipPath id="g"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112037" /></clipPath><mask id="h"><g filter="url(#a)" id="g112042"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112040" /></g></mask><clipPath id="i"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112045" /></clipPath><mask id="j"><g filter="url(#a)" id="g112050"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112048" /></g></mask><clipPath id="k"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112053" /></clipPath><mask id="l"><g filter="url(#a)" id="g112058"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112056" /></g></mask><clipPath id="m"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112061" /></clipPath><mask id="n"><g filter="url(#a)" id="g112066"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112064" /></g></mask><clipPath id="o"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112069" /></clipPath><mask id="p"><g filter="url(#a)" id="g112074"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.3" id="path112072" /></g></mask><clipPath id="q"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112077" /></clipPath><mask id="r"><g filter="url(#a)" id="g112082"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.5" id="path112080" /></g></mask><clipPath id="s"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112085" /></clipPath><mask id="t"><g filter="url(#a)" id="g112090"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.4" id="path112088" /></g></mask><clipPath id="u"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112093" /></clipPath><mask id="v"><g filter="url(#a)" id="g112098"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.4" id="path112096" /></g></mask><clipPath id="w"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112101" /></clipPath><mask id="x"><g filter="url(#a)" id="g112106"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.5" id="path112104" /></g></mask><clipPath id="y"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112109" /></clipPath><mask id="z"><g filter="url(#a)" id="g112114"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.5" id="path112112" /></g></mask><clipPath id="A"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112117" /></clipPath><filter id="a-5" height="1" width="1" x="0" y="0"><feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" id="feColorMatrix36614" /></filter><mask id="b-4"><g filter="url(#a)" id="g36619" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.3" id="path36617" /></g></mask><clipPath id="c-7"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36622" /></clipPath><mask id="d-6"><g filter="url(#a)" id="g36627" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36625" /></g></mask><clipPath id="e-5"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36630" /></clipPath><mask id="f-6"><g filter="url(#a)" id="g36635" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36633" /></g></mask><clipPath id="g-9"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36638" /></clipPath><mask id="h-3"><g filter="url(#a)" id="g36643" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36641" /></g></mask><clipPath id="i-7"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36646" /></clipPath><mask id="j-4"><g filter="url(#a)" id="g36651" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36649" /></g></mask><clipPath id="k-5"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36654" /></clipPath><mask id="l-2"><g filter="url(#a)" id="g36659" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36657" /></g></mask><clipPath id="m-5"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36662" /></clipPath><mask id="n-4"><g filter="url(#a)" id="g36667" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36665" /></g></mask><clipPath id="o-7"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36670" /></clipPath><mask id="p-4"><g filter="url(#a)" id="g36675" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.3" id="path36673" /></g></mask><clipPath id="q-4"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36678" /></clipPath><mask id="r-3"><g filter="url(#a)" id="g36683" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.5" id="path36681" /></g></mask><clipPath id="s-0"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36686" /></clipPath><g id="g23519" style="stroke-width:1.77641" transform="matrix(0.56530016,0,0,0.56057828,1574.4851,-804.43556)" inkscape:label="interleave-reverse-after" inkscape:export-filename="scaner-icons/interleave-reverse-after.svg" inkscape:export-xdpi="90" inkscape:export-ydpi="90"><rect style="opacity:1;fill:#c1d8f3;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect23471" width="14.816667" height="20.108334" x="3343.2952" y="-222.37726" rx="2.8082428" ry="2.8318973" inkscape:export-filename="./interlave-before.svg" inkscape:export-xdpi="90" inkscape:export-ydpi="90" inkscape:label="6" /><text xml:space="preserve" transform="matrix(0.53168659,0,0,0.53260281,2152.0523,-1667.5131)" id="text23477" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect23521);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0" inkscape:label="6l"><tspan x="2257.8163" y="2745.5048" id="tspan25030"><tspan style="text-align:center;text-anchor:middle" id="tspan25028">4</tspan></tspan></text><rect style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect23479" width="14.816667" height="20.108334" x="3334.3013" y="-225.55232" rx="2.8082428" ry="2.8318973" inkscape:label="3" /><text xml:space="preserve" transform="matrix(0.53168659,0,0,0.53260281,2143.0559,-1670.6883)" id="text23485" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect23523);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0" inkscape:label="3l"><tspan x="2258.0188" y="2745.5048" id="tspan25034"><tspan style="text-align:center;text-anchor:middle" id="tspan25032">3</tspan></tspan></text><rect style="opacity:1;fill:#c1d8f3;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect23487" width="14.816667" height="20.108334" x="3325.2803" y="-228.72739" rx="2.8082428" ry="2.8318973" inkscape:label="5" /><text xml:space="preserve" transform="matrix(0.53168659,0,0,0.53260281,2134.0595,-1673.8635)" id="text23493" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect23525);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0" inkscape:label="5l"><tspan x="2258.0662" y="2745.5048" id="tspan25038"><tspan style="text-align:center;text-anchor:middle" id="tspan25036">5</tspan></tspan></text><rect style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect23495" width="14.816667" height="20.108334" x="3316.8376" y="-231.90225" rx="2.8082428" ry="2.8318973" inkscape:label="2" /><text xml:space="preserve" transform="matrix(0.53168659,0,0,0.53260281,2125.5935,-1677.0381)" id="text23501" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect23527);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0" inkscape:label="2l"><tspan x="2258.1093" y="2745.5048" id="tspan25042"><tspan style="text-align:center;text-anchor:middle" id="tspan25040">2</tspan></tspan></text><rect style="opacity:1;fill:#c1d8f3;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect23503" width="14.816667" height="20.108334" x="3307.8438" y="-235.07732" rx="2.8082428" ry="2.8318973" inkscape:label="4" /><text xml:space="preserve" transform="matrix(0.5316866,0,0,0.53260283,2116.7986,-1680.2131)" id="text23509" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect23529);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0" inkscape:label="4l"><tspan x="2257.924" y="2745.5048" id="tspan25046"><tspan style="text-align:center;text-anchor:middle" id="tspan25044">6</tspan></tspan></text><rect style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect23511" width="14.816667" height="20.108334" x="3298.2927" y="-238.25237" rx="2.8082428" ry="2.8318973" inkscape:label="1" /><text xml:space="preserve" transform="matrix(0.53168659,0,0,0.53260281,2107.6007,-1683.3885)" id="text23517" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect23531);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0" inkscape:label="1l"><tspan x="2258.5316" y="2745.5048" id="tspan25050"><tspan style="text-align:center;text-anchor:middle" id="tspan25048">1</tspan></tspan></text></g></g></svg> \ No newline at end of file
diff --git a/data/icons/scalable/actions/reverse-after.svg b/data/icons/scalable/actions/reverse-after.svg
new file mode 100644
index 0000000..a3f7bd8
--- /dev/null
+++ b/data/icons/scalable/actions/reverse-after.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg width="129.81598" height="78.230484" viewBox="0 0 34.347144 20.698483" version="1.1" id="svg8" sodipodi:docname="page-order-design.svg" inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" inkscape:export-filename="document-scanner.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90" xml:space="preserve" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"><defs id="defs2"><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect20113" /><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect20115" /><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect20117" /><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect20119" /><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect20121" /><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect20123" /></defs><sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="1" inkscape:pageshadow="2" inkscape:zoom="0.7071068" inkscape:cx="533.1585" inkscape:cy="309.71276" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="false" units="px" inkscape:pagecheckerboard="false" inkscape:window-width="1920" inkscape:window-height="1011" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="1" inkscape:snap-page="true" inkscape:snap-text-baseline="false" inkscape:snap-center="false" inkscape:snap-object-midpoints="true" inkscape:object-paths="true" inkscape:snap-intersection-paths="true" inkscape:snap-bbox="true" inkscape:bbox-paths="true" inkscape:bbox-nodes="true" inkscape:snap-bbox-edge-midpoints="false" inkscape:snap-bbox-midpoints="false" inkscape:snap-smooth-nodes="true" inkscape:snap-midpoints="true" inkscape:snap-nodes="false" inkscape:snap-global="true" inkscape:snap-others="false" fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" showguides="false" inkscape:showpageshadow="false" inkscape:guide-bbox="true" inkscape:deskcolor="#d1d1d1"><inkscape:grid type="xygrid" id="grid3492" originx="-3346.8095" originy="-757.24808" /><sodipodi:guide position="358.64005,-431.32184" orientation="1,0" id="guide241284" inkscape:locked="false" /><sodipodi:guide position="459.1817,-433.96768" orientation="1,0" id="guide241286" inkscape:locked="false" /><sodipodi:guide position="408.91089,-478.94685" orientation="1,0" id="guide241528" inkscape:locked="false" /></sodipodi:namedview><metadata id="metadata5"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><g inkscape:label="PageOrder" inkscape:groupmode="layer" id="layer1" transform="translate(-3398.4434,912.77681)"><filter id="a" height="1" width="1" x="0" y="0"><feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" id="feColorMatrix112013" /></filter><mask id="b"><g filter="url(#a)" id="g112018"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.3" id="path112016" /></g></mask><clipPath id="c"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112021" /></clipPath><mask id="d"><g filter="url(#a)" id="g112026"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112024" /></g></mask><clipPath id="e"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112029" /></clipPath><mask id="f"><g filter="url(#a)" id="g112034"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112032" /></g></mask><clipPath id="g"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112037" /></clipPath><mask id="h"><g filter="url(#a)" id="g112042"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112040" /></g></mask><clipPath id="i"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112045" /></clipPath><mask id="j"><g filter="url(#a)" id="g112050"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112048" /></g></mask><clipPath id="k"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112053" /></clipPath><mask id="l"><g filter="url(#a)" id="g112058"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112056" /></g></mask><clipPath id="m"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112061" /></clipPath><mask id="n"><g filter="url(#a)" id="g112066"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112064" /></g></mask><clipPath id="o"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112069" /></clipPath><mask id="p"><g filter="url(#a)" id="g112074"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.3" id="path112072" /></g></mask><clipPath id="q"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112077" /></clipPath><mask id="r"><g filter="url(#a)" id="g112082"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.5" id="path112080" /></g></mask><clipPath id="s"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112085" /></clipPath><mask id="t"><g filter="url(#a)" id="g112090"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.4" id="path112088" /></g></mask><clipPath id="u"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112093" /></clipPath><mask id="v"><g filter="url(#a)" id="g112098"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.4" id="path112096" /></g></mask><clipPath id="w"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112101" /></clipPath><mask id="x"><g filter="url(#a)" id="g112106"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.5" id="path112104" /></g></mask><clipPath id="y"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112109" /></clipPath><mask id="z"><g filter="url(#a)" id="g112114"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.5" id="path112112" /></g></mask><clipPath id="A"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112117" /></clipPath><filter id="a-5" height="1" width="1" x="0" y="0"><feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" id="feColorMatrix36614" /></filter><mask id="b-4"><g filter="url(#a)" id="g36619" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.3" id="path36617" /></g></mask><clipPath id="c-7"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36622" /></clipPath><mask id="d-6"><g filter="url(#a)" id="g36627" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36625" /></g></mask><clipPath id="e-5"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36630" /></clipPath><mask id="f-6"><g filter="url(#a)" id="g36635" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36633" /></g></mask><clipPath id="g-9"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36638" /></clipPath><mask id="h-3"><g filter="url(#a)" id="g36643" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36641" /></g></mask><clipPath id="i-7"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36646" /></clipPath><mask id="j-4"><g filter="url(#a)" id="g36651" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36649" /></g></mask><clipPath id="k-5"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36654" /></clipPath><mask id="l-2"><g filter="url(#a)" id="g36659" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36657" /></g></mask><clipPath id="m-5"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36662" /></clipPath><mask id="n-4"><g filter="url(#a)" id="g36667" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36665" /></g></mask><clipPath id="o-7"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36670" /></clipPath><mask id="p-4"><g filter="url(#a)" id="g36675" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.3" id="path36673" /></g></mask><clipPath id="q-4"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36678" /></clipPath><mask id="r-3"><g filter="url(#a)" id="g36683" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.5" id="path36681" /></g></mask><clipPath id="s-0"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36686" /></clipPath><g id="g20099" style="stroke-width:1.77641" transform="matrix(0.56530016,0,0,0.56057828,1534.1837,-778.95423)" inkscape:label="reverse-after" inkscape:export-filename="reverse-after.svg" inkscape:export-xdpi="90" inkscape:export-ydpi="90"><rect style="opacity:1;fill:#c1d8f3;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect20051" width="14.816667" height="20.108334" x="3343.2952" y="-222.37726" rx="2.8082428" ry="2.8318973" inkscape:export-filename="./interlave-before.svg" inkscape:export-xdpi="90" inkscape:export-ydpi="90" /><text xml:space="preserve" transform="matrix(0.53168659,0,0,0.53260281,2152.0523,-1667.5131)" id="text20057" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect20113);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0"><tspan x="2258.5316" y="2745.5048" id="tspan29026"><tspan style="text-align:center;text-anchor:middle" id="tspan29024">1</tspan></tspan></text><rect style="opacity:1;fill:#ccdff5;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect20059" width="14.816667" height="20.108334" x="3334.3013" y="-225.55232" rx="2.8082428" ry="2.8318973" /><text xml:space="preserve" transform="matrix(0.53168659,0,0,0.53260281,2143.0559,-1670.6883)" id="text20065" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect20115);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0"><tspan x="2258.1093" y="2745.5048" id="tspan29030"><tspan style="text-align:center;text-anchor:middle" id="tspan29028">2</tspan></tspan></text><rect style="opacity:1;fill:#d8e8f8;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect20067" width="14.816667" height="20.108334" x="3325.2803" y="-228.72739" rx="2.8082428" ry="2.8318973" /><text xml:space="preserve" transform="matrix(0.53168659,0,0,0.53260281,2134.0595,-1673.8635)" id="text20073" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect20117);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0"><tspan x="2258.0188" y="2745.5048" id="tspan29034"><tspan style="text-align:center;text-anchor:middle" id="tspan29032">3</tspan></tspan></text><rect style="opacity:1;fill:#f6fafe;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect20075" width="14.816667" height="20.108334" x="3316.8376" y="-231.90225" rx="2.8082428" ry="2.8318973" /><text xml:space="preserve" transform="matrix(0.53168659,0,0,0.53260281,2125.5935,-1677.0381)" id="text20081" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect20119);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0"><tspan x="2257.8163" y="2745.5048" id="tspan29038"><tspan style="text-align:center;text-anchor:middle" id="tspan29036">4</tspan></tspan></text><rect style="opacity:1;fill:#f6fafe;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect20083" width="14.816667" height="20.108334" x="3307.8438" y="-235.07732" rx="2.8082428" ry="2.8318973" /><text xml:space="preserve" transform="matrix(0.53168659,0,0,0.53260281,2116.5971,-1680.2133)" id="text20089" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect20121);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0"><tspan x="2258.0662" y="2745.5048" id="tspan29042"><tspan style="text-align:center;text-anchor:middle" id="tspan29040">5</tspan></tspan></text><rect style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect20091" width="14.816667" height="20.108334" x="3298.2927" y="-238.25237" rx="2.8082428" ry="2.8318973" /><text xml:space="preserve" transform="matrix(0.53168659,0,0,0.53260281,2107.6007,-1683.3885)" id="text20097" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect20123);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0"><tspan x="2257.924" y="2745.5048" id="tspan29046"><tspan style="text-align:center;text-anchor:middle" id="tspan29044">6</tspan></tspan></text></g></g></svg> \ No newline at end of file
diff --git a/data/icons/scalable/actions/reverse-before.svg b/data/icons/scalable/actions/reverse-before.svg
new file mode 100644
index 0000000..f159483
--- /dev/null
+++ b/data/icons/scalable/actions/reverse-before.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg width="129.81598" height="78.230484" viewBox="0 0 34.347144 20.698483" version="1.1" id="svg8" sodipodi:docname="page-order-design.svg" inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" inkscape:export-filename="document-scanner.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90" xml:space="preserve" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"><defs id="defs2"><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect20101" /><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect20103" /><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect20105" /><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect20107" /><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect20109" /><rect x="2164.6523" y="2737.7656" width="191.67969" height="131.54688" id="rect20111" /></defs><sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="1" inkscape:pageshadow="2" inkscape:zoom="0.7071068" inkscape:cx="533.1585" inkscape:cy="309.71276" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="false" units="px" inkscape:pagecheckerboard="false" inkscape:window-width="1920" inkscape:window-height="1011" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="1" inkscape:snap-page="true" inkscape:snap-text-baseline="false" inkscape:snap-center="false" inkscape:snap-object-midpoints="true" inkscape:object-paths="true" inkscape:snap-intersection-paths="true" inkscape:snap-bbox="true" inkscape:bbox-paths="true" inkscape:bbox-nodes="true" inkscape:snap-bbox-edge-midpoints="false" inkscape:snap-bbox-midpoints="false" inkscape:snap-smooth-nodes="true" inkscape:snap-midpoints="true" inkscape:snap-nodes="false" inkscape:snap-global="true" inkscape:snap-others="false" fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" showguides="false" inkscape:showpageshadow="false" inkscape:guide-bbox="true" inkscape:deskcolor="#d1d1d1"><inkscape:grid type="xygrid" id="grid3492" originx="-3346.8095" originy="-757.24808" /><sodipodi:guide position="396.80615,-431.32184" orientation="1,0" id="guide241284" inkscape:locked="false" /><sodipodi:guide position="497.3478,-433.96768" orientation="1,0" id="guide241286" inkscape:locked="false" /><sodipodi:guide position="447.07699,-478.94685" orientation="1,0" id="guide241528" inkscape:locked="false" /></sodipodi:namedview><metadata id="metadata5"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><g inkscape:label="PageOrder" inkscape:groupmode="layer" id="layer1" transform="translate(-3360.2773,912.77681)"><filter id="a" height="1" width="1" x="0" y="0"><feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" id="feColorMatrix112013" /></filter><mask id="b"><g filter="url(#a)" id="g112018"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.3" id="path112016" /></g></mask><clipPath id="c"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112021" /></clipPath><mask id="d"><g filter="url(#a)" id="g112026"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112024" /></g></mask><clipPath id="e"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112029" /></clipPath><mask id="f"><g filter="url(#a)" id="g112034"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112032" /></g></mask><clipPath id="g"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112037" /></clipPath><mask id="h"><g filter="url(#a)" id="g112042"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112040" /></g></mask><clipPath id="i"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112045" /></clipPath><mask id="j"><g filter="url(#a)" id="g112050"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112048" /></g></mask><clipPath id="k"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112053" /></clipPath><mask id="l"><g filter="url(#a)" id="g112058"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112056" /></g></mask><clipPath id="m"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112061" /></clipPath><mask id="n"><g filter="url(#a)" id="g112066"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path112064" /></g></mask><clipPath id="o"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112069" /></clipPath><mask id="p"><g filter="url(#a)" id="g112074"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.3" id="path112072" /></g></mask><clipPath id="q"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112077" /></clipPath><mask id="r"><g filter="url(#a)" id="g112082"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.5" id="path112080" /></g></mask><clipPath id="s"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112085" /></clipPath><mask id="t"><g filter="url(#a)" id="g112090"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.4" id="path112088" /></g></mask><clipPath id="u"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112093" /></clipPath><mask id="v"><g filter="url(#a)" id="g112098"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.4" id="path112096" /></g></mask><clipPath id="w"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112101" /></clipPath><mask id="x"><g filter="url(#a)" id="g112106"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.5" id="path112104" /></g></mask><clipPath id="y"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112109" /></clipPath><mask id="z"><g filter="url(#a)" id="g112114"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.5" id="path112112" /></g></mask><clipPath id="A"><path d="M 0,0 H 1024 V 800 H 0 Z" id="path112117" /></clipPath><filter id="a-5" height="1" width="1" x="0" y="0"><feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" id="feColorMatrix36614" /></filter><mask id="b-4"><g filter="url(#a)" id="g36619" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.3" id="path36617" /></g></mask><clipPath id="c-7"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36622" /></clipPath><mask id="d-6"><g filter="url(#a)" id="g36627" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36625" /></g></mask><clipPath id="e-5"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36630" /></clipPath><mask id="f-6"><g filter="url(#a)" id="g36635" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36633" /></g></mask><clipPath id="g-9"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36638" /></clipPath><mask id="h-3"><g filter="url(#a)" id="g36643" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36641" /></g></mask><clipPath id="i-7"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36646" /></clipPath><mask id="j-4"><g filter="url(#a)" id="g36651" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36649" /></g></mask><clipPath id="k-5"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36654" /></clipPath><mask id="l-2"><g filter="url(#a)" id="g36659" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36657" /></g></mask><clipPath id="m-5"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36662" /></clipPath><mask id="n-4"><g filter="url(#a)" id="g36667" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.05" id="path36665" /></g></mask><clipPath id="o-7"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36670" /></clipPath><mask id="p-4"><g filter="url(#a)" id="g36675" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.3" id="path36673" /></g></mask><clipPath id="q-4"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36678" /></clipPath><mask id="r-3"><g filter="url(#a)" id="g36683" style="filter:url(#a-5)"><path d="M 0,0 H 16 V 16 H 0 Z" fill-opacity="0.5" id="path36681" /></g></mask><clipPath id="s-0"><path d="M 0,0 H 1600 V 1200 H 0 Z" id="path36686" /></clipPath><g id="g20049" style="stroke-width:1.77641" transform="matrix(0.56530016,0,0,0.56057828,1496.0176,-778.95423)" inkscape:label="reverse-before" inkscape:export-filename="scaner-icons/reverse-before.svg" inkscape:export-xdpi="90" inkscape:export-ydpi="90"><rect style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect20001" width="14.816667" height="20.108334" x="3343.2952" y="-222.37726" rx="2.8082428" ry="2.8318973" inkscape:export-filename="./interlave-before.svg" inkscape:export-xdpi="90" inkscape:export-ydpi="90" /><text xml:space="preserve" transform="matrix(0.53168659,0,0,0.53260281,2152.0523,-1667.5131)" id="text20007" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect20101);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0"><tspan x="2257.924" y="2745.5048" id="tspan26372"><tspan style="text-align:center;text-anchor:middle" id="tspan26370">6</tspan></tspan></text><rect style="opacity:1;fill:#f6fafe;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect20009" width="14.816667" height="20.108334" x="3334.3013" y="-225.55232" rx="2.8082428" ry="2.8318973" /><text xml:space="preserve" transform="matrix(0.53168659,0,0,0.53260281,2143.0559,-1670.6883)" id="text20015" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect20103);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0"><tspan x="2258.0662" y="2745.5048" id="tspan26376"><tspan style="text-align:center;text-anchor:middle" id="tspan26374">5</tspan></tspan></text><rect style="opacity:1;fill:#e4f0fb;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect20017" width="14.816667" height="20.108334" x="3325.2803" y="-228.72739" rx="2.8082428" ry="2.8318973" /><text xml:space="preserve" transform="matrix(0.53168659,0,0,0.53260281,2134.0595,-1673.8635)" id="text20023" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect20105);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0"><tspan x="2257.8163" y="2745.5048" id="tspan26380"><tspan style="text-align:center;text-anchor:middle" id="tspan26378">4</tspan></tspan></text><rect style="opacity:1;fill:#d8e8f8;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect20025" width="14.816667" height="20.108334" x="3316.8376" y="-231.90225" rx="2.8082428" ry="2.8318973" /><text xml:space="preserve" transform="matrix(0.53168659,0,0,0.53260281,2125.5935,-1677.0381)" id="text20031" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect20107);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0"><tspan x="2258.0188" y="2745.5048" id="tspan26384"><tspan style="text-align:center;text-anchor:middle" id="tspan26382">3</tspan></tspan></text><rect style="opacity:1;fill:#ccdff5;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect20033" width="14.816667" height="20.108334" x="3307.8438" y="-235.07732" rx="2.8082428" ry="2.8318973" /><text xml:space="preserve" transform="matrix(0.53168659,0,0,0.53260281,2116.5971,-1680.2133)" id="text20039" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect20109);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0"><tspan x="2258.1093" y="2745.5048" id="tspan26388"><tspan style="text-align:center;text-anchor:middle" id="tspan26386">2</tspan></tspan></text><rect style="opacity:1;fill:#c1d8f3;fill-opacity:1;stroke:#3584e4;stroke-width:0.940016;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" id="rect20041" width="14.816667" height="20.108334" x="3298.2927" y="-238.25237" rx="2.8082428" ry="2.8318973" /><text xml:space="preserve" transform="matrix(0.53168659,0,0,0.53260281,2107.6007,-1683.3885)" id="text20047" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.61817px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell, @wght=700';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 700;white-space:pre;shape-inside:url(#rect20111);display:inline;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.883233" x="2.8013399" y="0"><tspan x="2258.5316" y="2745.5048" id="tspan26392"><tspan style="text-align:center;text-anchor:middle" id="tspan26390">1</tspan></tspan></text></g></g></svg> \ No newline at end of file
diff --git a/data/icons/scalable/actions/right-large-symbolic.svg b/data/icons/scalable/actions/right-large-symbolic.svg
new file mode 100644
index 0000000..1b59d17
--- /dev/null
+++ b/data/icons/scalable/actions/right-large-symbolic.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 4 0.996094 v 1 c 0 0.296875 0.125 0.558594 0.328125 0.742187 l 5.257813 5.257813 l -5.257813 5.261718 l -0.035156 0.03125 c -0.179688 0.183594 -0.292969 0.433594 -0.292969 0.707032 v 1 h 1 c 0.277344 0 0.527344 -0.109375 0.707031 -0.292969 l 0.035157 -0.03125 l 6.671874 -6.675781 l -6.671874 -6.671875 c -0.183594 -0.199219 -0.449219 -0.328125 -0.742188 -0.328125 z m 0 0" fill="#222222"/></svg>
diff --git a/data/meson.build b/data/meson.build
index cf6e4ae..fb8959b 100644
--- a/data/meson.build
+++ b/data/meson.build
@@ -15,22 +15,43 @@ i18n.merge_file (input: 'simple-scan.desktop.in',
po_dir: '../po',
type: 'desktop')
-i18n.merge_file (input: 'simple-scan.appdata.xml.in',
- output: 'simple-scan.appdata.xml',
+appdata_file = i18n.merge_file (input: 'org.gnome.SimpleScan.appdata.xml.in',
+ output: 'org.gnome.SimpleScan.appdata.xml',
install: true,
install_dir: join_paths (datadir, 'metainfo'),
po_dir: '../po')
+# Validate Appdata
+appstreamcli = find_program('appstreamcli', required: false)
+if appstreamcli.found()
+ test('validate-appdata',
+ appstreamcli,
+ args: ['validate', '--no-net', '--explain', appdata_file.full_path()],
+ depends: appdata_file)
+endif
+
install_man ('simple-scan.1')
resource_files = files([
'icons/scalable/actions/scan-type-adf-symbolic.svg',
'icons/scalable/actions/scan-type-batch-symbolic.svg',
'icons/scalable/actions/crop-symbolic.svg',
+ 'icons/scalable/actions/right-large-symbolic.svg',
+ 'icons/scalable/actions/interleave-before.svg',
+ 'icons/scalable/actions/interleave-after.svg',
+ 'icons/scalable/actions/interleave-reverse-after.svg',
+ 'icons/scalable/actions/reverse-before.svg',
+ 'icons/scalable/actions/reverse-after.svg',
+ 'icons/scalable/actions/flip-before.svg',
+ 'icons/scalable/actions/flip-even.svg',
+ 'icons/scalable/actions/flip-odd.svg',
'ui/app-window.ui',
'ui/authorize-dialog.ui',
+ 'ui/drivers-dialog.ui',
'ui/help-overlay.ui',
'ui/preferences-dialog.ui',
+ 'ui/reorder-pages-item.ui',
+ 'ui/reorder-pages-dialog.ui',
])
resources = gnome.compile_resources ('resources', 'simple-scan.gresource.xml',
dependencies: resource_files,
diff --git a/data/simple-scan.appdata.xml.in b/data/org.gnome.SimpleScan.appdata.xml.in
index 1f10b94..18db3e8 100644
--- a/data/simple-scan.appdata.xml.in
+++ b/data/org.gnome.SimpleScan.appdata.xml.in
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop">
- <id>simple-scan.desktop</id>
+ <id>org.gnome.SimpleScan</id>
<metadata_license>CC0-1.0</metadata_license>
<project_license>GPL-3.0+</project_license>
<name>Document Scanner</name>
@@ -20,12 +20,26 @@
<image type="source">https://gitlab.gnome.org/GNOME/simple-scan/raw/HEAD/data/screenshots/simple-scan-1.png</image>
</screenshot>
</screenshots>
- <url type="homepage">https://gitlab.gnome.org/GNOME/simple-scan</url>
+ <url type="homepage">https://apps.gnome.org/SimpleScan/</url>
<url type="bugtracker">https://gitlab.gnome.org/GNOME/simple-scan/issues</url>
- <url type="donation">https://www.gnome.org/friends/</url>
+ <url type="donation">https://www.gnome.org/donate/</url>
<url type="vcs-browser">https://gitlab.gnome.org/GNOME/simple-scan</url>
+ <url type="translate">https://l10n.gnome.org/module/simple-scan/</url>
+ <!-- developer_name tag deprecated with Appstream 1.0 -->
<developer_name>The GNOME Project</developer_name>
+ <developer id="gnome.org">
+ <name>The GNOME Project</name>
+ </developer>
<releases>
+ <release date="2024-03-18" version="46.0">
+ <description>
+ <ul>
+ <li>Switch to GTK4 and libadwaita</li>
+ <li>Implement redesign</li>
+ <li>Updated translations</li>
+ </ul>
+ </description>
+ </release>
<release date="2023-03-19" version="44.0">
<description>
<ul>
@@ -98,7 +112,7 @@
</p>
</description>
</release>
- <release date="2021-02-25" version="40.beta" type="development">
+ <release date="2021-02-25" version="40~beta" type="development">
<description>
<p>
This is an unstable release in the 40 development series,
@@ -153,4 +167,5 @@
<content_rating type="oars-1.1" />
<update_contact>robert.ancell_AT_canonical.com</update_contact>
<translation type="gettext">simple-scan</translation>
+ <launchable type="desktop-id">simple-scan.desktop</launchable>
</component>
diff --git a/data/simple-scan.gresource.xml b/data/simple-scan.gresource.xml
index b913b39..77a207c 100644
--- a/data/simple-scan.gresource.xml
+++ b/data/simple-scan.gresource.xml
@@ -4,10 +4,25 @@
<file preprocess="xml-stripblanks">ui/app-window.ui</file>
<file preprocess="xml-stripblanks">ui/preferences-dialog.ui</file>
<file preprocess="xml-stripblanks">ui/authorize-dialog.ui</file>
+ <file preprocess="xml-stripblanks">ui/drivers-dialog.ui</file>
+ <file preprocess="xml-stripblanks">ui/reorder-pages-item.ui</file>
+ <file preprocess="xml-stripblanks">ui/reorder-pages-dialog.ui</file>
<file preprocess="xml-stripblanks" alias="gtk/help-overlay.ui">ui/help-overlay.ui</file>
<file preprocess="xml-stripblanks">icons/scalable/actions/scan-type-adf-symbolic.svg</file>
<file preprocess="xml-stripblanks">icons/scalable/actions/scan-type-batch-symbolic.svg</file>
<file preprocess="xml-stripblanks">icons/scalable/actions/crop-symbolic.svg</file>
+ <file preprocess="xml-stripblanks">icons/scalable/actions/right-large-symbolic.svg</file>
+
+ <file preprocess="xml-stripblanks">icons/scalable/actions/interleave-before.svg</file>
+ <file preprocess="xml-stripblanks">icons/scalable/actions/interleave-after.svg</file>
+ <file preprocess="xml-stripblanks">icons/scalable/actions/interleave-reverse-after.svg</file>
+
+ <file preprocess="xml-stripblanks">icons/scalable/actions/reverse-before.svg</file>
+ <file preprocess="xml-stripblanks">icons/scalable/actions/reverse-after.svg</file>
+
+ <file preprocess="xml-stripblanks">icons/scalable/actions/flip-before.svg</file>
+ <file preprocess="xml-stripblanks">icons/scalable/actions/flip-even.svg</file>
+ <file preprocess="xml-stripblanks">icons/scalable/actions/flip-odd.svg</file>
</gresource>
</gresources>
diff --git a/data/ui/app-window.ui b/data/ui/app-window.ui
index 744b8c2..05ac374 100644
--- a/data/ui/app-window.ui
+++ b/data/ui/app-window.ui
@@ -1,505 +1,186 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.22.1 -->
<interface>
- <requires lib="gtk+" version="3.12"/>
- <object class="GtkMenu" id="page_menu">
- <property name="visible">True</property>
- <child>
- <object class="GtkMenuItem" id="rotate_left_menuitem">
- <property name="visible">True</property>
- <property name="label" translatable="yes" comments="Menu item to rotate page to left (anti-clockwise)">Rotate _Left</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="rotate_left_button_clicked_cb" swapped="no"/>
- <accelerator key="bracketleft" signal="activate"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="rotate_right_menuitem">
- <property name="visible">True</property>
- <property name="label" translatable="yes" comments="Menu item to rotate page to right (clockwise)">Rotate _Right</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="rotate_right_button_clicked_cb" swapped="no"/>
- <accelerator key="bracketright" signal="activate"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="crop_menuitem">
- <property name="visible">True</property>
- <property name="label" translatable="yes" comments="Label for page crop submenu">_Crop</property>
- <property name="use_underline">True</property>
- <child type="submenu">
- <object class="GtkMenu" id="crop_menu">
- <property name="visible">True</property>
- <child>
- <object class="GtkRadioMenuItem" id="no_crop_menuitem">
- <property name="visible">True</property>
- <property name="label" translatable="yes" comments="Radio button for no crop">_None</property>
- <property name="use_underline">True</property>
- <property name="active">True</property>
- <property name="draw_as_radio">True</property>
- <signal name="toggled" handler="no_crop_menuitem_toggled_cb" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkRadioMenuItem" id="a4_menuitem">
- <property name="visible">True</property>
- <property name="label" translatable="yes" comments="Radio button for cropping page to A4 size">A_4</property>
- <property name="use_underline">True</property>
- <property name="draw_as_radio">True</property>
- <property name="group">no_crop_menuitem</property>
- <signal name="toggled" handler="a4_menuitem_toggled_cb" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkRadioMenuItem" id="a5_menuitem">
- <property name="visible">True</property>
- <property name="label" translatable="yes" comments="Radio button for cropping page to A5 size">A_5</property>
- <property name="use_underline">True</property>
- <property name="draw_as_radio">True</property>
- <property name="group">no_crop_menuitem</property>
- <signal name="toggled" handler="a5_menuitem_toggled_cb" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkRadioMenuItem" id="a6_menuitem">
- <property name="visible">True</property>
- <property name="use_underline">True</property>
- <property name="draw_as_radio">True</property>
- <property name="group">no_crop_menuitem</property>
- <signal name="toggled" handler="a6_menuitem_toggled_cb" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkRadioMenuItem" id="letter_menuitem">
- <property name="visible">True</property>
- <property name="label" translatable="yes" comments="Radio button for cropping page to US letter size">_Letter</property>
- <property name="use_underline">True</property>
- <property name="draw_as_radio">True</property>
- <property name="group">no_crop_menuitem</property>
- <signal name="toggled" handler="letter_menuitem_toggled_cb" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkRadioMenuItem" id="legal_menuitem">
- <property name="visible">True</property>
- <property name="label" translatable="yes" comments="Radio button for cropping to page to US legal size">Le_gal</property>
- <property name="use_underline">True</property>
- <property name="draw_as_radio">True</property>
- <property name="group">no_crop_menuitem</property>
- <signal name="toggled" handler="legal_menuitem_toggled_cb" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkRadioMenuItem" id="four_by_six_menuitem">
- <property name="visible">True</property>
- <property name="label" translatable="yes" comments="Radio button for cropping page to 4x6 inch">4×6</property>
- <property name="use_underline">True</property>
- <property name="draw_as_radio">True</property>
- <property name="group">no_crop_menuitem</property>
- <signal name="toggled" handler="four_by_six_menuitem_toggled_cb" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkRadioMenuItem" id="a3_menuitem">
- <property name="visible">True</property>
- <property name="label" translatable="yes" comments="Radio button for cropping page to A3">A_3</property>
- <property name="use_underline">True</property>
- <property name="draw_as_radio">True</property>
- <property name="group">no_crop_menuitem</property>
- <signal name="toggled" handler="a3_menuitem_toggled_cb" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkRadioMenuItem" id="custom_crop_menuitem">
- <property name="visible">True</property>
- <property name="label" translatable="yes" comments="Radio button for cropping to custom page size">_Custom</property>
- <property name="use_underline">True</property>
- <property name="draw_as_radio">True</property>
- <property name="group">no_crop_menuitem</property>
- <signal name="toggled" handler="custom_crop_menuitem_toggled_cb" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkSeparatorMenuItem" id="crop_sep_menuitem">
- <property name="visible">True</property>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="crop_rotate_menuitem">
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="label" translatable="yes" comments="Menu item to rotate the crop area">_Rotate Crop</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="crop_rotate_menuitem_activate_cb" swapped="no"/>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="page_move_left_menuitem">
- <property name="visible">True</property>
- <property name="label" translatable="yes" comments="Menu item to move the selected page to the left">Move Left</property>
- <signal name="activate" handler="page_move_left_menuitem_activate_cb" swapped="no"/>
- <accelerator key="less" signal="activate"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="page_move_right_menuitem">
- <property name="visible">True</property>
- <property name="label" translatable="yes" comments="Menu item to move the selected page to the right">Move Right</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="page_move_right_menuitem_activate_cb" swapped="no"/>
- <accelerator key="greater" signal="activate"/>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="copy_to_clipboard_menuitem">
- <property name="label">gtk-copy</property>
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- <signal name="activate" handler="copy_to_clipboard_button_clicked_cb" swapped="no"/>
- <accelerator key="c" signal="activate" modifiers="GDK_CONTROL_MASK"/>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="page_delete_menuitem">
- <property name="label">gtk-delete</property>
- <property name="visible">True</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- <signal name="activate" handler="page_delete_menuitem_activate_cb" swapped="no"/>
- <accelerator key="Delete" signal="activate"/>
- </object>
- </child>
- </object>
- <object class="GtkListStore" id="device_model">
- <columns>
- <!-- column-name device_name -->
- <column type="gchararray"/>
- <!-- column-name label -->
- <column type="gchararray"/>
- </columns>
- </object>
- <object class="GtkPopover" id="scan_options_popover">
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="margin_left">12</property>
- <property name="margin_right">12</property>
- <property name="margin_top">12</property>
- <property name="margin_bottom">12</property>
- <property name="orientation">vertical</property>
- <property name="spacing">6</property>
- <child>
- <object class="GtkRadioButton" id="scan_single_radio">
- <property name="visible">True</property>
- <property name="receives_default">False</property>
- <property name="draw_indicator">False</property>
- <signal name="toggled" handler="scan_single_radio_toggled_cb" swapped="no"/>
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="margin_start">12</property>
- <property name="margin_end">12</property>
- <property name="margin_top">6</property>
- <property name="margin_bottom">6</property>
- <property name="spacing">12</property>
- <child>
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="icon_name">scanner-symbolic</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Single Page</property>
- <property name="use_underline">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="scan_adf_radio">
- <property name="visible">True</property>
- <property name="receives_default">False</property>
- <property name="draw_indicator">False</property>
- <property name="group">scan_single_radio</property>
- <signal name="toggled" handler="scan_adf_radio_toggled_cb" swapped="no"/>
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="margin_start">12</property>
- <property name="margin_end">12</property>
- <property name="margin_top">6</property>
- <property name="margin_bottom">6</property>
- <property name="spacing">12</property>
- <child>
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="icon_name">scan-type-adf-symbolic</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="label" translatable="yes">All Pages From _Feeder</property>
- <property name="use_underline">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="scan_batch_radio">
- <property name="visible">True</property>
- <property name="receives_default">False</property>
- <property name="draw_indicator">False</property>
- <property name="group">scan_single_radio</property>
- <signal name="toggled" handler="scan_batch_radio_toggled_cb" swapped="no"/>
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="margin_start">12</property>
- <property name="margin_end">12</property>
- <property name="margin_top">6</property>
- <property name="margin_bottom">6</property>
- <property name="spacing">12</property>
- <child>
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="icon_name">scan-type-batch-symbolic</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Multiple Pages From Flatbed</property>
- <property name="use_underline">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="text_radio">
- <property name="visible">True</property>
- <property name="receives_default">False</property>
- <property name="margin_top">12</property>
- <property name="draw_indicator">False</property>
- <signal name="toggled" handler="text_radio_toggled_cb" swapped="no"/>
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="margin_start">12</property>
- <property name="margin_end">12</property>
- <property name="margin_top">6</property>
- <property name="margin_bottom">6</property>
- <property name="spacing">12</property>
- <child>
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="icon_name">x-office-document-symbolic</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Text</property>
- <property name="use_underline">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">3</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="photo_radio">
- <property name="visible">True</property>
- <property name="receives_default">False</property>
- <property name="draw_indicator">False</property>
- <property name="group">text_radio</property>
- <signal name="toggled" handler="photo_radio_toggled_cb" swapped="no"/>
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="margin_start">12</property>
- <property name="margin_end">12</property>
- <property name="margin_top">6</property>
- <property name="margin_bottom">6</property>
- <property name="spacing">12</property>
- <child>
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="icon_name">image-x-generic-symbolic</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Image</property>
- <property name="use_underline">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="preferences_button">
- <property name="label" translatable="yes">_Preferences</property>
- <property name="height_request">40</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="margin_top">12</property>
- <property name="use_underline">True</property>
- <signal name="clicked" handler="preferences_button_clicked_cb" swapped="no"/>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">5</property>
- </packing>
- </child>
- </object>
- </child>
- </object>
- <template class="AppWindow" parent="HdyApplicationWindow">
+ <requires lib="gtk" version="4.0"/>
+ <requires lib="libadwaita" version="1.0"/>
+
+ <menu id="context-menu">
+ <item>
+ <attribute name="label" translatable="yes" comments="Menu item to rotate page to left (anti-clockwise)">Rotate _Left</attribute>
+ <attribute name="action">app.rotate_left</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes" comments="Menu item to rotate page to right (clockwise)">Rotate _Right</attribute>
+ <attribute name="action">app.rotate_right</attribute>
+ </item>
+ <submenu>
+ <attribute name="label" translatable="yes" comments="Label for page crop submenu">_Crop</attribute>
+
+ <section>
+ <item>
+ <attribute name="label" translatable="yes" comments="Radio button for no crop">_None</attribute>
+ <attribute name="action">crop.set</attribute>
+ <attribute name="target">none</attribute>
+ </item>
+
+ <item>
+ <attribute name="label" translatable="yes" comments="Radio button for cropping page to A4 size">A_4</attribute>
+ <attribute name="action">crop.set</attribute>
+ <attribute name="target">A4</attribute>
+ </item>
+
+ <item>
+ <attribute name="label" translatable="yes" comments="Radio button for cropping page to A5 size">A_5</attribute>
+ <attribute name="action">crop.set</attribute>
+ <attribute name="target">A5</attribute>
+ </item>
+
+ <item>
+ <attribute name="label" translatable="yes" comments="Radio button for cropping page to A6 size">A_6</attribute>
+ <attribute name="action">crop.set</attribute>
+ <attribute name="target">A6</attribute>
+ </item>
+
+ <item>
+ <attribute name="label" translatable="yes" comments="Radio button for cropping page to US letter size">_Letter</attribute>
+ <attribute name="action">crop.set</attribute>
+ <attribute name="target">letter</attribute>
+ </item>
+
+ <item>
+ <attribute name="label" translatable="yes" comments="Radio button for cropping to page to US legal size">Le_gal</attribute>
+ <attribute name="action">crop.set</attribute>
+ <attribute name="target">legal</attribute>
+ </item>
+
+ <item>
+ <attribute name="label" translatable="yes" comments="Radio button for cropping page to 4x6 inch">4×6</attribute>
+ <attribute name="action">crop.set</attribute>
+ <attribute name="target">4x6</attribute>
+ </item>
+
+ <item>
+ <attribute name="label" translatable="yes" comments="Radio button for cropping page to A3">A_3</attribute>
+ <attribute name="action">crop.set</attribute>
+ <attribute name="target">A3</attribute>
+ </item>
+
+ <item>
+ <attribute name="label" translatable="yes" comments="Radio button for cropping to custom page size">_Custom</attribute>
+ <attribute name="action">crop.set</attribute>
+ <attribute name="target">custom</attribute>
+ </item>
+ </section>
+
+ <section>
+ <item>
+ <attribute name="label" translatable="yes" comments="Menu item to rotate the crop area">_Rotate Crop</attribute>
+ <attribute name="action">crop.rotate</attribute>
+ </item>
+ </section>
+
+ </submenu>
+ <item>
+ <attribute name="label" translatable="yes" comments="Menu item to move the selected page to the left">Move Left</attribute>
+ <attribute name="action">app.move_left</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes" comments="Menu item to move the selected page to the right">Move Right</attribute>
+ <attribute name="action">app.move_right</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Copy</attribute>
+ <attribute name="action">app.copy_page</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Delete</attribute>
+ <attribute name="action">app.delete_page</attribute>
+ </item>
+ </menu>
+
+ <menu id="scan-menu">
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">_Single Page</attribute>
+ <attribute name="action">app.scan_type</attribute>
+ <attribute name="target">single</attribute>
+ </item>
+
+ <item>
+ <attribute name="label" translatable="yes">All Pages From _Feeder</attribute>
+ <attribute name="action">app.scan_type</attribute>
+ <attribute name="target">adf</attribute>
+ </item>
+
+ <item>
+ <attribute name="label" translatable="yes">_Multiple Pages From Flatbed</attribute>
+ <attribute name="action">app.scan_type</attribute>
+ <attribute name="target">batch</attribute>
+ </item>
+ </section>
+
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">_Text</attribute>
+ <attribute name="action">app.document_hint</attribute>
+ <attribute name="target">text</attribute>
+ </item>
+
+ <item>
+ <attribute name="label" translatable="yes">_Image</attribute>
+ <attribute name="action">app.document_hint</attribute>
+ <attribute name="target">photo</attribute>
+ </item>
+ </section>
+ </menu>
+
+ <template class="AppWindow" parent="AdwApplicationWindow">
<property name="width_request">320</property>
<property name="height_request">480</property>
<property name="title" translatable="yes" comments="Title of scan window">Document Scanner</property>
<property name="icon_name">org.gnome.SimpleScan</property>
- <signal name="delete-event" handler="window_delete_event_cb" swapped="no"/>
- <child>
+ <signal name="close-request" handler="window_close_request_cb" swapped="no"/>
+ <property name="content">
<object class="GtkBox">
- <property name="visible">True</property>
<property name="orientation">vertical</property>
+
<child>
- <object class="HdyHeaderBar" id="header_bar">
- <property name="visible">True</property>
- <property name="show_close_button">True</property>
- <child>
+ <object class="GtkPopoverMenu" id="page_menu">
+ <property name="menu-model">context-menu</property>
+ <property name="has_arrow">false</property>
+ <property name="halign">start</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="AdwHeaderBar" id="header_bar">
+ <child type="start">
<object class="GtkBox" id="open_box">
- <property name="visible">True</property>
<property name="valign">center</property>
+ <property name="margin-start">6</property>
+ <property name="spacing">6</property>
<child>
<object class="GtkButton" id="stop_button">
- <property name="receives_default">False</property>
+ <property name="visible">0</property>
<property name="tooltip_text" translatable="yes" comments="Tooltip for stop button">Stop the current scan</property>
<property name="use_underline">True</property>
<signal name="clicked" handler="stop_scan_button_clicked_cb" swapped="no"/>
<child>
<object class="GtkBox">
- <property name="visible">True</property>
<property name="spacing">6</property>
+ <property name="halign">center</property>
<child>
<object class="GtkSpinner" id="stop_button_spinner">
- <property name="visible">True</property>
- <property name="active">True</property>
+ <property name="spinning">True</property>
</object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
</child>
<child>
<object class="GtkLabel">
- <property name="visible">True</property>
<property name="label" translatable="yes">S_top</property>
<property name="use_underline">True</property>
<property name="width_chars">6</property>
<property name="xalign">0.33</property>
+ <property name="halign">center</property>
</object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
</child>
</object>
</child>
@@ -508,259 +189,182 @@
<class name="destructive-action"/>
</style>
</object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
</child>
<child>
<object class="GtkButton" id="scan_button">
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="receives_default">False</property>
+ <property name="sensitive">0</property>
<property name="tooltip_text" translatable="yes" comments="Tooltip for scan toolbar button. Replaced by text associated with each scan type."></property>
<property name="use_underline">True</property>
<signal name="clicked" handler="scan_button_clicked_cb" swapped="no"/>
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <child>
- <object class="GtkImage" id="scan_options_image">
- <property name="visible">True</property>
- <property name="icon_name">scanner-symbolic</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="margin_right">1</property>
- <property name="label" translatable="yes">_Scan</property>
- <property name="use_underline">True</property>
- <property name="width_chars">6</property>
- <property name="xalign">0.33</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
+
+ <property name="child">
+ <object class="AdwButtonContent" id="scan_button_content">
+ <property name="icon-name">scanner-symbolic</property>
+ <property name="label" translatable="yes">_Scan</property>
+ <property name="use-underline">True</property>
</object>
- </child>
- <style>
- <class name="text-button"/>
- <class name="suggested-action"/>
- </style>
+ </property>
</object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
</child>
<child>
- <object class="GtkMenuButton">
- <property name="visible">True</property>
- <property name="receives_default">False</property>
- <property name="popover">scan_options_popover</property>
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <child>
- <object class="GtkImage" id="scan_hint_image">
- <property name="visible">True</property>
- <property name="icon_name">x-office-document-symbolic</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="icon_name">pan-down-symbolic</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- </child>
+ <object class="GtkMenuButton" id="scan_options_menu">
+ <property name="menu_model">scan-menu</property>
+ <property name="icon_name">emblem-system-symbolic</property>
</object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
</child>
- <style>
- <class name="linked"/>
- </style>
</object>
</child>
- <child>
+ <child type="end">
<object class="GtkMenuButton" id="menu_button">
- <property name="visible">True</property>
- <property name="receives_default">False</property>
<property name="use_underline">True</property>
- <accelerator key="F10" signal="activate"/>
- <child>
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="icon_name">open-menu-symbolic</property>
- <property name="icon_size">1</property>
- </object>
- </child>
- <style>
- <class name="image-button"/>
- </style>
+ <property name="primary">True</property>
+ <property name="icon_name">open-menu-symbolic</property>
</object>
- <packing>
- <property name="pack_type">end</property>
- <property name="position">1</property>
- </packing>
</child>
- <child>
+ <child type="end">
<object class="GtkButton" id="save_button">
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="receives_default">False</property>
+ <property name="sensitive">0</property>
<property name="tooltip_text" translatable="yes" comments="Tooltip for save toolbar button">Save document to a file</property>
<property name="use_underline">True</property>
- <signal name="clicked" handler="save_file_button_clicked_cb" swapped="no"/>
- <child>
- <object class="GtkImage" id="save_image">
- <property name="visible">True</property>
- <property name="icon_name">document-save-symbolic</property>
- <property name="icon_size">1</property>
- </object>
- </child>
- <style>
- <class name="image-button"/>
- </style>
+ <property name="action-name">app.save</property>
+ <property name="icon_name">document-save-symbolic</property>
</object>
- <packing>
- <property name="pack_type">end</property>
- <property name="position">2</property>
- </packing>
</child>
<style>
<class name="titlebar"/>
</style>
</object>
</child>
+
<child>
<object class="GtkStack" id="stack">
- <property name="visible">True</property>
<property name="vexpand">True</property>
<child>
- <object class="HdyStatusPage" id="status_page">
- <property name="visible">True</property>
- <property name="icon_name">org.gnome.SimpleScan-symbolic</property>
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="orientation">vertical</property>
- <property name="spacing">12</property>
- <child>
- <object class="GtkLabel" id="status_secondary_label">
- <property name="visible">False</property>
- <property name="wrap">True</property>
- <property name="wrap-mode">word-char</property>
- <property name="justify">center</property>
- <property name="use-markup">True</property>
- <property name="track_visited_links">False</property>
- <signal name="activate-link" handler="status_label_activate_link_cb" swapped="no"/>
- <style>
- <class name="body"/>
- <class name="description"/>
- </style>
- </object>
- </child>
+ <object class="GtkStackPage">
+ <property name="name">startup</property>
+ <property name="child">
+ <object class="AdwStatusPage" id="status_page">
+ <property name="icon_name">org.gnome.SimpleScan-symbolic</property>
<child>
- <object class="GtkBox" id="device_buttons_box">
- <property name="visible">False</property>
- <property name="orientation">horizontal</property>
- <property name="halign">center</property>
- <property name="spacing">10</property>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="spacing">12</property>
+
<child>
- <object class="GtkComboBox" id="device_combo">
- <property name="width_request">200</property>
- <property name="visible">True</property>
- <property name="model">device_model</property>
- <signal name="changed" handler="device_combo_changed_cb" swapped="no"/>
+ <object class="GtkLabel" id="status_secondary_label">
+ <property name="visible">False</property>
+ <property name="wrap">True</property>
+ <property name="wrap-mode">word-char</property>
+ <property name="justify">center</property>
+ <property name="use-markup">True</property>
+ <!-- <property name="track_visited_links">False</property> -->
+ <signal name="activate-link" handler="status_label_activate_link_cb" swapped="no"/>
+ <style>
+ <class name="body"/>
+ <class name="description"/>
+ </style>
</object>
- <packing>
- <property name="fill">False</property>
- </packing>
</child>
<child>
- <object class="GtkButton" id="refresh_devices">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="tooltip_text" translatable="yes" comments="Tooltip for stop button">Refresh device list</property>
- <signal name="clicked" handler="redetect_button_clicked_cb" swapped="no"/>
+ <object class="GtkBox" id="device_buttons_box">
+ <property name="visible">False</property>
+ <property name="orientation">horizontal</property>
+ <property name="halign">center</property>
+ <property name="spacing">10</property>
<child>
- <object class="GtkImage">
- <property name="visible">True</property>
+ <object class="GtkDropDown" id="device_drop_down">
+ <property name="width_request">200</property>
+ <signal name="notify::selected" handler="device_drop_down_changed_cb" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="refresh_devices">
+ <property name="tooltip_text" translatable="yes" comments="Tooltip for stop button">Refresh device list</property>
<property name="icon_name">view-refresh-symbolic</property>
- <property name="icon_size">1</property>
+
+ <signal name="clicked" handler="redetect_button_clicked_cb" swapped="no"/>
</object>
</child>
- <style>
- <class name="image-button"/>
- </style>
</object>
- <packing>
- <property name="fill">False</property>
- </packing>
</child>
</object>
</child>
</object>
- </child>
+ </property>
</object>
- <packing>
- <property name="name">startup</property>
- </packing>
</child>
<child>
- <object class="GtkBox" id="main_vbox">
- <property name="visible">True</property>
- <property name="orientation">vertical</property>
- <child>
- <object class="GtkActionBar" id="action_bar">
- <property name="visible">True</property>
+ <object class="GtkStackPage">
+ <property name="name">document</property>
+ <property name="child">
+ <object class="GtkBox" id="main_vbox">
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkActionBar" id="action_bar">
+ <child type="start">
+ <object class="GtkButton">
+ <property name="margin-start">6</property>
+ <signal name="clicked" handler="new_document_cb" swapped="no"/>
+
+ <property name="child">
+ <object class="AdwButtonContent">
+ <property name="icon-name">list-add-symbolic</property>
+ <property name="label" translatable="yes">New Document</property>
+ </object>
+ </property>
+ </object>
+ </child>
+
+ <child type="center">
+ <object class="GtkBox">
+ <property name="orientation">horizontal</property>
+ <property name="spacing">5</property>
+
+ <child>
+ <object class="GtkButton">
+ <property name="icon-name">object-rotate-left-symbolic</property>
+ <property name="tooltip-text" translatable="yes">Rotate the page to the left (counter-clockwise)</property>
+ <property name="action-name">app.rotate_left</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkButton">
+ <property name="icon-name">object-rotate-right-symbolic</property>
+ <property name="tooltip-text" translatable="yes">Rotate the page to the right (clockwise)</property>
+ <property name="action-name">app.rotate_right</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkToggleButton" id="crop_button">
+ <property name="icon-name">crop-symbolic</property>
+ <property name="tooltip-text" translatable="yes">Crop the selected page</property>
+ <signal name="toggled" handler="crop_toggle_cb" swapped="no"/>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkButton" id="delete_button">
+ <property name="icon-name">user-trash-symbolic</property>
+ <property name="tooltip-text" translatable="yes">Delete the selected page</property>
+ <property name="action-name">app.delete_page</property>
+ </object>
+ </child>
+
+ </object>
+ </child>
+
+ </object>
+ </child>
</object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="pack_type">end</property>
- <property name="position">0</property>
- </packing>
- </child>
+ </property>
</object>
- <packing>
- <property name="name">document</property>
- <property name="position">1</property>
- </packing>
</child>
</object>
</child>
+
</object>
- </child>
+ </property>
</template>
</interface>
diff --git a/data/ui/authorize-dialog.ui b/data/ui/authorize-dialog.ui
index 79e43fd..729ddc3 100644
--- a/data/ui/authorize-dialog.ui
+++ b/data/ui/authorize-dialog.ui
@@ -1,111 +1,78 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.20.0 -->
<interface>
- <requires lib="gtk+" version="3.10"/>
- <template class="AuthorizeDialog" parent="GtkDialog">
- <property name="border_width">12</property>
- <property name="resizable">False</property>
+ <requires lib="gtk" version="4.0"/>
+ <requires lib="libadwaita" version="1.0"/>
+ <template class="AuthorizeDialog" parent="GtkWindow">
<property name="modal">True</property>
- <property name="type_hint">normal</property>
- <property name="urgency_hint">True</property>
- <child internal-child="vbox">
- <object class="GtkBox" id="dialog-vbox1">
- <property name="visible">True</property>
- <property name="orientation">vertical</property>
- <property name="spacing">12</property>
- <child internal-child="action_area">
- <object class="GtkButtonBox" id="dialog-action_area1">
- <property name="visible">True</property>
- <property name="layout_style">end</property>
- <child>
- <object class="GtkButton" id="authorize_button">
- <property name="label" translatable="yes" comments="Button to submit authorization dialog">_Authorize</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="use_underline">True</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="pack_type">end</property>
- </packing>
- </child>
+ <property name="resizable">False</property>
+
+ <property name="titlebar">
+ <object class="GtkBox">
+ </object>
+ </property>
+
+ <child>
+ <object class="GtkWindowHandle">
<child>
- <object class="GtkBox" id="vbox5">
- <property name="visible">True</property>
- <property name="border_width">5</property>
+ <object class="GtkBox" id="dialog-vbox1">
<property name="orientation">vertical</property>
<property name="spacing">12</property>
+ <property name="margin-start">20</property>
+ <property name="margin-end">20</property>
+ <property name="margin-top">18</property>
+ <property name="margin-bottom">18</property>
+
<child>
- <object class="GtkLabel" id="authorize_label">
- <property name="visible">True</property>
- <property name="vexpand">True</property>
- <property name="label" comments="This label is set dynamically and is not translated">To connect to ? you need to authorize</property>
- </object>
- </child>
- <child>
- <object class="GtkGrid" id="grid2">
- <property name="visible">True</property>
- <property name="row_spacing">6</property>
- <property name="column_spacing">6</property>
+ <object class="AdwPreferencesGroup" id="preferences_group">
+ <property name="title" comments="This label is set dynamically and is not translated">To connect to ? you need to authorize</property>
+
<child>
- <object class="GtkEntry" id="username_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="hexpand">True</property>
- <property name="invisible_char">●</property>
+ <object class="AdwEntryRow" id="username_entry">
+ <property name="title" translatable="yes">_Username for resource</property>
+ <property name="use_underline">True</property>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- </packing>
</child>
+
<child>
- <object class="GtkEntry" id="password_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="hexpand">True</property>
- <property name="visibility">False</property>
- <property name="invisible_char">●</property>
+ <object class="AdwPasswordEntryRow" id="password_entry">
+ <property name="title" translatable="yes">_Password</property>
+ <property name="use_underline">True</property>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">1</property>
- </packing>
</child>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">horizontal</property>
+ <property name="spacing">5</property>
+ <property name="halign">end</property>
+
<child>
- <object class="GtkLabel" id="username_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes" comments="Label beside username entry">_Username for resource:</property>
+ <object class="GtkButton">
+ <property name="label" translatable="yes">_Cancel</property>
<property name="use_underline">True</property>
- <property name="mnemonic_widget">username_entry</property>
+ <signal name="clicked" handler="cancel_button_cb" swapped="no"/>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- </packing>
</child>
+
<child>
- <object class="GtkLabel" id="password_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes" comments="Label beside password entry">_Password:</property>
+ <object class="GtkButton" id="authorize_button">
+ <property name="label" translatable="yes" comments="Button to submit authorization dialog">_Authorize</property>
<property name="use_underline">True</property>
- <property name="mnemonic_widget">password_entry</property>
+ <signal name="clicked" handler="authorize_button_cb" swapped="no"/>
+
+ <style>
+ <class name="suggested-action"/>
+ </style>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">1</property>
- </packing>
</child>
</object>
</child>
+
</object>
</child>
</object>
</child>
- <action-widgets>
- <action-widget response="0">authorize_button</action-widget>
- </action-widgets>
</template>
</interface>
diff --git a/data/ui/drivers-dialog.ui b/data/ui/drivers-dialog.ui
new file mode 100644
index 0000000..1286694
--- /dev/null
+++ b/data/ui/drivers-dialog.ui
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <requires lib="gtk" version="4.0" />
+ <requires lib="libadwaita" version="1.0" />
+ <template class="DriversDialog" parent="GtkWindow">
+ <property name="modal">True</property>
+ <property name="resizable">False</property>
+ <property name="default-width">400</property>
+
+ <property name="titlebar">
+ <object class="GtkRevealer" id="header_revealer">
+ <property name="reveal-child">True</property>
+ <property name="child">
+ <object class="AdwHeaderBar">
+ <property name="title-widget">
+ <object class="GtkLabel" id="title">
+ <property name="label" translatable="yes">Install drivers</property>
+ </object>
+ </property>
+
+ <style>
+ <class name="flat" />
+ </style>
+ </object>
+ </property>
+ </object>
+ </property>
+
+ <child>
+ <object class="GtkStack" id="stack">
+ <property name="transition-type">3</property>
+
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">main</property>
+ <property name="child">
+ <object class="GtkBox" id="content_area">
+ <property name="orientation">vertical</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="spacing">18</property>
+
+ <child>
+ <object class="GtkImage">
+ <property name="icon-name">document-save-symbolic</property>
+ <property name="pixel-size">100</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkLabel" id="main_label">
+ <property name="valign">center</property>
+ <property name="halign">center</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkLabel" id="main_sublabel">
+ <property name="valign">center</property>
+ <property name="halign">center</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkRevealer" id="progress_revealer">
+ <property name="child">
+ <object class="GtkProgressBar" id="progress_bar"></object>
+ </property>
+ </object>
+ </child>
+
+ </object>
+ </property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">result</property>
+ <property name="child">
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+
+ <property name="margin-start">40</property>
+ <property name="margin-end">40</property>
+ <property name="margin-top">40</property>
+ <property name="margin-bottom">40</property>
+
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+
+ <property name="spacing">18</property>
+ <property name="hexpand">True</property>
+ <property name="halign">center</property>
+
+ <child>
+ <object class="GtkImage" id="result_icon">
+ <property name="icon-name">emblem-ok-symbolic</property>
+ <property name="pixel-size">100</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkLabel" id="result_label">
+ <property name="label"></property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkLabel" id="result_sublabel">
+ <property name="label"></property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkButton" id="result_button">
+ <property name="label">Ok</property>
+ <property name="action-name">window.close</property>
+
+ <style>
+ <class name="pill" />
+ <class name="suggested-action" />
+ </style>
+ </object>
+ </child>
+
+ </object>
+ </property>
+ </object>
+ </child>
+
+ </object>
+ </child>
+ </template>
+</interface> \ No newline at end of file
diff --git a/data/ui/help-overlay.ui b/data/ui/help-overlay.ui
index 9dbd746..ef6f634 100644
--- a/data/ui/help-overlay.ui
+++ b/data/ui/help-overlay.ui
@@ -5,35 +5,29 @@
<property name="modal">1</property>
<child>
<object class="GtkShortcutsSection">
- <property name="visible">1</property>
<child>
<object class="GtkShortcutsGroup">
- <property name="visible">1</property>
<property name="title" translatable="yes" context="shortcut window">Scanning</property>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="action-name">app.scan_single</property>
<property name="title" translatable="yes" context="shortcut window">Scan a single page</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="action-name">app.scan_adf</property>
<property name="title" translatable="yes" context="shortcut window">Scan all pages from document feeder</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="action-name">app.scan_batch</property>
<property name="title" translatable="yes" context="shortcut window">Scan continuously from a flatbed scanner</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="action-name">app.scan_stop</property>
<property name="title" translatable="yes" context="shortcut window">Stop scan in progress</property>
</object>
@@ -42,39 +36,33 @@
</child>
<child>
<object class="GtkShortcutsGroup">
- <property name="visible">1</property>
<property name="title" translatable="yes" context="shortcut window">Document Modification</property>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="action-name">app.move_left</property>
<property name="title" translatable="yes" context="shortcut window">Move page left</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="action-name">app.move_right</property>
<property name="title" translatable="yes" context="shortcut window">Move page right</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="action-name">app.rotate_left</property>
<property name="title" translatable="yes" context="shortcut window">Rotate page to the left (anti-clockwise)</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="action-name">app.rotate_right</property>
<property name="title" translatable="yes" context="shortcut window">Rotate page to the right (clockwise)</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="action-name">app.delete_page</property>
<property name="title" translatable="yes" context="shortcut window">Delete page</property>
</object>
@@ -83,39 +71,33 @@
</child>
<child>
<object class="GtkShortcutsGroup">
- <property name="visible">1</property>
<property name="title" translatable="yes" context="shortcut window">Document Management</property>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="action-name">app.new_document</property>
<property name="title" translatable="yes" context="shortcut window">Start new document</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="action-name">app.save</property>
<property name="title" translatable="yes" context="shortcut window">Save scanned document</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="action-name">app.email</property>
<property name="title" translatable="yes" context="shortcut window">Email scanned document</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="action-name">app.print</property>
<property name="title" translatable="yes" context="shortcut window">Print scanned document</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="action-name">app.copy_page</property>
<property name="title" translatable="yes" context="shortcut window">Copy current page to clipboard</property>
</object>
@@ -124,39 +106,33 @@
</child>
<child>
<object class="GtkShortcutsGroup">
- <property name="visible">1</property>
<property name="title" translatable="yes" context="shortcut window">General</property>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="action-name">app.help</property>
<property name="title" translatable="yes" context="shortcut window">Show help</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="accelerator">F10</property>
<property name="title" translatable="yes" context="shortcut window">Open menu</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="action-name">app.preferences</property>
<property name="title" translatable="yes" context="shortcut window">Show preferences</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="action-name">win.show-help-overlay</property>
<property name="title" translatable="yes" context="shortcut window">Keyboard shortcuts</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="action-name">app.quit</property>
<property name="title" translatable="yes" context="shortcut window">Quit</property>
</object>
diff --git a/data/ui/preferences-dialog.ui b/data/ui/preferences-dialog.ui
index fe63150..eb6e72c 100644
--- a/data/ui/preferences-dialog.ui
+++ b/data/ui/preferences-dialog.ui
@@ -14,80 +14,45 @@
<property name="step_increment">1</property>
<property name="page_increment">10</property>
</object>
- <object class="GtkListStore" id="paper_size_model">
- <columns>
- <!-- column-name width -->
- <column type="gint"/>
- <!-- column-name height -->
- <column type="gint"/>
- <!-- column-name label -->
- <column type="gchararray"/>
- </columns>
- </object>
- <object class="GtkListStore" id="photo_dpi_model">
- <columns>
- <!-- column-name dpi -->
- <column type="gint"/>
- <!-- column-name label -->
- <column type="gchararray"/>
- </columns>
- </object>
- <object class="GtkListStore" id="text_dpi_model">
- <columns>
- <!-- column-name dpi -->
- <column type="gint"/>
- <!-- column-name label -->
- <column type="gchararray"/>
- </columns>
+ <object class="GtkAdjustment" id="compression_adjustment">
+ <property name="value">75</property>
+ <property name="lower">0</property>
+ <property name="upper">100</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ <property name="page_size">0</property>
</object>
- <template class="PreferencesDialog" parent="HdyPreferencesWindow">
+ <template class="PreferencesDialog" parent="AdwPreferencesWindow">
<property name="icon_name">org.gnome.SimpleScan</property>
<property name="search_enabled">False</property>
<child>
- <object class="HdyPreferencesPage">
- <property name="visible">True</property>
+ <object class="AdwPreferencesPage">
<child>
- <object class="HdyPreferencesGroup">
- <property name="visible">True</property>
+ <object class="AdwPreferencesGroup">
<property name="title" translatable="yes" comments="Preferences Dialog: Section label for scanning settings">Scanning</property>
<child>
- <object class="HdyActionRow">
- <property name="visible">True</property>
+ <object class="AdwActionRow">
<property name="title" translatable="yes" comments="Label beside scan side combo box">Scan _Sides</property>
<property name="use_underline">True</property>
<property name="activatable_widget">front_side_button</property>
<child>
<object class="GtkBox" id="scan_side_box">
- <property name="visible">True</property>
<property name="valign">center</property>
<property name="homogeneous">True</property>
<child>
- <object class="GtkRadioButton" id="front_side_button">
+ <object class="GtkToggleButton" id="front_side_button">
<property name="label" translatable="yes" comments="Preferences Dialog: Toggle button to select scanning on front side of a page">Front</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">False</property>
</object>
</child>
<child>
- <object class="GtkRadioButton" id="back_side_button">
+ <object class="GtkToggleButton" id="back_side_button">
<property name="label" translatable="yes" comments="Preferences Dialog: Toggle button to select scanning on the back side of a page">Back</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="draw_indicator">False</property>
<property name="group">front_side_button</property>
</object>
</child>
<child>
- <object class="GtkRadioButton" id="both_side_button">
+ <object class="GtkToggleButton" id="both_side_button">
<property name="label" translatable="yes" comments="Preferences Dialog: Toggle button to select scanning on both sides of a page">Both</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="draw_indicator">False</property>
<property name="group">front_side_button</property>
</object>
</child>
@@ -99,84 +64,47 @@
</object>
</child>
<child>
- <object class="HdyActionRow">
- <property name="visible">True</property>
+ <object class="AdwComboRow" id="paper_size_row">
<property name="title" translatable="yes" comments="Label beside page size combo box">_Page Size</property>
<property name="use_underline">True</property>
- <property name="activatable_widget">paper_size_combo</property>
- <child>
- <object class="GtkComboBox" id="paper_size_combo">
- <property name="visible">True</property>
- <property name="hexpand">True</property>
- <property name="valign">center</property>
- <property name="model">paper_size_model</property>
- </object>
- </child>
</object>
</child>
<child>
- <object class="HdyActionRow">
- <property name="visible">True</property>
+ <object class="AdwActionRow">
<property name="title" translatable="yes" comments="Label beside page delay scale">_Delay in Seconds</property>
<property name="subtitle" translatable="yes" comments="Provides context for the page delay scale">Interval to scan multiple pages</property>
<property name="use_underline">True</property>
<property name="activatable_widget">page_delay_0s_button</property>
<child>
<object class="GtkBox">
- <property name="visible">True</property>
<property name="valign">center</property>
<property name="homogeneous">True</property>
<child>
- <object class="GtkRadioButton" id="page_delay_0s_button">
+ <object class="GtkToggleButton" id="page_delay_0s_button">
<property name="label" translatable="yes" comments="Preferences Dialog: Toggle button to select scanning on front side of a page">0</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">False</property>
</object>
</child>
<child>
- <object class="GtkRadioButton" id="page_delay_3s_button">
+ <object class="GtkToggleButton" id="page_delay_3s_button">
<property name="label" translatable="yes" comments="Preferences Dialog: Toggle button to select scanning on front side of a page">3</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">False</property>
<property name="group">page_delay_0s_button</property>
</object>
</child>
<child>
- <object class="GtkRadioButton" id="page_delay_6s_button">
+ <object class="GtkToggleButton" id="page_delay_6s_button">
<property name="label" translatable="yes" comments="Preferences Dialog: Toggle button to select scanning on front side of a page">6</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">False</property>
<property name="group">page_delay_0s_button</property>
</object>
</child>
<child>
- <object class="GtkRadioButton" id="page_delay_10s_button">
+ <object class="GtkToggleButton" id="page_delay_10s_button">
<property name="label" translatable="yes" comments="Preferences Dialog: Toggle button to select scanning on front side of a page">10</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">False</property>
<property name="group">page_delay_0s_button</property>
</object>
</child>
<child>
- <object class="GtkRadioButton" id="page_delay_15s_button">
+ <object class="GtkToggleButton" id="page_delay_15s_button">
<property name="label" translatable="yes" comments="Preferences Dialog: Toggle button to select scanning on front side of a page">15</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">False</property>
<property name="group">page_delay_0s_button</property>
</object>
</child>
@@ -190,49 +118,27 @@
</object>
</child>
<child>
- <object class="HdyPreferencesGroup">
- <property name="visible">True</property>
+ <object class="AdwPreferencesGroup">
<property name="title" translatable="yes" comments="Preferences Dialog: Section label for quality settings">Quality</property>
<child>
- <object class="HdyActionRow">
- <property name="visible">True</property>
+ <object class="AdwComboRow" id="text_dpi_row">
<property name="title" translatable="yes" comments="Label beside scan resolution combo box">_Text Resolution</property>
<property name="use_underline">True</property>
- <property name="activatable_widget">text_dpi_combo</property>
- <child>
- <object class="GtkComboBox" id="text_dpi_combo">
- <property name="visible">True</property>
- <property name="valign">center</property>
- <property name="model">text_dpi_model</property>
- </object>
- </child>
</object>
</child>
<child>
- <object class="HdyActionRow">
- <property name="visible">True</property>
+ <object class="AdwComboRow" id="photo_dpi_row">
<property name="title" translatable="yes" comments="Label beside scan resolution combo box">_Image Resolution</property>
<property name="use_underline">True</property>
- <property name="activatable_widget">photo_dpi_combo</property>
- <child>
- <object class="GtkComboBox" id="photo_dpi_combo">
- <property name="visible">True</property>
- <property name="valign">center</property>
- <property name="model">photo_dpi_model</property>
- </object>
- </child>
</object>
</child>
<child>
- <object class="HdyActionRow">
- <property name="visible">True</property>
+ <object class="AdwActionRow">
<property name="title" translatable="yes" comments="Label beside brightness scale">_Brightness</property>
<property name="use_underline">True</property>
<property name="activatable_widget">brightness_scale</property>
<child>
<object class="GtkScale" id="brightness_scale">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="valign">center</property>
<property name="hexpand">True</property>
<property name="adjustment">brightness_adjustment</property>
@@ -242,15 +148,12 @@
</object>
</child>
<child>
- <object class="HdyActionRow">
- <property name="visible">True</property>
+ <object class="AdwActionRow">
<property name="title" translatable="yes" comments="Label beside contrast scale">_Contrast</property>
<property name="use_underline">True</property>
<property name="activatable_widget">contrast_scale</property>
<child>
<object class="GtkScale" id="contrast_scale">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="valign">center</property>
<property name="hexpand">True</property>
<property name="adjustment">contrast_adjustment</property>
@@ -259,27 +162,37 @@
</child>
</object>
</child>
+ <child>
+ <object class="AdwActionRow">
+ <property name="title" translatable="yes" comments="Label beside compression scale">Compression</property>
+ <property name="use_underline">True</property>
+ <property name="activatable_widget">compression_scale</property>
+ <child>
+ <object class="GtkScale" id="compression_scale">
+ <property name="valign">center</property>
+ <property name="hexpand">True</property>
+ <property name="adjustment">compression_adjustment</property>
+ <property name="draw_value">False</property>
+ </object>
+ </child>
+ </object>
+ </child>
</object>
</child>
<child>
- <object class="HdyPreferencesGroup">
- <property name="visible">True</property>
+ <object class="AdwPreferencesGroup">
<property name="title" translatable="yes" comments="Preferences Dialog: Section label for postprocessing settings">Postprocessing</property>
<child>
- <object class="HdyActionRow">
- <property name="visible">True</property>
+ <object class="AdwActionRow">
<property name="title" translatable="yes" comments="Switch to enable postprocessing">_Enable Postprocessing</property>
<property name="use_underline">True</property>
<property name="activatable_widget">postproc_enable_box</property>
<child>
<object class="GtkBox" id="postproc_enable_box">
- <property name="visible">True</property>
<property name="valign">center</property>
<property name="homogeneous">True</property>
<child>
<object class="GtkSwitch" id="postproc_enable_switch">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="hexpand">False</property>
<property name="active">True</property>
</object>
@@ -289,21 +202,17 @@
</object>
</child>
<child>
- <object class="HdyActionRow">
- <property name="visible">True</property>
+ <object class="AdwActionRow">
<property name="title" translatable="yes" comments="Label beside postprocesing script name entry">_Script</property>
<property name="use_underline">True</property>
<property name="activatable_widget">postproc_script_entry</property>
<child>
<object class="GtkBox" id="postproc_script_box">
- <property name="visible">True</property>
<property name="valign">center</property>
<property name="homogeneous">True</property>
<child>
<object class="GtkEntry" id="postproc_script_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="hexpand">True</property>
</object>
</child>
@@ -312,21 +221,17 @@
</object>
</child>
<child>
- <object class="HdyActionRow">
- <property name="visible">True</property>
+ <object class="AdwActionRow">
<property name="title" translatable="yes" comments="Label beside postprocesing arguments entry">_Script arguments</property>
<property name="use_underline">True</property>
<property name="activatable_widget">postproc_args_entry</property>
<child>
<object class="GtkBox" id="postproc_args_box">
- <property name="visible">True</property>
<property name="valign">center</property>
<property name="homogeneous">True</property>
<child>
<object class="GtkEntry" id="postproc_args_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="hexpand">True</property>
</object>
</child>
@@ -335,20 +240,16 @@
</object>
</child>
<child>
- <object class="HdyActionRow">
- <property name="visible">True</property>
+ <object class="AdwActionRow">
<property name="title" translatable="yes" comments="Label beside keep keep original file radio">_Keep original file</property>
<property name="use_underline">True</property>
<property name="activatable_widget">postproc_keep_original_box</property>
<child>
<object class="GtkBox" id="postproc_keep_original_box">
- <property name="visible">True</property>
<property name="valign">center</property>
<property name="homogeneous">True</property>
<child>
<object class="GtkSwitch" id="postproc_keep_original_switch">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="hexpand">False</property>
<property name="active">True</property>
</object>
diff --git a/data/ui/reorder-pages-dialog.ui b/data/ui/reorder-pages-dialog.ui
new file mode 100644
index 0000000..33ee2e2
--- /dev/null
+++ b/data/ui/reorder-pages-dialog.ui
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <requires lib="gtk" version="4.0"/>
+ <requires lib="libadwaita" version="1.0"/>
+
+ <template class="ReorderPagesDialog" parent="GtkWindow">
+ <property name="modal">True</property>
+ <property name="resizable">False</property>
+ <property name="title" translatable="yes" context="dialog title">Reorder Pages</property>
+
+ <property name="titlebar">
+ <object class="AdwHeaderBar">
+ </object>
+ </property>
+
+ <child>
+ <object class="GtkWindowHandle">
+ <child>
+ <object class="GtkBox" id="dialog-vbox1">
+ <property name="orientation">vertical</property>
+ <property name="spacing">12</property>
+ <property name="margin-start">20</property>
+ <property name="margin-end">20</property>
+ <property name="margin-top">18</property>
+ <property name="margin-bottom">18</property>
+ <property name="halign">center</property>
+
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">horizontal</property>
+
+ <child>
+ <object class="ReorderPagesItem" id="combine_sides">
+ <property name="label" translatable="yes">Combine sides</property>
+ <property name="before">interleave-before</property>
+ <property name="after">interleave-after</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="ReorderPagesItem" id="combine_sides_rev">
+ <property name="label" translatable="yes">Combine sides (reverse)</property>
+ <property name="before">interleave-before</property>
+ <property name="after">interleave-reverse-after</property>
+ </object>
+ </child>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">horizontal</property>
+ <child>
+ <object class="ReorderPagesItem" id="flip_odd">
+ <property name="label" translatable="yes">Flip odd pages upside-down</property>
+ <property name="before">flip-before</property>
+ <property name="after">flip-odd</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="ReorderPagesItem" id="flip_even">
+ <property name="label" translatable="yes">Flip even pages upside-down</property>
+ <property name="before">flip-before</property>
+ <property name="after">flip-even</property>
+ </object>
+ </child>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">horizontal</property>
+ <property name="halign">center</property>
+
+ <child>
+ <object class="ReorderPagesItem" id="reverse">
+ <property name="label" translatable="yes">Reverse</property>
+ <property name="before">reverse-before</property>
+ <property name="after">reverse-after</property>
+ </object>
+ </child>
+
+ </object>
+ </child>
+
+ </object>
+ </child>
+ </object>
+ </child>
+ </template>
+</interface> \ No newline at end of file
diff --git a/data/ui/reorder-pages-item.ui b/data/ui/reorder-pages-item.ui
new file mode 100644
index 0000000..054801d
--- /dev/null
+++ b/data/ui/reorder-pages-item.ui
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <requires lib="gtk" version="4.0"/>
+ <requires lib="libadwaita" version="1.0"/>
+
+ <template class="ReorderPagesItem" parent="GtkButton">
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+
+ <child>
+ <object class="GtkLabel" id="title">
+ <property name="label"></property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">horizontal</property>
+ <property name="spacing">12</property>
+ <property name="halign">center</property>
+
+ <child>
+ <object class="GtkImage" id="before_image">
+ <property name="pixel-size">140</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkImage">
+ <property name="icon-name">right-large-symbolic</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkImage" id="after_image">
+ <property name="pixel-size">140</property>
+ </object>
+ </child>
+
+ </object>
+ </child>
+
+ </object>
+ </child>
+
+ <style>
+ <class name="flat"/>
+ </style>
+ </template>
+</interface> \ No newline at end of file