Skip to content

Instantly share code, notes, and snippets.

@d-tux
Created August 30, 2009 16:45
Show Gist options
  • Save d-tux/178039 to your computer and use it in GitHub Desktop.
Save d-tux/178039 to your computer and use it in GitHub Desktop.
#include <gtk/gtk.h>
static
void destroy(GtkWidget *widget, gpointer data)
{
gtk_main_quit() ;
} ;
static
gboolean delete_event(GtkWidget *widget, GdkEvent *event, gpointer data)
{
return FALSE ;
}
static
gboolean keypress_event(GtkWidget *widget, GdkEvent *event, gpointer data)
{
GtkWidget **items = (GtkWidget **)data ;
gtk_window_set_title(GTK_WINDOW(items[0]), "Bing!") ;
gtk_label_set_text(GTK_LABEL(items[1]), "Bang") ;
return FALSE ;
}
int main(int argc, char *argv[])
{
GtkWidget *window, *label ;
gtk_init(&argc, &argv) ;
window = gtk_window_new(GTK_WINDOW_TOPLEVEL) ;
gtk_window_set_title(GTK_WINDOW(window), "Hello, world!") ;
gtk_container_set_border_width(GTK_CONTAINER(window), 10) ;
gtk_widget_set_size_request(window, 300, 100) ;
g_object_set(G_OBJECT(window), "resizable", FALSE, NULL) ;
g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(destroy), NULL) ;
g_signal_connect(G_OBJECT(window), "delete_event", G_CALLBACK(delete_event), NULL) ;
label = gtk_label_new("Hello world") ;
gtk_label_set_selectable(GTK_LABEL(label), TRUE) ;
const GtkWidget *items[2] = {
window,
label
} ;
g_signal_connect(G_OBJECT(window), "key_press_event", G_CALLBACK(keypress_event), items) ;
gtk_container_add(GTK_CONTAINER(window), label) ;
gtk_widget_show_all(window) ;
gtk_main() ;
return 0 ;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment