Mercurial > MadButterfly
comparison examples/svg2code_ex/main.c @ 108:565b55508c8d
More dox
author | Thinker K.F. Li <thinker@branda.to> |
---|---|
date | Fri, 12 Sep 2008 13:58:30 +0800 |
parents | 42698de1f653 |
children | c14cb6d12030 |
comparison
equal
deleted
inserted
replaced
107:069868161f63 | 108:565b55508c8d |
---|---|
1 #include <stdio.h> | 1 #include <stdio.h> |
2 #include <mb_types.h> | 2 #include <mb/mb.h> |
3 #include <X_supp.h> | |
4 #include "svg2code_ex.h" | 3 #include "svg2code_ex.h" |
5 | 4 |
6 typedef struct _ex_rt ex_rt_t; | 5 typedef struct _ex_rt ex_rt_t; |
7 struct _ex_rt { | 6 struct _ex_rt { |
8 X_MB_runtime_t *rt; | 7 X_MB_runtime_t *rt; |
13 ex_rt_t *ex_rt = (ex_rt_t *)arg; | 12 ex_rt_t *ex_rt = (ex_rt_t *)arg; |
14 | 13 |
15 switch(evt->type) { | 14 switch(evt->type) { |
16 case EVT_MOUSE_BUT_PRESS: | 15 case EVT_MOUSE_BUT_PRESS: |
17 coord_show(ex_rt->code->file_menu); | 16 coord_show(ex_rt->code->file_menu); |
17 /* Tell redraw manager that a coord (group) is chagned. */ | |
18 rdman_coord_changed(ex_rt->rt->rdman, ex_rt->code->file_menu); | 18 rdman_coord_changed(ex_rt->rt->rdman, ex_rt->code->file_menu); |
19 /* Update changed part to UI. */ | |
19 rdman_redraw_changed(ex_rt->rt->rdman); | 20 rdman_redraw_changed(ex_rt->rt->rdman); |
20 break; | 21 break; |
21 } | 22 } |
22 } | 23 } |
23 | 24 |
25 ex_rt_t *ex_rt = (ex_rt_t *)arg; | 26 ex_rt_t *ex_rt = (ex_rt_t *)arg; |
26 | 27 |
27 switch(evt->type) { | 28 switch(evt->type) { |
28 case EVT_MOUSE_BUT_PRESS: | 29 case EVT_MOUSE_BUT_PRESS: |
29 coord_hide(ex_rt->code->file_menu); | 30 coord_hide(ex_rt->code->file_menu); |
31 /* Tell redraw manager that a coord (group) is chagned. */ | |
30 rdman_coord_changed(ex_rt->rt->rdman, ex_rt->code->file_menu); | 32 rdman_coord_changed(ex_rt->rt->rdman, ex_rt->code->file_menu); |
33 /* Update changed part to UI. */ | |
31 rdman_redraw_changed(ex_rt->rt->rdman); | 34 rdman_redraw_changed(ex_rt->rt->rdman); |
32 break; | 35 break; |
33 } | 36 } |
34 } | 37 } |
35 | 38 |
39 ob_factory_t *factory; | 42 ob_factory_t *factory; |
40 subject_t *subject; | 43 subject_t *subject; |
41 ex_rt_t ex_rt; | 44 ex_rt_t ex_rt; |
42 int r; | 45 int r; |
43 | 46 |
47 /* | |
48 * Initialize a runtime with XLib as backend. | |
49 */ | |
44 r = X_MB_init(":0.0", 800, 600, &rt); | 50 r = X_MB_init(":0.0", 800, 600, &rt); |
45 | 51 |
52 /* | |
53 * Instantiate objects from a SVG file. | |
54 */ | |
46 svg2code = svg2code_ex_new(rt.rdman); | 55 svg2code = svg2code_ex_new(rt.rdman); |
47 | 56 |
57 /* | |
58 * Get observer factory | |
59 */ | |
48 factory = rdman_get_ob_factory(rt.rdman); | 60 factory = rdman_get_ob_factory(rt.rdman); |
61 /* | |
62 * Register observers to subjects of events for objects. | |
63 */ | |
49 subject = coord_get_mouse_event(svg2code->file_button); | 64 subject = coord_get_mouse_event(svg2code->file_button); |
50 ex_rt.rt = &rt; | 65 ex_rt.rt = &rt; |
51 ex_rt.code = svg2code; | 66 ex_rt.code = svg2code; |
52 subject_add_observer(factory, subject, file_button_handler, &ex_rt); | 67 subject_add_observer(factory, subject, file_button_handler, &ex_rt); |
53 subject = coord_get_mouse_event(svg2code->file_menu); | 68 subject = coord_get_mouse_event(svg2code->file_menu); |
54 subject_add_observer(factory, subject, file_menu_handler, &ex_rt); | 69 subject_add_observer(factory, subject, file_menu_handler, &ex_rt); |
55 | 70 |
71 /* | |
72 * Start handle connections, includes one to X server. | |
73 * User start to interact with the application. | |
74 */ | |
56 X_MB_handle_connection(&rt); | 75 X_MB_handle_connection(&rt); |
57 | 76 |
77 /* | |
78 * Clean | |
79 */ | |
58 svg2code_ex_free(svg2code); | 80 svg2code_ex_free(svg2code); |
59 X_MB_destroy(&rt); | 81 X_MB_destroy(&rt); |
60 | 82 |
61 return 0; | 83 return 0; |
62 } | 84 } |