Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Gnome/tests/   (Gnome Linux Desktop Version 4.23.2©)  Datei vom 30.5.2026 mit Größe 30 kB image not shown  

Quelle  testheightforwidth.c

  Sprache: C
 

/* extendedlayoutexample.c
 * Copyright (C) 2010 Openismus GmbH
 *
 * Author:
 *      Tristan Van Berkom <tristan.van.berkom@gmail.com>
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public
 * License along with this library. If not, see <http://www.gnu.org/licenses/>.
 */


#include <gtk/gtk.h>

typedef struct {
  const char *name;
  const char *tooltip;
  const char *interface;
  GtkWidget   *window;
} TestInterface;


/* These strings were generated with:
 *
 *     IFS=""; while read line; do echo -n \"; echo -n $line | sed -e 's|\"|\\"|g'; echo \"; done < file.glade
 */

static TestInterface interfaces[] = {
  {
    "Ellipsizing Labels",
    "Demonstrates how labels will request a natural size in a horizontal space",
    "<interface>"
    "  <requires lib=\"gtk\" version=\"3.99\"/>"
    "  <!-- interface-naming-policy project-wide -->"
    "  <object class=\"GtkWindow\" id=\"window\">"
    "    <property name=\"default_width\">450</property>"
    "    <property name=\"default_height\">50</property>"
    "    <child>"
    "      <object class=\"GtkBox\" id=\"hbox5\">"
    "        <property name=\"orientation\">horizontal</property>"
    "        <child>"
    "          <object class=\"GtkLabel\" id=\"label9\">"
    "            <property name=\"label\" translatable=\"yes\">Some labels do ellipsize</property>"
    "            <property name=\"ellipsize\">end</property>"
    "            <attributes>"
    "              <attribute name=\"weight\" value=\"bold\"/>"
    "              <attribute name=\"foreground\" value=\"#09610feefe03\"/>"
    "            </attributes>"
    "          </object>"
    "        </child>"
    "        <child>"
    "          <object class=\"GtkLabel\" id=\"label10\">"
    "            <property name=\"label\" translatable=\"yes\">but some</property>"
    "            <property name=\"ellipsize\">end</property>"
    "            <attributes>"
    "              <attribute name=\"weight\" value=\"bold\"/>"
    "              <attribute name=\"foreground\" value=\"#0000af6b0993\"/>"
    "            </attributes>"
    "          </object>"
    "        </child>"
    "        <child>"
    "          <object class=\"GtkLabel\" id=\"label11\">"
    "            <property name=\"label\" translatable=\"yes\">do not at all</property>"
    "            <attributes>"
    "              <attribute name=\"style\" value=\"normal\"/>"
    "              <attribute name=\"weight\" value=\"bold\"/>"
    "              <attribute name=\"foreground\" value=\"#ffff00000000\"/>"
    "            </attributes>"
    "          </object>"
    "        </child>"
    "      </object>"
    "    </child>"
    "  </object>"
    "</interface>",
    NULL
  },

  {
    "Wrapping Label",
    "Demonstrates how a wrapping label can require a height contextual to its allocated width",
    "<interface>"
    "  <requires lib=\"gtk\" version=\"3.99\"/>"
    "  <!-- interface-naming-policy project-wide -->"
    "  <object class=\"GtkWindow\" id=\"window\">"
    "    <property name=\"default_width\">300</property>"
    "    <child>"
    "      <object class=\"GtkPaned\" id=\"hpaned1\">"
    "        <property name=\"orientation\">horizontal</property>"
    "        <property name=\"can_focus\">True</property>"
    "        <property name=\"resize-child1\">False</property>"
    "        <property name=\"shrink-child1\">False</property>"
    "        <child>"
    "          <object class=\"GtkBox\" id=\"vbox2\">"
    "            <property name=\"orientation\">vertical</property>"
    "            <child>"
    "              <object class=\"GtkLabel\" id=\"label3\">"
    "                <property name=\"label\" translatable=\"yes\">A short static label.</property>"
    "                <attributes>"
    "                  <attribute name=\"weight\" value=\"bold\"/>"
    "                </attributes>"
    "              </object>"
    "            </child>"
    "            <child>"
    "              <object class=\"GtkFrame\" id=\"frame1\">"
    "                <property name=\"label\">Long label</property>"
    "                <child>"
    "                  <object class=\"GtkLabel\" id=\"label1\">"
    "                    <property name=\"label\" translatable=\"yes\">This is a really long label for the purpose of testing line wrapping is working correctly in conjunction with height-for-width support in GTK</property>"
    "                    <property name=\"wrap\">True</property>"
    "                    <property name=\"max_width_chars\">30</property>"
    "                    <attributes>"
    "                      <attribute name=\"foreground\" value=\"#18c52119f796\"/>"
    "                    </attributes>"
    "                  </object>"
    "                </child>"
    "              </object>"
    "            </child>"
    "            <child>"
    "              <object class=\"GtkButton\" id=\"button2\">"
    "                <property name=\"can_focus\">True</property>"
    "                <property name=\"receives_default\">True</property>"
    "                <child>"
    "                  <object class=\"GtkLabel\" id=\"label2\">"
    "                    <property name=\"label\" translatable=\"yes\">A really really long label inside a button to demonstrate height for width working inside buttons</property>"
    "                    <property name=\"wrap\">True</property>"
    "                    <property name=\"max_width_chars\">25</property>"
    "                    <attributes>"
    "                      <attribute name=\"foreground\" value=\"#1e3687ab0a52\"/>"
    "                    </attributes>"
    "                  </object>"
    "                </child>"
    "              </object>"
    "            </child>"
    "          </object>"
    "        </child>"
    "        <child>"
    "          <object class=\"GtkLabel\" id=\"label4\">"
    "            <property name=\"label\" translatable=\"yes\">This static label\n"
    "can shrink.</property>"
    "            <property name=\"justify\">center</property>"
    "            <attributes>"
    "              <attribute name=\"style\" value=\"normal\"/>"
    "              <attribute name=\"foreground\" value=\"#ffff00000000\"/>"
    "            </attributes>"
    "          </object>"
    "        </child>"
    "      </object>"
    "    </child>"
    "  </object>"
    "</interface>",
    NULL
  },

  {
    "Horizontal Box",
    "Demonstrates how a horizontal box can calculate the collective height for an allocated width",
    "<interface>"
    "  <requires lib=\"gtk\" version=\"3.99\"/>"
    "  <!-- interface-naming-policy project-wide -->"
    "  <object class=\"GtkWindow\" id=\"window\">"
    "    <property name=\"default_height\">200</property>"
    "    <property name=\"default_width\">600</property>"
    "    <child>"
    "      <object class=\"GtkPaned\" id=\"hpaned1\">"
    "        <property name=\"orientation\">horizontal</property>"
    "        <property name=\"can_focus\">True</property>"
    "        <property name=\"resize-child1\">False</property>"
    "        <property name=\"shrink-child1\">False</property>"
    "        <child>"
    "          <object class=\"GtkBox\" id=\"vbox1\">"
    "            <property name=\"orientation\">vertical</property>"
    "            <child>"
    "              <object class=\"GtkBox\" id=\"hbox1\">"
    "                <property name=\"orientation\">horizontal</property>"
    "                <child>"
    "                  <object class=\"GtkButton\" id=\"button1\">"
    "                    <property name=\"can_focus\">True</property>"
    "                    <property name=\"receives_default\">True</property>"
    "                    <child>"
    "                      <object class=\"GtkLabel\" id=\"label2\">"
    "                        <property name=\"label\" translatable=\"yes\">A button that wraps.</property>"
    "                        <property name=\"wrap\">True</property>"
    "                        <property name=\"width_chars\">10</property>"
    "                        <attributes>"
    "                          <attribute name=\"foreground\" value=\"#0000041dffff\"/>"
    "                        </attributes>"
    "                      </object>"
    "                    </child>"
    "                  </object>"
    "                </child>"
    "                <child>"
    "                  <object class=\"GtkLabel\" id=\"label1\">"
    "                    <property name=\"label\" translatable=\"yes\">Lets try setting up some long text to wrap up in this hbox and see if the height-for-width is gonna work !</property>"
    "                    <property name=\"wrap\">True</property>"
    "                    <property name=\"width_chars\">30</property>"
    "                    <attributes>"
    "                      <attribute name=\"foreground\" value=\"#07d0a9b20972\"/>"
    "                    </attributes>"
    "                  </object>"
    "                </child>"
    "              </object>"
    "            </child>"
    "            <child>"
    "              <object class=\"GtkButton\" id=\"button2\">"
    "                <property name=\"label\" translatable=\"yes\">A button that expands in the vbox</property>"
    "                <property name=\"can_focus\">True</property>"
    "                <property name=\"receives_default\">True</property>"
    "              </object>"
    "            </child>"
    "          </object>"
    "        </child>"
    "        <child>"
    "          <object class=\"GtkLabel\" id=\"label4\">"
    "            <property name=\"label\" translatable=\"yes\">This label is\n"
    "set to shrink inside\n"
    "the paned window.</property>"
    "            <property name=\"justify\">center</property>"
    "            <attributes>"
    "              <attribute name=\"style\" value=\"normal\"/>"
    "              <attribute name=\"foreground\" value=\"#ffff00000000\"/>"
    "            </attributes>"
    "          </object>"
    "        </child>"
    "      </object>"
    "    </child>"
    "  </object>"
    "</interface>",
    NULL
  },

  {
    "Label Parameters",
    "This test demonstrates how \"width-chars\" and \"max-width-chars\" can be used "
    "to effect minimum and natural widths in wrapping labels.",
    "<interface>"
    "  <requires lib=\"gtk\" version=\"3.99\"/>"
    "  <!-- interface-naming-policy project-wide -->"
    "  <object class=\"GtkWindow\" id=\"window\">"
    "    <property name=\"default_width\">900</property>"
    "    <child>"
    "      <object class=\"GtkPaned\" id=\"hpaned1\">"
    "        <property name=\"orientation\">horizontal</property>"
    "        <property name=\"can_focus\">True</property>"
    "        <property name=\"resize-child1\">False</property>"
    "        <property name=\"shrink-child1\">False</property>"
    "        <child>"
    "          <object class=\"GtkBox\" id=\"vbox1\">"
    "            <property name=\"orientation\">vertical</property>"
    "            <child>"
    "              <object class=\"GtkBox\" id=\"hbox1\">"
    "                <property name=\"orientation\">horizontal</property>"
    "                <property name=\"spacing\">6</property>"
    "                <child>"
    "                  <object class=\"GtkLabel\" id=\"label1\">"
    "                    <property name=\"label\" translatable=\"yes\">The first 2 labels require 10 characters.</property>"
    "                    <property name=\"wrap\">True</property>"
    "                    <property name=\"width_chars\">10</property>"
    "                    <attributes>"
    "                      <attribute name=\"weight\" value=\"bold\"/>"
    "                      <attribute name=\"foreground\" value=\"#ffff00000000\"/>"
    "                    </attributes>"
    "                  </object>"
    "                </child>"
    "                <child>"
    "                  <object class=\"GtkLabel\" id=\"label2\">"
    "                    <property name=\"label\" translatable=\"yes\">This label has a maximum natural width of 20 characters. The second two labels expand.</property>"
    "                    <property name=\"wrap\">True</property>"
    "                    <property name=\"width_chars\">10</property>"
    "                    <property name=\"max_width_chars\">20</property>"
    "                    <attributes>"
    "                      <attribute name=\"weight\" value=\"bold\"/>"
    "                      <attribute name=\"foreground\" value=\"#05c2a161134b\"/>"
    "                    </attributes>"
    "                  </object>"
    "                </child>"
    "                <child>"
    "                  <object class=\"GtkLabel\" id=\"label3\">"
    "                    <property name=\"label\" translatable=\"yes\">This label requires a default minimum size.</property>"
    "                    <property name=\"wrap\">True</property>"
    "                    <attributes>"
    "                      <attribute name=\"weight\" value=\"bold\"/>"
    "                      <attribute name=\"foreground\" value=\"#03e30758fb5f\"/>"
    "                    </attributes>"
    "                  </object>"
    "                </child>"
    "              </object>"
    "            </child>"
    "            <child>"
    "              <object class=\"GtkLabel\" id=\"label4\">"
    "                <property name=\"label\" translatable=\"yes\">This test demonstrates how the \"width-chars\" and \"max-width-chars\"\n"
    "properties can be used to specify the minimum requested wrap width\n"
    "and the maximum natural wrap width respectively.</property>"
    "                <property name=\"ellipsize\">end</property>"
    "                <property name=\"width_chars\">30</property>"
    "                <attributes>"
    "                  <attribute name=\"style\" value=\"normal\"/>"
    "                  <attribute name=\"foreground\" value=\"#05470000abaf\"/>"
    "                </attributes>"
    "              </object>"
    "            </child>"
    "          </object>"
    "        </child>"
    "        <child>"
    "          <object class=\"GtkLabel\" id=\"label5\">"
    "            <property name=\"label\" translatable=\"yes\">Some static\n"
    "text that shrinks.\n"
    "\n"
    "You will need to stretch\n"
    "this window quite wide\n"
    "to see the effects.</property>"
    "            <property name=\"justify\">center</property>"
    "            <attributes>"
    "              <attribute name=\"foreground\" value=\"#ffff00000000\"/>"
    "            </attributes>"
    "          </object>"
    "        </child>"
    "      </object>"
    "    </child>"
    "  </object>"
    "</interface>",
    NULL
  },

  {
    "Wrapping Expander",
    "This test demonstrates how the expander label can fill to its natural width "
    "and also trade height for width.",
    "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
    "<interface>"
    "  <requires lib=\"gtk\" version=\"3.99\"/>"
    "  <!-- interface-naming-policy project-wide -->"
    "  <object class=\"GtkWindow\" id=\"window\">"
    "    <property name=\"default_width\">500</property>"
    "    <child>"
    "      <object class=\"GtkPaned\" id=\"hpaned1\">"
    "        <property name=\"orientation\">horizontal</property>"
    "        <property name=\"can_focus\">True</property>"
    "        <property name=\"resize-child1\">False</property>"
    "        <property name=\"shrink-child1\">False</property>"
    "        <child>"
    "          <object class=\"GtkExpander\" id=\"expander1\">"
    "            <property name=\"can_focus\">True</property>"
    "            <child>"
    "              <object class=\"GtkLabel\" id=\"label2\">"
    "                <property name=\"label\" translatable=\"yes\">More wrapping text to fill the largish content area in the expander </property>"
    "                <property name=\"wrap\">True</property>"
    "                <property name=\"width_chars\">10</property>"
    "                <attributes>"
    "                  <attribute name=\"weight\" value=\"bold\"/>"
    "                  <attribute name=\"foreground\" value=\"#0000D0F00000\"/>"
    "                </attributes>"
    "              </object>"
    "            </child>"
    "            <child type=\"label\">"
    "              <object class=\"GtkLabel\" id=\"label1\">"
    "                <property name=\"label\" translatable=\"yes\">Here is some expander text that wraps</property>"
    "                <property name=\"wrap\">True</property>"
    "                <property name=\"width_chars\">10</property>"
    "                <attributes>"
    "                  <attribute name=\"weight\" value=\"bold\"/>"
    "                  <attribute name=\"foreground\" value=\"blue\"/>"
    "                </attributes>"
    "              </object>"
    "            </child>"
    "          </object>"
    "        </child>"
    "        <child>"
    "          <object class=\"GtkLabel\" id=\"label3\">"
    "            <property name=\"label\" translatable=\"yes\">static\n"
    "text\n"
    "here</property>"
    "            <attributes>"
    "              <attribute name=\"foreground\" value=\"red\"/>"
    "            </attributes>"
    "          </object>"
    "        </child>"
    "      </object>"
    "    </child>"
    "  </object>"
    "</interface>",
    NULL
  },

  {
    "Wrapping Frame Label",
    "This test demonstrates how the frame label can fill to its natural width "
    "and also trade height for width.",
    "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
    "<interface>"
    "  <requires lib=\"gtk\" version=\"3.99\"/>"
    "  <!-- interface-naming-policy project-wide -->"
    "  <object class=\"GtkWindow\" id=\"window\">"
    "    <property name=\"default_width\">400</property>"
    "    <property name=\"default_height\">150</property>"
    "    <child>"
    "      <object class=\"GtkFrame\" id=\"frame1\">"
    "        <property name=\"label_xalign\">0</property>"
    "        <child>"
    "          <object class=\"GtkLabel\" id=\"label2\">"
    "            <property name=\"margin_start\">12</property>"
    "            <property name=\"label\" translatable=\"yes\">some content</property>"
    "          </object>"
    "        </child>"
    "        <child type=\"label\">"
    "          <object class=\"GtkLabel\" id=\"label1\">"
    "            <property name=\"label\" translatable=\"yes\">A frame label that's a little long and wraps</property>"
    "            <property name=\"use_markup\">True</property>"
    "            <property name=\"wrap\">True</property>"
    "          </object>"
    "        </child>"
    "      </object>"
    "    </child>"
    "  </object>"
    "</interface>",
    NULL
  },

  {
    "Combo Boxes and Menus",
    "This test shows wrapping and ellipsizing text in combo boxes (and consequently in menu items).",
    "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
    "<interface>"
    "  <requires lib=\"gtk\" version=\"3.99\"/>"
    "  <!-- interface-naming-policy project-wide -->"
    "  <object class=\"GtkWindow\" id=\"window\">"
    "    <property name=\"default_width\">600</property>"
    "    <child>"
    "      <object class=\"GtkPaned\" id=\"hpaned1\">"
    "        <property name=\"orientation\">horizontal</property>"
    "        <property name=\"can_focus\">True</property>"
    "        <property name=\"shrink-child1\">False</property>"
    "        <property name=\"resize-child2\">False</property>"
    "        <child>"
    "          <object class=\"GtkBox\" id=\"vbox1\">"
    "            <property name=\"orientation\">vertical</property>"
    "            <property name=\"spacing\">5</property>"
    "            <child>"
    "              <object class=\"GtkBox\" id=\"hbox1\">"
    "                <property name=\"orientation\">horizontal</property>"
    "                <property name=\"spacing\">5</property>"
    "                <child>"
    "                  <object class=\"GtkLabel\" id=\"label1\">"
    "                    <property name=\"label\" translatable=\"yes\">this combo box</property>"
    "                    <attributes>"
    "                      <attribute name=\"weight\" value=\"bold\"/>"
    "                      <attribute name=\"foreground\" value=\"#b3460000eb1c\"/>"
    "                    </attributes>"
    "                  </object>"
    "                </child>"
    "                <child>"
    "                  <object class=\"GtkLabel\" id=\"label2\">"
    "                    <property name=\"label\" translatable=\"yes\">contains some wrapping locations</property>"
    "                    <property name=\"ellipsize\">end</property>"
    "                    <property name=\"width_chars\">10</property>"
    "                    <attributes>"
    "                      <attribute name=\"weight\" value=\"bold\"/>"
    "                      <attribute name=\"foreground\" value=\"#b3460000eb1c\"/>"
    "                    </attributes>"
    "                  </object>"
    "                </child>"
    "                <child>"
    "                  <object class=\"GtkComboBox\" id=\"combobox1\">"
    "                    <property name=\"model\">liststore1</property>"
    "                    <property name=\"active\">0</property>"
    "                    <child>"
    "                      <object class=\"GtkCellRendererPixbuf\" id=\"cellrenderertext1\"/>"
    "                      <attributes>"
    "                        <attribute name=\"icon-name\">1</attribute>"
    "                      </attributes>"
    "                    </child>"
    "                    <child>"
    "                      <object class=\"GtkCellRendererText\" id=\"cellrenderertext2\">"
    "                        <property name=\"foreground\">purple</property>"
    "                        <property name=\"weight\">600</property>"
    "                        <property name=\"wrap_mode\">word</property>"
    "                        <property name=\"wrap_width\">100</property>"
    "                      </object>"
    "                      <attributes>"
    "                        <attribute name=\"text\">0</attribute>"
    "                      </attributes>"
    "                    </child>"
    "                  </object>"
    "                </child>"
    "              </object>"
    "            </child>"
    "            <child>"
    "              <object class=\"GtkFrame\" id=\"frame1\">"
    "                <property name=\"label_xalign\">0</property>"
    "                <child>"
    "                  <object class=\"GtkLabel\" id=\"label3\">"
    "                    <property name=\"label\" translatable=\"yes\">This test shows combo boxes\n"
    "requesting and allocating space\n"
    "for its backing content using\n"
    "height-for-width geometry\n"
    "management.\n"
    "\n"
    "Note this test also demonstrates\n"
    "height-for-width menu items.</property>"
    "                    <property name=\"justify\">center</property>"
    "                    <attributes>"
    "                      <attribute name=\"weight\" value=\"bold\"/>"
    "                      <attribute name=\"foreground\" value=\"#00000000ffff\"/>"
    "                    </attributes>"
    "                  </object>"
    "                </child>"
    "              </object>"
    "            </child>"
    "            <child>"
    "              <object class=\"GtkBox\" id=\"hbox2\">"
    "                <property name=\"orientation\">horizontal</property>"
    "                <property name=\"spacing\">5</property>"
    "                <child>"
    "                  <object class=\"GtkLabel\" id=\"label4\">"
    "                    <property name=\"label\" translatable=\"yes\">this combo box</property>"
    "                    <attributes>"
    "                      <attribute name=\"weight\" value=\"bold\"/>"
    "                      <attribute name=\"foreground\" value=\"#ffffa5a50000\"/>"
    "                    </attributes>"
    "                  </object>"
    "                </child>"
    "                <child>"
    "                  <object class=\"GtkLabel\" id=\"label5\">"
    "                    <property name=\"label\" translatable=\"yes\">contains some ellipsizing locations</property>"
    "                    <property name=\"ellipsize\">end</property>"
    "                    <property name=\"width_chars\">10</property>"
    "                    <attributes>"
    "                      <attribute name=\"weight\" value=\"bold\"/>"
    "                      <attribute name=\"foreground\" value=\"#ffffa5a50000\"/>"
    "                    </attributes>"
    "                  </object>"
    "                </child>"
    "                <child>"
    "                  <object class=\"GtkComboBox\" id=\"combobox2\">"
    "                    <property name=\"model\">liststore1</property>"
    "                    <property name=\"active\">0</property>"
    "                    <child>"
    "                      <object class=\"GtkCellRendererPixbuf\" id=\"cellrenderertext3\"/>"
    "                      <attributes>"
    "                        <attribute name=\"icon-name\">1</attribute>"
    "                      </attributes>"
    "                    </child>"
    "                    <child>"
    "                      <object class=\"GtkCellRendererText\" id=\"cellrenderertext4\">"
    "                        <property name=\"ellipsize\">end</property>"
    "                        <property name=\"foreground\">orange</property>"
    "                        <property name=\"weight\">600</property>"
    "                        <property name=\"width_chars\">10</property>"
    "                      </object>"
    "                      <attributes>"
    "                        <attribute name=\"text\">0</attribute>"
    "                      </attributes>"
    "                    </child>"
    "                  </object>"
    "                </child>"
    "              </object>"
    "            </child>"
    "          </object>"
    "        </child>"
    "        <child>"
    "          <object class=\"GtkLabel\" id=\"label6\">"
    "            <property name=\"label\" translatable=\"yes\">Some static\n"
    "text here\n"
    "that shrinks.</property>"
    "            <property name=\"justify\">center</property>"
    "            <attributes>"
    "              <attribute name=\"foreground\" value=\"#ffff00000000\"/>"
    "            </attributes>"
    "          </object>"
    "        </child>"
    "      </object>"
    "    </child>"
    "  </object>"
    "  <object class=\"GtkListStore\" id=\"liststore1\">"
    "    <columns>"
    "      <!-- column-name item-text -->"
    "      <column type=\"gchararray\"/>"
    "      <!-- column-name icon-name -->"
    "      <column type=\"gchararray\"/>"
    "    </columns>"
    "    <data>"
    "      <row>"
    "        <col id=\"0\" translatable=\"yes\">Montreal, Quebec Canada</col>"
    "        <col id=\"1\" translatable=\"yes\">edit-undo</col>"
    "      </row>"
    "      <row>"
    "        <col id=\"0\" translatable=\"yes\">Sao Paulo, SP Brazil</col>"
    "        <col id=\"1\" translatable=\"yes\">edit-redo</col>"
    "      </row>"
    "      <row>"
    "        <col id=\"0\" translatable=\"yes\">Buenos Aires, Argentina</col>"
    "        <col id=\"1\" translatable=\"yes\">process-stop</col>"
    "      </row>"
    "      <row>"
    "        <col id=\"0\" translatable=\"yes\">Los Angelos, California USA</col>"
    "        <col id=\"1\" translatable=\"yes\">media-record</col>"
    "      </row>"
    "      <row>"
    "        <col id=\"0\" translatable=\"yes\">Rio de Janeiro, RJ Brazil</col>"
    "        <col id=\"1\" translatable=\"yes\">dialog-error</col>"
    "      </row>"
    "      <row>"
    "        <col id=\"0\" translatable=\"yes\">Seoul, South Korea</col>"
    "        <col id=\"1\" translatable=\"yes\">dialog-information</col>"
    "      </row>"
    "    </data>"
    "  </object>"
    "</interface>",
    NULL
  },
  
};


