Mercurial > MadButterfly
annotate nodejs/observer.cc @ 1450:6644ef3d75eb
Add get_child method for coord in JS
author | Thinker K.F. Li <thinker@codemud.net> |
---|---|
date | Wed, 13 Apr 2011 14:36:32 +0800 |
parents | 1993e5ae60aa |
children |
rev | line source |
---|---|
822
586e50f82c1f
Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents:
788
diff
changeset
|
1 // -*- indent-tabs-mode: t; tab-width: 8; c-basic-offset: 4; -*- |
586e50f82c1f
Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents:
788
diff
changeset
|
2 // vim: sw=4:ts=8:sts=4 |
651
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
3 #include <v8.h> |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
4 #include "mbfly_njs.h" |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
5 |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
6 extern "C" { |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
7 #include <mb.h> |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
8 #include <string.h> |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
9 } |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
10 |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
11 #ifndef ASSERT |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
12 #define ASSERT(x) |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
13 #endif |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
14 |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
15 using namespace v8; |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
16 |
686 | 17 /*! \defgroup xnjsmb_observer JS binding for observer, subject and events |
18 * \ingroup xnjsmb | |
19 * | |
20 * @{ | |
21 */ | |
22 | |
651
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
23 struct xnjsmb_observer_data { |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
24 Persistent<Function> func; |
698
32e1b8005403
Handle exception for event handler
Thinker K.F. Li <thinker@branda.to>
parents:
686
diff
changeset
|
25 Persistent<Context> ctx; |
651
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
26 }; |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
27 |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
28 static void |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
29 event_handler(event_t *evt, void *arg); |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
30 |
679
799c852b9065
Extract event info from C object to JS object
Thinker K.F. Li <thinker@branda.to>
parents:
676
diff
changeset
|
31 static void |
799c852b9065
Extract event info from C object to JS object
Thinker K.F. Li <thinker@branda.to>
parents:
676
diff
changeset
|
32 xnjsmb_event_mod(Handle<Object> self, event_t *evt) { |
799c852b9065
Extract event info from C object to JS object
Thinker K.F. Li <thinker@branda.to>
parents:
676
diff
changeset
|
33 mouse_event_t *mevt; |
1112
1993e5ae60aa
Rename X_kb_event_t to mb_kb_event_t
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
34 mb_kb_event_t *xkbevt; |
822
586e50f82c1f
Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents:
788
diff
changeset
|
35 |
679
799c852b9065
Extract event info from C object to JS object
Thinker K.F. Li <thinker@branda.to>
parents:
676
diff
changeset
|
36 switch(evt->type) { |
799c852b9065
Extract event info from C object to JS object
Thinker K.F. Li <thinker@branda.to>
parents:
676
diff
changeset
|
37 case EVT_ANY: |
799c852b9065
Extract event info from C object to JS object
Thinker K.F. Li <thinker@branda.to>
parents:
676
diff
changeset
|
38 case EVT_MOUSE_OVER: |
799c852b9065
Extract event info from C object to JS object
Thinker K.F. Li <thinker@branda.to>
parents:
676
diff
changeset
|
39 case EVT_MOUSE_OUT: |
799c852b9065
Extract event info from C object to JS object
Thinker K.F. Li <thinker@branda.to>
parents:
676
diff
changeset
|
40 case EVT_MOUSE_MOVE: |
799c852b9065
Extract event info from C object to JS object
Thinker K.F. Li <thinker@branda.to>
parents:
676
diff
changeset
|
41 case EVT_MOUSE_BUT_PRESS: |
799c852b9065
Extract event info from C object to JS object
Thinker K.F. Li <thinker@branda.to>
parents:
676
diff
changeset
|
42 case EVT_MOUSE_BUT_RELEASE: |
799c852b9065
Extract event info from C object to JS object
Thinker K.F. Li <thinker@branda.to>
parents:
676
diff
changeset
|
43 mevt = (mouse_event_t *)evt; |
799c852b9065
Extract event info from C object to JS object
Thinker K.F. Li <thinker@branda.to>
parents:
676
diff
changeset
|
44 SET(self, "x", Integer::New(mevt->x)); |
799c852b9065
Extract event info from C object to JS object
Thinker K.F. Li <thinker@branda.to>
parents:
676
diff
changeset
|
45 SET(self, "y", Integer::New(mevt->y)); |
799c852b9065
Extract event info from C object to JS object
Thinker K.F. Li <thinker@branda.to>
parents:
676
diff
changeset
|
46 SET(self, "but_state", Integer::New(mevt->but_state)); |
799c852b9065
Extract event info from C object to JS object
Thinker K.F. Li <thinker@branda.to>
parents:
676
diff
changeset
|
47 SET(self, "button", Integer::New(mevt->button)); |
799c852b9065
Extract event info from C object to JS object
Thinker K.F. Li <thinker@branda.to>
parents:
676
diff
changeset
|
48 break; |
822
586e50f82c1f
Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents:
788
diff
changeset
|
49 |
679
799c852b9065
Extract event info from C object to JS object
Thinker K.F. Li <thinker@branda.to>
parents:
676
diff
changeset
|
50 case EVT_KB_PRESS: |
799c852b9065
Extract event info from C object to JS object
Thinker K.F. Li <thinker@branda.to>
parents:
676
diff
changeset
|
51 case EVT_KB_RELEASE: |
1112
1993e5ae60aa
Rename X_kb_event_t to mb_kb_event_t
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
52 xkbevt = (mb_kb_event_t *)evt; |
679
799c852b9065
Extract event info from C object to JS object
Thinker K.F. Li <thinker@branda.to>
parents:
676
diff
changeset
|
53 SET(self, "keycode", Integer::New(xkbevt->keycode)); |
799c852b9065
Extract event info from C object to JS object
Thinker K.F. Li <thinker@branda.to>
parents:
676
diff
changeset
|
54 SET(self, "sym", Integer::New(xkbevt->sym)); |
799c852b9065
Extract event info from C object to JS object
Thinker K.F. Li <thinker@branda.to>
parents:
676
diff
changeset
|
55 break; |
822
586e50f82c1f
Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents:
788
diff
changeset
|
56 |
679
799c852b9065
Extract event info from C object to JS object
Thinker K.F. Li <thinker@branda.to>
parents:
676
diff
changeset
|
57 case EVT_PROGM_COMPLETE: |
799c852b9065
Extract event info from C object to JS object
Thinker K.F. Li <thinker@branda.to>
parents:
676
diff
changeset
|
58 case EVT_RDMAN_REDRAW: |
799c852b9065
Extract event info from C object to JS object
Thinker K.F. Li <thinker@branda.to>
parents:
676
diff
changeset
|
59 case EVT_MONITOR_ADD: |
799c852b9065
Extract event info from C object to JS object
Thinker K.F. Li <thinker@branda.to>
parents:
676
diff
changeset
|
60 case EVT_MONITOR_REMOVE: |
799c852b9065
Extract event info from C object to JS object
Thinker K.F. Li <thinker@branda.to>
parents:
676
diff
changeset
|
61 case EVT_MONITOR_FREE: |
799c852b9065
Extract event info from C object to JS object
Thinker K.F. Li <thinker@branda.to>
parents:
676
diff
changeset
|
62 case EVT_MOUSE_MOVE_RAW: |
799c852b9065
Extract event info from C object to JS object
Thinker K.F. Li <thinker@branda.to>
parents:
676
diff
changeset
|
63 default: |
799c852b9065
Extract event info from C object to JS object
Thinker K.F. Li <thinker@branda.to>
parents:
676
diff
changeset
|
64 /* Not implemented. Do nothing. */ |
799c852b9065
Extract event info from C object to JS object
Thinker K.F. Li <thinker@branda.to>
parents:
676
diff
changeset
|
65 break; |
799c852b9065
Extract event info from C object to JS object
Thinker K.F. Li <thinker@branda.to>
parents:
676
diff
changeset
|
66 } |
799c852b9065
Extract event info from C object to JS object
Thinker K.F. Li <thinker@branda.to>
parents:
676
diff
changeset
|
67 } |
799c852b9065
Extract event info from C object to JS object
Thinker K.F. Li <thinker@branda.to>
parents:
676
diff
changeset
|
68 |
651
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
69 static observer_t * |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
70 _subject_add_event_observer(subject_t *subject, int type, |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
71 Handle<Function> func) { |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
72 observer_t *observer; |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
73 xnjsmb_observer_data *data; |
698
32e1b8005403
Handle exception for event handler
Thinker K.F. Li <thinker@branda.to>
parents:
686
diff
changeset
|
74 Handle<Context> ctx; |
822
586e50f82c1f
Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents:
788
diff
changeset
|
75 |
651
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
76 data = new xnjsmb_observer_data; |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
77 if(data == NULL) |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
78 return NULL; |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
79 data->func = Persistent<Function>::New(func); |
698
32e1b8005403
Handle exception for event handler
Thinker K.F. Li <thinker@branda.to>
parents:
686
diff
changeset
|
80 ctx = Context::GetCurrent(); |
32e1b8005403
Handle exception for event handler
Thinker K.F. Li <thinker@branda.to>
parents:
686
diff
changeset
|
81 data->ctx = Persistent<Context>::New(ctx); |
651
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
82 observer = subject_add_event_observer(subject, type, |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
83 event_handler, |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
84 data); |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
85 |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
86 return observer; |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
87 } |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
88 |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
89 static void |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
90 _subject_remove_observer(subject_t *subject, observer_t *observer) { |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
91 xnjsmb_observer_data *data; |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
92 |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
93 subject_remove_observer(subject, observer); |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
94 data = (xnjsmb_observer_data *)observer->arg; |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
95 delete data; |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
96 } |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
97 |
675
c643af2095c5
Keep and retrieve respective js object to/from property store
Thinker K.F. Li <thinker@branda.to>
parents:
671
diff
changeset
|
98 static Handle<Value> |
c643af2095c5
Keep and retrieve respective js object to/from property store
Thinker K.F. Li <thinker@branda.to>
parents:
671
diff
changeset
|
99 xnjsmb_event_tgt_getter(Handle<Object> self, event_t *evt, const char **err) { |
c643af2095c5
Keep and retrieve respective js object to/from property store
Thinker K.F. Li <thinker@branda.to>
parents:
671
diff
changeset
|
100 Persistent<Object> *hdl; |
822
586e50f82c1f
Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents:
788
diff
changeset
|
101 |
675
c643af2095c5
Keep and retrieve respective js object to/from property store
Thinker K.F. Li <thinker@branda.to>
parents:
671
diff
changeset
|
102 hdl = (Persistent<Object> *) |
788
7ec13634c97d
Add holder for animate
Thinker K.F. Li <thinker@codemud.net>
parents:
698
diff
changeset
|
103 mb_prop_get(&((mb_obj_t *)evt->tgt->obj)->props, |
675
c643af2095c5
Keep and retrieve respective js object to/from property store
Thinker K.F. Li <thinker@branda.to>
parents:
671
diff
changeset
|
104 PROP_JSOBJ); |
c643af2095c5
Keep and retrieve respective js object to/from property store
Thinker K.F. Li <thinker@branda.to>
parents:
671
diff
changeset
|
105 return Local<Object>::New(*hdl); |
c643af2095c5
Keep and retrieve respective js object to/from property store
Thinker K.F. Li <thinker@branda.to>
parents:
671
diff
changeset
|
106 } |
c643af2095c5
Keep and retrieve respective js object to/from property store
Thinker K.F. Li <thinker@branda.to>
parents:
671
diff
changeset
|
107 |
c643af2095c5
Keep and retrieve respective js object to/from property store
Thinker K.F. Li <thinker@branda.to>
parents:
671
diff
changeset
|
108 static void |
c643af2095c5
Keep and retrieve respective js object to/from property store
Thinker K.F. Li <thinker@branda.to>
parents:
671
diff
changeset
|
109 xnjsmb_event_tgt_setter(Handle<Object> self, event_t *evt, |
c643af2095c5
Keep and retrieve respective js object to/from property store
Thinker K.F. Li <thinker@branda.to>
parents:
671
diff
changeset
|
110 Handle<Value> value, const char **err) { |
c643af2095c5
Keep and retrieve respective js object to/from property store
Thinker K.F. Li <thinker@branda.to>
parents:
671
diff
changeset
|
111 *err = "Not implemented"; |
c643af2095c5
Keep and retrieve respective js object to/from property store
Thinker K.F. Li <thinker@branda.to>
parents:
671
diff
changeset
|
112 } |
c643af2095c5
Keep and retrieve respective js object to/from property store
Thinker K.F. Li <thinker@branda.to>
parents:
671
diff
changeset
|
113 |
c643af2095c5
Keep and retrieve respective js object to/from property store
Thinker K.F. Li <thinker@branda.to>
parents:
671
diff
changeset
|
114 static Handle<Value> |
c643af2095c5
Keep and retrieve respective js object to/from property store
Thinker K.F. Li <thinker@branda.to>
parents:
671
diff
changeset
|
115 xnjsmb_event_cur_tgt_getter(Handle<Object> self, event_t *evt, |
c643af2095c5
Keep and retrieve respective js object to/from property store
Thinker K.F. Li <thinker@branda.to>
parents:
671
diff
changeset
|
116 const char **err) { |
c643af2095c5
Keep and retrieve respective js object to/from property store
Thinker K.F. Li <thinker@branda.to>
parents:
671
diff
changeset
|
117 Persistent<Object> *hdl; |
822
586e50f82c1f
Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents:
788
diff
changeset
|
118 |
675
c643af2095c5
Keep and retrieve respective js object to/from property store
Thinker K.F. Li <thinker@branda.to>
parents:
671
diff
changeset
|
119 hdl = (Persistent<Object> *) |
788
7ec13634c97d
Add holder for animate
Thinker K.F. Li <thinker@codemud.net>
parents:
698
diff
changeset
|
120 mb_prop_get(&((mb_obj_t *)evt->cur_tgt->obj)->props, |
675
c643af2095c5
Keep and retrieve respective js object to/from property store
Thinker K.F. Li <thinker@branda.to>
parents:
671
diff
changeset
|
121 PROP_JSOBJ); |
c643af2095c5
Keep and retrieve respective js object to/from property store
Thinker K.F. Li <thinker@branda.to>
parents:
671
diff
changeset
|
122 return Local<Object>::New(*hdl); |
c643af2095c5
Keep and retrieve respective js object to/from property store
Thinker K.F. Li <thinker@branda.to>
parents:
671
diff
changeset
|
123 } |
c643af2095c5
Keep and retrieve respective js object to/from property store
Thinker K.F. Li <thinker@branda.to>
parents:
671
diff
changeset
|
124 |
c643af2095c5
Keep and retrieve respective js object to/from property store
Thinker K.F. Li <thinker@branda.to>
parents:
671
diff
changeset
|
125 static void |
c643af2095c5
Keep and retrieve respective js object to/from property store
Thinker K.F. Li <thinker@branda.to>
parents:
671
diff
changeset
|
126 xnjsmb_event_cur_tgt_setter(Handle<Object> self, event_t *evt, |
c643af2095c5
Keep and retrieve respective js object to/from property store
Thinker K.F. Li <thinker@branda.to>
parents:
671
diff
changeset
|
127 Handle<Value> value, const char **err) { |
c643af2095c5
Keep and retrieve respective js object to/from property store
Thinker K.F. Li <thinker@branda.to>
parents:
671
diff
changeset
|
128 *err = "Not implemented"; |
c643af2095c5
Keep and retrieve respective js object to/from property store
Thinker K.F. Li <thinker@branda.to>
parents:
671
diff
changeset
|
129 } |
c643af2095c5
Keep and retrieve respective js object to/from property store
Thinker K.F. Li <thinker@branda.to>
parents:
671
diff
changeset
|
130 |
655 | 131 /* This is the part of the code generated by gen_v8_binding.m4 */ |
651
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
132 #include "observer-inc.h" |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
133 |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
134 static void |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
135 event_handler(event_t *evt, void *arg) { |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
136 xnjsmb_observer_data *data = (xnjsmb_observer_data *)arg; |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
137 Handle<Value> evt_obj; |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
138 Handle<Value> func_args[1]; |
698
32e1b8005403
Handle exception for event handler
Thinker K.F. Li <thinker@branda.to>
parents:
686
diff
changeset
|
139 Handle<Value> r; |
32e1b8005403
Handle exception for event handler
Thinker K.F. Li <thinker@branda.to>
parents:
686
diff
changeset
|
140 Context::Scope context_scope(data->ctx); |
32e1b8005403
Handle exception for event handler
Thinker K.F. Li <thinker@branda.to>
parents:
686
diff
changeset
|
141 TryCatch trycatch; |
651
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
142 |
656
38c720272dd5
Change prefix for the code generated by generator
Thinker K.F. Li <thinker@branda.to>
parents:
655
diff
changeset
|
143 evt_obj = xnjsmb_auto_event_new(evt); |
651
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
144 ASSERT(!evt_obj.IsEmpty()); |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
145 func_args[0] = evt_obj; |
698
32e1b8005403
Handle exception for event handler
Thinker K.F. Li <thinker@branda.to>
parents:
686
diff
changeset
|
146 r = data->func->Call(data->ctx->Global(), 1, func_args); |
32e1b8005403
Handle exception for event handler
Thinker K.F. Li <thinker@branda.to>
parents:
686
diff
changeset
|
147 if(r.IsEmpty()) { |
32e1b8005403
Handle exception for event handler
Thinker K.F. Li <thinker@branda.to>
parents:
686
diff
changeset
|
148 Handle<Value> exception = trycatch.Exception(); |
32e1b8005403
Handle exception for event handler
Thinker K.F. Li <thinker@branda.to>
parents:
686
diff
changeset
|
149 String::AsciiValue exc_str(exception); |
32e1b8005403
Handle exception for event handler
Thinker K.F. Li <thinker@branda.to>
parents:
686
diff
changeset
|
150 fprintf(stderr, "Exception: %s\n", *exc_str); |
32e1b8005403
Handle exception for event handler
Thinker K.F. Li <thinker@branda.to>
parents:
686
diff
changeset
|
151 } |
651
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
152 } |
aa52883534fc
Code generated by generator can be built
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
153 |
676
f264b50c469c
Bind subject of mouse_event to JS object of coord
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
154 Handle<Value> |
f264b50c469c
Bind subject of mouse_event to JS object of coord
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
155 export_xnjsmb_auto_subject_new(subject_t *subject) { |
f264b50c469c
Bind subject of mouse_event to JS object of coord
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
156 Handle<Value> val; |
822
586e50f82c1f
Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents:
788
diff
changeset
|
157 |
676
f264b50c469c
Bind subject of mouse_event to JS object of coord
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
158 val = xnjsmb_auto_subject_new(subject); |
f264b50c469c
Bind subject of mouse_event to JS object of coord
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
159 return val; |
f264b50c469c
Bind subject of mouse_event to JS object of coord
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
160 } |
f264b50c469c
Bind subject of mouse_event to JS object of coord
Thinker K.F. Li <thinker@branda.to>
parents:
675
diff
changeset
|
161 |
658
62c2de99b03a
Remove get_object() method for subject for js
Thinker K.F. Li <thinker@branda.to>
parents:
656
diff
changeset
|
162 void |
62c2de99b03a
Remove get_object() method for subject for js
Thinker K.F. Li <thinker@branda.to>
parents:
656
diff
changeset
|
163 xnjsmb_observer_init(void) { |
671
fc29a343ce7c
Track JS object with property store of objects
Thinker K.F. Li <thinker@branda.to>
parents:
658
diff
changeset
|
164 xnjsmb_auto_observer_init(); |
fc29a343ce7c
Track JS object with property store of objects
Thinker K.F. Li <thinker@branda.to>
parents:
658
diff
changeset
|
165 xnjsmb_auto_subject_init(); |
fc29a343ce7c
Track JS object with property store of objects
Thinker K.F. Li <thinker@branda.to>
parents:
658
diff
changeset
|
166 xnjsmb_auto_event_init(); |
658
62c2de99b03a
Remove get_object() method for subject for js
Thinker K.F. Li <thinker@branda.to>
parents:
656
diff
changeset
|
167 } |
686 | 168 |
169 /* @} */ |