Mercurial > MadButterfly
diff examples/calculator/main.c @ 122:17e97e92b76e
Encapsulate X_MB_runtime_t and support X keyboard events.
author | Thinker K.F. Li <thinker@branda.to> |
---|---|
date | Mon, 15 Sep 2008 20:33:06 +0800 |
parents | 565b55508c8d |
children | 3a4d6179e6a9 |
line wrap: on
line diff
--- a/examples/calculator/main.c Sun Sep 14 23:40:57 2008 +0800 +++ b/examples/calculator/main.c Mon Sep 15 20:33:06 2008 +0800 @@ -61,22 +61,26 @@ static void show_text(calc_data_t *calc_data, int num, int saved, int op, const char *suffix) { char buf[20]; + redraw_man_t *rdman; + + rdman = X_MB_rdman(calc_data->rt); sprintf(buf, "%d%s", num, suffix); sh_text_set_text(calc_data->code->screen_text, buf); - rdman_shape_changed(calc_data->rt->rdman, calc_data->code->screen_text); + rdman_shape_changed(rdman, calc_data->code->screen_text); if(op == 'n') sprintf(buf, "None"); else sprintf(buf, "%d%c", saved, op); sh_text_set_text(calc_data->code->saved_text, buf); - rdman_shape_changed(calc_data->rt->rdman, calc_data->code->saved_text); + rdman_shape_changed(rdman, calc_data->code->saved_text); } static void compute(calc_data_t *calc_data, coord_t *tgt) { int i; coord_t **coord_p; + redraw_man_t *rdman; static int valid_num = 0; static int factor = 1; static int num = 0; @@ -131,7 +135,8 @@ break; } } - rdman_redraw_changed(calc_data->rt->rdman); + rdman = X_MB_rdman(calc_data->rt); + rdman_redraw_changed(rdman); } static void buttons_handler(event_t *evt, void *arg) { @@ -149,11 +154,13 @@ ob_factory_t *factory; subject_t *subject; coord_t *coord; + redraw_man_t *rdman; int off; int i; calculator_scr = calc_data->code; - factory = rdman_get_ob_factory(calc_data->rt->rdman); + rdman = X_MB_rdman(calc_data->rt); + factory = rdman_get_ob_factory(rdman); for(i = 0; i < 16; i++) { off = tgt_list[i].off; @@ -164,23 +171,24 @@ } int main(int argc, char * const argv[]) { - X_MB_runtime_t rt; + X_MB_runtime_t *rt; + redraw_man_t *rdman; calculator_scr_t *calculator_scr; calc_data_t calc_data; - int r; - r = X_MB_init(":0.0", 300, 400, &rt); + rt = X_MB_new(":0.0", 300, 400); - calculator_scr = calculator_scr_new(rt.rdman); + rdman = X_MB_rdman(rt); + calculator_scr = calculator_scr_new(rdman); - calc_data.rt = &rt; + calc_data.rt = rt; calc_data.code = calculator_scr; setup_observers(&calc_data); - X_MB_handle_connection(&rt); + X_MB_handle_connection(rt); calculator_scr_free(calculator_scr); - X_MB_destroy(&rt); + X_MB_free(rt); return 0; }