Blob Blame History Raw
#!/bin/sh
. "${srcdir=.}/init.sh"; path_prepend_ . ../src

# Test of GtkBuilder support.
# Checks the extraction of a medium size GtkBuilder file, with
# comments, context and translatable and not translatable content.

cat <<EOF > xg-gl-7-empty.glade
<?xml version="1.0"?>
<GTK-Interface/>
EOF

: ${XGETTEXT=xgettext}
${XGETTEXT} -o xg-gl-7.pot xg-gl-7-empty.glade 2>/dev/null
test $? = 0 || {
  echo "Skipping test: xgettext was built without Glade support"
  exit 77
}

cat <<EOF > xg-gl-7.ui
<?xml version="1.0" encoding="UTF-8"?>
<interface>
  <!-- interface-requires gtk+ 3.0 -->
  <object class="GtkImage" id="image1">
    <property name="visible">True</property>
    <property name="can_focus">False</property>
    <property name="stock">gtk-about</property>
  </object>
  <object class="GtkImage" id="image2">
    <property name="visible">True</property>
    <property name="can_focus">False</property>
    <property name="stock">gtk-help</property>
  </object>
  <object class="GtkImage" id="image3">
    <property name="visible">True</property>
    <property name="can_focus">False</property>
    <property name="stock">gtk-connect</property>
  </object>
  <object class="GtkListStore" id="liststore">
    <columns>
      <!-- column-name first column -->
      <column type="gchararray"/>
      <!-- column-name second column -->
      <column type="gchararray"/>
      <!-- column-name not extracted column -->
      <column type="guint64"/>
    </columns>
    <data>
      <row>
        <col id="0" translatable="yes" context="First row">Hi</col>
        <col id="1" translatable="yes" comments="A comment.">Comment</col>
        <col id="2">999</col>
      </row>
      <row>
        <col id="0" translatable="yes" context="First row">Hello</col>
        <col id="1" translatable="yes" comments="This is no translatable.">Translatable comment.</col>
        <col id="2">88</col>
      </row>
      <row>
        <col id="0" translatable="no" context="First row" comments="Yeah">Oi</col>
        <col id="1" translatable="yes" context="This is not translatable">Please...</col>
        <col id="2">86855555</col>
      </row>
      <row>
        <col id="0" translatable="yes" context="First row">Hi</col>
        <col id="1" translatable="yes" comments="A multiline&#10;comment.">Comment</col>
        <col id="2">999</col>
      </row>
    </data>
  </object>
  <object class="GtkWindow" id="window">
    <property name="can_focus">False</property>
    <child>
      <object class="GtkBox" id="box">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="orientation">vertical</property>
        <child>
          <object class="GtkMenuBar" id="menubar">
            <property name="visible">True</property>
            <property name="can_focus">False</property>
            <child>
              <object class="GtkMenuItem" id="menuitem1">
                <property name="use_action_appearance">False</property>
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="label" translatable="yes" context="Menu" comments="This thing is the menu label">One thing</property>
                <property name="use_underline">True</property>
                <child type="submenu">
                  <object class="GtkMenu" id="menu1">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <child>
                      <object class="GtkImageMenuItem" id="imagemenuitem1">
                        <property name="label" translatable="yes" context="One thing" comments="This thing is the label in the inner menu.">One thing</property>
                        <property name="use_action_appearance">False</property>
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="image">image1</property>
                        <property name="use_stock">False</property>
                      </object>
                    </child>
                  </object>
                </child>
              </object>
            </child>
            <child>
              <object class="GtkMenuItem" id="menuitem2">
                <property name="use_action_appearance">False</property>
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="label" translatable="yes" context="Menu" comments="This is easy.">H_elp</property>
                <property name="use_underline">True</property>
                <child type="submenu">
                  <object class="GtkMenu" id="menu2">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <child>
                      <object class="GtkImageMenuItem" id="imagemenuitem2">
                        <property name="label" translatable="yes" context="Second menu" comments="This one thing is for the second menu.">One thing</property>
                        <property name="use_action_appearance">False</property>
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="image">image2</property>
                        <property name="use_stock">False</property>
                      </object>
                    </child>
                    <child>
                      <object class="GtkImageMenuItem" id="imagemenuitem3">
                        <property name="label" translatable="yes" context="Second menu" comments="To you too.">Greetings</property>
                        <property name="use_action_appearance">False</property>
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="image">image3</property>
                        <property name="use_stock">False</property>
                      </object>
                    </child>
                  </object>
                </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="GtkTreeView" id="treeview2">
            <property name="visible">True</property>
            <property name="can_focus">True</property>
            <property name="model">liststore</property>
            <signal name="columns-changed" handler="myfunction_treeview_columns_changed" object="treeview-selection2" swapped="no"/>
            <child internal-child="selection">
              <object class="GtkTreeSelection" id="treeview-selection2"/>
            </child>
          </object>
          <packing>
            <property name="expand">True</property>
            <property name="fill">True</property>
            <property name="position">1</property>
          </packing>
        </child>
        <child>
          <object class="GtkButton" id="button">
            <property name="label" translatable="yes" context="Button" comments="This one thing is the button.">One thing</property>
            <property name="use_action_appearance">False</property>
            <property name="visible">True</property>
            <property name="can_focus">True</property>
            <property name="receives_default">True</property>
            <property name="use_action_appearance">False</property>
          </object>
          <packing>
            <property name="expand">False</property>
            <property name="fill">True</property>
            <property name="position">2</property>
          </packing>
        </child>
      </object>
    </child>
  </object>
</interface>
EOF

: ${XGETTEXT=xgettext}
${XGETTEXT} -o - xg-gl-7.ui | grep -v 'POT-Creation-Date' > xg-gl-7.pot || exit 1

cat <<\EOF > xg-gl-7.ok
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"

#: xg-gl-7.ui:30 xg-gl-7.ui:45
msgctxt "First row"
msgid "Hi"
msgstr ""

#. A comment.
#. A multiline
#. comment.
#: xg-gl-7.ui:31 xg-gl-7.ui:46
msgid "Comment"
msgstr ""

#: xg-gl-7.ui:35
msgctxt "First row"
msgid "Hello"
msgstr ""

#. This is no translatable.
#: xg-gl-7.ui:36
msgid "Translatable comment."
msgstr ""

#: xg-gl-7.ui:41
msgctxt "This is not translatable"
msgid "Please..."
msgstr ""

#. This thing is the menu label
#: xg-gl-7.ui:67
msgctxt "Menu"
msgid "One thing"
msgstr ""

#. This thing is the label in the inner menu.
#: xg-gl-7.ui:75
msgctxt "One thing"
msgid "One thing"
msgstr ""

#. This is easy.
#: xg-gl-7.ui:92
msgctxt "Menu"
msgid "H_elp"
msgstr ""

#. This one thing is for the second menu.
#: xg-gl-7.ui:100
msgctxt "Second menu"
msgid "One thing"
msgstr ""

#. To you too.
#: xg-gl-7.ui:110
msgctxt "Second menu"
msgid "Greetings"
msgstr ""

#. This one thing is the button.
#: xg-gl-7.ui:147
msgctxt "Button"
msgid "One thing"
msgstr ""
EOF

: ${DIFF=diff}
${DIFF} xg-gl-7.ok xg-gl-7.pot
result=$?

exit $result