gtk2/gtk/ui/gtkfontchooserwidget.ui
Benjamin Otte 58b65d1bf6 fontchooserwidget: Port to listmodels
The port is kind of evil, in that it stores either a PangoFontFamily or a
PangoFontFace in the list, depending on if the fontchooser is configured
to select fonts or faces.
It also does not cache the font description anymore, so more calls to
pango_font_describe() may happen.

If both of these issues turn out problematic, the fontchooser would need
to resurrect GtkDelayedFontDescription again and put objects of that
type through the model.

These changes depend on Pango 1.46's introduction of listmodels and
various new getters, so the dependency has been upgraded.
2020-05-30 19:26:46 -04:00

346 lines
17 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<interface domain="gtk40">
<object class="GtkSingleSelection" id="selection">
<signal name="notify::selected-item" handler="selection_changed_cb" object="GtkFontChooserWidget" swapped="0" />
<signal name="items-changed" handler="rows_changed_cb" object="GtkFontChooserWidget" swapped="1" />
<property name="model">
<object class="GtkFilterListModel" id="filter_model">
<property name="filter">
<object class="GtkEveryFilter">
<child>
<object class="GtkStringFilter">
<binding name="search">
<lookup name="text">search_entry</lookup>
</binding>
<property name="expression">
<closure type="gchararray" swapped="1" function="get_font_name" />
</property>
</object>
</child>
<child>
<object class="GtkCustomFilter" id="custom_filter">
</object>
</child>
</object>
</property>
</object>
</property>
</object>
<object class="GtkAdjustment" id="slider_adjustment">
<property name="upper">100</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
<signal name="value-changed" handler="size_change_cb" swapped="no"/>
</object>
<object class="GtkAdjustment" id="spin_adjustment">
<property name="upper">100</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
<signal name="value-changed" handler="size_change_cb" swapped="no"/>
</object>
<template class="GtkFontChooserWidget" parent="GtkWidget">
<child>
<object class="GtkStack" id="stack">
<child>
<object class="GtkStackPage">
<property name="name">list</property>
<property name="child">
<object class="GtkGrid" id="grid">
<property name="row-spacing">6</property>
<property name="column-spacing">6</property>
<child>
<object class="GtkSearchEntry" id="search_entry">
<property name="hexpand">1</property>
<property name="activates-default">1</property>
<property name="placeholder-text" translatable="yes">Search font name</property>
<signal name="stop-search" handler="stop_search_cb" swapped="no"/>
<layout>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</layout>
</object>
</child>
<child>
<object class="GtkStack" id="list_stack">
<child>
<object class="GtkStackPage">
<property name="name">list</property>
<property name="child">
<object class="GtkGrid">
<property name="row-spacing">6</property>
<property name="column-spacing">6</property>
<child>
<object class="GtkScrolledWindow">
<property name="width-request">400</property>
<property name="height-request">300</property>
<property name="hexpand">1</property>
<property name="vexpand">1</property>
<property name="hscrollbar-policy">never</property>
<property name="has-frame">1</property>
<child>
<object class="GtkListView" id="family_face_list">
<property name="can-focus">1</property>
<property name="model">selection</property>
<signal name="activate" handler="row_activated_cb" swapped="no"/>
<property name="factory">
<object class="GtkBuilderListItemFactory">
<property name="bytes"><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="GtkListItem">
<property name="child">
<object class="GtkLabel">
<property name="margin-start">20</property>
<property name="margin-end">20</property>
<property name="margin-top">10</property>
<property name="margin-bottom">10</property>
<property name="ellipsize">end</property>
<binding name="label">
<closure type="gchararray" function="get_font_name">
<lookup name="item">GtkListItem</lookup>
</closure>
</binding>
<binding name="attributes">
<closure type="PangoAttrList" function="get_font_attributes">
<lookup name="item">GtkListItem</lookup>
</closure>
</binding>
</object>
</property>
</template>
</interface>
]]></property>
</object>
</property>
</object>
</child>
<layout>
<property name="left-attach">0</property>
<property name="top-attach">1</property>
<property name="column-span">3</property>
</layout>
</object>
</child>
<child>
<object class="GtkEntry" id="preview">
<property name="placeholder-text" translatable="yes">Preview text</property>
<child>
<object class="GtkEventControllerScroll">
<property name="flags" translatable="yes">horizontal</property>
<signal name="scroll" handler="resize_by_scroll_cb"/>
</object>
</child>
<layout>
<property name="left-attach">0</property>
<property name="top-attach">2</property>
<property name="column-span">3</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel" id="size_label">
<property name="label" translatable="yes">Size</property>
<property name="xalign">0</property>
<property name="valign">baseline</property>
<layout>
<property name="left-attach">0</property>
<property name="top-attach">3</property>
</layout>
</object>
</child>
<child>
<object class="GtkScale" id="size_slider">
<property name="hexpand">1</property>
<property name="adjustment">slider_adjustment</property>
<property name="draw-value">0</property>
<property name="round-digits">0</property>
<child>
<object class="GtkEventControllerScroll">
<property name="flags" translatable="yes">horizontal</property>
<signal name="scroll" handler="resize_by_scroll_cb"/>
</object>
</child>
<layout>
<property name="left-attach">1</property>
<property name="top-attach">3</property>
</layout>
</object>
</child>
<child>
<object class="GtkSpinButton" id="size_spin">
<property name="adjustment">spin_adjustment</property>
<property name="valign">center</property>
<signal name="output" handler="output_cb"/>
<layout>
<property name="left-attach">2</property>
<property name="top-attach">3</property>
</layout>
</object>
</child>
</object>
</property>
</object>
</child>
<child>
<object class="GtkStackPage">
<property name="name">empty</property>
<property name="child">
<object class="GtkGrid">
<property name="row-spacing">12</property>
<property name="hexpand">1</property>
<property name="vexpand">1</property>
<property name="halign">center</property>
<property name="valign">center</property>
<style>
<class name="dim-label"/>
</style>
<child>
<object class="GtkImage">
<property name="gicon">fonticon</property>
<property name="pixel-size">64</property>
<layout>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</layout>
</object>
</child>
<child>
<object class="GtkLabel">
<property name="label" translatable="yes">No Fonts Found</property>
<attributes>
<attribute name="weight" value="bold"></attribute>
<attribute name="scale" value="1.2"></attribute>
</attributes>
<layout>
<property name="left-attach">0</property>
<property name="top-attach">1</property>
</layout>
</object>
</child>
</object>
</property>
</object>
</child>
<layout>
<property name="left-attach">0</property>
<property name="top-attach">1</property>
</layout>
</object>
</child>
</object>
</property>
</object>
</child>
<child>
<object class="GtkStackPage">
<property name="name">tweaks</property>
<property name="child">
<object class="GtkBox">
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<child>
<object class="GtkLabel" id="font_name_label">
<property name="margin-top">6</property>
<property name="margin-bottom">6</property>
<property name="margin-start">12</property>
<property name="margin-end">12</property>
<property name="ellipsize">end</property>
<property name="xalign">0</property>
<binding name="label" object="GtkFontChooserWidget">
<closure type="gchararray" function="get_font_name">
<lookup name="selected-item">selection</lookup>
</closure>
</binding>
<binding name="attributes" object="GtkFontChooserWidget">
<closure type="PangoAttrList" function="get_font_attributes">
<lookup name="selected-item">selection</lookup>
</closure>
</binding>
</object>
</child>
<child>
<object class="GtkEntry" id="preview2">
<property name="placeholder-text" translatable="yes">Preview text</property>
<property name="text" bind-source="preview" bind-property="text" bind-flags="bidirectional"/>
<property name="attributes" bind-source="preview" bind-property="attributes" bind-flags="bidirectional"/>
</object>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="hscrollbar-policy">never</property>
<property name="has-frame">1</property>
<property name="vexpand">1</property>
<style>
<class name="view"/>
</style>
<child>
<object class="GtkBox">
<property name="orientation">vertical</property>
<property name="spacing">12</property>
<property name="margin-start">12</property>
<property name="margin-end">12</property>
<property name="margin-top">12</property>
<property name="margin-bottom">12</property>
<child>
<object class="GtkGrid" id="axis_grid">
<property name="row-spacing">6</property>
<property name="column-spacing">12</property>
<child>
<object class="GtkLabel" id="size_label2">
<property name="label" translatable="yes">Size</property>
<property name="xalign">0</property>
<property name="valign">baseline</property>
<layout>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</layout>
</object>
</child>
<child>
<object class="GtkScale" id="size_slider2">
<property name="hexpand">1</property>
<property name="adjustment">slider_adjustment</property>
<property name="draw-value">0</property>
<property name="round-digits">0</property>
<layout>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</layout>
</object>
</child>
<child>
<object class="GtkSpinButton" id="size_spin2">
<property name="adjustment">spin_adjustment</property>
<property name="valign">center</property>
<signal name="output" handler="output_cb"/>
<layout>
<property name="left-attach">2</property>
<property name="top-attach">0</property>
</layout>
</object>
</child>
</object>
</child>
<child>
<object class="GtkBox" id="feature_box">
<property name="orientation">vertical</property>
<property name="spacing">12</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</property>
</object>
</child>
</object>
</child>
</template>
<object class="GThemedIcon" id="fonticon">
<property name="names">font-x-generic-symbolic
emblem-documents-symbolic</property>
</object>
</interface>