b89dbc958bcf8f40f93da00bdf26712f64d6e76e
[rodin/chimara.git] / src / model.c
1 #include "glk.h"
2
3 static winid_t mainwin = NULL;
4
5 void sayit(void)
6 {
7         g_printerr("I'm the interrupt handler!\n");
8 }
9
10 void glk_main(void)
11 {
12     /* Open the main window. */
13     mainwin = glk_window_open(0, 0, 0, wintype_TextBuffer, 1);
14     if (!mainwin) {
15         /* It's possible that the main window failed to open. There's
16             nothing we can do without it, so exit. */
17         return; 
18     }
19     
20         /*
21     char buffer[256];
22     int i;
23     for(i = 0; i < 256; i++)
24         buffer[i] = (char)glk_char_to_upper(i);
25     
26         */
27         /*
28     frefid_t f = glk_fileref_create_by_prompt(fileusage_BinaryMode, filemode_ReadWrite, 0);
29     if(f) 
30     {
31     
32         strid_t s = glk_stream_open_file(f, 
33                 filemode_ReadWrite, 0);
34         glk_stream_set_current(s);
35         glk_put_char('X');
36         glk_put_string("Philip en Marijn zijn vet goed.\n");
37         glk_put_buffer(buffer, 256);
38
39         glk_stream_set_position(s, 0, seekmode_Start);
40         glk_set_window(mainwin);
41         glk_put_char( glk_get_char_stream(s) );
42         glk_put_char('\n');
43         g_printerr("Line read: %d\n", glk_get_line_stream(s, buffer, 256));
44         glk_put_string(buffer);
45         int count = glk_get_buffer_stream(s, buffer, 256);
46         g_printerr("Buffer read: %d\n", count);
47         glk_put_buffer(buffer, count);          
48         
49         stream_result_t result;
50         glk_stream_close(s, &result);
51         
52         g_printerr("Read count: %d\nWrite count: %d\n", result.readcount,
53                 result.writecount);
54                 glk_fileref_destroy(f);
55         }
56         */
57
58         glk_set_window(mainwin);
59
60         glk_set_interrupt_handler(&sayit);
61
62         gchar buffer[256];
63         event_t ev;
64         while(1) {
65                 glk_put_string("prompt> ");
66                 glk_request_line_event(mainwin, buffer, 256, 0);
67                 glk_select(&ev);
68                 switch(ev.type) {
69                         default:
70                                 printf("Received event:\n");
71                                 printf("Type: %d\n", ev.type);
72                                 printf("Win: %d\n", glk_window_get_rock(ev.win));
73                                 printf("Var1: %d\n", ev.val1);
74                                 printf("Var2: %d\n", ev.val2);
75                 }
76         }
77         
78         /* Bye bye */
79         glk_exit();
80 }