MGtk Reference Manual | ||||
---|---|---|---|---|
| Description |
Example 4Example 4 — From Gtk to MGtk |
Example 11. Example Gtk 2.20.1
#include <stdio.h> #include <stdlib.h> #include "gtk/gtk.h" static gboolean delete_event( GtkWidget *widget, GdkEvent *event, gpointer data ) { gtk_main_quit (); return FALSE; } static GtkWidget *make_box( gboolean homogeneous, gint spacing, gboolean expand, gboolean fill, guint padding ) { GtkWidget *box; GtkWidget *button; char padstr[80]; box = gtk_hbox_new (homogeneous, spacing); button = gtk_button_new_with_label ("gtk_box_pack"); gtk_box_pack_start (GTK_BOX (box), button, expand, fill, padding); gtk_widget_show (button); button = gtk_button_new_with_label ("(box,"); gtk_box_pack_start (GTK_BOX (box), button, expand, fill, padding); gtk_widget_show (button); button = gtk_button_new_with_label ("button,"); gtk_box_pack_start (GTK_BOX (box), button, expand, fill, padding); gtk_widget_show (button); if (expand == TRUE) button = gtk_button_new_with_label ("TRUE,"); else button = gtk_button_new_with_label ("FALSE,"); gtk_box_pack_start (GTK_BOX (box), button, expand, fill, padding); gtk_widget_show (button); button = gtk_button_new_with_label (fill ? "TRUE," : "FALSE,"); gtk_box_pack_start (GTK_BOX (box), button, expand, fill, padding); gtk_widget_show (button); sprintf (padstr, "%d);", padding); button = gtk_button_new_with_label (padstr); gtk_box_pack_start (GTK_BOX (box), button, expand, fill, padding); gtk_widget_show (button); return box; } int main( int argc, char *argv[]) { GtkWidget *window; GtkWidget *button; GtkWidget *box1; GtkWidget *box2; GtkWidget *separator; GtkWidget *label; GtkWidget *quitbox; int which; gtk_init (&argc, &argv); if (argc != 2) { fprintf (stderr, "usage: packbox num, where num is 1, 2, or 3.\n"); exit (1); } which = atoi (argv[1]); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); g_signal_connect (window, "delete-event", G_CALLBACK (delete_event), NULL); gtk_container_set_border_width (GTK_CONTAINER (window), 10); box1 = gtk_vbox_new (FALSE, 0); switch (which) { case 1: label = gtk_label_new ("gtk_hbox_new (FALSE, 0);"); gtk_misc_set_alignment (GTK_MISC (label), 0, 0); gtk_box_pack_start (GTK_BOX (box1), label, FALSE, FALSE, 0); gtk_widget_show (label); box2 = make_box (FALSE, 0, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, FALSE, 0); gtk_widget_show (box2); box2 = make_box (FALSE, 0, TRUE, FALSE, 0); gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, FALSE, 0); gtk_widget_show (box2); box2 = make_box (FALSE, 0, TRUE, TRUE, 0); gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, FALSE, 0); gtk_widget_show (box2); separator = gtk_hseparator_new (); gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 5); gtk_widget_show (separator); label = gtk_label_new ("gtk_hbox_new (TRUE, 0);"); gtk_misc_set_alignment (GTK_MISC (label), 0, 0); gtk_box_pack_start (GTK_BOX (box1), label, FALSE, FALSE, 0); gtk_widget_show (label); box2 = make_box (TRUE, 0, TRUE, FALSE, 0); gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, FALSE, 0); gtk_widget_show (box2); box2 = make_box (TRUE, 0, TRUE, TRUE, 0); gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, FALSE, 0); gtk_widget_show (box2); separator = gtk_hseparator_new (); gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 5); gtk_widget_show (separator); break; case 2: label = gtk_label_new ("gtk_hbox_new (FALSE, 10);"); gtk_misc_set_alignment (GTK_MISC (label), 0, 0); gtk_box_pack_start (GTK_BOX (box1), label, FALSE, FALSE, 0); gtk_widget_show (label); box2 = make_box (FALSE, 10, TRUE, FALSE, 0); gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, FALSE, 0); gtk_widget_show (box2); box2 = make_box (FALSE, 10, TRUE, TRUE, 0); gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, FALSE, 0); gtk_widget_show (box2); separator = gtk_hseparator_new (); gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 5); gtk_widget_show (separator); label = gtk_label_new ("gtk_hbox_new (FALSE, 0);"); gtk_misc_set_alignment (GTK_MISC (label), 0, 0); gtk_box_pack_start (GTK_BOX (box1), label, FALSE, FALSE, 0); gtk_widget_show (label); box2 = make_box (FALSE, 0, TRUE, FALSE, 10); gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, FALSE, 0); gtk_widget_show (box2); box2 = make_box (FALSE, 0, TRUE, TRUE, 10); gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, FALSE, 0); gtk_widget_show (box2); separator = gtk_hseparator_new (); gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 5); gtk_widget_show (separator); break; case 3: box2 = make_box (FALSE, 0, FALSE, FALSE, 0); label = gtk_label_new ("end"); gtk_box_pack_end (GTK_BOX (box2), label, FALSE, FALSE, 0); gtk_widget_show (label); gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, FALSE, 0); gtk_widget_show (box2); separator = gtk_hseparator_new (); gtk_widget_set_size_request (separator, 400, 5); gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 5); gtk_widget_show (separator); } quitbox = gtk_hbox_new (FALSE, 0); button = gtk_button_new_with_label ("Quit"); g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_main_quit), window); gtk_box_pack_start (GTK_BOX (quitbox), button, TRUE, FALSE, 0); gtk_box_pack_start (GTK_BOX (box1), quitbox, FALSE, FALSE, 0); gtk_container_add (GTK_CONTAINER (window), box1); gtk_widget_show (button); gtk_widget_show (quitbox); gtk_widget_show (box1); gtk_widget_show (window); gtk_main (); return 0; }
Example 12. Example MGtk 0.0.1
#include <stdio.h> #include <stdlib.h> #include <gtk/gtk.h> #include <mlib.h> #include <mgtk.h> static gboolean delete_event ( GtkWidget* widget, GdkEvent* event, gpointer data ) { gtk_main_quit (); return FALSE; m_warning_disable_var ( widget ); m_warning_disable_var ( event ); m_warning_disable_var ( data ); } static GtkWidget* make_box ( gboolean homogeneous, gint spacing, gboolean expand, gboolean fill, guint padding ) { MId box = MNOID; MId button[6] = { MNOID, MNOID, MNOID, MNOID, MNOID, MNOID }; char padstr[80] = { '\0' }; box = mgtk_hbox_insert ( homogeneous, spacing ); button[0] = mgtk_button_insert ( "gtk_box_pack" ); button[1] = mgtk_button_insert ( "(box," ); button[2] = mgtk_button_insert ( "button," ); if (expand == TRUE) { button[3] = mgtk_button_insert ( "TRUE," ); } else { button[3] = mgtk_button_insert ( "FALSE," ); } button[4] = mgtk_button_insert ( fill ? "TRUE," : "FALSE," ); sprintf (padstr, "%d);", padding); button[5] = mgtk_button_insert ( padstr ); muint index; for ( index = 0; index < 6; index++ ) { gtk_box_pack_start ( GTK_BOX( MGTK_HBOX_(box) ), MGTK_BUTTON_( button[index] ), expand, fill, padding ); gtk_widget_show ( MGTK_BUTTON_( button[index] ) ); } return MGTK_HBOX_(box); } int mgtk_main ( argc, argv ) { mgtk_main_init ( argc, argv ); MId window = MNOID; MId box1 = MNOID; MId quitbox = MNOID; MId quitbutton = MNOID; MId box2[5] = { MNOID, MNOID, MNOID, MNOID, MNOID }; MId label[2] = { MNOID, MNOID }; MId separator[2] = { MNOID, MNOID }; int which; if (argc != 2) { fprintf (stderr, "usage: packbox num, where num is 1, 2, or 3.\n"); exit (1); } which = atoi (argv[1]); window = mgtk_window_insert ( GTK_WINDOW_TOPLEVEL, NULL ); box1 = mgtk_vbox_insert ( HOMOGENEOUS_OFF, SPACING_OFF ); switch (which) { case 1: label[0] = mgtk_label_insert ( "gtk_hbox_new (FALSE, 0);" ); gtk_misc_set_alignment ( GTK_MISC ( MGTK_LABEL_(label[0]) ), 0, 0 ); gtk_box_pack_start ( GTK_BOX( MGTK_VBOX_(box1) ), MGTK_LABEL_(label[0]), EXPAND_OFF, FILL_OFF, PADDING_OFF ); box2[0] = mgtk_hbox_insert_attach ( GTK_HBOX ( make_box ( FALSE, 0, FALSE, FALSE, 0 ) ) ); gtk_box_pack_start ( GTK_BOX( MGTK_VBOX_(box1) ), MGTK_HBOX_(box2[0]), EXPAND_OFF, FILL_OFF, PADDING_OFF ); box2[1] = mgtk_hbox_insert_attach ( GTK_HBOX ( make_box (FALSE, 0, TRUE, FALSE, 0 ) ) ); gtk_box_pack_start ( GTK_BOX( MGTK_VBOX_(box1) ), MGTK_HBOX_(box2[1]), EXPAND_OFF, FILL_OFF, PADDING_OFF ); box2[2] = mgtk_hbox_insert_attach ( GTK_HBOX ( make_box (FALSE, 0, TRUE, TRUE, 0 ) ) ); gtk_box_pack_start ( GTK_BOX( MGTK_VBOX_(box1) ), MGTK_HBOX_(box2[2]), EXPAND_OFF, FILL_OFF, PADDING_OFF ); separator[0] = mgtk_hseparator_insert (); gtk_box_pack_start ( GTK_BOX( MGTK_VBOX_(box1) ), MGTK_HSEPARATOR_(separator[0]), EXPAND_OFF, FILL_ON, 5 ); label[1] = mgtk_label_insert ( "gtk_hbox_new (TRUE, 0);" ); gtk_misc_set_alignment ( GTK_MISC ( MGTK_LABEL_(label[1]) ), 0, 0 ); gtk_box_pack_start ( GTK_BOX( MGTK_VBOX_(box1) ), MGTK_LABEL_(label[1]), EXPAND_OFF, FILL_OFF, PADDING_OFF ); box2[3] = mgtk_hbox_insert_attach ( GTK_HBOX ( make_box (TRUE, 0, TRUE, FALSE, 0 ) ) ); gtk_box_pack_start ( GTK_BOX( MGTK_VBOX_(box1) ), MGTK_HBOX_(box2[3]), EXPAND_OFF, FILL_OFF, PADDING_OFF ); box2[4] = mgtk_hbox_insert_attach ( GTK_HBOX ( make_box (TRUE, 0, TRUE, TRUE, 0 ) ) ); gtk_box_pack_start ( GTK_BOX( MGTK_VBOX_(box1) ), MGTK_HBOX_(box2[4]), EXPAND_OFF, FILL_OFF, PADDING_OFF ); separator[1] = mgtk_hseparator_insert (); gtk_box_pack_start ( GTK_BOX( MGTK_VBOX_(box1) ), MGTK_HSEPARATOR_(separator[1]), EXPAND_OFF, FILL_ON, 5 ); gtk_widget_show ( MGTK_HSEPARATOR_(separator[0]) ); gtk_widget_show ( MGTK_HSEPARATOR_(separator[1]) ); gtk_widget_show ( MGTK_LABEL_(label[0]) ); gtk_widget_show ( MGTK_LABEL_(label[1]) ); gtk_widget_show ( MGTK_HBOX_(box2[0]) ); gtk_widget_show ( MGTK_HBOX_(box2[1]) ); gtk_widget_show ( MGTK_HBOX_(box2[2]) ); gtk_widget_show ( MGTK_HBOX_(box2[3]) ); gtk_widget_show ( MGTK_HBOX_(box2[4]) ); break; case 2: label[0] = mgtk_label_insert ( "gtk_hbox_new (FALSE, 10);" ); gtk_misc_set_alignment ( GTK_MISC ( MGTK_LABEL_(label[0]) ), 0, 0); gtk_box_pack_start ( GTK_BOX( MGTK_VBOX_(box1) ), MGTK_LABEL_(label[0]), EXPAND_OFF, FILL_OFF, PADDING_OFF ); box2[0] = mgtk_hbox_insert_attach ( GTK_HBOX ( make_box (FALSE, 10, TRUE, FALSE, 0 ) ) ); gtk_box_pack_start ( GTK_BOX( MGTK_VBOX_(box1) ), MGTK_HBOX_(box2[0]), EXPAND_OFF, FILL_OFF, PADDING_OFF ); box2[1] = mgtk_hbox_insert_attach ( GTK_HBOX ( make_box (FALSE, 10, TRUE, TRUE, 0) ) ); gtk_box_pack_start ( GTK_BOX( MGTK_VBOX_(box1) ), MGTK_HBOX_(box2[1]), EXPAND_OFF, FILL_OFF, PADDING_OFF ); separator[0] = mgtk_hseparator_insert (); gtk_box_pack_start ( GTK_BOX( MGTK_VBOX_(box1) ), MGTK_HSEPARATOR_(separator[0]), EXPAND_OFF, FILL_ON, 5 ); label[1] = mgtk_label_insert ( "gtk_hbox_new (FALSE, 0);" ); gtk_misc_set_alignment ( GTK_MISC ( MGTK_LABEL_(label[1]) ), 0, 0); gtk_box_pack_start ( GTK_BOX( MGTK_VBOX_(box1) ), MGTK_LABEL_(label[1]), EXPAND_OFF, FILL_OFF, PADDING_OFF ); box2[2] = mgtk_hbox_insert_attach ( GTK_HBOX ( make_box (FALSE, 0, TRUE, FALSE, 10 ) ) ); gtk_box_pack_start ( GTK_BOX( MGTK_VBOX_(box1) ), MGTK_HBOX_(box2[2]), EXPAND_OFF, FILL_OFF, PADDING_OFF ); box2[3] = mgtk_hbox_insert_attach ( GTK_HBOX ( make_box (FALSE, 0, TRUE, TRUE, 10) ) ); gtk_box_pack_start ( GTK_BOX( MGTK_VBOX_(box1) ), MGTK_HBOX_(box2[3]), EXPAND_OFF, FILL_OFF, PADDING_OFF ); separator[1] = mgtk_hseparator_insert (); gtk_box_pack_start ( GTK_BOX( MGTK_VBOX_(box1) ), MGTK_HSEPARATOR_(separator[1]), EXPAND_OFF, FILL_ON, 5 ); gtk_widget_show ( MGTK_HSEPARATOR_(separator[0]) ); gtk_widget_show ( MGTK_HSEPARATOR_(separator[1]) ); gtk_widget_show ( MGTK_LABEL_(label[0]) ); gtk_widget_show ( MGTK_LABEL_(label[1]) ); gtk_widget_show ( MGTK_HBOX_(box2[0]) ); gtk_widget_show ( MGTK_HBOX_(box2[1]) ); gtk_widget_show ( MGTK_HBOX_(box2[2]) ); gtk_widget_show ( MGTK_HBOX_(box2[3]) ); break; case 3: box2[0] = mgtk_hbox_insert_attach ( GTK_HBOX ( make_box ( FALSE, 0, FALSE, FALSE, 0) ) ); label[0] = mgtk_label_insert ( "end" ); gtk_box_pack_end ( GTK_BOX( MGTK_HBOX_(box2[0]) ), MGTK_LABEL_(label[0]), EXPAND_OFF, FILL_OFF, PADDING_OFF ); gtk_box_pack_start ( GTK_BOX( MGTK_VBOX_(box1) ), MGTK_HBOX_(box2[0]), EXPAND_OFF, FILL_OFF, PADDING_OFF ); separator[0] = mgtk_hseparator_insert (); gtk_widget_set_size_request ( MGTK_HSEPARATOR_(separator[0]), 400, 5 ); gtk_box_pack_start ( GTK_BOX( MGTK_VBOX_(box1) ), MGTK_HSEPARATOR_(separator[0]), EXPAND_OFF, FILL_ON, 5 ); gtk_widget_show ( MGTK_HSEPARATOR_(separator[0]) ); gtk_widget_show ( MGTK_LABEL_(label[0]) ); gtk_widget_show ( MGTK_HBOX_(box2[0]) ); } quitbox = mgtk_hbox_insert ( HOMOGENEOUS_OFF, SPACING_OFF ); quitbutton = mgtk_button_insert ( "Quit" ); gtk_container_set_border_width (GTK_CONTAINER ( MGTK_WINDOW_(window) ), 10); m_signal_connect ( "delete-event", MGTK_WINDOW_(window), G_CALLBACK (delete_event), NULL ); m_signal_connect_swapped ( "clicked", MGTK_BUTTON_(quitbutton), G_CALLBACK (gtk_main_quit), MGTK_WINDOW_(window) ); gtk_container_add ( GTK_CONTAINER ( MGTK_WINDOW_(window) ), MGTK_VBOX_(box1) ); gtk_box_pack_start ( GTK_BOX( MGTK_HBOX_(quitbox) ), MGTK_BUTTON_(quitbutton), EXPAND_ON, FILL_OFF, PADDING_OFF ); gtk_box_pack_start ( GTK_BOX( MGTK_VBOX_(box1) ), MGTK_HBOX_(quitbox), EXPAND_OFF, FILL_OFF, PADDING_OFF ); gtk_widget_show ( MGTK_BUTTON_(quitbutton) ); gtk_widget_show ( MGTK_HBOX_(quitbox) ); gtk_widget_show ( MGTK_VBOX_(box1) ); gtk_widget_show ( MGTK_WINDOW_(window) ); gtk_main (); return 0; }