/* 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=\" #09610 feefe03\"/>"
" </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=\" #0000 af6b0993\"/>"
" </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=\" #18 c52119f796\"/>"
" </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=\" #1 e3687ab0a52\"/>"
" </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=\" #0000041 dffff\"/>"
" </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=\" #07 d0a9b20972\"/>"
" </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=\" #05 c2a161134b\"/>"
" </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=\" #03 e30758fb5f\"/>"
" </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=\" #05470000 abaf\"/>"
" </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=\" #0000 D0F00000\"/>"
" </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=\" #00000000 ffff\"/>"
" </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