printing: Add printing support

Part-of: <https://gitlab.gnome.org/Incubator/loupe/-/merge_requests/165>
This commit is contained in:
Sophie Herold 2023-04-02 01:39:23 +02:00 • committed by Marge Bot
parent e96b9ccac9
commit ae5ca76176
22 changed files with 936 additions and 49 deletions

View file

@ -1,273 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<object class="GtkShortcutsWindow" id="help_overlay">
<property name="modal">True</property>
<child>
<object class="GtkShortcutsSection">
<property name="section_name">shortcuts</property>
<property name="max-height">12</property>
<child>
<object class="GtkShortcutsGroup">
<property name="title" translatable="yes" context="shortcut window">General Shortcuts</property>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes" context="shortcut window">Show Main Menu</property>
<property name="accelerator">F10</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes" context="shortcut window">Copy Image to Clipboard</property>
<property name="action-name">win.copy</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes" context="shortcut window">Move Image to Trash</property>
<property name="action-name">win.trash</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes" context="shortcut window">Toggle Image Properties</property>
<property name="action-name">win.toggle-properties</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes" context="shortcut window">Set as Background</property>
<property name="action-name">win.set-background</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes" context="shortcut window">Toggle Fullscreen</property>
<property name="action-name">win.toggle-fullscreen</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes" context="shortcut window">Leave Fullscreen</property>
<property name="action-name">win.leave-fullscreen</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes" context="shortcut window">New Window</property>
<property name="action-name">app.new-window</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes" context="shortcut window">Open Help</property>
<property name="action-name">app.help</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes" context="shortcut window">Show Keyboard Shortcuts</property>
<property name="action-name">win.show-help-overlay</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes" context="shortcut window">Close Window</property>
<property name="action-name">window.close</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes" context="shortcut window">Quit</property>
<property name="action-name">app.quit</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkShortcutsGroup">
<property name="title" translatable="yes" context="shortcut window">Navigate Images</property>
<child>
<object class="GtkShortcutsShortcut">
<property name="direction">GTK_TEXT_DIR_LTR</property>
<property name="title" translatable="yes" context="shortcut window">Next Image</property>
<property name="accelerator">Right</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="direction">GTK_TEXT_DIR_LTR</property>
<property name="title" translatable="yes" context="shortcut window">Previous Image</property>
<property name="accelerator">Left</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="direction">GTK_TEXT_DIR_RTL</property>
<property name="title" translatable="yes" context="shortcut window">Next Image</property>
<property name="accelerator">Left</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="direction">GTK_TEXT_DIR_RTL</property>
<property name="title" translatable="yes" context="shortcut window">Previous Image</property>
<property name="accelerator">Right</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes" context="shortcut window">First Image</property>
<property name="action-name">win.first</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes" context="shortcut window">Last Image</property>
<property name="action-name">win.last</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkShortcutsGroup">
<property name="title" translatable="yes" context="shortcut window">Rotate Image</property>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes" context="shortcut window">Rotate Clockwise</property>
<property name="accelerator">&lt;Ctrl&gt;R</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes" context="shortcut window">Rotate Counterclockwise</property>
<property name="accelerator">&lt;Ctrl&gt;&lt;Shift&gt;R</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkShortcutsGroup">
<property name="title" translatable="yes" context="shortcut window">Zoom Image</property>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes" context="shortcut window">Zoom In</property>
<property name="accelerator">&lt;Ctrl&gt;plus plus</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes" context="shortcut window">Zoom Out</property>
<property name="accelerator">&lt;Ctrl&gt;minus minus</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes" context="shortcut window">Best Fit</property>
<property name="accelerator">&lt;Ctrl&gt;0 0</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes" context="shortcut window">Original Scale</property>
<property name="accelerator">&lt;Ctrl&gt;1 1</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes" context="shortcut window">200% Scale</property>
<property name="accelerator">&lt;Ctrl&gt;2 2</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkShortcutsGroup">
<property name="title" translatable="yes" context="shortcut window">Pan View</property>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes" context="shortcut window">Pan Left</property>
<property name="action-name">win.pan-left</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes" context="shortcut window">Pan Right</property>
<property name="action-name">win.pan-right</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes" context="shortcut window">Pan Up</property>
<property name="action-name">win.pan-up</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes" context="shortcut window">Pan Down</property>
<property name="action-name">win.pan-down</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkShortcutsGroup">
<property name="title" translatable="yes" context="shortcut window">Gestures</property>
<child>
<object class="GtkShortcutsShortcut">
<property name="direction">GTK_TEXT_DIR_LTR</property>
<property name="title" translatable="yes" context="shortcut window">Next Image</property>
<property name="shortcut-type">gesture-two-finger-swipe-right</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="direction">GTK_TEXT_DIR_LTR</property>
<property name="title" translatable="yes" context="shortcut window">Previous Image</property>
<property name="shortcut-type">gesture-two-finger-swipe-left</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="direction">GTK_TEXT_DIR_RTL</property>
<property name="title" translatable="yes" context="shortcut window">Next Image</property>
<property name="shortcut-type">gesture-two-finger-swipe-left</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="direction">GTK_TEXT_DIR_RTL</property>
<property name="title" translatable="yes" context="shortcut window">Previous Image</property>
<property name="shortcut-type">gesture-two-finger-swipe-right</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes" context="shortcut window">Zoom In</property>
<property name="shortcut-type">gesture-stretch</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes" context="shortcut window">Zoom Out</property>
<property name="shortcut-type">gesture-pinch</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes" context="shortcut window">Rotate Clockwise</property>
<property name="shortcut-type">gesture-rotate-clockwise</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes" context="shortcut window">Rotate Counterclockwise</property>
<property name="shortcut-type">gesture-rotate-counterclockwise</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</interface>

