#include <gtk/gtk.h> // g_signal_connect (button, "enter", // G_CALLBACK (prisla), NULL); // g_signal_connect (button, "leave", // G_CALLBACK (odesla), NULL); void prisla (GtkWidget * widget, void * data) { gtk_button_set_label (GTK_BUTTON (widget), "Je zde mys !"); } void odesla (GtkWidget * widget, void * data) { gtk_button_set_label (GTK_BUTTON (widget), "Uz je pryc !"); } /* Our new improved callback. The data passed to this function * is printed to stdout. */ void callback (GtkWidget * widget, void * data) { gtk_button_set_label (GTK_BUTTON (widget), "CLICK"); gtk_widget_set_tooltip_text (widget, "stisknuto"); g_print ("Hello again - %s was pressed\n", (gchar *) data); } /* another callback */ static gboolean delete_event (GtkWidget *widget, GdkEvent *event, gpointer data) { gtk_main_quit (); return FALSE; } int main (int argc, char *argv[]) { /* GtkWidget is the storage type for widgets */ GtkWidget *window; GtkWidget *box1; GtkWidget *button; /* This is called in all GTK applications. Arguments are parsed * from the command line and are returned to the application. */ gtk_init (&argc, &argv); /* Create a new window */ window = gtk_window_new (GTK_WINDOW_TOPLEVEL); /* This is a new call, which just sets the title of our * new window to "Hello Buttons!" */ gtk_window_set_title (GTK_WINDOW (window), "Ahoj Buttons!"); /* Here we just set a handler for delete_event that immediately * exits GTK. */ g_signal_connect (window, "delete-event", G_CALLBACK (delete_event), NULL); /* Sets the border width of the window. */ gtk_container_set_border_width (GTK_CONTAINER (window), 10); /* We create a box to pack widgets into. This is described in detail * in the "packing" section. The box is not really visible, it * is just used as a tool to arrange widgets. */ box1 = gtk_hbox_new (FALSE, 20); /* Put the box into the main window. */ gtk_container_add (GTK_CONTAINER (window), box1); /* Creates a new button with the label "Button 1". */ button = gtk_button_new_with_label ("Button 1111111111111111"); /* Now when the button is clicked, we call the "callback" function * with a pointer to "button 1" as its argument */ g_signal_connect (button, "clicked", G_CALLBACK (callback), "button 1"); g_signal_connect (button, "enter", G_CALLBACK (prisla), NULL); g_signal_connect (button, "leave", G_CALLBACK (odesla), NULL); /* Instead of gtk_container_add, we pack this button into the invisible * box, which has been packed into the window. */ gtk_box_pack_start (GTK_BOX (box1), button, TRUE, FALSE, 100); // gtk_container_add (GTK_CONTAINER (box1), button); /* Always remember this step, this tells GTK that our preparation for * this button is complete, and it can now be displayed. */ // gtk_widget_show (button); /* Do these same steps again to create a second button */ button = gtk_button_new_with_label ("Button 2"); /* Call the same callback function with a different argument, * passing a pointer to "button 2" instead. */ g_signal_connect (button, "clicked", G_CALLBACK (callback), "button 2"); g_signal_connect (button, "enter", G_CALLBACK (prisla), NULL); g_signal_connect (button, "leave", G_CALLBACK (odesla), NULL); gtk_box_pack_start (GTK_BOX (box1), button, TRUE, TRUE, 0); /* The order in which we show the buttons is not really important, but I * recommend showing the window last, so it all pops up at once. */ /* gtk_widget_show (button); gtk_widget_show (box1); gtk_widget_show (window); */ gtk_widget_show_all (window); /* Rest in gtk_main and wait for the fun to begin! */ gtk_main (); return 0; }