mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-17 22:40:11 +00:00
c2f23ccd23
See the documentation in the script. Tests are not yet added as the output from the 2 included scripts doesn't match and the intended reference output first needs to be agreed on.
223 lines
6.9 KiB
Bash
Executable File
223 lines
6.9 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# align-expand.sh [METHOD]
|
|
#
|
|
# This is the script used to create the align-expand tests. These tests
|
|
# put a 20x20 size-requested GtkTreeView into a 40x40 size-requested
|
|
# container and try to achieve multiple combinations of expand and align
|
|
# flags. The resulting GtkBuilder file is written to stdout. All of the
|
|
# resulting files should render identical.
|
|
#
|
|
# METHOD is one of:
|
|
# * flags (default)
|
|
# Uses expand flags to align and expand the treeview inside a GtkGrid.
|
|
# You should use this as the reference when adding tests for other
|
|
# methods
|
|
# * alignment
|
|
# Aligns and expands the treeview in a GtkAlignment using its scale
|
|
# and align properties.
|
|
|
|
|
|
if test $# -lt 1; then
|
|
method="flags"
|
|
else
|
|
method=$1
|
|
fi
|
|
|
|
cat << EOF
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
<interface>
|
|
<!-- interface-requires gtk+ 3.0 -->
|
|
<object class="GtkWindow" id="window">
|
|
<property name="can_focus">False</property>
|
|
<property name="type">popup</property>
|
|
<child>
|
|
<object class="GtkGrid" id="grid">
|
|
<property name="visible">True</property>
|
|
<property name="can_focus">False</property>
|
|
<property name="row_spacing">2</property>
|
|
<property name="column_spacing">2</property>
|
|
EOF
|
|
|
|
|
|
y=2
|
|
for hexpand in False True; do
|
|
for halign in "start" center end fill; do
|
|
|
|
cat << EOF
|
|
<child>
|
|
<object class="GtkLabel" id="hexpand-$halign-$hexpand">
|
|
<property name="visible">True</property>
|
|
<property name="can_focus">False</property>
|
|
<property name="label">$hexpand</property>
|
|
<property name="angle">90</property>
|
|
</object>
|
|
<packing>
|
|
<property name="left_attach">$y</property>
|
|
<property name="top_attach">0</property>
|
|
<property name="width">1</property>
|
|
<property name="height">1</property>
|
|
</packing>
|
|
</child>
|
|
<child>
|
|
<object class="GtkLabel" id="halign-$halign-$hexpand">
|
|
<property name="visible">True</property>
|
|
<property name="can_focus">False</property>
|
|
<property name="label">$halign</property>
|
|
<property name="angle">90</property>
|
|
</object>
|
|
<packing>
|
|
<property name="left_attach">$y</property>
|
|
<property name="top_attach">1</property>
|
|
<property name="width">1</property>
|
|
<property name="height">1</property>
|
|
</packing>
|
|
</child>
|
|
EOF
|
|
x=2
|
|
for vexpand in False True; do
|
|
for valign in "start" center end fill; do
|
|
|
|
if test $y = "2"; then
|
|
cat << EOF
|
|
<child>
|
|
<object class="GtkLabel" id="vexpand-$valign-$vexpand">
|
|
<property name="visible">True</property>
|
|
<property name="can_focus">False</property>
|
|
<property name="label">$vexpand</property>
|
|
</object>
|
|
<packing>
|
|
<property name="left_attach">0</property>
|
|
<property name="top_attach">$x</property>
|
|
<property name="width">1</property>
|
|
<property name="height">1</property>
|
|
</packing>
|
|
</child>
|
|
<child>
|
|
<object class="GtkLabel" id="valign-$valign-$vexpand">
|
|
<property name="visible">True</property>
|
|
<property name="can_focus">False</property>
|
|
<property name="label">$valign</property>
|
|
</object>
|
|
<packing>
|
|
<property name="left_attach">1</property>
|
|
<property name="top_attach">$x</property>
|
|
<property name="width">1</property>
|
|
<property name="height">1</property>
|
|
</packing>
|
|
</child>
|
|
EOF
|
|
fi
|
|
|
|
if test $method = "flags"; then
|
|
|
|
cat << EOF
|
|
<child>
|
|
<object class="GtkGrid" id="grid-$valign-$halign-$vexpand-$hexpand">
|
|
<property name="width_request">40</property>
|
|
<property name="height_request">40</property>
|
|
<property name="visible">True</property>
|
|
<property name="can_focus">False</property>
|
|
<child>
|
|
<object class="GtkTreeView" id="treeview-$valign-$halign-$vexpand-$hexpand">
|
|
<property name="width_request">20</property>
|
|
<property name="height_request">20</property>
|
|
<property name="visible">True</property>
|
|
<property name="can_focus">False</property>
|
|
<property name="halign">$halign</property>
|
|
<property name="valign">$valign</property>
|
|
<property name="hexpand">$hexpand</property>
|
|
<property name="vexpand">$vexpand</property>
|
|
</object>
|
|
<packing>
|
|
<property name="left_attach">0</property>
|
|
<property name="top_attach">0</property>
|
|
<property name="width">1</property>
|
|
<property name="height">1</property>
|
|
</packing>
|
|
</child>
|
|
</object>
|
|
<packing>
|
|
<property name="left_attach">$x</property>
|
|
<property name="top_attach">$y</property>
|
|
<property name="width">1</property>
|
|
<property name="height">1</property>
|
|
</packing>
|
|
</child>
|
|
EOF
|
|
|
|
elif test $method = "alignment"; then
|
|
|
|
xscale=0.0
|
|
case "$halign" in
|
|
"start") xalign=0.0 ;;
|
|
"center") xalign=0.5 ;;
|
|
"end") xalign=1.0 ;;
|
|
"fill") xalign=0.5; xscale=1.0 ;;
|
|
esac
|
|
if test $hexpand = "True"; then
|
|
xscale=1.0
|
|
fi
|
|
|
|
yscale=0.0
|
|
case "$valign" in
|
|
"start") yalign=0.0 ;;
|
|
"center") yalign=0.5 ;;
|
|
"end") yalign=1.0 ;;
|
|
"fill") yalign=0.5; yscale=1.0 ;;
|
|
esac
|
|
if test $vexpand = "True"; then
|
|
yscale=1.0
|
|
fi
|
|
|
|
cat << EOF
|
|
<child>
|
|
<object class="GtkAlignment" id="align-$valign-$halign-$vexpand-$hexpand">
|
|
<property name="width_request">40</property>
|
|
<property name="height_request">40</property>
|
|
<property name="visible">True</property>
|
|
<property name="can_focus">False</property>
|
|
<property name="xalign">$xalign</property>
|
|
<property name="yalign">$yalign</property>
|
|
<property name="xscale">$xscale</property>
|
|
<property name="yscale">$yscale</property>
|
|
<child>
|
|
<object class="GtkTreeView" id="treeview-$valign-$halign-$vexpand-$hexpand">
|
|
<property name="width_request">20</property>
|
|
<property name="height_request">20</property>
|
|
<property name="visible">True</property>
|
|
<property name="can_focus">False</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
<packing>
|
|
<property name="left_attach">$x</property>
|
|
<property name="top_attach">$y</property>
|
|
<property name="width">1</property>
|
|
<property name="height">1</property>
|
|
</packing>
|
|
</child>
|
|
EOF
|
|
|
|
else
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
x=`expr $x + 1`
|
|
done
|
|
done
|
|
|
|
y=`expr $y + 1`
|
|
x=0
|
|
done
|
|
done
|
|
|
|
cat << EOF
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</interface>
|
|
EOF
|