192
data/gtk/print.ui Normal file
View file

@ -0,0 +1,192 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="LpPrint" parent="AdwWindow">
<property name="title" translatable="yes">Layout Image</property>
<property name="default-width">350</property>
<signal name="notify::orientation" handler="orientation_changed" swapped="yes" />
<property name="content">
<object class="GtkBox">
<property name="orientation">vertical</property>
<property name="spacing">12</property>
<child>
<object class="GtkShortcutController">
<property name="scope">managed</property>
<child>
<object class="GtkShortcut">
<property name="trigger">Escape|&lt;Ctrl&gt;w</property>
<property name="action">action(window.close)</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwHeaderBar">
<child type="start">
<object class="GtkButton">
<property name="icon-name">go-previous-symbolic</property>
<property name="action-name">print.back</property>
</object>
</child>
<style>
<class name="flat" />
</style>
</object>
</child>
<child>
<object class="GtkBox">
<property name="orientation">vertical</property>
<property name="vexpand">true</property>
<property name="spacing">24</property>
<property name="margin-top">18</property>
<property name="margin-end">18</property>
<property name="margin-bottom">18</property>
<property name="margin-start">18</property>
<child>
<object class="LpPrintPreview" id="preview">
<property name="css-name">lpprintpreview</property>
<binding name="print">
<constant>LpPrint</constant>
</binding>
</object>
</child>
<child>
<object class="GtkBox">
<property name="halign">center</property>
<property name="spacing">36</property>
<child>
<object class="GtkBox">
<style>
<class name="linked" />
</style>
<child>
<object class="GtkToggleButton">
<property name="icon-name">page-orientation-portrait-symbolic</property>
<property name="action-name">print.orientation</property>
<property name="action-target">"portrait"</property>
<property name="tooltip-text" translatable="yes">Portrait page orientation</property>
</object>
</child>
<child>
<object class="GtkToggleButton">
<property name="icon-name">page-orientation-landscape-symbolic</property>
<property name="action-name">print.orientation</property>
<property name="action-target">"landscape"</property>
<property name="tooltip-text" translatable="yes">Landscape page orientation</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkBox">
<style>
<class name="linked" />
</style>
<child>
<object class="GtkButton">
<property name="icon-name">center-on-page-horizontal-symbolic</property>
<property name="action-name">print.center-horizontally</property>
<property name="tooltip-text" translatable="yes">Center image horizontally</property>
</object>
</child>
<child>
<object class="GtkButton">
<property name="icon-name">center-on-page-vertical-symbolic</property>
<property name="action-name">print.center-vertically</property>
<property name="tooltip-text" translatable="yes">Center image vertically</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkListBox">
<property name="selection-mode">none</property>
<child>
<object class="AdwActionRow">
<property name="title" translatable="yes">Image Width</property>
<child>
<object class="GtkSpinButton" id="width">
<property name="valign">center</property>
<property name="max-width-chars">5</property>
<signal name="value-changed" handler="width_changed" swapped="yes" />
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow">
<property name="title" translatable="yes">Image Scale</property>
<child>
<object class="GtkLabel" id="scale">
<style>
<class name="dim-label" />
</style>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow">
<property name="title" translatable="yes">Left Margin</property>
<child>
<object class="GtkSpinButton" id="margin_left">
<property name="valign">center</property>
<property name="max-width-chars">5</property>
<signal name="value-changed" handler="margin_left_changed" swapped="yes" />
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow">
<property name="title" translatable="yes">Top Margin</property>
<child>
<object class="GtkSpinButton" id="margin_top">
<property name="valign">center</property>
<property name="max-width-chars">5</property>
<signal name="value-changed" handler="margin_top_changed" swapped="yes" />
</object>
</child>
</object>
</child>
<child>
<object class="AdwComboRow" id="unit">
<property name="title" translatable="yes">Length Unit</property>
<signal name="notify::selected-item" handler="unit_selected" swapped="yes" />
<property name="model">
<object class="GtkStringList">
<items>
<item>cm</item>
<item>in</item>
<item>px</item>
</items>
</object>
</property>
</object>
</child>
<style>
<class name="boxed-list" />
</style>
</object>
</child>
<child>
<object class="GtkButton">
<property name="label" translatable="yes">Print</property>
<property name="action-name">print.print</property>
<property name="halign">center</property>
<property name="valign">end</property>
<property name="vexpand">true</property>
<property name="width-request">160</property>
<style>
<class name="suggested-action" />
<class name="pill" />
</style>
</object>
</child>
</object>
</child>
</object>
</property>
</template>
</interface>