static void
test_clicked (GtkWidget     *button, 
              TestInterface *interface)
{
  if (!interface->window)
    {
      GtkBuilder *builder = gtk_builder_new ();
      GError *error = NULL;
      
      gtk_builder_add_from_string (builder, interface->interface, -1, &error);

      if (error)
        {
          g_printerr ("GtkBuilder for interface \"%s\" returned error \"%s\"\n",
                      interface->name, error->message);

          g_error_free (error);
          g_object_unref (builder);

          return;
        }

      interface->window = (GtkWidget *)gtk_builder_get_object (builder, "window");

      gtk_window_set_hide_on_close (GTK_WINDOW (interface->window), TRUE);

      g_object_unref (builder);
    }

  gtk_window_present (GTK_WINDOW (interface->window));
}


static GtkWidget *
create_window (void)
{
  GtkWidget *window, *vbox, *button;
  int i;

  window = gtk_window_new ();
  vbox   = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);

  gtk_widget_set_margin_start (vbox, 8);
  gtk_widget_set_margin_end (vbox, 8);
  gtk_widget_set_margin_top (vbox, 8);
  gtk_widget_set_margin_bottom (vbox, 8);

  gtk_window_set_child (GTK_WINDOW (window), vbox);

  for (i = 0; i < G_N_ELEMENTS (interfaces); i++)
    {
      button = gtk_button_new_with_label (interfaces[i].name);

      gtk_widget_set_tooltip_text (button, interfaces[i].tooltip);

      g_signal_connect (button, "clicked",
                        G_CALLBACK (test_clicked), &interfaces[i]);

      gtk_box_append (GTK_BOX (vbox), button);
    }

  return window;
}

static void
quit_cb (GtkWidget *widget,
         gpointer   data)
{
  gboolean *done = data;

  *done = TRUE;

  g_main_context_wakeup (NULL);
}

int
main (int argc, char *argv[])
{
  GtkWidget *window;
  gboolean done = FALSE;

  gtk_init ();

  window = create_window ();

  g_signal_connect (window, "destroy", G_CALLBACK (quit_cb), &done);

  gtk_window_present (GTK_WINDOW (window));

  while (!done)
    g_main_context_iteration (NULL, TRUE);

  return 0;
}

Messung V0.5 in Prozent
C=98 H=90 G=94

¤ Dauer der Verarbeitung: 0.18 Sekunden  (vorverarbeitet am  2026-07-02) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.