00001
00002
00003
00004
00005
00006
00007 #include <stdio.h>
00008 #include <mb.h>
00009 #include "svg2code_ex.h"
00010
00011 typedef struct _ex_rt ex_rt_t;
00012 struct _ex_rt {
00013 X_MB_runtime_t *rt;
00014 svg2code_ex_t *code;
00015 };
00016
00017 static void file_button_handler(event_t *evt, void *arg) {
00018 ex_rt_t *ex_rt = (ex_rt_t *)arg;
00019
00020 switch(evt->type) {
00021 case EVT_MOUSE_BUT_PRESS:
00022 coord_show(ex_rt->code->file_menu);
00023
00024 rdman_coord_changed(X_MB_rdman(ex_rt->rt), ex_rt->code->file_menu);
00025
00026 rdman_redraw_changed(X_MB_rdman(ex_rt->rt));
00027 break;
00028 }
00029 }
00030
00031 static void file_menu_handler(event_t *evt, void *arg) {
00032 ex_rt_t *ex_rt = (ex_rt_t *)arg;
00033 redraw_man_t *rdman;
00034
00035 rdman = X_MB_rdman(ex_rt->rt);
00036 switch(evt->type) {
00037 case EVT_MOUSE_BUT_PRESS:
00038 coord_hide(ex_rt->code->file_menu);
00039
00040 rdman_coord_changed(rdman, ex_rt->code->file_menu);
00041
00042 rdman_redraw_changed(rdman);
00043 break;
00044 }
00045 }
00046
00047 int main(int argc, char * const argv[]) {
00048 X_MB_runtime_t *rt;
00049 redraw_man_t *rdman;
00050 svg2code_ex_t *svg2code;
00051 ob_factory_t *factory;
00052 subject_t *subject;
00053 ex_rt_t ex_rt;
00054
00055
00056
00057
00058 rt = X_MB_new(":0.0", 800, 600);
00059
00060
00061
00062
00063 rdman = X_MB_rdman(rt);
00064 svg2code = svg2code_ex_new(rdman, rdman->root_coord);
00065
00066
00067
00068
00069 factory = rdman_get_ob_factory(rdman);
00070
00071
00072
00073 subject = coord_get_mouse_event(svg2code->file_button);
00074 ex_rt.rt = rt;
00075 ex_rt.code = svg2code;
00076 subject_add_observer(factory, subject, file_button_handler, &ex_rt);
00077 subject = coord_get_mouse_event(svg2code->file_menu);
00078 subject_add_observer(factory, subject, file_menu_handler, &ex_rt);
00079
00080
00081
00082
00083
00084 X_MB_handle_connection(rt);
00085
00086
00087
00088
00089 svg2code_ex_free(svg2code);
00090 X_MB_free(rt);
00091
00092 return 0;
00093 }