| 12
 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
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 
 | #include <gtk/gtk.h>
#include <stdlib.h>
// convertit un int en string
int int_to_str(int value, char *buf, unsigned int len) {
	unsigned result = 0;
	if (!buf) return -1;
#define ADDCHAR(chr) \
	if (result < len - 1) \
	{ \
		*buf++ = (chr); \
		result++; \
	}
	int j = 0;
	char int_to_str[16];
	if (value < 0) ADDCHAR('-');
	char *ptr = int_to_str + sizeof(int_to_str) - 1;
	do {
		int modulo = value % 10;
		modulo = (modulo<0)?-modulo:modulo;
		*ptr-- =  modulo + '0';
		value /= 10;
		j++;
	} while (value);
 
	for (; j > 0; j--) ADDCHAR(int_to_str[sizeof(int_to_str) - j]);
	*buf = '\0';
	return 0;
}
 
typedef struct {
    double cfl;
    char *callsign;
} s_plane;
 
static gboolean on_cfl_label_press_event_cb (GtkWidget *eventbox, GdkEvent  *event, gpointer data) {
    GtkWidget *label = data;
    gchar texte[5];
    GtkWidget *child;
    child = gtk_container_get_children(eventbox);
    g_sprintf(texte, "%s", gtk_label_get_text(GTK_LABEL(child)));
    g_print("CFL: %s\n", texte);
    return TRUE;
}
 
int main(int argc, char *argv[])
{
    GtkWidget *window, *scr_win, *grid;
    s_plane *plane;
    plane->cfl = 320.0;
    plane->callsign = "BAW4237";
    gtk_init(&argc, &argv);
 
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
    gtk_window_set_default_size(GTK_WINDOW(window), 150, 150);
    gtk_window_set_title(GTK_WINDOW(window), "Test");
 
    grid = gtk_grid_new();
    int i, j;
    j=0;
    GtkWidget *label[12], *event_box[12];
    char *str_lab = malloc(sizeof(char[5]));
 
    for (i=650; i>410; i=i-20) {
        int_to_str(i, str_lab, 4);
        label[j] = gtk_label_new(str_lab);
        gtk_widget_set_size_request(label[j], 100, 14);
        event_box[j] = gtk_event_box_new();
        gtk_container_add(GTK_CONTAINER(event_box[j]), label[j]);
        gtk_grid_attach(GTK_GRID (grid), event_box[j], 0, j, 1, 1);
        g_signal_connect (G_OBJECT(event_box[j]), "button_press_event", G_CALLBACK(on_cfl_label_press_event_cb), label[j]);
        j++;
    }
 
    free(str_lab);
    scr_win = gtk_scrolled_window_new(NULL, NULL);
    gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(scr_win), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
    gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW (scr_win), grid);
    gtk_container_add(GTK_CONTAINER(window), scr_win);
 
    g_signal_connect_swapped(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), G_OBJECT(window));
 
    gtk_widget_show_all(window);
    gtk_main();
    return 0;
} | 
Partager