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 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