diff options
Diffstat (limited to 'data/ui')
| -rw-r--r-- | data/ui/app-window.ui | 946 | ||||
| -rw-r--r-- | data/ui/authorize-dialog.ui | 131 | ||||
| -rw-r--r-- | data/ui/drivers-dialog.ui | 137 | ||||
| -rw-r--r-- | data/ui/help-overlay.ui | 24 | ||||
| -rw-r--r-- | data/ui/preferences-dialog.ui | 191 | ||||
| -rw-r--r-- | data/ui/reorder-pages-dialog.ui | 92 | ||||
| -rw-r--r-- | data/ui/reorder-pages-item.ui | 51 | 
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 | 
