summaryrefslogtreecommitdiff
path: root/data/ui
diff options
context:
space:
mode:
Diffstat (limited to 'data/ui')
-rw-r--r--data/ui/app-window.ui946
-rw-r--r--data/ui/authorize-dialog.ui131
-rw-r--r--data/ui/drivers-dialog.ui137
-rw-r--r--data/ui/help-overlay.ui24
-rw-r--r--data/ui/preferences-dialog.ui191
-rw-r--r--data/ui/reorder-pages-dialog.ui92
-rw-r--r--data/ui/reorder-pages-item.ui51
7 files changed, 650 insertions, 922 deletions
diff --git a/data/ui/app-window.ui b/data/ui/app-window.ui
index 744b8c2..05ac374 100644
--- a/data/ui/app-window.ui
+++ b/data/ui/app-window.ui
@@ -1,505 +1,186 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.22.1 -->
<interface>
- <requires lib="gtk+" version="3.12"/>
- <object class="GtkMenu" id="page_menu">
- <property name="visible">True</property>
- <child>
- <object class="GtkMenuItem" id="rotate_left_menuitem">
- <property name="visible">True</property>
- <property name="label" translatable="yes" comments="Menu item to rotate page to left (anti-clockwise)">Rotate _Left</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="rotate_left_button_clicked_cb" swapped="no"/>
- <accelerator key="bracketleft" signal="activate"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="rotate_right_menuitem">
- <property name="visible">True</property>
- <property name="label" translatable="yes" comments="Menu item to rotate page to right (clockwise)">Rotate _Right</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="rotate_right_button_clicked_cb" swapped="no"/>
- <accelerator key="bracketright" signal="activate"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="crop_menuitem">
- <property name="visible">True</property>
- <property name="label" translatable="yes" comments="Label for page crop submenu">_Crop</property>
- <property name="use_underline">True</property>
- <child type="submenu">
- <object class="GtkMenu" id="crop_menu">
- <property name="visible">True</property>
- <child>
- <object class="GtkRadioMenuItem" id="no_crop_menuitem">
- <property name="visible">True</property>
- <property name="label" translatable="yes" comments="Radio button for no crop">_None</property>
- <property name="use_underline">True</property>
- <property name="active">True</property>
- <property name="draw_as_radio">True</property>
- <signal name="toggled" handler="no_crop_menuitem_toggled_cb" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkRadioMenuItem" id="a4_menuitem">
- <property name="visible">True</property>
- <property name="label" translatable="yes" comments="Radio button for cropping page to A4 size">A_4</property>
- <property name="use_underline">True</property>
- <property name="draw_as_radio">True</property>
- <property name="group">no_crop_menuitem</property>
- <signal name="toggled" handler="a4_menuitem_toggled_cb" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkRadioMenuItem" id="a5_menuitem">
- <property name="visible">True</property>
- <property name="label" translatable="yes" comments="Radio button for cropping page to A5 size">A_5</property>
- <property name="use_underline">True</property>
- <property name="draw_as_radio">True</property>
- <property name="group">no_crop_menuitem</property>
- <signal name="toggled" handler="a5_menuitem_toggled_cb" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkRadioMenuItem" id="a6_menuitem">
- <property name="visible">True</property>
- <property name="use_underline">True</property>
- <property name="draw_as_radio">True</property>
- <property name="group">no_crop_menuitem</property>
- <signal name="toggled" handler="a6_menuitem_toggled_cb" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkRadioMenuItem" id="letter_menuitem">
- <property name="visible">True</property>
- <property name="label" translatable="yes" comments="Radio button for cropping page to US letter size">_Letter</property>
- <property name="use_underline">True</property>
- <property name="draw_as_radio">True</property>
- <property name="group">no_crop_menuitem</property>
- <signal name="toggled" handler="letter_menuitem_toggled_cb" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkRadioMenuItem" id="legal_menuitem">
- <property name="visible">True</property>
- <property name="label" translatable="yes" comments="Radio button for cropping to page to US legal size">Le_gal</property>
- <property name="use_underline">True</property>
- <property name="draw_as_radio">True</property>
- <property name="group">no_crop_menuitem</property>
- <signal name="toggled" handler="legal_menuitem_toggled_cb" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkRadioMenuItem" id="four_by_six_menuitem">
- <property name="visible">True</property>
- <property name="label" translatable="yes" comments="Radio button for cropping page to 4x6 inch">4×6</property>
- <property name="use_underline">True</property>
- <property name="draw_as_radio">True</property>
- <property name="group">no_crop_menuitem</property>
- <signal name="toggled" handler="four_by_six_menuitem_toggled_cb" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkRadioMenuItem" id="a3_menuitem">
- <property name="visible">True</property>
- <property name="label" translatable="yes" comments="Radio button for cropping page to A3">A_3</property>
- <property name="use_underline">True</property>
- <property name="draw_as_radio">True</property>
- <property name="group">no_crop_menuitem</property>
- <signal name="toggled" handler="a3_menuitem_toggled_cb" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkRadioMenuItem" id="custom_crop_menuitem">
- <property name="visible">True</property>
- <property name="label" translatable="yes" comments="Radio button for cropping to custom page size">_Custom</property>
- <property name="use_underline">True</property>
- <property name="draw_as_radio">True</property>
- <property name="group">no_crop_menuitem</property>
- <signal name="toggled" handler="custom_crop_menuitem_toggled_cb" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkSeparatorMenuItem" id="crop_sep_menuitem">
- <property name="visible">True</property>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="crop_rotate_menuitem">
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="label" translatable="yes" comments="Menu item to rotate the crop area">_Rotate Crop</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="crop_rotate_menuitem_activate_cb" swapped="no"/>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="page_move_left_menuitem">
- <property name="visible">True</property>
- <property name="label" translatable="yes" comments="Menu item to move the selected page to the left">Move Left</property>
- <signal name="activate" handler="page_move_left_menuitem_activate_cb" swapped="no"/>
- <accelerator key="less" signal="activate"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="page_move_right_menuitem">
- <property name="visible">True</property>
- <property name="label" translatable="yes" comments="Menu item to move the selected page to the right">Move Right</property>
- <property name="use_underline">True</property>
- <signal name="activate" handler="page_move_right_menuitem_activate_cb" swapped="no"/>
- <accelerator key="greater" signal="activate"/>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="copy_to_clipboard_menuitem">
- <property name="label">gtk-copy</property>
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- <signal name="activate" handler="copy_to_clipboard_button_clicked_cb" swapped="no"/>
- <accelerator key="c" signal="activate" modifiers="GDK_CONTROL_MASK"/>
- </object>
- </child>
- <child>
- <object class="GtkImageMenuItem" id="page_delete_menuitem">
- <property name="label">gtk-delete</property>
- <property name="visible">True</property>
- <property name="use_underline">True</property>
- <property name="use_stock">True</property>
- <signal name="activate" handler="page_delete_menuitem_activate_cb" swapped="no"/>
- <accelerator key="Delete" signal="activate"/>
- </object>
- </child>
- </object>
- <object class="GtkListStore" id="device_model">
- <columns>
- <!-- column-name device_name -->
- <column type="gchararray"/>
- <!-- column-name label -->
- <column type="gchararray"/>
- </columns>
- </object>
- <object class="GtkPopover" id="scan_options_popover">
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="margin_left">12</property>
- <property name="margin_right">12</property>
- <property name="margin_top">12</property>
- <property name="margin_bottom">12</property>
- <property name="orientation">vertical</property>
- <property name="spacing">6</property>
- <child>
- <object class="GtkRadioButton" id="scan_single_radio">
- <property name="visible">True</property>
- <property name="receives_default">False</property>
- <property name="draw_indicator">False</property>
- <signal name="toggled" handler="scan_single_radio_toggled_cb" swapped="no"/>
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="margin_start">12</property>
- <property name="margin_end">12</property>
- <property name="margin_top">6</property>
- <property name="margin_bottom">6</property>
- <property name="spacing">12</property>
- <child>
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="icon_name">scanner-symbolic</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Single Page</property>
- <property name="use_underline">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="scan_adf_radio">
- <property name="visible">True</property>
- <property name="receives_default">False</property>
- <property name="draw_indicator">False</property>
- <property name="group">scan_single_radio</property>
- <signal name="toggled" handler="scan_adf_radio_toggled_cb" swapped="no"/>
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="margin_start">12</property>
- <property name="margin_end">12</property>
- <property name="margin_top">6</property>
- <property name="margin_bottom">6</property>
- <property name="spacing">12</property>
- <child>
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="icon_name">scan-type-adf-symbolic</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="label" translatable="yes">All Pages From _Feeder</property>
- <property name="use_underline">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="scan_batch_radio">
- <property name="visible">True</property>
- <property name="receives_default">False</property>
- <property name="draw_indicator">False</property>
- <property name="group">scan_single_radio</property>
- <signal name="toggled" handler="scan_batch_radio_toggled_cb" swapped="no"/>
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="margin_start">12</property>
- <property name="margin_end">12</property>
- <property name="margin_top">6</property>
- <property name="margin_bottom">6</property>
- <property name="spacing">12</property>
- <child>
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="icon_name">scan-type-batch-symbolic</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Multiple Pages From Flatbed</property>
- <property name="use_underline">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="text_radio">
- <property name="visible">True</property>
- <property name="receives_default">False</property>
- <property name="margin_top">12</property>
- <property name="draw_indicator">False</property>
- <signal name="toggled" handler="text_radio_toggled_cb" swapped="no"/>
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="margin_start">12</property>
- <property name="margin_end">12</property>
- <property name="margin_top">6</property>
- <property name="margin_bottom">6</property>
- <property name="spacing">12</property>
- <child>
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="icon_name">x-office-document-symbolic</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Text</property>
- <property name="use_underline">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">3</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="photo_radio">
- <property name="visible">True</property>
- <property name="receives_default">False</property>
- <property name="draw_indicator">False</property>
- <property name="group">text_radio</property>
- <signal name="toggled" handler="photo_radio_toggled_cb" swapped="no"/>
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="margin_start">12</property>
- <property name="margin_end">12</property>
- <property name="margin_top">6</property>
- <property name="margin_bottom">6</property>
- <property name="spacing">12</property>
- <child>
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="icon_name">image-x-generic-symbolic</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Image</property>
- <property name="use_underline">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="preferences_button">
- <property name="label" translatable="yes">_Preferences</property>
- <property name="height_request">40</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="margin_top">12</property>
- <property name="use_underline">True</property>
- <signal name="clicked" handler="preferences_button_clicked_cb" swapped="no"/>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">5</property>
- </packing>
- </child>
- </object>
- </child>
- </object>
- <template class="AppWindow" parent="HdyApplicationWindow">
+ <requires lib="gtk" version="4.0"/>
+ <requires lib="libadwaita" version="1.0"/>
+
+ <menu id="context-menu">
+ <item>
+ <attribute name="label" translatable="yes" comments="Menu item to rotate page to left (anti-clockwise)">Rotate _Left</attribute>
+ <attribute name="action">app.rotate_left</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes" comments="Menu item to rotate page to right (clockwise)">Rotate _Right</attribute>
+ <attribute name="action">app.rotate_right</attribute>
+ </item>
+ <submenu>
+ <attribute name="label" translatable="yes" comments="Label for page crop submenu">_Crop</attribute>
+
+ <section>
+ <item>
+ <attribute name="label" translatable="yes" comments="Radio button for no crop">_None</attribute>
+ <attribute name="action">crop.set</attribute>
+ <attribute name="target">none</attribute>
+ </item>
+
+ <item>
+ <attribute name="label" translatable="yes" comments="Radio button for cropping page to A4 size">A_4</attribute>
+ <attribute name="action">crop.set</attribute>
+ <attribute name="target">A4</attribute>
+ </item>
+
+ <item>
+ <attribute name="label" translatable="yes" comments="Radio button for cropping page to A5 size">A_5</attribute>
+ <attribute name="action">crop.set</attribute>
+ <attribute name="target">A5</attribute>
+ </item>
+
+ <item>
+ <attribute name="label" translatable="yes" comments="Radio button for cropping page to A6 size">A_6</attribute>
+ <attribute name="action">crop.set</attribute>
+ <attribute name="target">A6</attribute>
+ </item>
+
+ <item>
+ <attribute name="label" translatable="yes" comments="Radio button for cropping page to US letter size">_Letter</attribute>
+ <attribute name="action">crop.set</attribute>
+ <attribute name="target">letter</attribute>
+ </item>
+
+ <item>
+ <attribute name="label" translatable="yes" comments="Radio button for cropping to page to US legal size">Le_gal</attribute>
+ <attribute name="action">crop.set</attribute>
+ <attribute name="target">legal</attribute>
+ </item>
+
+ <item>
+ <attribute name="label" translatable="yes" comments="Radio button for cropping page to 4x6 inch">4×6</attribute>
+ <attribute name="action">crop.set</attribute>
+ <attribute name="target">4x6</attribute>
+ </item>
+
+ <item>
+ <attribute name="label" translatable="yes" comments="Radio button for cropping page to A3">A_3</attribute>
+ <attribute name="action">crop.set</attribute>
+ <attribute name="target">A3</attribute>
+ </item>
+
+ <item>
+ <attribute name="label" translatable="yes" comments="Radio button for cropping to custom page size">_Custom</attribute>
+ <attribute name="action">crop.set</attribute>
+ <attribute name="target">custom</attribute>
+ </item>
+ </section>
+
+ <section>
+ <item>
+ <attribute name="label" translatable="yes" comments="Menu item to rotate the crop area">_Rotate Crop</attribute>
+ <attribute name="action">crop.rotate</attribute>
+ </item>
+ </section>
+
+ </submenu>
+ <item>
+ <attribute name="label" translatable="yes" comments="Menu item to move the selected page to the left">Move Left</attribute>
+ <attribute name="action">app.move_left</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes" comments="Menu item to move the selected page to the right">Move Right</attribute>
+ <attribute name="action">app.move_right</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Copy</attribute>
+ <attribute name="action">app.copy_page</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Delete</attribute>
+ <attribute name="action">app.delete_page</attribute>
+ </item>
+ </menu>
+
+ <menu id="scan-menu">
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">_Single Page</attribute>
+ <attribute name="action">app.scan_type</attribute>
+ <attribute name="target">single</attribute>
+ </item>
+
+ <item>
+ <attribute name="label" translatable="yes">All Pages From _Feeder</attribute>
+ <attribute name="action">app.scan_type</attribute>
+ <attribute name="target">adf</attribute>
+ </item>
+
+ <item>
+ <attribute name="label" translatable="yes">_Multiple Pages From Flatbed</attribute>
+ <attribute name="action">app.scan_type</attribute>
+ <attribute name="target">batch</attribute>
+ </item>
+ </section>
+
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">_Text</attribute>
+ <attribute name="action">app.document_hint</attribute>
+ <attribute name="target">text</attribute>
+ </item>
+
+ <item>
+ <attribute name="label" translatable="yes">_Image</attribute>
+ <attribute name="action">app.document_hint</attribute>
+ <attribute name="target">photo</attribute>
+ </item>
+ </section>
+ </menu>
+
+ <template class="AppWindow" parent="AdwApplicationWindow">
<property name="width_request">320</property>
<property name="height_request">480</property>
<property name="title" translatable="yes" comments="Title of scan window">Document Scanner</property>
<property name="icon_name">org.gnome.SimpleScan</property>
- <signal name="delete-event" handler="window_delete_event_cb" swapped="no"/>
- <child>
+ <signal name="close-request" handler="window_close_request_cb" swapped="no"/>
+ <property name="content">
<object class="GtkBox">
- <property name="visible">True</property>
<property name="orientation">vertical</property>
+
<child>
- <object class="HdyHeaderBar" id="header_bar">
- <property name="visible">True</property>
- <property name="show_close_button">True</property>
- <child>
+ <object class="GtkPopoverMenu" id="page_menu">
+ <property name="menu-model">context-menu</property>
+ <property name="has_arrow">false</property>
+ <property name="halign">start</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="AdwHeaderBar" id="header_bar">
+ <child type="start">
<object class="GtkBox" id="open_box">
- <property name="visible">True</property>
<property name="valign">center</property>
+ <property name="margin-start">6</property>
+ <property name="spacing">6</property>
<child>
<object class="GtkButton" id="stop_button">
- <property name="receives_default">False</property>
+ <property name="visible">0</property>
<property name="tooltip_text" translatable="yes" comments="Tooltip for stop button">Stop the current scan</property>
<property name="use_underline">True</property>
<signal name="clicked" handler="stop_scan_button_clicked_cb" swapped="no"/>
<child>
<object class="GtkBox">
- <property name="visible">True</property>
<property name="spacing">6</property>
+ <property name="halign">center</property>
<child>
<object class="GtkSpinner" id="stop_button_spinner">
- <property name="visible">True</property>
- <property name="active">True</property>
+ <property name="spinning">True</property>
</object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
</child>
<child>
<object class="GtkLabel">
- <property name="visible">True</property>
<property name="label" translatable="yes">S_top</property>
<property name="use_underline">True</property>
<property name="width_chars">6</property>
<property name="xalign">0.33</property>
+ <property name="halign">center</property>
</object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
</child>
</object>
</child>
@@ -508,259 +189,182 @@
<class name="destructive-action"/>
</style>
</object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
</child>
<child>
<object class="GtkButton" id="scan_button">
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="receives_default">False</property>
+ <property name="sensitive">0</property>
<property name="tooltip_text" translatable="yes" comments="Tooltip for scan toolbar button. Replaced by text associated with each scan type."></property>
<property name="use_underline">True</property>
<signal name="clicked" handler="scan_button_clicked_cb" swapped="no"/>
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <child>
- <object class="GtkImage" id="scan_options_image">
- <property name="visible">True</property>
- <property name="icon_name">scanner-symbolic</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="margin_right">1</property>
- <property name="label" translatable="yes">_Scan</property>
- <property name="use_underline">True</property>
- <property name="width_chars">6</property>
- <property name="xalign">0.33</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
+
+ <property name="child">
+ <object class="AdwButtonContent" id="scan_button_content">
+ <property name="icon-name">scanner-symbolic</property>
+ <property name="label" translatable="yes">_Scan</property>
+ <property name="use-underline">True</property>
</object>
- </child>
- <style>
- <class name="text-button"/>
- <class name="suggested-action"/>
- </style>
+ </property>
</object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
</child>
<child>
- <object class="GtkMenuButton">
- <property name="visible">True</property>
- <property name="receives_default">False</property>
- <property name="popover">scan_options_popover</property>
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <child>
- <object class="GtkImage" id="scan_hint_image">
- <property name="visible">True</property>
- <property name="icon_name">x-office-document-symbolic</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="icon_name">pan-down-symbolic</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- </child>
+ <object class="GtkMenuButton" id="scan_options_menu">
+ <property name="menu_model">scan-menu</property>
+ <property name="icon_name">emblem-system-symbolic</property>
</object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
</child>
- <style>
- <class name="linked"/>
- </style>
</object>
</child>
- <child>
+ <child type="end">
<object class="GtkMenuButton" id="menu_button">
- <property name="visible">True</property>
- <property name="receives_default">False</property>
<property name="use_underline">True</property>
- <accelerator key="F10" signal="activate"/>
- <child>
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="icon_name">open-menu-symbolic</property>
- <property name="icon_size">1</property>
- </object>
- </child>
- <style>
- <class name="image-button"/>
- </style>
+ <property name="primary">True</property>
+ <property name="icon_name">open-menu-symbolic</property>
</object>
- <packing>
- <property name="pack_type">end</property>
- <property name="position">1</property>
- </packing>
</child>
- <child>
+ <child type="end">
<object class="GtkButton" id="save_button">
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="receives_default">False</property>
+ <property name="sensitive">0</property>
<property name="tooltip_text" translatable="yes" comments="Tooltip for save toolbar button">Save document to a file</property>
<property name="use_underline">True</property>
- <signal name="clicked" handler="save_file_button_clicked_cb" swapped="no"/>
- <child>
- <object class="GtkImage" id="save_image">
- <property name="visible">True</property>
- <property name="icon_name">document-save-symbolic</property>
- <property name="icon_size">1</property>
- </object>
- </child>
- <style>
- <class name="image-button"/>
- </style>
+ <property name="action-name">app.save</property>
+ <property name="icon_name">document-save-symbolic</property>
</object>
- <packing>
- <property name="pack_type">end</property>
- <property name="position">2</property>
- </packing>
</child>
<style>
<class name="titlebar"/>
</style>
</object>
</child>
+
<child>
<object class="GtkStack" id="stack">
- <property name="visible">True</property>
<property name="vexpand">True</property>
<child>
- <object class="HdyStatusPage" id="status_page">
- <property name="visible">True</property>
- <property name="icon_name">org.gnome.SimpleScan-symbolic</property>
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="orientation">vertical</property>
- <property name="spacing">12</property>
- <child>
- <object class="GtkLabel" id="status_secondary_label">
- <property name="visible">False</property>
- <property name="wrap">True</property>
- <property name="wrap-mode">word-char</property>
- <property name="justify">center</property>
- <property name="use-markup">True</property>
- <property name="track_visited_links">False</property>
- <signal name="activate-link" handler="status_label_activate_link_cb" swapped="no"/>
- <style>
- <class name="body"/>
- <class name="description"/>
- </style>
- </object>
- </child>
+ <object class="GtkStackPage">
+ <property name="name">startup</property>
+ <property name="child">
+ <object class="AdwStatusPage" id="status_page">
+ <property name="icon_name">org.gnome.SimpleScan-symbolic</property>
<child>
- <object class="GtkBox" id="device_buttons_box">
- <property name="visible">False</property>
- <property name="orientation">horizontal</property>
- <property name="halign">center</property>
- <property name="spacing">10</property>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="spacing">12</property>
+
<child>
- <object class="GtkComboBox" id="device_combo">
- <property name="width_request">200</property>
- <property name="visible">True</property>
- <property name="model">device_model</property>
- <signal name="changed" handler="device_combo_changed_cb" swapped="no"/>
+ <object class="GtkLabel" id="status_secondary_label">
+ <property name="visible">False</property>
+ <property name="wrap">True</property>
+ <property name="wrap-mode">word-char</property>
+ <property name="justify">center</property>
+ <property name="use-markup">True</property>
+ <!-- <property name="track_visited_links">False</property> -->
+ <signal name="activate-link" handler="status_label_activate_link_cb" swapped="no"/>
+ <style>
+ <class name="body"/>
+ <class name="description"/>
+ </style>
</object>
- <packing>
- <property name="fill">False</property>
- </packing>
</child>
<child>
- <object class="GtkButton" id="refresh_devices">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="tooltip_text" translatable="yes" comments="Tooltip for stop button">Refresh device list</property>
- <signal name="clicked" handler="redetect_button_clicked_cb" swapped="no"/>
+ <object class="GtkBox" id="device_buttons_box">
+ <property name="visible">False</property>
+ <property name="orientation">horizontal</property>
+ <property name="halign">center</property>
+ <property name="spacing">10</property>
<child>
- <object class="GtkImage">
- <property name="visible">True</property>
+ <object class="GtkDropDown" id="device_drop_down">
+ <property name="width_request">200</property>
+ <signal name="notify::selected" handler="device_drop_down_changed_cb" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="refresh_devices">
+ <property name="tooltip_text" translatable="yes" comments="Tooltip for stop button">Refresh device list</property>
<property name="icon_name">view-refresh-symbolic</property>
- <property name="icon_size">1</property>
+
+ <signal name="clicked" handler="redetect_button_clicked_cb" swapped="no"/>
</object>
</child>
- <style>
- <class name="image-button"/>
- </style>
</object>
- <packing>
- <property name="fill">False</property>
- </packing>
</child>
</object>
</child>
</object>
- </child>
+ </property>
</object>
- <packing>
- <property name="name">startup</property>
- </packing>
</child>
<child>
- <object class="GtkBox" id="main_vbox">
- <property name="visible">True</property>
- <property name="orientation">vertical</property>
- <child>
- <object class="GtkActionBar" id="action_bar">
- <property name="visible">True</property>
+ <object class="GtkStackPage">
+ <property name="name">document</property>
+ <property name="child">
+ <object class="GtkBox" id="main_vbox">
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkActionBar" id="action_bar">
+ <child type="start">
+ <object class="GtkButton">
+ <property name="margin-start">6</property>
+ <signal name="clicked" handler="new_document_cb" swapped="no"/>
+
+ <property name="child">
+ <object class="AdwButtonContent">
+ <property name="icon-name">list-add-symbolic</property>
+ <property name="label" translatable="yes">New Document</property>
+ </object>
+ </property>
+ </object>
+ </child>
+
+ <child type="center">
+ <object class="GtkBox">
+ <property name="orientation">horizontal</property>
+ <property name="spacing">5</property>
+
+ <child>
+ <object class="GtkButton">
+ <property name="icon-name">object-rotate-left-symbolic</property>
+ <property name="tooltip-text" translatable="yes">Rotate the page to the left (counter-clockwise)</property>
+ <property name="action-name">app.rotate_left</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkButton">
+ <property name="icon-name">object-rotate-right-symbolic</property>
+ <property name="tooltip-text" translatable="yes">Rotate the page to the right (clockwise)</property>
+ <property name="action-name">app.rotate_right</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkToggleButton" id="crop_button">
+ <property name="icon-name">crop-symbolic</property>
+ <property name="tooltip-text" translatable="yes">Crop the selected page</property>
+ <signal name="toggled" handler="crop_toggle_cb" swapped="no"/>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkButton" id="delete_button">
+ <property name="icon-name">user-trash-symbolic</property>
+ <property name="tooltip-text" translatable="yes">Delete the selected page</property>
+ <property name="action-name">app.delete_page</property>
+ </object>
+ </child>
+
+ </object>
+ </child>
+
+ </object>
+ </child>
</object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="pack_type">end</property>
- <property name="position">0</property>
- </packing>
- </child>
+ </property>
</object>
- <packing>
- <property name="name">document</property>
- <property name="position">1</property>
- </packing>
</child>
</object>
</child>
+
</object>
- </child>
+ </property>
</template>
</interface>
diff --git a/data/ui/authorize-dialog.ui b/data/ui/authorize-dialog.ui
index 79e43fd..729ddc3 100644
--- a/data/ui/authorize-dialog.ui
+++ b/data/ui/authorize-dialog.ui
@@ -1,111 +1,78 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.20.0 -->
<interface>
- <requires lib="gtk+" version="3.10"/>
- <template class="AuthorizeDialog" parent="GtkDialog">
- <property name="border_width">12</property>
- <property name="resizable">False</property>
+ <requires lib="gtk" version="4.0"/>
+ <requires lib="libadwaita" version="1.0"/>
+ <template class="AuthorizeDialog" parent="GtkWindow">
<property name="modal">True</property>
- <property name="type_hint">normal</property>
- <property name="urgency_hint">True</property>
- <child internal-child="vbox">
- <object class="GtkBox" id="dialog-vbox1">
- <property name="visible">True</property>
- <property name="orientation">vertical</property>
- <property name="spacing">12</property>
- <child internal-child="action_area">
- <object class="GtkButtonBox" id="dialog-action_area1">
- <property name="visible">True</property>
- <property name="layout_style">end</property>
- <child>
- <object class="GtkButton" id="authorize_button">
- <property name="label" translatable="yes" comments="Button to submit authorization dialog">_Authorize</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="use_underline">True</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="pack_type">end</property>
- </packing>
- </child>
+ <property name="resizable">False</property>
+
+ <property name="titlebar">
+ <object class="GtkBox">
+ </object>
+ </property>
+
+ <child>
+ <object class="GtkWindowHandle">
<child>
- <object class="GtkBox" id="vbox5">
- <property name="visible">True</property>
- <property name="border_width">5</property>
+ <object class="GtkBox" id="dialog-vbox1">
<property name="orientation">vertical</property>
<property name="spacing">12</property>
+ <property name="margin-start">20</property>
+ <property name="margin-end">20</property>
+ <property name="margin-top">18</property>
+ <property name="margin-bottom">18</property>
+
<child>
- <object class="GtkLabel" id="authorize_label">
- <property name="visible">True</property>
- <property name="vexpand">True</property>
- <property name="label" comments="This label is set dynamically and is not translated">To connect to ? you need to authorize</property>
- </object>
- </child>
- <child>
- <object class="GtkGrid" id="grid2">
- <property name="visible">True</property>
- <property name="row_spacing">6</property>
- <property name="column_spacing">6</property>
+ <object class="AdwPreferencesGroup" id="preferences_group">
+ <property name="title" comments="This label is set dynamically and is not translated">To connect to ? you need to authorize</property>
+
<child>
- <object class="GtkEntry" id="username_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="hexpand">True</property>
- <property name="invisible_char">●</property>
+ <object class="AdwEntryRow" id="username_entry">
+ <property name="title" translatable="yes">_Username for resource</property>
+ <property name="use_underline">True</property>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- </packing>
</child>
+
<child>
- <object class="GtkEntry" id="password_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="hexpand">True</property>
- <property name="visibility">False</property>
- <property name="invisible_char">●</property>
+ <object class="AdwPasswordEntryRow" id="password_entry">
+ <property name="title" translatable="yes">_Password</property>
+ <property name="use_underline">True</property>
</object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">1</property>
- </packing>
</child>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">horizontal</property>
+ <property name="spacing">5</property>
+ <property name="halign">end</property>
+
<child>
- <object class="GtkLabel" id="username_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes" comments="Label beside username entry">_Username for resource:</property>
+ <object class="GtkButton">
+ <property name="label" translatable="yes">_Cancel</property>
<property name="use_underline">True</property>
- <property name="mnemonic_widget">username_entry</property>
+ <signal name="clicked" handler="cancel_button_cb" swapped="no"/>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- </packing>
</child>
+
<child>
- <object class="GtkLabel" id="password_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes" comments="Label beside password entry">_Password:</property>
+ <object class="GtkButton" id="authorize_button">
+ <property name="label" translatable="yes" comments="Button to submit authorization dialog">_Authorize</property>
<property name="use_underline">True</property>
- <property name="mnemonic_widget">password_entry</property>
+ <signal name="clicked" handler="authorize_button_cb" swapped="no"/>
+
+ <style>
+ <class name="suggested-action"/>
+ </style>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">1</property>
- </packing>
</child>
</object>
</child>
+
</object>
</child>
</object>
</child>
- <action-widgets>
- <action-widget response="0">authorize_button</action-widget>
- </action-widgets>
</template>
</interface>
diff --git a/data/ui/drivers-dialog.ui b/data/ui/drivers-dialog.ui
new file mode 100644
index 0000000..1286694
--- /dev/null
+++ b/data/ui/drivers-dialog.ui
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <requires lib="gtk" version="4.0" />
+ <requires lib="libadwaita" version="1.0" />
+ <template class="DriversDialog" parent="GtkWindow">
+ <property name="modal">True</property>
+ <property name="resizable">False</property>
+ <property name="default-width">400</property>
+
+ <property name="titlebar">
+ <object class="GtkRevealer" id="header_revealer">
+ <property name="reveal-child">True</property>
+ <property name="child">
+ <object class="AdwHeaderBar">
+ <property name="title-widget">
+ <object class="GtkLabel" id="title">
+ <property name="label" translatable="yes">Install drivers</property>
+ </object>
+ </property>
+
+ <style>
+ <class name="flat" />
+ </style>
+ </object>
+ </property>
+ </object>
+ </property>
+
+ <child>
+ <object class="GtkStack" id="stack">
+ <property name="transition-type">3</property>
+
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">main</property>
+ <property name="child">
+ <object class="GtkBox" id="content_area">
+ <property name="orientation">vertical</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="spacing">18</property>
+
+ <child>
+ <object class="GtkImage">
+ <property name="icon-name">document-save-symbolic</property>
+ <property name="pixel-size">100</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkLabel" id="main_label">
+ <property name="valign">center</property>
+ <property name="halign">center</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkLabel" id="main_sublabel">
+ <property name="valign">center</property>
+ <property name="halign">center</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkRevealer" id="progress_revealer">
+ <property name="child">
+ <object class="GtkProgressBar" id="progress_bar"></object>
+ </property>
+ </object>
+ </child>
+
+ </object>
+ </property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkStackPage">
+ <property name="name">result</property>
+ <property name="child">
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+
+ <property name="margin-start">40</property>
+ <property name="margin-end">40</property>
+ <property name="margin-top">40</property>
+ <property name="margin-bottom">40</property>
+
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+
+ <property name="spacing">18</property>
+ <property name="hexpand">True</property>
+ <property name="halign">center</property>
+
+ <child>
+ <object class="GtkImage" id="result_icon">
+ <property name="icon-name">emblem-ok-symbolic</property>
+ <property name="pixel-size">100</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkLabel" id="result_label">
+ <property name="label"></property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkLabel" id="result_sublabel">
+ <property name="label"></property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkButton" id="result_button">
+ <property name="label">Ok</property>
+ <property name="action-name">window.close</property>
+
+ <style>
+ <class name="pill" />
+ <class name="suggested-action" />
+ </style>
+ </object>
+ </child>
+
+ </object>
+ </property>
+ </object>
+ </child>
+
+ </object>
+ </child>
+ </template>
+</interface> \ No newline at end of file
diff --git a/data/ui/help-overlay.ui b/data/ui/help-overlay.ui
index 9dbd746..ef6f634 100644
--- a/data/ui/help-overlay.ui
+++ b/data/ui/help-overlay.ui
@@ -5,35 +5,29 @@
<property name="modal">1</property>
<child>
<object class="GtkShortcutsSection">
- <property name="visible">1</property>
<child>
<object class="GtkShortcutsGroup">
- <property name="visible">1</property>
<property name="title" translatable="yes" context="shortcut window">Scanning</property>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="action-name">app.scan_single</property>
<property name="title" translatable="yes" context="shortcut window">Scan a single page</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="action-name">app.scan_adf</property>
<property name="title" translatable="yes" context="shortcut window">Scan all pages from document feeder</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="action-name">app.scan_batch</property>
<property name="title" translatable="yes" context="shortcut window">Scan continuously from a flatbed scanner</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="action-name">app.scan_stop</property>
<property name="title" translatable="yes" context="shortcut window">Stop scan in progress</property>
</object>
@@ -42,39 +36,33 @@
</child>
<child>
<object class="GtkShortcutsGroup">
- <property name="visible">1</property>
<property name="title" translatable="yes" context="shortcut window">Document Modification</property>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="action-name">app.move_left</property>
<property name="title" translatable="yes" context="shortcut window">Move page left</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="action-name">app.move_right</property>
<property name="title" translatable="yes" context="shortcut window">Move page right</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="action-name">app.rotate_left</property>
<property name="title" translatable="yes" context="shortcut window">Rotate page to the left (anti-clockwise)</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="action-name">app.rotate_right</property>
<property name="title" translatable="yes" context="shortcut window">Rotate page to the right (clockwise)</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="action-name">app.delete_page</property>
<property name="title" translatable="yes" context="shortcut window">Delete page</property>
</object>
@@ -83,39 +71,33 @@
</child>
<child>
<object class="GtkShortcutsGroup">
- <property name="visible">1</property>
<property name="title" translatable="yes" context="shortcut window">Document Management</property>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="action-name">app.new_document</property>
<property name="title" translatable="yes" context="shortcut window">Start new document</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="action-name">app.save</property>
<property name="title" translatable="yes" context="shortcut window">Save scanned document</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="action-name">app.email</property>
<property name="title" translatable="yes" context="shortcut window">Email scanned document</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="action-name">app.print</property>
<property name="title" translatable="yes" context="shortcut window">Print scanned document</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="action-name">app.copy_page</property>
<property name="title" translatable="yes" context="shortcut window">Copy current page to clipboard</property>
</object>
@@ -124,39 +106,33 @@
</child>
<child>
<object class="GtkShortcutsGroup">
- <property name="visible">1</property>
<property name="title" translatable="yes" context="shortcut window">General</property>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="action-name">app.help</property>
<property name="title" translatable="yes" context="shortcut window">Show help</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="accelerator">F10</property>
<property name="title" translatable="yes" context="shortcut window">Open menu</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="action-name">app.preferences</property>
<property name="title" translatable="yes" context="shortcut window">Show preferences</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="action-name">win.show-help-overlay</property>
<property name="title" translatable="yes" context="shortcut window">Keyboard shortcuts</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">1</property>
<property name="action-name">app.quit</property>
<property name="title" translatable="yes" context="shortcut window">Quit</property>
</object>
diff --git a/data/ui/preferences-dialog.ui b/data/ui/preferences-dialog.ui
index fe63150..eb6e72c 100644
--- a/data/ui/preferences-dialog.ui
+++ b/data/ui/preferences-dialog.ui
@@ -14,80 +14,45 @@
<property name="step_increment">1</property>
<property name="page_increment">10</property>
</object>
- <object class="GtkListStore" id="paper_size_model">
- <columns>
- <!-- column-name width -->
- <column type="gint"/>
- <!-- column-name height -->
- <column type="gint"/>
- <!-- column-name label -->
- <column type="gchararray"/>
- </columns>
- </object>
- <object class="GtkListStore" id="photo_dpi_model">
- <columns>
- <!-- column-name dpi -->
- <column type="gint"/>
- <!-- column-name label -->
- <column type="gchararray"/>
- </columns>
- </object>
- <object class="GtkListStore" id="text_dpi_model">
- <columns>
- <!-- column-name dpi -->
- <column type="gint"/>
- <!-- column-name label -->
- <column type="gchararray"/>
- </columns>
+ <object class="GtkAdjustment" id="compression_adjustment">
+ <property name="value">75</property>
+ <property name="lower">0</property>
+ <property name="upper">100</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ <property name="page_size">0</property>
</object>
- <template class="PreferencesDialog" parent="HdyPreferencesWindow">
+ <template class="PreferencesDialog" parent="AdwPreferencesWindow">
<property name="icon_name">org.gnome.SimpleScan</property>
<property name="search_enabled">False</property>
<child>
- <object class="HdyPreferencesPage">
- <property name="visible">True</property>
+ <object class="AdwPreferencesPage">
<child>
- <object class="HdyPreferencesGroup">
- <property name="visible">True</property>
+ <object class="AdwPreferencesGroup">
<property name="title" translatable="yes" comments="Preferences Dialog: Section label for scanning settings">Scanning</property>
<child>
- <object class="HdyActionRow">
- <property name="visible">True</property>
+ <object class="AdwActionRow">
<property name="title" translatable="yes" comments="Label beside scan side combo box">Scan _Sides</property>
<property name="use_underline">True</property>
<property name="activatable_widget">front_side_button</property>
<child>
<object class="GtkBox" id="scan_side_box">
- <property name="visible">True</property>
<property name="valign">center</property>
<property name="homogeneous">True</property>
<child>
- <object class="GtkRadioButton" id="front_side_button">
+ <object class="GtkToggleButton" id="front_side_button">
<property name="label" translatable="yes" comments="Preferences Dialog: Toggle button to select scanning on front side of a page">Front</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">False</property>
</object>
</child>
<child>
- <object class="GtkRadioButton" id="back_side_button">
+ <object class="GtkToggleButton" id="back_side_button">
<property name="label" translatable="yes" comments="Preferences Dialog: Toggle button to select scanning on the back side of a page">Back</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="draw_indicator">False</property>
<property name="group">front_side_button</property>
</object>
</child>
<child>
- <object class="GtkRadioButton" id="both_side_button">
+ <object class="GtkToggleButton" id="both_side_button">
<property name="label" translatable="yes" comments="Preferences Dialog: Toggle button to select scanning on both sides of a page">Both</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="draw_indicator">False</property>
<property name="group">front_side_button</property>
</object>
</child>
@@ -99,84 +64,47 @@
</object>
</child>
<child>
- <object class="HdyActionRow">
- <property name="visible">True</property>
+ <object class="AdwComboRow" id="paper_size_row">
<property name="title" translatable="yes" comments="Label beside page size combo box">_Page Size</property>
<property name="use_underline">True</property>
- <property name="activatable_widget">paper_size_combo</property>
- <child>
- <object class="GtkComboBox" id="paper_size_combo">
- <property name="visible">True</property>
- <property name="hexpand">True</property>
- <property name="valign">center</property>
- <property name="model">paper_size_model</property>
- </object>
- </child>
</object>
</child>
<child>
- <object class="HdyActionRow">
- <property name="visible">True</property>
+ <object class="AdwActionRow">
<property name="title" translatable="yes" comments="Label beside page delay scale">_Delay in Seconds</property>
<property name="subtitle" translatable="yes" comments="Provides context for the page delay scale">Interval to scan multiple pages</property>
<property name="use_underline">True</property>
<property name="activatable_widget">page_delay_0s_button</property>
<child>
<object class="GtkBox">
- <property name="visible">True</property>
<property name="valign">center</property>
<property name="homogeneous">True</property>
<child>
- <object class="GtkRadioButton" id="page_delay_0s_button">
+ <object class="GtkToggleButton" id="page_delay_0s_button">
<property name="label" translatable="yes" comments="Preferences Dialog: Toggle button to select scanning on front side of a page">0</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">False</property>
</object>
</child>
<child>
- <object class="GtkRadioButton" id="page_delay_3s_button">
+ <object class="GtkToggleButton" id="page_delay_3s_button">
<property name="label" translatable="yes" comments="Preferences Dialog: Toggle button to select scanning on front side of a page">3</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">False</property>
<property name="group">page_delay_0s_button</property>
</object>
</child>
<child>
- <object class="GtkRadioButton" id="page_delay_6s_button">
+ <object class="GtkToggleButton" id="page_delay_6s_button">
<property name="label" translatable="yes" comments="Preferences Dialog: Toggle button to select scanning on front side of a page">6</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">False</property>
<property name="group">page_delay_0s_button</property>
</object>
</child>
<child>
- <object class="GtkRadioButton" id="page_delay_10s_button">
+ <object class="GtkToggleButton" id="page_delay_10s_button">
<property name="label" translatable="yes" comments="Preferences Dialog: Toggle button to select scanning on front side of a page">10</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">False</property>
<property name="group">page_delay_0s_button</property>
</object>
</child>
<child>
- <object class="GtkRadioButton" id="page_delay_15s_button">
+ <object class="GtkToggleButton" id="page_delay_15s_button">
<property name="label" translatable="yes" comments="Preferences Dialog: Toggle button to select scanning on front side of a page">15</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">False</property>
<property name="group">page_delay_0s_button</property>
</object>
</child>
@@ -190,49 +118,27 @@
</object>
</child>
<child>
- <object class="HdyPreferencesGroup">
- <property name="visible">True</property>
+ <object class="AdwPreferencesGroup">
<property name="title" translatable="yes" comments="Preferences Dialog: Section label for quality settings">Quality</property>
<child>
- <object class="HdyActionRow">
- <property name="visible">True</property>
+ <object class="AdwComboRow" id="text_dpi_row">
<property name="title" translatable="yes" comments="Label beside scan resolution combo box">_Text Resolution</property>
<property name="use_underline">True</property>
- <property name="activatable_widget">text_dpi_combo</property>
- <child>
- <object class="GtkComboBox" id="text_dpi_combo">
- <property name="visible">True</property>
- <property name="valign">center</property>
- <property name="model">text_dpi_model</property>
- </object>
- </child>
</object>
</child>
<child>
- <object class="HdyActionRow">
- <property name="visible">True</property>
+ <object class="AdwComboRow" id="photo_dpi_row">
<property name="title" translatable="yes" comments="Label beside scan resolution combo box">_Image Resolution</property>
<property name="use_underline">True</property>
- <property name="activatable_widget">photo_dpi_combo</property>
- <child>
- <object class="GtkComboBox" id="photo_dpi_combo">
- <property name="visible">True</property>
- <property name="valign">center</property>
- <property name="model">photo_dpi_model</property>
- </object>
- </child>
</object>
</child>
<child>
- <object class="HdyActionRow">
- <property name="visible">True</property>
+ <object class="AdwActionRow">
<property name="title" translatable="yes" comments="Label beside brightness scale">_Brightness</property>
<property name="use_underline">True</property>
<property name="activatable_widget">brightness_scale</property>
<child>
<object class="GtkScale" id="brightness_scale">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="valign">center</property>
<property name="hexpand">True</property>
<property name="adjustment">brightness_adjustment</property>
@@ -242,15 +148,12 @@
</object>
</child>
<child>
- <object class="HdyActionRow">
- <property name="visible">True</property>
+ <object class="AdwActionRow">
<property name="title" translatable="yes" comments="Label beside contrast scale">_Contrast</property>
<property name="use_underline">True</property>
<property name="activatable_widget">contrast_scale</property>
<child>
<object class="GtkScale" id="contrast_scale">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="valign">center</property>
<property name="hexpand">True</property>
<property name="adjustment">contrast_adjustment</property>
@@ -259,27 +162,37 @@
</child>
</object>
</child>
+ <child>
+ <object class="AdwActionRow">
+ <property name="title" translatable="yes" comments="Label beside compression scale">Compression</property>
+ <property name="use_underline">True</property>
+ <property name="activatable_widget">compression_scale</property>
+ <child>
+ <object class="GtkScale" id="compression_scale">
+ <property name="valign">center</property>
+ <property name="hexpand">True</property>
+ <property name="adjustment">compression_adjustment</property>
+ <property name="draw_value">False</property>
+ </object>
+ </child>
+ </object>
+ </child>
</object>
</child>
<child>
- <object class="HdyPreferencesGroup">
- <property name="visible">True</property>
+ <object class="AdwPreferencesGroup">
<property name="title" translatable="yes" comments="Preferences Dialog: Section label for postprocessing settings">Postprocessing</property>
<child>
- <object class="HdyActionRow">
- <property name="visible">True</property>
+ <object class="AdwActionRow">
<property name="title" translatable="yes" comments="Switch to enable postprocessing">_Enable Postprocessing</property>
<property name="use_underline">True</property>
<property name="activatable_widget">postproc_enable_box</property>
<child>
<object class="GtkBox" id="postproc_enable_box">
- <property name="visible">True</property>
<property name="valign">center</property>
<property name="homogeneous">True</property>
<child>
<object class="GtkSwitch" id="postproc_enable_switch">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="hexpand">False</property>
<property name="active">True</property>
</object>
@@ -289,21 +202,17 @@
</object>
</child>
<child>
- <object class="HdyActionRow">
- <property name="visible">True</property>
+ <object class="AdwActionRow">
<property name="title" translatable="yes" comments="Label beside postprocesing script name entry">_Script</property>
<property name="use_underline">True</property>
<property name="activatable_widget">postproc_script_entry</property>
<child>
<object class="GtkBox" id="postproc_script_box">
- <property name="visible">True</property>
<property name="valign">center</property>
<property name="homogeneous">True</property>
<child>
<object class="GtkEntry" id="postproc_script_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="hexpand">True</property>
</object>
</child>
@@ -312,21 +221,17 @@
</object>
</child>
<child>
- <object class="HdyActionRow">
- <property name="visible">True</property>
+ <object class="AdwActionRow">
<property name="title" translatable="yes" comments="Label beside postprocesing arguments entry">_Script arguments</property>
<property name="use_underline">True</property>
<property name="activatable_widget">postproc_args_entry</property>
<child>
<object class="GtkBox" id="postproc_args_box">
- <property name="visible">True</property>
<property name="valign">center</property>
<property name="homogeneous">True</property>
<child>
<object class="GtkEntry" id="postproc_args_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="hexpand">True</property>
</object>
</child>
@@ -335,20 +240,16 @@
</object>
</child>
<child>
- <object class="HdyActionRow">
- <property name="visible">True</property>
+ <object class="AdwActionRow">
<property name="title" translatable="yes" comments="Label beside keep keep original file radio">_Keep original file</property>
<property name="use_underline">True</property>
<property name="activatable_widget">postproc_keep_original_box</property>
<child>
<object class="GtkBox" id="postproc_keep_original_box">
- <property name="visible">True</property>
<property name="valign">center</property>
<property name="homogeneous">True</property>
<child>
<object class="GtkSwitch" id="postproc_keep_original_switch">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="hexpand">False</property>
<property name="active">True</property>
</object>
diff --git a/data/ui/reorder-pages-dialog.ui b/data/ui/reorder-pages-dialog.ui
new file mode 100644
index 0000000..33ee2e2
--- /dev/null
+++ b/data/ui/reorder-pages-dialog.ui
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <requires lib="gtk" version="4.0"/>
+ <requires lib="libadwaita" version="1.0"/>
+
+ <template class="ReorderPagesDialog" parent="GtkWindow">
+ <property name="modal">True</property>
+ <property name="resizable">False</property>
+ <property name="title" translatable="yes" context="dialog title">Reorder Pages</property>
+
+ <property name="titlebar">
+ <object class="AdwHeaderBar">
+ </object>
+ </property>
+
+ <child>
+ <object class="GtkWindowHandle">
+ <child>
+ <object class="GtkBox" id="dialog-vbox1">
+ <property name="orientation">vertical</property>
+ <property name="spacing">12</property>
+ <property name="margin-start">20</property>
+ <property name="margin-end">20</property>
+ <property name="margin-top">18</property>
+ <property name="margin-bottom">18</property>
+ <property name="halign">center</property>
+
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">horizontal</property>
+
+ <child>
+ <object class="ReorderPagesItem" id="combine_sides">
+ <property name="label" translatable="yes">Combine sides</property>
+ <property name="before">interleave-before</property>
+ <property name="after">interleave-after</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="ReorderPagesItem" id="combine_sides_rev">
+ <property name="label" translatable="yes">Combine sides (reverse)</property>
+ <property name="before">interleave-before</property>
+ <property name="after">interleave-reverse-after</property>
+ </object>
+ </child>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">horizontal</property>
+ <child>
+ <object class="ReorderPagesItem" id="flip_odd">
+ <property name="label" translatable="yes">Flip odd pages upside-down</property>
+ <property name="before">flip-before</property>
+ <property name="after">flip-odd</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="ReorderPagesItem" id="flip_even">
+ <property name="label" translatable="yes">Flip even pages upside-down</property>
+ <property name="before">flip-before</property>
+ <property name="after">flip-even</property>
+ </object>
+ </child>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">horizontal</property>
+ <property name="halign">center</property>
+
+ <child>
+ <object class="ReorderPagesItem" id="reverse">
+ <property name="label" translatable="yes">Reverse</property>
+ <property name="before">reverse-before</property>
+ <property name="after">reverse-after</property>
+ </object>
+ </child>
+
+ </object>
+ </child>
+
+ </object>
+ </child>
+ </object>
+ </child>
+ </template>
+</interface> \ No newline at end of file
diff --git a/data/ui/reorder-pages-item.ui b/data/ui/reorder-pages-item.ui
new file mode 100644
index 0000000..054801d
--- /dev/null
+++ b/data/ui/reorder-pages-item.ui
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <requires lib="gtk" version="4.0"/>
+ <requires lib="libadwaita" version="1.0"/>
+
+ <template class="ReorderPagesItem" parent="GtkButton">
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+
+ <child>
+ <object class="GtkLabel" id="title">
+ <property name="label"></property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">horizontal</property>
+ <property name="spacing">12</property>
+ <property name="halign">center</property>
+
+ <child>
+ <object class="GtkImage" id="before_image">
+ <property name="pixel-size">140</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkImage">
+ <property name="icon-name">right-large-symbolic</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkImage" id="after_image">
+ <property name="pixel-size">140</property>
+ </object>
+ </child>
+
+ </object>
+ </child>
+
+ </object>
+ </child>
+
+ <style>
+ <class name="flat"/>
+ </style>
+ </template>
+</interface> \ No newline at end of file