summaryrefslogtreecommitdiff
path: root/data
diff options
context:
space:
mode:
authorJörg Frings-Fürst <debian@jff.email>2021-08-21 10:58:17 +0200
committerJörg Frings-Fürst <debian@jff.email>2021-08-21 10:58:17 +0200
commit383626437ca8f9d26518408719b5d778e696eecd (patch)
tree31c1e0bc563aa3705771e54e8514c03af5fe330d /data
parentefe8a90877a031270375c1f2c0f1823560d85100 (diff)
New upstream version 40.1upstream/40.1
Diffstat (limited to 'data')
-rw-r--r--data/icons/scalable/actions/crop-symbolic.svg73
-rw-r--r--data/icons/scalable/actions/scan-type-adf-symbolic.svg9
-rw-r--r--data/icons/scalable/actions/scan-type-batch-symbolic.svg9
-rw-r--r--data/logs/Brother_ADS-2200.log53
-rw-r--r--data/logs/Epson_GT-1500.log238
-rw-r--r--data/logs/Epson_L4160.log125
-rw-r--r--data/meson.build14
-rw-r--r--data/simple-scan.appdata.xml.in35
-rw-r--r--data/simple-scan.gresource.xml13
-rw-r--r--data/ui/app-window.ui834
-rw-r--r--data/ui/authorize-dialog.ui111
-rw-r--r--data/ui/help-overlay.ui162
-rw-r--r--data/ui/preferences-dialog.ui282
13 files changed, 1950 insertions, 8 deletions
diff --git a/data/icons/scalable/actions/crop-symbolic.svg b/data/icons/scalable/actions/crop-symbolic.svg
new file mode 100644
index 0000000..0867d45
--- /dev/null
+++ b/data/icons/scalable/actions/crop-symbolic.svg
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ width="16"
+ viewBox="0 0 16 16"
+ version="1.1"
+ id="svg7384"
+ height="16">
+ <metadata
+ id="metadata90">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title>Gnome Symbolic Icon Theme</dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <title
+ id="title9167">Gnome Symbolic Icon Theme</title>
+ <defs
+ id="defs7386">
+ <linearGradient
+ osb:paint="solid"
+ id="linearGradient7212">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop7214" />
+ </linearGradient>
+ </defs>
+ <g
+ transform="translate(-381.0002,-177)"
+ style="display:inline"
+ id="layer9" />
+ <g
+ transform="translate(-140,-544)"
+ id="layer1" />
+ <g
+ transform="translate(-140,-544)"
+ style="display:inline"
+ id="layer10" />
+ <g
+ transform="translate(-140,-544)"
+ id="g6387" />
+ <g
+ transform="translate(-140,-544)"
+ id="layer11">
+ <path
+ d="m 152.00219,547 c 0.55279,0 0.99781,0.44502 0.99781,0.99781 v 0.004 c 0,0.55279 -0.44502,0.99781 -0.99781,0.99781 h -10.00438 c -0.55279,0 -0.99781,-0.44502 -0.99781,-0.99781 v -0.98838 z"
+ id="rect33604"
+ style="opacity:1;vector-effect:none;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none" />
+ <path
+ d="m 143.99781,545 h 0.004 c 0.55279,0 0.99782,0.44502 0.99782,0.99781 v 10.00438 c 0,0.55279 -0.44503,0.99781 -0.99782,0.99781 h -0.004 C 143.44502,557 143,556.55498 143,556.00219 v -10.97313 c 0,0 0.44502,-0.0291 0.99781,-0.0291 z"
+ id="rect33608"
+ style="opacity:1;vector-effect:none;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none" />
+ <path
+ d="m 143.99781,556.99996 c -0.55279,0 -0.99781,-0.44502 -0.99781,-0.99781 v -0.004 c 0,-0.55279 0.44502,-0.99781 0.99781,-0.99781 h 10.00438 c 0.55279,0 0.99781,0.44502 0.99781,0.99781 v 0.98838 z"
+ id="path7845"
+ style="opacity:1;vector-effect:none;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none" />
+ <path
+ d="m 152.00219,558.99996 h -0.004 c -0.55279,0 -0.99782,-0.44502 -0.99782,-0.99781 v -10.00438 c 0,-0.55279 0.44503,-0.99781 0.99782,-0.99781 h 0.004 c 0.55279,0 0.99781,0.44502 0.99781,0.99781 v 10.97313 c 0,0 -0.44502,0.0291 -0.99781,0.0291 z"
+ id="path7847"
+ style="opacity:1;vector-effect:none;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none" />
+ </g>
+</svg>
diff --git a/data/icons/scalable/actions/scan-type-adf-symbolic.svg b/data/icons/scalable/actions/scan-type-adf-symbolic.svg
new file mode 100644
index 0000000..4ddb4de
--- /dev/null
+++ b/data/icons/scalable/actions/scan-type-adf-symbolic.svg
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="16" height="16" version="1.1" viewBox="0 0 4.2333 4.2333" xmlns="http://www.w3.org/2000/svg">
+ <g fill="#474747">
+ <path d="m0.52917 3.9688c-0.13229 0-0.26458-0.13229-0.26458-0.26459v-2.1167c0-0.13229 0.13229-0.26459 0.26458-0.26459h0.26458v1.5875h2.6458v-1.5875h0.26458c0.13229 0 0.26458 0.1323 0.26458 0.26459v2.1167c0 0.1323-0.13229 0.26459-0.26458 0.26459z"/>
+ <path d="m1.0583 2.6458v-1.5875h2.1167v1.5875z"/>
+ <path d="m1.0583 0.79376v-0.26459h2.1167v0.26459z"/>
+ <path d="m1.0583 0.26459v-0.26458h2.1167v0.26458z"/>
+ </g>
+</svg>
diff --git a/data/icons/scalable/actions/scan-type-batch-symbolic.svg b/data/icons/scalable/actions/scan-type-batch-symbolic.svg
new file mode 100644
index 0000000..a11715d
--- /dev/null
+++ b/data/icons/scalable/actions/scan-type-batch-symbolic.svg
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="16" height="16" version="1.1" viewBox="0 0 4.2333 4.2333" xmlns="http://www.w3.org/2000/svg">
+ <g fill="#474747">
+ <path d="m2.2521 0.79056c-0.94667 0-1.7198 0.7731-1.7198 1.7198s0.7731 1.7198 1.7198 1.7198 1.7198-0.7731 1.7198-1.7198-0.7731-1.7198-1.7198-1.7198zm0 0.52916c0.66068 0 1.1906 0.52993 1.1906 1.1906s-0.52993 1.1906-1.1906 1.1906-1.1906-0.52993-1.1906-1.1906 0.52993-1.1906 1.1906-1.1906z" color="#000000" color-rendering="auto" dominant-baseline="auto" enable-background="new" image-rendering="auto" shape-rendering="auto" solid-color="#000000" stroke-width=".26458" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+ <path d="m1.8552-0.00318h0.79374c0.14658 0 0.26458 0.118 0.26458 0.26458s-0.118 0.26458-0.26458 0.26458h-0.79374c-0.14658 0-0.26458-0.118-0.26458-0.26458s0.118-0.26458 0.26458-0.26458z" color="#000000" color-rendering="auto" image-rendering="auto" shape-rendering="auto" solid-color="#000000" stroke-width=".26458" style="isolation:auto;mix-blend-mode:normal"/>
+ <path d="m2.3844-0.00318v1.0583h-0.26458v-1.0583z" color="#000000" color-rendering="auto" image-rendering="auto" shape-rendering="auto" solid-color="#000000" stroke-width=".26458" style="isolation:auto;mix-blend-mode:normal"/>
+ <path d="m2.1198 1.5843a1.0583 1.0583 0 0 1 1.0583 1.0583h-1.0583z" color="#000000" enable-background="new" stroke-width="0"/>
+ </g>
+</svg>
diff --git a/data/logs/Brother_ADS-2200.log b/data/logs/Brother_ADS-2200.log
new file mode 100644
index 0000000..3d008d2
--- /dev/null
+++ b/data/logs/Brother_ADS-2200.log
@@ -0,0 +1,53 @@
+[+0.00s] DEBUG: simple-scan.vala:1720: Starting simple-scan 3.36.3, PID=313755
+[+0.00s] DEBUG: unsetenv() is not thread-safe and should not be used after threads are created
+[+0.02s] DEBUG: _g_io_module_get_default: Found default implementation dconf (DConfSettingsBackend) for ‘gsettings-backend’
+[+0.08s] DEBUG: app-window.vala:1906: Loading state from /home/arunasr/.cache/simple-scan/state
+[+0.08s] DEBUG: app-window.vala:1885: Restoring window to 2648x1604 pixels
+[+0.15s] DEBUG: scanner.vala:1539: sane_init () -> SANE_STATUS_GOOD
+[+0.15s] DEBUG: scanner.vala:1545: SANE version 1.0.29
+[+0.15s] DEBUG: scanner.vala:1606: Requesting redetection of scan devices
+[+0.15s] DEBUG: scanner.vala:828: Processing request
+[+0.57s] DEBUG: app-window.vala:1981: Saving state to /home/arunasr/.cache/simple-scan/state
+[+0.97s] DEBUG: scanner.vala:341: sane_get_devices () -> SANE_STATUS_GOOD
+[+0.97s] DEBUG: scanner.vala:353: Device: name="BrotherADS2200:libusb:002:015" vendor="Brother" model="ADS2200" type="USB scanner"
+[+0.97s] DEBUG: scanner.vala:353: Device: name="epkowa:interpreter:002:010" vendor="Epson" model="GT-1500" type="flatbed scanner"
+[+1.27s] DEBUG: app-window.vala:1981: Saving state to /home/arunasr/.cache/simple-scan/state
+[+4.80s] DEBUG: simple-scan.vala:1536: Requesting scan at 150 dpi from device 'BrotherADS2200:libusb:002:015'
+[+4.80s] DEBUG: scanner.vala:1674: Scanner.scan ("BrotherADS2200:libusb:002:015", dpi=150, scan_mode=ScanMode.COLOR, depth=8, type=adf-front, paper_width=2100, paper_height=2970, brightness=21, contrast=32, delay=10000ms)
+[+4.80s] DEBUG: scanner.vala:828: Processing request
+[+5.12s] DEBUG: scanner.vala:889: sane_open ("BrotherADS2200:libusb:002:015") -> SANE_STATUS_GOOD
+[+5.12s] DEBUG: scanner.vala:910: sane_get_option_descriptor (0)
+[+5.12s] DEBUG: scanner.vala:760: Option 0: title='Number of options' type=int size=4 cap=soft-detect
+[+5.12s] DEBUG: scanner.vala:763: Description: Read-only option that specifies how many options a specific devices supports.
+[+5.12s] DEBUG: scanner.vala:910: sane_get_option_descriptor (1)
+[+5.12s] DEBUG: scanner.vala:760: Option 1: name='tl-x' title='Top-left x' type=fixed size=4 unit=mm min=0.000000, max=165.100006, quant=0 cap=soft-select,soft-detect
+[+5.12s] DEBUG: scanner.vala:763: Description: Top-left x position of scan area.
+[+5.12s] DEBUG: scanner.vala:910: sane_get_option_descriptor (2)
+[+5.12s] DEBUG: scanner.vala:760: Option 2: name='tl-y' title='Top-left y' type=fixed size=4 unit=mm min=0.000000, max=304.800003, quant=0 cap=soft-select,soft-detect
+[+5.12s] DEBUG: scanner.vala:763: Description: Top-left y position of scan area.
+[+5.12s] DEBUG: scanner.vala:910: sane_get_option_descriptor (3)
+[+5.12s] DEBUG: scanner.vala:760: Option 3: name='br-x' title='Bottom-right x' type=fixed size=4 unit=mm min=50.799988, max=215.899994, quant=0 cap=soft-select,soft-detect
+[+5.12s] DEBUG: scanner.vala:763: Description: Bottom-right x position of scan area.
+[+5.12s] DEBUG: scanner.vala:910: sane_get_option_descriptor (4)
+[+5.12s] DEBUG: scanner.vala:760: Option 4: name='br-y' title='Bottom-right y' type=fixed size=4 unit=mm min=50.799988, max=355.599991, quant=0 cap=soft-select,soft-detect
+[+5.12s] DEBUG: scanner.vala:763: Description: Bottom-right y position of scan area.
+[+5.12s] DEBUG: scanner.vala:910: sane_get_option_descriptor (5)
+[+5.12s] DEBUG: scanner.vala:760: Option 5: name='resolution' title='Scan resolution' type=int size=4 unit=dpi values=[100, 150, 200, 300, 400, 600] cap=soft-select,soft-detect
+[+5.12s] DEBUG: scanner.vala:763: Description: Sets the resolution of the scanned image.
+[+5.12s] DEBUG: scanner.vala:910: sane_get_option_descriptor (6)
+[+5.12s] DEBUG: scanner.vala:760: Option 6: name='mode' title='Scan mode' type=string size=256 values=["Black & White", "Gray", "24 bit Color"] cap=soft-select,soft-detect
+[+5.12s] DEBUG: scanner.vala:763: Description: Selects the scan mode (e.g., lineart, monochrome, or color).
+[+5.12s] DEBUG: scanner.vala:910: sane_get_option_descriptor (7)
+[+5.12s] DEBUG: scanner.vala:760: Option 7: name='source' title='Scan source' type=string size=256 values=["Automatic Document Feeder(left aligned)", "Automatic Document Feeder(left aligned,Duplex)"] cap=soft-select,soft-detect
+[+5.12s] DEBUG: scanner.vala:763: Description: Selects the scan source (such as a document-feeder).
+[+5.12s] DEBUG: scanner.vala:910: sane_get_option_descriptor (8)
+[+5.12s] DEBUG: scanner.vala:571: sane_control_option (7, SANE_ACTION_SET_VALUE, "Automatic Document Feeder(left aligned)") -> (SANE_STATUS_GOOD, "Automatic Document Feeder(left aligned)")
+[+5.12s] WARNING: scanner.vala:1048: Unable to set Color mode, please file a bug
+[+5.12s] DEBUG: scanner.vala:483: sane_control_option (5, SANE_ACTION_SET_VALUE, 150) -> (SANE_STATUS_GOOD, 150)
+[+5.12s] DEBUG: scanner.vala:523: sane_control_option (3, SANE_ACTION_SET_VALUE, 210.000000) -> (SANE_STATUS_GOOD, 210.000000)
+[+5.12s] DEBUG: scanner.vala:523: sane_control_option (4, SANE_ACTION_SET_VALUE, 297.000000) -> (SANE_STATUS_GOOD, 297.000000)
+[+5.13s] DEBUG: app-window.vala:1981: Saving state to /home/arunasr/.cache/simple-scan/state
+[+9.53s] DEBUG: scanner.vala:1285: sane_start (page=0, pass=0) -> SANE_STATUS_GOOD
+[+9.53s] DEBUG: scanner.vala:1312: sane_get_parameters () -> SANE_STATUS_GOOD
+[+9.53s] DEBUG: scanner.vala:1324: Parameters: format=SANE_FRAME_GRAY last_frame=SANE_TRUE bytes_per_line=155 pixels_per_line=1240 lines=1753 depth=1
+[+9.53s] DEBUG: simple-scan.vala:1431: Page is 1240 pixels wide, 1753 pixels high, 1 bits per pixel
diff --git a/data/logs/Epson_GT-1500.log b/data/logs/Epson_GT-1500.log
new file mode 100644
index 0000000..830b505
--- /dev/null
+++ b/data/logs/Epson_GT-1500.log
@@ -0,0 +1,238 @@
+[+0.00s] DEBUG: simple-scan.vala:1720: Starting simple-scan 3.36.3, PID=308842
+[+0.00s] DEBUG: unsetenv() is not thread-safe and should not be used after threads are created
+[+0.02s] DEBUG: _g_io_module_get_default: Found default implementation dconf (DConfSettingsBackend) for ‘gsettings-backend’
+[+0.07s] DEBUG: app-window.vala:1906: Loading state from /home/arunasr/.cache/simple-scan/state
+[+0.07s] DEBUG: app-window.vala:1885: Restoring window to 2648x1604 pixels
+[+0.15s] DEBUG: scanner.vala:1539: sane_init () -> SANE_STATUS_GOOD
+[+0.15s] DEBUG: scanner.vala:1545: SANE version 1.0.29
+[+0.15s] DEBUG: scanner.vala:1606: Requesting redetection of scan devices
+[+0.15s] DEBUG: scanner.vala:828: Processing request
+[+0.57s] DEBUG: app-window.vala:1981: Saving state to /home/arunasr/.cache/simple-scan/state
+[+1.08s] DEBUG: scanner.vala:341: sane_get_devices () -> SANE_STATUS_GOOD
+[+1.08s] DEBUG: scanner.vala:353: Device: name="epkowa:interpreter:002:010" vendor="Epson" model="GT-1500" type="flatbed scanner"
+[+1.38s] DEBUG: app-window.vala:1981: Saving state to /home/arunasr/.cache/simple-scan/state
+[+27.76s] DEBUG: simple-scan.vala:1536: Requesting scan at 150 dpi from device 'epkowa:interpreter:002:010'
+[+27.76s] DEBUG: scanner.vala:1674: Scanner.scan ("epkowa:interpreter:002:010", dpi=150, scan_mode=ScanMode.COLOR, depth=8, type=adf-front, paper_width=2100, paper_height=2970, brightness=21, contrast=32, delay=10000ms)
+[+27.76s] DEBUG: scanner.vala:828: Processing request
+[+27.77s] DEBUG: scanner.vala:889: sane_open ("epkowa:interpreter:002:010") -> SANE_STATUS_GOOD
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (0)
+[+27.77s] DEBUG: scanner.vala:760: Option 0: name='(null)' title='Number of options' type=bool size=4 cap=soft-detect
+[+27.77s] DEBUG: scanner.vala:763: Description: Read-only option that specifies how many options a specific devices supports.
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (1)
+[+27.77s] DEBUG: scanner.vala:760: Option 1: name='(null)' title='Scan Mode' type=group size=4
+[+27.77s] DEBUG: scanner.vala:763: Description:
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (2)
+[+27.77s] DEBUG: scanner.vala:760: Option 2: name='mode' title='Scan mode' type=string size=7 values=["Binary", "Gray", "Color"] cap=soft-select,soft-detect
+[+27.77s] DEBUG: scanner.vala:763: Description: Selects the scan mode (e.g., lineart, monochrome, or color).
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (3)
+[+27.77s] DEBUG: scanner.vala:760: Option 3: name='depth' title='Bit depth' type=int size=4 values=[8, 16] cap=soft-select,soft-detect
+[+27.77s] DEBUG: scanner.vala:763: Description: Number of bits per sample, typical values are 1 for "line-art" and 8 for multibit scans.
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (4)
+[+27.77s] DEBUG: scanner.vala:760: Option 4: name='halftoning' title='Halftoning' type=string size=26 values=["None", "Halftone A (Hard Tone)", "Halftone B (Soft Tone)", "Halftone C (Net Screen)"] cap=soft-select,soft-detect,inactive
+[+27.77s] DEBUG: scanner.vala:763: Description: Selects the halftone.
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (5)
+[+27.77s] DEBUG: scanner.vala:760: Option 5: name='dropout' title='Dropout' type=string size=6 values=["None", "Red", "Green", "Blue"] cap=soft-select,soft-detect,inactive,advanced
+[+27.77s] DEBUG: scanner.vala:763: Description: Selects the dropout.
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (6)
+[+27.77s] DEBUG: scanner.vala:760: Option 6: name='brightness-method' title='Brightness Method' type=string size=9 values=["iscan", "gimp"] cap=soft-select,soft-detect,advanced
+[+27.77s] DEBUG: scanner.vala:763: Description: Selects a method to change the brightness of the acquired image.
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (7)
+[+27.77s] DEBUG: scanner.vala:760: Option 7: name='brightness' title='Brightness' type=int size=4 min=-100, max=100, quant=1 cap=soft-select,soft-detect,emulated
+[+27.77s] DEBUG: scanner.vala:763: Description: Controls the brightness of the acquired image.
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (8)
+[+27.77s] DEBUG: scanner.vala:760: Option 8: name='contrast' title='Contrast' type=int size=4 min=-100, max=100, quant=1 cap=soft-select,soft-detect,emulated
+[+27.77s] DEBUG: scanner.vala:763: Description: Controls the contrast of the acquired image.
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (9)
+[+27.77s] DEBUG: scanner.vala:760: Option 9: name='sharpness' title='Sharpness' type=int size=4 min=-2, max=2, quant=0 cap=soft-select,soft-detect,inactive
+[+27.77s] DEBUG: scanner.vala:763: Description:
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (10)
+[+27.77s] DEBUG: scanner.vala:760: Option 10: name='gamma-correction' title='Gamma Correction' type=string size=25 values=["User defined (Gamma=1.0)", "User defined (Gamma=1.8)"] cap=soft-select,soft-detect
+[+27.77s] DEBUG: scanner.vala:763: Description: Selects the gamma correction value from a list of pre-defined devices or the user defined table, which can be downloaded to the scanner
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (11)
+[+27.77s] DEBUG: scanner.vala:760: Option 11: name='color-correction' title='Color correction' type=string size=13 values=["User defined"] cap=soft-select,soft-detect,inactive,advanced
+[+27.77s] DEBUG: scanner.vala:763: Description: Sets the color correction table for the selected output device.
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (12)
+[+27.77s] DEBUG: scanner.vala:760: Option 12: name='resolution' title='Scan resolution' type=int size=4 unit=dpi values=[600] cap=soft-select,soft-detect
+[+27.77s] DEBUG: scanner.vala:763: Description: Sets the resolution of the scanned image.
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (13)
+[+27.77s] DEBUG: scanner.vala:760: Option 13: name='x-resolution' title='X-resolution' type=int size=4 unit=dpi values=[150, 225, 300, 600, 900, 1200] cap=soft-select,soft-detect,advanced
+[+27.77s] DEBUG: scanner.vala:763: Description: Sets the horizontal resolution of the scanned image.
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (14)
+[+27.77s] DEBUG: scanner.vala:760: Option 14: name='y-resolution' title='Y-resolution' type=int size=4 unit=dpi values=[150, 225, 300, 600, 900, 1200, 1800, 2400] cap=soft-select,soft-detect,advanced
+[+27.77s] DEBUG: scanner.vala:763: Description: Sets the vertical resolution of the scanned image.
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (15)
+[+27.77s] DEBUG: scanner.vala:760: Option 15: name='threshold' title='Threshold' type=int size=4 min=0, max=255, quant=0 cap=soft-select,soft-detect,inactive
+[+27.77s] DEBUG: scanner.vala:763: Description: Select minimum-brightness to get a white point
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (16)
+[+27.77s] DEBUG: scanner.vala:760: Option 16: name='(null)' title='Advanced' type=group size=4 cap=advanced
+[+27.77s] DEBUG: scanner.vala:763: Description:
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (17)
+[+27.77s] DEBUG: scanner.vala:760: Option 17: name='mirror' title='Mirror image' type=bool size=4 cap=soft-select,soft-detect,inactive
+[+27.77s] DEBUG: scanner.vala:763: Description: Mirror the image.
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (18)
+[+27.77s] DEBUG: scanner.vala:760: Option 18: name='speed' title='Scan speed' type=bool size=4 cap=soft-select,soft-detect
+[+27.77s] DEBUG: scanner.vala:763: Description: Determines the speed at which the scan proceeds.
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (19)
+[+27.77s] DEBUG: scanner.vala:760: Option 19: name='auto-area-segmentation' title='Auto area segmentation' type=bool size=4 cap=soft-select,soft-detect,inactive
+[+27.77s] DEBUG: scanner.vala:763: Description:
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (20)
+[+27.77s] DEBUG: scanner.vala:760: Option 20: name='short-resolution' title='Short resolution list' type=bool size=4 cap=soft-select,soft-detect
+[+27.77s] DEBUG: scanner.vala:763: Description: Display short resolution list
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (21)
+[+27.77s] DEBUG: scanner.vala:760: Option 21: name='zoom' title='Zoom' type=int size=4 min=50, max=200, quant=0 cap=soft-select,soft-detect,inactive
+[+27.77s] DEBUG: scanner.vala:763: Description: Defines the zoom factor the scanner will use
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (22)
+[+27.77s] DEBUG: scanner.vala:760: Option 22: name='red-gamma-table' title='Red intensity' type=int size=1024 min=0, max=255, quant=0 cap=soft-select,soft-detect
+[+27.77s] DEBUG: scanner.vala:763: Description: Gamma-correction table for the red band.
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (23)
+[+27.77s] DEBUG: scanner.vala:760: Option 23: name='green-gamma-table' title='Green intensity' type=int size=1024 min=0, max=255, quant=0 cap=soft-select,soft-detect
+[+27.77s] DEBUG: scanner.vala:763: Description: Gamma-correction table for the green band.
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (24)
+[+27.77s] DEBUG: scanner.vala:760: Option 24: name='blue-gamma-table' title='Blue intensity' type=int size=1024 min=0, max=255, quant=0 cap=soft-select,soft-detect
+[+27.77s] DEBUG: scanner.vala:763: Description: Gamma-correction table for the blue band.
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (25)
+[+27.77s] DEBUG: scanner.vala:760: Option 25: name='wait-for-button' title='Wait for Button' type=bool size=4 cap=soft-select,soft-detect,advanced
+[+27.77s] DEBUG: scanner.vala:763: Description: After sending the scan command, wait until the button on the scanner is pressed to actually start the scan process.
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (26)
+[+27.77s] DEBUG: scanner.vala:760: Option 26: name='monitor-button' title='Monitor Button' type=bool size=4 cap=soft-detect,advanced
+[+27.77s] DEBUG: scanner.vala:763: Description: Indicates whether a button on the scanner has been pressed.
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (27)
+[+27.77s] DEBUG: scanner.vala:760: Option 27: name='polling-time' title='Polling Time' type=int size=4 unit=microseconds cap=soft-detect,advanced
+[+27.77s] DEBUG: scanner.vala:763: Description: Time between queries when waiting for device state changes.
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (28)
+[+27.77s] DEBUG: scanner.vala:760: Option 28: name='needs-polling' title='Needs Polling' type=bool size=4 cap=soft-detect,advanced
+[+27.77s] DEBUG: scanner.vala:763: Description: Indicates whether the scanner needs to poll.
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (29)
+[+27.77s] DEBUG: scanner.vala:760: Option 29: name='(null)' title='Color correction coefficients' type=group size=4 cap=advanced
+[+27.77s] DEBUG: scanner.vala:763: Description: Matrix multiplication of RGB
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (30)
+[+27.77s] DEBUG: scanner.vala:760: Option 30: name='cct-1' title='Red' type=fixed size=4 min=-2.000000, max=2.000000, quant=0 cap=soft-select,soft-detect,emulated,advanced
+[+27.77s] DEBUG: scanner.vala:763: Description: Controls red level
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (31)
+[+27.77s] DEBUG: scanner.vala:760: Option 31: name='cct-2' title='Shift green to red' type=fixed size=4 min=-2.000000, max=2.000000, quant=0 cap=soft-select,soft-detect,emulated,advanced
+[+27.77s] DEBUG: scanner.vala:763: Description: Adds to red based on green level
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (32)
+[+27.77s] DEBUG: scanner.vala:760: Option 32: name='cct-3' title='Shift blue to red' type=fixed size=4 min=-2.000000, max=2.000000, quant=0 cap=soft-select,soft-detect,emulated,advanced
+[+27.77s] DEBUG: scanner.vala:763: Description: Adds to red based on blue level
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (33)
+[+27.77s] DEBUG: scanner.vala:760: Option 33: name='cct-4' title='Shift red to green' type=fixed size=4 min=-2.000000, max=2.000000, quant=0 cap=soft-select,soft-detect,emulated,advanced
+[+27.77s] DEBUG: scanner.vala:763: Description: Adds to green based on red level
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (34)
+[+27.77s] DEBUG: scanner.vala:760: Option 34: name='cct-5' title='Green' type=fixed size=4 min=-2.000000, max=2.000000, quant=0 cap=soft-select,soft-detect,emulated,advanced
+[+27.77s] DEBUG: scanner.vala:763: Description: Controls green level
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (35)
+[+27.77s] DEBUG: scanner.vala:760: Option 35: name='cct-6' title='Shift blue to green' type=fixed size=4 min=-2.000000, max=2.000000, quant=0 cap=soft-select,soft-detect,emulated,advanced
+[+27.77s] DEBUG: scanner.vala:763: Description: Adds to green based on blue level
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (36)
+[+27.77s] DEBUG: scanner.vala:760: Option 36: name='cct-7' title='Shift red to blue' type=fixed size=4 min=-2.000000, max=2.000000, quant=0 cap=soft-select,soft-detect,emulated,advanced
+[+27.77s] DEBUG: scanner.vala:763: Description: Adds to blue based on red level
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (37)
+[+27.77s] DEBUG: scanner.vala:760: Option 37: name='cct-8' title='Shift green to blue' type=fixed size=4 min=-2.000000, max=2.000000, quant=0 cap=soft-select,soft-detect,emulated,advanced
+[+27.77s] DEBUG: scanner.vala:763: Description: Adds to blue based on green level
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (38)
+[+27.77s] DEBUG: scanner.vala:760: Option 38: name='cct-9' title='Blue' type=fixed size=4 min=-2.000000, max=2.000000, quant=0 cap=soft-select,soft-detect,emulated,advanced
+[+27.77s] DEBUG: scanner.vala:763: Description: Control blue level
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (39)
+[+27.77s] DEBUG: scanner.vala:760: Option 39: name='(null)' title='Preview' type=group size=4 cap=advanced
+[+27.77s] DEBUG: scanner.vala:763: Description:
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (40)
+[+27.77s] DEBUG: scanner.vala:760: Option 40: name='preview' title='Preview' type=bool size=4 cap=soft-select,soft-detect
+[+27.77s] DEBUG: scanner.vala:763: Description: Request a preview-quality scan.
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (41)
+[+27.77s] DEBUG: scanner.vala:760: Option 41: name='preview-speed' title='Speed' type=bool size=4 cap=soft-select,soft-detect
+[+27.77s] DEBUG: scanner.vala:763: Description:
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (42)
+[+27.77s] DEBUG: scanner.vala:760: Option 42: name='(null)' title='Geometry' type=group size=4 cap=advanced
+[+27.77s] DEBUG: scanner.vala:763: Description:
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (43)
+[+27.77s] DEBUG: scanner.vala:760: Option 43: name='scan-area' title='Scan area' type=string size=13 values=["Maximum", "A4", "A5 Landscape", "A5 Portrait", "B5", "Letter", "Executive", "CD"] cap=soft-select,soft-detect
+[+27.77s] DEBUG: scanner.vala:763: Description: Select an area to scan based on well-known media sizes.
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (44)
+[+27.77s] DEBUG: scanner.vala:760: Option 44: name='tl-x' title='Top-left x' type=fixed size=4 unit=mm min=0.000000, max=215.899994, quant=0 cap=soft-select,soft-detect
+[+27.77s] DEBUG: scanner.vala:763: Description: Top-left x position of scan area.
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (45)
+[+27.77s] DEBUG: scanner.vala:760: Option 45: name='tl-y' title='Top-left y' type=fixed size=4 unit=mm min=0.000000, max=297.179993, quant=0 cap=soft-select,soft-detect
+[+27.77s] DEBUG: scanner.vala:763: Description: Top-left y position of scan area.
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (46)
+[+27.77s] DEBUG: scanner.vala:760: Option 46: name='br-x' title='Bottom-right x' type=fixed size=4 unit=mm min=0.000000, max=215.899994, quant=0 cap=soft-select,soft-detect
+[+27.77s] DEBUG: scanner.vala:763: Description: Bottom-right x position of scan area.
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (47)
+[+27.77s] DEBUG: scanner.vala:760: Option 47: name='br-y' title='Bottom-right y' type=fixed size=4 unit=mm min=0.000000, max=297.179993, quant=0 cap=soft-select,soft-detect
+[+27.77s] DEBUG: scanner.vala:763: Description: Bottom-right y position of scan area.
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (48)
+[+27.77s] DEBUG: scanner.vala:760: Option 48: name='quick-format' title='Quick format' type=string size=13 values=["Maximum", "A4", "A5 Landscape", "A5 Portrait", "B5", "Letter", "Executive", "CD"] cap=soft-select,soft-detect
+[+27.77s] DEBUG: scanner.vala:763: Description: Select an area to scan based on well-known media sizes. (DEPRECATED)
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (49)
+[+27.77s] DEBUG: scanner.vala:760: Option 49: name='(null)' title='Optional equipment' type=group size=4 cap=advanced
+[+27.77s] DEBUG: scanner.vala:763: Description:
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (50)
+[+27.77s] DEBUG: scanner.vala:760: Option 50: name='source' title='Scan source' type=string size=26 values=["Flatbed", "Automatic Document Feeder"] cap=soft-select,soft-detect
+[+27.77s] DEBUG: scanner.vala:763: Description: Selects the scan source (such as a document-feeder).
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (51)
+[+27.77s] DEBUG: scanner.vala:760: Option 51: name='auto-eject' title='Auto eject' type=bool size=4 cap=soft-select,soft-detect
+[+27.77s] DEBUG: scanner.vala:763: Description: Eject document after scanning
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (52)
+[+27.77s] DEBUG: scanner.vala:760: Option 52: name='film-type' title='Film type' type=string size=14 values=["Positive Film", "Negative Film"] cap=soft-select,soft-detect,inactive
+[+27.77s] DEBUG: scanner.vala:763: Description:
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (53)
+[+27.77s] DEBUG: scanner.vala:760: Option 53: name='focus-position' title='Focus Position' type=string size=24 values=["Focus on glass", "Focus 2.5mm above glass"] cap=soft-select,soft-detect,inactive,advanced
+[+27.77s] DEBUG: scanner.vala:763: Description: Sets the focus position to either the glass or 2.5mm above the glass
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (54)
+[+27.77s] DEBUG: scanner.vala:760: Option 54: name='bay' title='Bay' type=string size=4 values=[" 1 ", " 2 ", " 3 ", " 4 ", " 5 ", " 6 "] cap=soft-select,soft-detect,inactive
+[+27.77s] DEBUG: scanner.vala:763: Description: Select bay to scan
+[+27.77s] DEBUG: scanner.vala:910: sane_get_option_descriptor (55)
+[+27.77s] DEBUG: scanner.vala:760: Option 55: name='eject' title='Eject' type=button size=4 cap=soft-select,soft-detect
+[+27.77s] DEBUG: scanner.vala:763: Description: Eject the sheet in the ADF
+[+27.78s] DEBUG: scanner.vala:910: sane_get_option_descriptor (56)
+[+27.78s] DEBUG: scanner.vala:760: Option 56: name='adf-mode' title='ADF Mode' type=string size=8 values=["Simplex", "Duplex"] cap=soft-select,soft-detect,inactive
+[+27.78s] DEBUG: scanner.vala:763: Description: Selects the ADF mode (simplex/duplex)
+[+27.78s] DEBUG: scanner.vala:910: sane_get_option_descriptor (57)
+[+27.78s] DEBUG: scanner.vala:760: Option 57: name='detect-doc-size' title='Auto-detect document size' type=bool size=4 cap=soft-select,soft-detect,inactive,advanced
+[+27.78s] DEBUG: scanner.vala:763: Description: Activates document size auto-detection. The scan area will be set to match the detected document size.
+[+27.78s] DEBUG: scanner.vala:910: sane_get_option_descriptor (58)
+[+27.78s] DEBUG: scanner.vala:760: Option 58: name='scan-area-is-valid' title='Scan Area Is Valid' type=bool size=4 cap=soft-detect,advanced
+[+27.78s] DEBUG: scanner.vala:763: Description: Indicates whether the current scan area settings are valid.
+[+27.78s] DEBUG: scanner.vala:910: sane_get_option_descriptor (59)
+[+27.78s] DEBUG: scanner.vala:760: Option 59: name='adf-auto-scan' title='ADF Auto Scan' type=bool size=4 cap=soft-select,soft-detect,inactive,advanced
+[+27.78s] DEBUG: scanner.vala:763: Description: Skips per sheet device setup for faster throughput.
+[+27.78s] DEBUG: scanner.vala:910: sane_get_option_descriptor (60)
+[+27.78s] DEBUG: scanner.vala:760: Option 60: name='double-feed-detection-sensitivity' title='Double Feed Detection Sensitivity' type=string size=5 values=["None", "Low", "High"] cap=soft-select,soft-detect,inactive,advanced
+[+27.78s] DEBUG: scanner.vala:763: Description: Sets the sensitivity with which multi-sheet page feeds are detected and reported as errors.
+[+27.78s] DEBUG: scanner.vala:910: sane_get_option_descriptor (61)
+[+27.78s] DEBUG: scanner.vala:760: Option 61: name='ext-sane-status' title='Extended SANE Status' type=int size=4 min=0, max=2, quant=0 cap=soft-detect,advanced
+[+27.78s] DEBUG: scanner.vala:763: Description: Ugly kludge to provide additional status message strings to a frontend.
+[+27.78s] DEBUG: scanner.vala:910: sane_get_option_descriptor (62)
+[+27.78s] DEBUG: scanner.vala:760: Option 62: name='adf-duplex-direction-matches' title='ADF Duplex Direction Matches' type=bool size=4 cap=soft-detect,inactive,advanced
+[+27.78s] DEBUG: scanner.vala:763: Description: Indicates whether the device's ADF duplex mode, if available, scans in the same direction for the front and back.
+[+27.78s] DEBUG: scanner.vala:910: sane_get_option_descriptor (63)
+[+27.78s] DEBUG: scanner.vala:760: Option 63: name='deskew' title='Deskew' type=bool size=4 cap=soft-select,soft-detect,emulated,inactive,advanced
+[+27.78s] DEBUG: scanner.vala:763: Description: Rotate image so it appears upright.
+[+27.78s] DEBUG: scanner.vala:910: sane_get_option_descriptor (64)
+[+27.78s] DEBUG: scanner.vala:760: Option 64: name='autocrop' title='Trim image to paper size' type=bool size=4 cap=soft-select,soft-detect,emulated,inactive,advanced
+[+27.78s] DEBUG: scanner.vala:763: Description: Determines empty margins in the scanned image and removes them. This normally reduces the image to the size of the original document but may remove more.
+[+27.78s] DEBUG: scanner.vala:910: sane_get_option_descriptor (65)
+[+27.78s] DEBUG: scanner.vala:760: Option 65: name='calibrate' title='Calibrate' type=button size=4 cap=soft-select,soft-detect,inactive,advanced
+[+27.78s] DEBUG: scanner.vala:763: Description: Performs color matching to make sure that the document's color tones are scanned correctly.
+[+27.78s] DEBUG: scanner.vala:910: sane_get_option_descriptor (66)
+[+27.78s] DEBUG: scanner.vala:760: Option 66: name='clean' title='Clean' type=button size=4 cap=soft-select,soft-detect,inactive,advanced
+[+27.78s] DEBUG: scanner.vala:763: Description: Cleans the scanners reading section.
+[+27.78s] DEBUG: scanner.vala:910: sane_get_option_descriptor (67)
+[+27.78s] DEBUG: scanner.vala:571: sane_control_option (50, SANE_ACTION_SET_VALUE, "Automatic Document Feeder") -> (SANE_STATUS_GOOD, "Automatic Document Feeder")
+[+27.78s] DEBUG: scanner.vala:571: sane_control_option (2, SANE_ACTION_SET_VALUE, "Color") -> (SANE_STATUS_GOOD, "Color")
+[+27.78s] WARNING: scanner.vala:1249: The option adf-mode (56) is inactive and can't be set, please file a bug
+[+27.78s] WARNING: scanner.vala:1249: The option adf-auto-scan (59) is inactive and can't be set, please file a bug
+[+27.78s] DEBUG: scanner.vala:483: sane_control_option (12, SANE_ACTION_SET_VALUE, 150) -> (SANE_STATUS_GOOD, 600)
+[+27.78s] DEBUG: scanner.vala:483: sane_control_option (3, SANE_ACTION_SET_VALUE, 8) -> (SANE_STATUS_GOOD, 8)
+[+27.78s] DEBUG: scanner.vala:523: sane_control_option (46, SANE_ACTION_SET_VALUE, 210.000000) -> (SANE_STATUS_GOOD, 210.000000)
+[+27.78s] DEBUG: scanner.vala:523: sane_control_option (47, SANE_ACTION_SET_VALUE, 297.000000) -> (SANE_STATUS_GOOD, 297.000000)
+[+27.78s] DEBUG: scanner.vala:418: scale_int: scaling 21 [min: -100, max: 100] to 21 [min: -100, max: 100]
+[+27.78s] DEBUG: scanner.vala:483: sane_control_option (7, SANE_ACTION_SET_VALUE, 21) -> (SANE_STATUS_GOOD, 21)
+[+27.78s] DEBUG: scanner.vala:418: scale_int: scaling 32 [min: -100, max: 100] to 32 [min: -100, max: 100]
+[+27.78s] DEBUG: scanner.vala:483: sane_control_option (8, SANE_ACTION_SET_VALUE, 32) -> (SANE_STATUS_GOOD, 32)
+[+28.08s] DEBUG: app-window.vala:1981: Saving state to /home/arunasr/.cache/simple-scan/state
+[+31.23s] DEBUG: scanner.vala:1285: sane_start (page=0, pass=0) -> SANE_STATUS_GOOD
+[+31.23s] DEBUG: scanner.vala:1312: sane_get_parameters () -> SANE_STATUS_GOOD
+[+31.23s] DEBUG: scanner.vala:1324: Parameters: format=SANE_FRAME_RGB last_frame=SANE_TRUE bytes_per_line=14880 pixels_per_line=4960 lines=7015 depth=8
+[+31.23s] DEBUG: simple-scan.vala:1431: Page is 4960 pixels wide, 7015 pixels high, 8 bits per pixel
+[+31.31s] DEBUG: simple-scan.vala:1365: Getting color profile for device epkowa:interpreter:002:010
+[+31.33s] DEBUG: simple-scan.vala:1385: Unable to find colord device epkowa:interpreter:002:010: property match 'Serial'='sane:epkowa:interpreter:002:010' does not exist
diff --git a/data/logs/Epson_L4160.log b/data/logs/Epson_L4160.log
new file mode 100644
index 0000000..1e61595
--- /dev/null
+++ b/data/logs/Epson_L4160.log
@@ -0,0 +1,125 @@
+[+0.00s] DEBUG: simple-scan.vala:2014: Starting simple-scan 40.0, PID=2562
+[+0.00s] DEBUG: unsetenv() is not thread-safe and should not be used after threads are created
+[+0.03s] DEBUG: _g_io_module_get_default: Found default implementation gvfs (GDaemonVfs) for ‘gio-vfs’
+
+(simple-scan:2562): Gtk-WARNING **: 15:04:34.567: Theme parsing error: gtk.css:41:51: Invalid name of pseudo-class
+[+0.18s] DEBUG: _g_io_module_get_default: Found default implementation dconf (DConfSettingsBackend) for ‘gsettings-backend’
+[+0.22s] DEBUG: app-window.vala:2005: Loading state from /home/myself/.cache/simple-scan/state
+[+0.22s] DEBUG: app-window.vala:1984: Restoring window to 903x873 pixels
+[+0.27s] DEBUG: scanner.vala:1569: sane_init () -> SANE_STATUS_GOOD
+[+0.27s] DEBUG: scanner.vala:1575: SANE version 1.0.32
+[+0.27s] DEBUG: scanner.vala:1636: Requesting redetection of scan devices
+[+0.27s] DEBUG: scanner.vala:837: Processing request
+[+0.35s] DEBUG: scanner.vala:341: sane_get_devices () -> SANE_STATUS_GOOD
+[+0.35s] DEBUG: scanner.vala:353: Device: name="imagescan:esci:networkscan://192.168.1.5:1865" vendor="Epson" model="L4160" type=""
+[+0.61s] DEBUG: app-window.vala:2080: Saving state to /home/myself/.cache/simple-scan/state
+[+5.53s] DEBUG: gdk_pixbuf_from_pixdata() called on:
+[+5.53s] DEBUG: Encoding raw
+[+5.53s] DEBUG: Dimensions: 166 x 166
+[+5.53s] DEBUG: Rowstride: 664, Length: 110248
+[+5.53s] DEBUG: Copy pixels == false
+[+5.69s] DEBUG: app-window.vala:2080: Saving state to /home/myself/.cache/simple-scan/state
+[+9.49s] DEBUG: app-window.vala:2080: Saving state to /home/myself/.cache/simple-scan/state
+[+11.68s] DEBUG: simple-scan.vala:1819: Requesting scan at 600 dpi from device 'imagescan:esci:networkscan://192.168.1.5:1865'
+[+11.68s] DEBUG: scanner.vala:1704: Scanner.scan ("imagescan:esci:networkscan://192.168.1.5:1865", dpi=600, scan_mode=ScanMode.COLOR, depth=8, type=single, paper_width=2100, paper_height=2970, brightness=30, contrast=21, delay=0ms)
+[+11.68s] DEBUG: scanner.vala:837: Processing request
+
+(simple-scan:2562): Gtk-WARNING **: 15:04:46.222: Calling org.xfce.Session.Manager.Inhibit failed: GDBus.Error:org.freedesktop.DBus.Error.UnknownMethod: No such method “Inhibit”
+[+11.95s] DEBUG: app-window.vala:2080: Saving state to /home/myself/.cache/simple-scan/state
+[+13.16s] DEBUG: scanner.vala:898: sane_open ("imagescan:esci:networkscan://192.168.1.5:1865") -> SANE_STATUS_GOOD
+[+13.16s] DEBUG: scanner.vala:919: sane_get_option_descriptor (0)
+[+13.16s] DEBUG: scanner.vala:769: Option 0: type=int size=4 cap=soft-detect,advanced
+[+13.16s] DEBUG: scanner.vala:772: Description:
+[+13.16s] DEBUG: scanner.vala:919: sane_get_option_descriptor (1)
+[+13.16s] DEBUG: scanner.vala:769: Option 1: name='device-02-general' title='General' type=group size=0 cap=inactive
+[+13.16s] DEBUG: scanner.vala:772: Description: Basic options.
+[+13.16s] DEBUG: scanner.vala:919: sane_get_option_descriptor (2)
+[+13.16s] DEBUG: scanner.vala:769: Option 2: name='source' title='Document Source' type=string size=15 values=["Document Table"] cap=soft-detect
+[+13.16s] DEBUG: scanner.vala:772: Description: Document Source
+[+13.16s] DEBUG: scanner.vala:919: sane_get_option_descriptor (3)
+[+13.16s] DEBUG: scanner.vala:769: Option 3: name='enable-resampling' title='Enable Resampling' type=bool size=4 cap=soft-detect,inactive,advanced
+[+13.16s] DEBUG: scanner.vala:772: Description: This option provides the user with a wider range of supported resolutions. Resolutions not supported by the hardware will be achieved through image processing methods.
+[+13.16s] DEBUG: scanner.vala:919: sane_get_option_descriptor (4)
+[+13.16s] DEBUG: scanner.vala:769: Option 4: name='resolution' title='Resolution' type=int size=4 unit=dpi min=50, max=1200, quant=0 cap=soft-select,soft-detect
+[+13.16s] DEBUG: scanner.vala:772: Description: Resolution
+[+13.16s] DEBUG: scanner.vala:919: sane_get_option_descriptor (5)
+[+13.16s] DEBUG: scanner.vala:769: Option 5: name='resolution-bind' title='Bind X and Y resolutions' type=bool size=4 cap=soft-select,soft-detect,advanced
+[+13.16s] DEBUG: scanner.vala:772: Description: Bind X and Y resolutions
+[+13.16s] DEBUG: scanner.vala:919: sane_get_option_descriptor (6)
+[+13.16s] DEBUG: scanner.vala:769: Option 6: name='x-resolution' title='X Resolution' type=int size=4 unit=dpi min=50, max=1200, quant=0 cap=soft-detect,advanced
+[+13.16s] DEBUG: scanner.vala:772: Description: X Resolution
+[+13.16s] DEBUG: scanner.vala:919: sane_get_option_descriptor (7)
+[+13.16s] DEBUG: scanner.vala:769: Option 7: name='y-resolution' title='Y Resolution' type=int size=4 unit=dpi min=50, max=1200, quant=0 cap=soft-detect,advanced
+[+13.16s] DEBUG: scanner.vala:772: Description: Y Resolution
+[+13.16s] DEBUG: scanner.vala:919: sane_get_option_descriptor (8)
+[+13.16s] DEBUG: scanner.vala:769: Option 8: name='scan-area' title='Scan Area' type=string size=19 values=["Executive/Portrait", "ISO/A4/Portrait", "ISO/A5/Portrait", "ISO/A5/Landscape", "ISO/A6/Portrait", "ISO/A6/Landscape", "JIS/B5/Portrait", "JIS/B6/Portrait", "JIS/B6/Landscape", "Letter/Portrait", "Manual", "Maximum"] cap=soft-select,soft-detect
+[+13.16s] DEBUG: scanner.vala:772: Description: Scan Area
+[+13.16s] DEBUG: scanner.vala:919: sane_get_option_descriptor (9)
+[+13.16s] DEBUG: scanner.vala:769: Option 9: name='mode' title='Image Type' type=string size=11 values=["Monochrome", "Grayscale", "Color"] cap=soft-select,soft-detect,emulated
+[+13.16s] DEBUG: scanner.vala:772: Description: Image Type
+[+13.16s] DEBUG: scanner.vala:919: sane_get_option_descriptor (10)
+[+13.16s] DEBUG: scanner.vala:769: Option 10: name='device-03-geometry' title='Geometry' type=group size=0 cap=inactive
+[+13.16s] DEBUG: scanner.vala:772: Description: Scan area and image size related options.
+[+13.16s] DEBUG: scanner.vala:919: sane_get_option_descriptor (11)
+[+13.16s] DEBUG: scanner.vala:769: Option 11: name='br-x' title='Bottom Right X' type=fixed size=4 unit=mm min=0.000000, max=215.899994, quant=0 cap=soft-select,soft-detect
+[+13.16s] DEBUG: scanner.vala:772: Description: Bottom Right X
+[+13.16s] DEBUG: scanner.vala:919: sane_get_option_descriptor (12)
+[+13.16s] DEBUG: scanner.vala:769: Option 12: name='br-y' title='Bottom Right Y' type=fixed size=4 unit=mm min=0.000000, max=297.179993, quant=0 cap=soft-select,soft-detect
+[+13.16s] DEBUG: scanner.vala:772: Description: Bottom Right Y
+[+13.16s] DEBUG: scanner.vala:919: sane_get_option_descriptor (13)
+[+13.16s] DEBUG: scanner.vala:769: Option 13: name='tl-x' title='Top Left X' type=fixed size=4 unit=mm min=0.000000, max=215.899994, quant=0 cap=soft-select,soft-detect
+[+13.16s] DEBUG: scanner.vala:772: Description: Top Left X
+[+13.16s] DEBUG: scanner.vala:919: sane_get_option_descriptor (14)
+[+13.16s] DEBUG: scanner.vala:769: Option 14: name='tl-y' title='Top Left Y' type=fixed size=4 unit=mm min=0.000000, max=297.179993, quant=0 cap=soft-select,soft-detect
+[+13.16s] DEBUG: scanner.vala:772: Description: Top Left Y
+[+13.16s] DEBUG: scanner.vala:919: sane_get_option_descriptor (15)
+[+13.16s] DEBUG: scanner.vala:769: Option 15: name='device-04-enhancement' title='Enhancement' type=group size=0 cap=inactive
+[+13.16s] DEBUG: scanner.vala:772: Description: Image modification options.
+[+13.16s] DEBUG: scanner.vala:919: sane_get_option_descriptor (16)
+[+13.16s] DEBUG: scanner.vala:769: Option 16: name='rotate' title='Rotate' type=string size=12 values=["0 degrees", "90 degrees", "180 degrees", "270 degrees", "Auto"] cap=soft-select,soft-detect,emulated
+[+13.16s] DEBUG: scanner.vala:772: Description: Rotate
+[+13.16s] DEBUG: scanner.vala:919: sane_get_option_descriptor (17)
+[+13.16s] DEBUG: scanner.vala:769: Option 17: name='blank-threshold' title='Skip Blank Pages Settings' type=fixed size=4 min=0.000000, max=100.000000, quant=0 cap=soft-select,soft-detect,emulated
+[+13.16s] DEBUG: scanner.vala:772: Description: Skip Blank Pages Settings
+[+13.16s] DEBUG: scanner.vala:919: sane_get_option_descriptor (18)
+[+13.16s] DEBUG: scanner.vala:769: Option 18: name='brightness' title='Brightness' type=int size=4 min=-100, max=100, quant=0 cap=soft-select,soft-detect,emulated
+[+13.16s] DEBUG: scanner.vala:772: Description: Change brightness of the acquired image.
+[+13.16s] DEBUG: scanner.vala:919: sane_get_option_descriptor (19)
+[+13.16s] DEBUG: scanner.vala:769: Option 19: name='contrast' title='Contrast' type=int size=4 min=-100, max=100, quant=0 cap=soft-select,soft-detect,emulated
+[+13.16s] DEBUG: scanner.vala:772: Description: Change contrast of the acquired image.
+[+13.16s] DEBUG: scanner.vala:919: sane_get_option_descriptor (20)
+[+13.16s] DEBUG: scanner.vala:769: Option 20: name='threshold' title='Threshold' type=int size=4 min=0, max=255, quant=0 cap=soft-select,soft-detect,emulated
+[+13.16s] DEBUG: scanner.vala:772: Description: Threshold
+[+13.16s] DEBUG: scanner.vala:919: sane_get_option_descriptor (21)
+[+13.16s] DEBUG: scanner.vala:769: Option 21: name='device--' title='Other' type=group size=0 cap=inactive
+[+13.16s] DEBUG: scanner.vala:772: Description:
+[+13.16s] DEBUG: scanner.vala:919: sane_get_option_descriptor (22)
+[+13.16s] DEBUG: scanner.vala:769: Option 22: name='gamma' title='Gamma' type=string size=4 values=["1.0", "1.8"] cap=soft-select,soft-detect,advanced
+[+13.16s] DEBUG: scanner.vala:772: Description: Gamma
+[+13.16s] DEBUG: scanner.vala:919: sane_get_option_descriptor (23)
+[+13.16s] DEBUG: scanner.vala:769: Option 23: name='jpeg-quality' title='JPEG Quality' type=int size=4 min=1, max=100, quant=0 cap=soft-select,soft-detect,advanced
+[+13.16s] DEBUG: scanner.vala:772: Description: JPEG Quality
+[+13.16s] DEBUG: scanner.vala:919: sane_get_option_descriptor (24)
+[+13.16s] DEBUG: scanner.vala:769: Option 24: name='transfer-format' title='Transfer Format' type=string size=5 values=["JPEG", "RAW"] cap=soft-select,soft-detect
+[+13.16s] DEBUG: scanner.vala:772: Description: Selecting a compressed format such as JPEG normally results in faster device side processing.
+[+13.16s] DEBUG: scanner.vala:919: sane_get_option_descriptor (25)
+[+13.16s] DEBUG: scanner.vala:769: Option 25: name='transfer-size' title='Transfer Size' type=int size=4 min=1, max=268435455, quant=0 cap=soft-select,soft-detect,advanced
+[+13.16s] DEBUG: scanner.vala:772: Description: Transfer Size
+[+13.16s] DEBUG: scanner.vala:919: sane_get_option_descriptor (26)
+[+13.16s] DEBUG: scanner.vala:576: sane_control_option (2, SANE_ACTION_SET_VALUE, source="Document Table") -> (SANE_STATUS_INVAL, "Document Table")
+[+13.16s] WARNING: scanner.vala:986: Unable to set single page source, please file a bug
+[+13.16s] DEBUG: scanner.vala:576: sane_control_option (9, SANE_ACTION_SET_VALUE, mode="Color") -> (SANE_STATUS_GOOD, "Color")
+[+13.16s] DEBUG: scanner.vala:488: sane_control_option (6, SANE_ACTION_SET_VALUE, x-resolution=600) -> (SANE_STATUS_INVAL, 600)
+[+13.16s] DEBUG: scanner.vala:488: sane_control_option (7, SANE_ACTION_SET_VALUE, y-resolution=600) -> (SANE_STATUS_INVAL, 600)
+[+13.16s] DEBUG: scanner.vala:528: sane_control_option (11, SANE_ACTION_SET_VALUE, br-x=210.000000) -> (SANE_STATUS_GOOD, 210.000000)
+[+13.17s] DEBUG: scanner.vala:528: sane_control_option (12, SANE_ACTION_SET_VALUE, br-y=297.000000) -> (SANE_STATUS_GOOD, 297.000000)
+[+13.17s] DEBUG: scanner.vala:423: scale_int: scaling 30 [min: -100, max: 100] to 30 [min: -100, max: 100]
+[+13.17s] DEBUG: scanner.vala:488: sane_control_option (18, SANE_ACTION_SET_VALUE, brightness=30) -> (SANE_STATUS_GOOD, 30)
+[+13.17s] DEBUG: scanner.vala:423: scale_int: scaling 21 [min: -100, max: 100] to 21 [min: -100, max: 100]
+[+13.17s] DEBUG: scanner.vala:488: sane_control_option (19, SANE_ACTION_SET_VALUE, contrast=21) -> (SANE_STATUS_GOOD, 21)
+[+15.14s] DEBUG: scanner.vala:1301: sane_start (page=0, pass=0) -> SANE_STATUS_GOOD
+[+15.14s] DEBUG: scanner.vala:1338: sane_get_parameters () -> SANE_STATUS_GOOD
+[+15.14s] DEBUG: scanner.vala:1350: Parameters: format=SANE_FRAME_RGB last_frame=SANE_TRUE bytes_per_line=1860 pixels_per_line=620 lines=876 depth=8
+[+15.14s] DEBUG: simple-scan.vala:1714: Page is 620 pixels wide, 876 pixels high, 8 bits per pixel
+[+15.14s] DEBUG: simple-scan.vala:1648: Getting color profile for device imagescan:esci:networkscan://192.168.1.5:1865
+[+15.15s] DEBUG: simple-scan.vala:1668: Unable to find colord device imagescan:esci:networkscan://192.168.1.5:1865: The name org.freedesktop.ColorManager was not provided by any .service files
diff --git a/data/meson.build b/data/meson.build
index aa1d0ec..2b5a0ee 100644
--- a/data/meson.build
+++ b/data/meson.build
@@ -24,3 +24,17 @@ i18n.merge_file ('appdata-file',
po_dir: '../po')
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',
+ 'ui/app-window.ui',
+ 'ui/authorize-dialog.ui',
+ 'ui/help-overlay.ui',
+ 'ui/preferences-dialog.ui',
+])
+resources = gnome.compile_resources ('resources', 'simple-scan.gresource.xml',
+ dependencies: resource_files,
+ source_dir: '.',
+ c_name: 'resources')
diff --git a/data/simple-scan.appdata.xml.in b/data/simple-scan.appdata.xml.in
index 32f46e8..b96fbaf 100644
--- a/data/simple-scan.appdata.xml.in
+++ b/data/simple-scan.appdata.xml.in
@@ -25,18 +25,37 @@
<url type="donation">https://www.gnome.org/friends/</url>
<developer_name>The GNOME Project</developer_name>
<releases>
- <release date="2020-12-08" version="3.38.2" >
+ <release date="2021-05-25" version="40.1">
<description>
<p>
- This is an stable release in the 3.38 series,
- with the following improvements:
+ Updated translations.
+ </p>
+ </description>
+ </release>
+ <release date="2021-03-23" version="40.0">
+ <description>
+ <p>
+ Updated translations.
+ </p>
+ </description>
+ </release>
+ <release date="2021-02-25" version="40.beta" type="development">
+ <description>
+ <p>
+ This is an unstable release in the 40 development series,
+ with the following changes:
</p>
<ul>
- <li>Add new text resolution 200 dpi [#175].</li>
- <li>Fix crash when scanning on Lexmark MFP.</li>
- <li>Display an error, when no documents found in the feeder during start scanning [#195].</li>
- <li>Do not use is_inhibited() as it is not reliable, check the cookie value instead.</li>
- <li>Updated translations.</li>
+ <li>Don't repeat vendor name in the device name</li>
+ <li>GNOME 40 consistency updates</li>
+ <li>Fix crop size after decreasing page size</li>
+ <li>UI fixes: change crop icon, improve layout of buttons</li>
+ <li>Add redetect button to device list</li>
+ <li>Add new resolution 200 DPI</li>
+ <li>Add zero second delay for Multiple Pages from FlatBed</li>
+ <li>Display an error, when no documents found in the feeder</li>
+ <li>Rename 'Start again' button to 'New document'</li>
+ <li>Fix crash on lexmark backend</li>
</ul>
<p>This release also updates translations.</p>
</description>
diff --git a/data/simple-scan.gresource.xml b/data/simple-scan.gresource.xml
new file mode 100644
index 0000000..b913b39
--- /dev/null
+++ b/data/simple-scan.gresource.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gresources>
+ <gresource prefix="/org/gnome/SimpleScan">
+ <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" 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>
+ </gresource>
+</gresources>
diff --git a/data/ui/app-window.ui b/data/ui/app-window.ui
new file mode 100644
index 0000000..5fd0a0a
--- /dev/null
+++ b/data/ui/app-window.ui
@@ -0,0 +1,834 @@
+<?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>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkMenuItem" id="rotate_left_menuitem">
+ <property name="visible">True</property>
+ <property name="can_focus">False</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="can_focus">False</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="can_focus">False</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>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkRadioMenuItem" id="no_crop_menuitem">
+ <property name="visible">True</property>
+ <property name="can_focus">False</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="can_focus">False</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="can_focus">False</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="can_focus">False</property>
+ <property name="label" translatable="yes" comments="Radio button for cropping page to A6 size">A_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="a6_menuitem_toggled_cb" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkRadioMenuItem" id="letter_menuitem">
+ <property name="visible">True</property>
+ <property name="can_focus">False</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="can_focus">False</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="can_focus">False</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="can_focus">False</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="can_focus">False</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>
+ <property name="can_focus">False</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="crop_rotate_menuitem">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">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="can_focus">False</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="can_focus">False</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="can_focus">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="can_focus">False</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">
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</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="can_focus">False</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="can_focus">False</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="can_focus">False</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="can_focus">False</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="can_focus">False</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="can_focus">False</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="can_focus">False</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="can_focus">False</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="can_focus">False</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="can_focus">False</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="can_focus">False</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="can_focus">False</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="can_focus">False</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="can_focus">False</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="can_focus">False</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="can_focus">False</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="can_focus">False</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="can_focus">False</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="can_focus">False</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="can_focus">False</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">
+ <property name="width_request">320</property>
+ <property name="height_request">480</property>
+ <property name="can_focus">False</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>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="HdyHeaderBar" id="header_bar">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="show_close_button">True</property>
+ <child>
+ <object class="GtkBox" id="open_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="valign">center</property>
+ <child>
+ <object class="GtkButton" id="stop_button">
+ <property name="can_focus">False</property>
+ <property name="receives_default">False</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="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkSpinner" id="stop_button_spinner">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="active">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="can_focus">False</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>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <style>
+ <class name="text-button"/>
+ <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="can_focus">False</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes" comments="Tooltip for scan toolbar button">Scan a single page from the scanner</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="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkImage" id="scan_options_image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</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="can_focus">False</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>
+ </object>
+ </child>
+ <style>
+ <class name="text-button"/>
+ <class name="suggested-action"/>
+ </style>
+ </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="can_focus">False</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="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkImage" id="scan_hint_image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</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="can_focus">False</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>
+ <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>
+ <object class="GtkMenuButton" id="menu_button">
+ <property name="visible">True</property>
+ <property name="can_focus">False</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="can_focus">False</property>
+ <property name="icon_name">open-menu-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ </child>
+ <style>
+ <class name="image-button"/>
+ </style>
+ </object>
+ <packing>
+ <property name="pack_type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="save_button">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">False</property>
+ <property name="receives_default">False</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="can_focus">False</property>
+ <property name="icon_name">document-save-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ </child>
+ <style>
+ <class name="image-button"/>
+ </style>
+ </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="can_focus">False</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>
+ <child>
+ <object class="GtkBox" id="device_buttons_box">
+ <property name="visible">False</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">horizontal</property>
+ <property name="halign">center</property>
+ <property name="spacing">10</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>
+ <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"/>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">view-refresh-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ </child>
+ <style>
+ <class name="image-button"/>
+ </style>
+ </object>
+ <packing>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="name">startup</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="main_vbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkActionBar" id="action_bar">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </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>
+ </object>
+ <packing>
+ <property name="name">document</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </template>
+</interface>
diff --git a/data/ui/authorize-dialog.ui b/data/ui/authorize-dialog.ui
new file mode 100644
index 0000000..79e43fd
--- /dev/null
+++ b/data/ui/authorize-dialog.ui
@@ -0,0 +1,111 @@
+<?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>
+ <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>
+ <child>
+ <object class="GtkBox" id="vbox5">
+ <property name="visible">True</property>
+ <property name="border_width">5</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">12</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>
+ <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>
+ <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>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <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>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">username_entry</property>
+ </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>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">password_entry</property>
+ </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/help-overlay.ui b/data/ui/help-overlay.ui
new file mode 100644
index 0000000..105d876
--- /dev/null
+++ b/data/ui/help-overlay.ui
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <!-- interface-requires gtk+ 3.17 -->
+ <object class="GtkShortcutsWindow" id="help_overlay">
+ <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="accelerator">&lt;ctrl&gt;1</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="accelerator">&lt;ctrl&gt;f</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="accelerator">&lt;ctrl&gt;m</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="accelerator">Escape</property>
+ <property name="title" translatable="yes" context="shortcut window">Stop scan in progress</property>
+ </object>
+ </child>
+ </object>
+ </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="accelerator">less</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="accelerator">greater</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="accelerator">bracketleft</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="accelerator">bracketright</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="accelerator">Delete</property>
+ <property name="title" translatable="yes" context="shortcut window">Delete page</property>
+ </object>
+ </child>
+ </object>
+ </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="accelerator">&lt;ctrl&gt;n</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="accelerator">&lt;ctrl&gt;s</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="accelerator">&lt;ctrl&gt;e</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="accelerator">&lt;ctrl&gt;p</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="accelerator">&lt;ctrl&gt;c</property>
+ <property name="title" translatable="yes" context="shortcut window">Copy current page to clipboard</property>
+ </object>
+ </child>
+ </object>
+ </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="accelerator">F1</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="accelerator">&lt;ctrl&gt;question</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="accelerator">&lt;ctrl&gt;q</property>
+ <property name="title" translatable="yes" context="shortcut window">Quit</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/data/ui/preferences-dialog.ui b/data/ui/preferences-dialog.ui
new file mode 100644
index 0000000..a54709c
--- /dev/null
+++ b/data/ui/preferences-dialog.ui
@@ -0,0 +1,282 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.2 -->
+<interface>
+ <requires lib="gtk+" version="3.10"/>
+ <object class="GtkAdjustment" id="brightness_adjustment">
+ <property name="lower">-100</property>
+ <property name="upper">100</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="contrast_adjustment">
+ <property name="lower">-100</property>
+ <property name="upper">100</property>
+ <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>
+ <template class="PreferencesDialog" parent="HdyPreferencesWindow">
+ <property name="can_focus">False</property>
+ <property name="icon_name">org.gnome.SimpleScan</property>
+ <property name="search_enabled">False</property>
+ <child>
+ <object class="HdyPreferencesPage">
+ <property name="visible">True</property>
+ <child>
+ <object class="HdyPreferencesGroup">
+ <property name="visible">True</property>
+ <property name="title" translatable="yes" comments="Preferences Dialog: Section label for scanning settings">Scanning</property>
+ <child>
+ <object class="HdyActionRow">
+ <property name="visible">True</property>
+ <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="can_focus">False</property>
+ <property name="valign">center</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <object class="GtkRadioButton" 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">
+ <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">
+ <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>
+ <style>
+ <class name="linked"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="HdyActionRow">
+ <property name="visible">True</property>
+ <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="can_focus">False</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>
+ <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="can_focus">False</property>
+ <property name="valign">center</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <object class="GtkRadioButton" 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">
+ <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">
+ <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">
+ <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">
+ <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>
+ <style>
+ <class name="linked"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="HdyPreferencesGroup">
+ <property name="visible">True</property>
+ <property name="title" translatable="yes" comments="Preferences Dialog: Section label for quality settings">Quality</property>
+ <child>
+ <object class="HdyActionRow">
+ <property name="visible">True</property>
+ <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="can_focus">False</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>
+ <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="can_focus">False</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>
+ <property name="can_focus">False</property>
+ <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>
+ <property name="draw_value">False</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="HdyActionRow">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <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>
+ <property name="draw_value">False</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </template>
+ <object class="GtkSizeGroup" id="scale_size_group">
+ <property name="mode">GTK_SIZE_GROUP_HORIZONTAL</property>
+ <widgets>
+ <widget name="brightness_scale"/>
+ <widget name="contrast_scale"/>
+ </widgets>
+ </object>
+</interface>