~ubuntu-branches/ubuntu/raring/geany/raring-proposed

« back to all changes in this revision

Viewing changes to src/gb.c

Import upstream version 0.17

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/*
2
2
 *      gb.c - this file is part of Geany, a fast and lightweight IDE
3
3
 *
4
 
 *      Copyright 2005-2008 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
5
 
 *      Copyright 2006-2008 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
 
4
 *      Copyright 2005-2009 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
 
5
 *      Copyright 2006-2009 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
6
6
 *
7
7
 *      This program is free software; you can redistribute it and/or modify
8
8
 *      it under the terms of the GNU General Public License as published by
18
18
 *      along with this program; if not, write to the Free Software
19
19
 *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20
20
 *
21
 
 * $Id: gb.c 2358 2008-03-17 18:26:22Z eht16 $
 
21
 * $Id: gb.c 3446 2009-01-04 18:30:42Z eht16 $
22
22
 */
23
23
 
24
24
/*
30
30
#include <time.h>
31
31
#include <signal.h>
32
32
#include <unistd.h>
33
 
#ifdef HAVE_FCNTL_H
34
 
        #include <fcntl.h>
35
 
#endif
36
33
#include <gdk-pixbuf/gdk-pixdata.h>
37
34
 
38
35
#define MAX_PICS 10
49
46
GtkWidget *image1, *image2, *image3, *image4, *label1, *label2, *label3, *okbutton1, *textview1;
50
47
gchar info_texts[4][50];
51
48
gchar *help_text;
52
 
gint random_fd;
53
49
gboolean is_running;
54
50
static GdkPixbuf **icons;
55
51
 
143
139
        gtk_box_pack_start(GTK_BOX(hbox2), button5, FALSE, FALSE, 0);
144
140
        gtk_container_set_border_width(GTK_CONTAINER(button5), 5);
145
141
 
146
 
        g_signal_connect((gpointer) button1, "clicked", G_CALLBACK(on_button1_clicked), NULL);
147
 
        g_signal_connect((gpointer) button4, "clicked", G_CALLBACK(on_button4_clicked), NULL);
148
 
        g_signal_connect((gpointer) button5, "clicked", G_CALLBACK(on_button5_clicked), NULL);
 
142
        g_signal_connect(button1, "clicked", G_CALLBACK(on_button1_clicked), NULL);
 
143
        g_signal_connect(button4, "clicked", G_CALLBACK(on_button4_clicked), NULL);
 
144
        g_signal_connect(button5, "clicked", G_CALLBACK(on_button5_clicked), NULL);
149
145
 
150
146
        gtk_widget_grab_focus(button4);
151
147
}
208
204
}
209
205
 
210
206
 
211
 
static void initialise_random_numbers(void)
212
 
{
213
 
#if defined(HAVE_FCNTL_H) && (defined(HAVE_DEVURANDOM) || defined(HAVE_DEVRANDOM))
214
 
# ifdef HAVE_DEVURANDOM
215
 
        random_fd = open("/dev/urandom", O_NONBLOCK | O_RDONLY);
216
 
# elif HAVE_DEVRANDOM
217
 
        random_fd = open("/dev/random", O_NONBLOCK | O_RDONLY);
218
 
# endif
219
 
#else
220
 
    srand(time(NULL) * getpid());
221
 
#endif
222
 
}
223
 
 
224
 
 
225
 
static gint random_number(gint max)
226
 
{
227
 
#if defined(HAVE_FCNTL_H) && (defined(HAVE_DEVURANDOM) || defined(HAVE_DEVRANDOM))
228
 
    if (max <= 255)
229
 
        {
230
 
                unsigned char byte;
231
 
                while (read(random_fd, &byte, 1) == 1)
232
 
                {
233
 
                if (byte < max)
234
 
                                return (byte % max);
235
 
                }
236
 
    }
237
 
    return 0;
238
 
#else
239
 
        return (((unsigned short) rand()) % max);
240
 
#endif
241
 
}
242
 
 
243
 
 
244
207
static void on_button5_clicked(GtkButton *button, gpointer user_data)
245
208
{
246
209
    gb_destroyapp(GTK_WIDGET(button), user_data);
279
242
        lap++;
280
243
        update_labels(gb_window, FALSE, 3);
281
244
 
282
 
        l = random_number(MAX_PICS);
283
 
        m = random_number(MAX_PICS);
284
 
        n = random_number(MAX_PICS);
285
 
        erg_a = random_number(MAX_PICS);
286
 
        erg_b = random_number(MAX_PICS);
287
 
        erg_c = random_number(MAX_PICS);
 
245
        l = g_random_int_range(0, MAX_PICS);
 
246
        m = g_random_int_range(0, MAX_PICS);
 
247
        n = g_random_int_range(0, MAX_PICS);
 
248
        erg_a = g_random_int_range(0, MAX_PICS);
 
249
        erg_b = g_random_int_range(0, MAX_PICS);
 
250
        erg_c = g_random_int_range(0, MAX_PICS);
288
251
 
289
252
        /* assign icons */
