summaryrefslogtreecommitdiffstats
path: root/gtkhello1.c
blob: a4107a86d9d94ca52ccdee0e7994b0bf03978901 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <stdlib.h>
#include <gtk/gtk.h>

/* 1st arg is the button widget, second is the win ptr being passed around */
static void helloWorld(GtkWidget *wid, GtkWidget *win)
{
    GtkWidget *dialog = NULL;

    dialog = gtk_message_dialog_new(GTK_WINDOW (win), GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE, "Hello World!");
    gtk_window_set_position(GTK_WINDOW (dialog), GTK_WIN_POS_CENTER);
    gtk_dialog_run(GTK_DIALOG (dialog));
    gtk_widget_destroy(dialog);
}

int main(int argc, char *argv[])
{
    GtkWidget *button = NULL;
    GtkWidget *win = NULL;
    GtkWidget *vbox = NULL;

    /* Initialize GTK+ */
    g_log_set_handler("Gtk", G_LOG_LEVEL_WARNING, (GLogFunc) gtk_false, NULL);
    gtk_init(&argc, &argv);
    g_log_set_handler("Gtk", G_LOG_LEVEL_WARNING, g_log_default_handler, NULL);

    /* Create the main window */
    win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_container_set_border_width(GTK_CONTAINER (win), 8);
    gtk_window_set_title(GTK_WINDOW (win), "Hello World");
    gtk_window_set_position(GTK_WINDOW (win), GTK_WIN_POS_CENTER);
    gtk_widget_realize(win);
    g_signal_connect(win, "destroy", gtk_main_quit, NULL);

    /* Create a vertical box with buttons */
    vbox = gtk_vbox_new(TRUE, 6);
    gtk_container_add(GTK_CONTAINER (win), vbox);

    button = gtk_button_new_from_stock(GTK_STOCK_DIALOG_INFO);
    g_signal_connect(G_OBJECT (button), "clicked", G_CALLBACK (helloWorld), (gpointer) win);
    gtk_box_pack_start(GTK_BOX (vbox), button, TRUE, TRUE, 0);

    button = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
    g_signal_connect(button, "clicked", gtk_main_quit, NULL);
    gtk_box_pack_start(GTK_BOX (vbox), button, TRUE, TRUE, 0);

    /* Enter the main loop */
    gtk_widget_show_all(win);
    gtk_main();

    return 0;
}