290
253
        loops = 30;
330
293
        GtkWidget *dialog = create_help_dialog();
331
294
        GtkTextBuffer *buffer;
332
295
 
333
 
        g_signal_connect(G_OBJECT(dialog), "delete_event", G_CALLBACK(destroydialog), G_OBJECT(dialog));
334
 
        g_signal_connect(G_OBJECT(okbutton1), "clicked", G_CALLBACK(destroydialog), G_OBJECT(dialog));
 
296
        g_signal_connect(dialog, "delete-event", G_CALLBACK(destroydialog), G_OBJECT(dialog));
 
297
        g_signal_connect(okbutton1, "clicked", G_CALLBACK(destroydialog), G_OBJECT(dialog));
335
298
 
336
299
        buffer = gtk_text_buffer_new(NULL);
337
300
        gtk_text_buffer_set_text(buffer, help_text, strlen(help_text));
1250
1213
{
1251
1214
        gint i;
1252
1215
 
1253
 
        initialise_random_numbers();
1254
 
 
1255
1216
        /* define start images */
1256
 
        i = random_number(MAX_PICS) + 1;
 
1217
        i = g_random_int_range(0, MAX_PICS);
1257
1218
        gtk_image_set_from_pixbuf(GTK_IMAGE(image1), icons[i]);
1258
 
        i = random_number(MAX_PICS) + 1;
 
1219
        i = g_random_int_range(0, MAX_PICS);
1259
1220
        gtk_image_set_from_pixbuf(GTK_IMAGE(image2), icons[i]);
1260
 
        i = random_number(MAX_PICS) + 1;
 
1221
        i = g_random_int_range(0, MAX_PICS);
1261
1222
        gtk_image_set_from_pixbuf(GTK_IMAGE(image3), icons[i]);
1262
1223
}
1263
1224
 
1267
1228
{
1268
1229
        if (is_running) return TRUE;
1269
1230
        if (GTK_IS_WINDOW(gb_window)) gtk_widget_destroy(gb_window);
1270
 
        if (random_fd != -1) close(random_fd);
1271
1231
        gb_window = NULL;
1272
1232
        return FALSE;
1273
1233
}
1275
1235
 
1276
1236
void gb_start_easteregg(void)
1277
1237
{
1278
 
        random_fd = -1;
1279
1238
        load_images();
1280
1239
        create_window();
1281
 
        g_signal_connect(G_OBJECT(gb_window), "delete_event", G_CALLBACK(gb_destroyapp), NULL);
 
1240
        g_signal_connect(gb_window, "delete-event", G_CALLBACK(gb_destroyapp), NULL);
1282
1241
 
1283
1242
        points = 0;
1284
1243
        lap = 0;