4 # Copyright (c) 2012 project bchan
6 # This software is provided 'as-is', without any express or implied
7 # warranty. In no event will the authors be held liable for any damages
8 # arising from the use of this software.
10 # Permission is granted to anyone to use this software for any purpose,
11 # including commercial applications, and to alter it and redistribute it
12 # freely, subject to the following restrictions:
14 # 1. The origin of this software must not be misrepresented; you must not
15 # claim that you wrote the original software. If you use this software
16 # in a product, an acknowledgment in the product documentation would be
17 # appreciated but is not required.
19 # 2. Altered source versions must be plainly marked as such, and must not be
20 # misrepresented as being the original software.
22 # 3. This notice may not be removed or altered from any source
30 def conv_euc_to_TCArray(str)
39 ret.push(val & 0x7f7f);
44 def conv_TCArray_to_hex_definition(a)
47 str += "0x" + x.to_s(16) + ", "
52 def calc_euc_to_TCArray_length(str)
53 str = conv_euc_to_TCArray(str);
72 "{{" + @yaml["rect"]["left"].to_s + ", " + @yaml["rect"]["top"].to_s + ", " + @yaml["rect"]["right"].to_s + ", " + @yaml["rect"]["bottom"].to_s + "}}";
75 conv_TCArray_to_hex_definition(conv_euc_to_TCArray(@yaml["text"]));
77 def is_attr_specified()
81 if self.is_attr_specified()
87 def get_attrval_chcol()
88 if @yaml["attr"]["chcol"] == nil
91 @yaml["attr"]["chcol"]
93 def get_attrval_class()
94 if @yaml["attr"]["class"] == nil
97 @yaml["attr"]["class"]
99 def get_attrval_attr()
100 if @yaml["attr"]["attr"] == nil
103 @yaml["attr"]["attr"]
105 def get_attrval_csize_h()
106 if @yaml["attr"]["csize"] == nil || @yaml["attr"]["csize"]["h"] == nil
109 @yaml["attr"]["csize"]["h"]
111 def get_attrval_csize_v()
112 if @yaml["attr"]["csize"] == nil || @yaml["attr"]["csize"]["v"] == nil
115 @yaml["attr"]["csize"]["v"]
117 def is_need_eventbreak()
120 def get_databox_specify()
121 return @yaml["databox"]["specify"]
123 def get_databox_number()
124 return @yaml["databox"]["number"]
126 def is_databox_specify_argument()
127 @yaml["databox"] != nil && @yaml["databox"]["specify"] == "argument"
130 @yaml["databox"] != nil && (@yaml["databox"]["specify"] != "direct" || @yaml["databox"]["specify"] != "argument")
133 def generate_header_eventtype_enumulate(main_name, window_name)
137 erb = ERB.new(script, nil, '-');
141 def generate_header_eventstruct_definition(main_name, window_name)
145 erb = ERB.new(script, nil, '-');
149 def generate_header_eventunion_member(main_name, window_name)
153 erb = ERB.new(script, nil, '-');
157 def generate_prototypes(window_name)
161 erb = ERB.new(script, nil, '-');
165 def generate_source_struct(window_name)
169 erb = ERB.new(script, nil, '-');
173 def generate_source_functions(main_name, window_name)
177 erb = ERB.new(script, nil, '-');
181 def generate_initialize_in_new()
183 window-><%= self.name() %>.id = -1;
184 <%- if self.is_databox_specify_argument() -%>
185 window-><%= self.name() %>.dnum = dnum_<%= self.name() %>;
189 erb = ERB.new(script, nil, '-');
193 def generate_create_systemcall_databox()
194 case self.get_databox_specify()
196 script = "copn_par(wid, window-><%= self.name() %>.dnum, NULL)"
198 script = "copn_par(wid, <%= self.get_databox_number() %>, NULL)"
201 erb = ERB.new(script, nil, '-');
205 def generate_create_systemcall_direct()
209 erb = ERB.new(script, nil, '-');
213 def generate_create_systemcall()
214 if self.is_databox_use()
215 return self.generate_create_systemcall_databox()
217 return self.generate_create_systemcall_direct()
221 def generate_create_in_open()
223 <%- if !self.is_databox_use() -%>
224 r = (RECT)<%= self.rect_string() %>;
226 window-><%= self.name() %>.id = <%= self.generate_create_systemcall()%>;
227 if (window-><%= self.name() %>.id < 0) {
228 DP_ER("ccre_xxx <%= self.name() %> error:", window-><%= self.name() %>.id);
230 <%- if self.is_databox_use() -%><%= self.generate_loadvalue_in_open() %><%- end -%>
233 erb = ERB.new(script, nil, '-');
237 def generate_loadvalue_in_open()
241 erb = ERB.new(script, nil, '-');
245 def generate_savevalue_in_close()
249 erb = ERB.new(script, nil, '-');
253 def generate_action_in_butdnwork(main_name, window_name)
257 erb = ERB.new(script, nil, '-');
262 class HMITextBoxParts < HMIParts
263 def is_need_eventbreak()
267 def generate_header_eventtype_enumulate(main_name, window_name)
269 <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_DETERMINE,
270 <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_COPY,
271 <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_MOVE,
272 <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_MENU,
273 <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_KEYMENU,
276 erb = ERB.new(script, nil, '-');
280 def generate_header_eventstruct_definition(main_name, window_name)
282 struct <%= window_name %>_eventdata_<%= self.name() %>_determine_t_ {
286 typedef struct <%= window_name %>_eventdata_<%= self.name() %>_determine_t_ <%= window_name %>_eventdata_<%= self.name() %>_determine_t;
288 struct <%= window_name %>_eventdata_<%= self.name() %>_copy_t_ {
292 typedef struct <%= window_name %>_eventdata_<%= self.name() %>_copy_t_ <%= window_name %>_eventdata_<%= self.name() %>_copy_t;
294 struct <%= window_name %>_eventdata_<%= self.name() %>_move_t_ {
298 typedef struct <%= window_name %>_eventdata_<%= self.name() %>_move_t_ <%= window_name %>_eventdata_<%= self.name() %>_move_t;
300 struct <%= window_name %>_eventdata_<%= self.name() %>_menu_t_ {
303 typedef struct <%= window_name %>_eventdata_<%= self.name() %>_menu_t_ <%= window_name %>_eventdata_<%= self.name() %>_menu_t;
305 struct <%= window_name %>_eventdata_<%= self.name() %>_keymenu_t_ {
308 typedef struct <%= window_name %>_eventdata_<%= self.name() %>_keymenu_t_ <%= window_name %>_eventdata_<%= self.name() %>_keymenu_t;
312 erb = ERB.new(script, nil, '-');
316 def generate_header_eventunion_member(main_name, window_name)
318 <%= window_name %>_eventdata_<%= self.name() %>_determine_t <%= window_name %>_<%= self.name() %>_determine;
319 <%= window_name %>_eventdata_<%= self.name() %>_copy_t <%= window_name %>_<%= self.name() %>_copy;
320 <%= window_name %>_eventdata_<%= self.name() %>_move_t <%= window_name %>_<%= self.name() %>_move;
321 <%= window_name %>_eventdata_<%= self.name() %>_menu_t <%= window_name %>_<%= self.name() %>_menu;
322 <%= window_name %>_eventdata_<%= self.name() %>_keymenu_t <%= window_name %>_<%= self.name() %>_keymenu;
325 erb = ERB.new(script, nil, '-');
329 def generate_prototypes(window_name)
331 IMPORT W <%= window_name %>_set<%= self.name() %>text(<%= window_name %>_t *window, TC *str, W len);
332 IMPORT W <%= window_name %>_get<%= self.name() %>text(<%= window_name %>_t *window, TC *str, W len);
333 IMPORT W <%= window_name %>_cut<%= self.name() %>text(<%= window_name %>_t *window, TC *str, W len, Bool cut);
334 IMPORT W <%= window_name %>_insert<%= self.name() %>text(<%= window_name %>_t *window, TC *str, W len);
337 erb = ERB.new(script, nil, '-');
341 def generate_source_struct(window_name)
345 <% if self.is_databox_specify_argument() %>W dnum;<% end %>
346 TC buf[<%= self.text_length() %>+<%= self.get_attr_offset() %>+1];
350 } <%= self.name() %>;
353 erb = ERB.new(script, nil, '-');
357 def generate_source_functions(main_name, window_name)
359 EXPORT W <%= window_name %>_set<%= self.name() %>text(<%= window_name %>_t *window, TC *str, W len)
363 if (len < <%= self.text_length() %>) {
366 cp_len = <%= self.text_length() %>;
368 memcpy(window-><%= self.name() %>.buf+<%= self.get_attr_offset() %>, str, cp_len * sizeof(TC));
369 window-><%= self.name() %>.buf[<%= self.get_attr_offset() %> + cp_len] = TNULL;
370 window-><%= self.name() %>.buf_written = cp_len;
371 if (window->wid < 0) {
375 return cset_val(window-><%= self.name() %>.id, cp_len, (W*)(window-><%= self.name() %>.buf+<%= self.get_attr_offset() %>));
378 EXPORT W <%= window_name %>_get<%= self.name() %>text(<%= window_name %>_t *window, TC *str, W len)
382 if (window->wid > 0) {
383 err = cget_val(window-><%= self.name() %>.id, <%= self.text_length() %>, (W*)(window-><%= self.name() %>.buf+<%= self.get_attr_offset() %>));
387 window-><%= self.name() %>.buf_written = err;
390 if (len < window-><%= self.name() %>.buf_written) {
393 cp_len = window-><%= self.name() %>.buf_written;
395 memcpy(str, window-><%= self.name() %>.buf + <%= self.get_attr_offset() %>, cp_len * sizeof(TC));
400 EXPORT W <%= window_name %>_cut<%= self.name() %>text(<%= window_name %>_t *window, TC *str, W len, Bool cut)
404 len0 = ccut_txt(window-><%= self.name() %>.id, len, str, cut == False ? 0 : 1);
410 err = cget_val(window-><%= self.name() %>.id, <%= self.text_length() %>, (W*)(window-><%= self.name() %>.buf+<%= self.get_attr_offset() %>));
414 window-><%= self.name() %>.buf_written = err;
421 EXPORT W <%= window_name %>_insert<%= self.name() %>text(<%= window_name %>_t *window, TC *str, W len)
425 err = cins_txt(window-><%= self.name() %>.id, (PNT){0x8000, 0x8000}, str);
430 err = cget_val(window-><%= self.name() %>.id, <%= self.text_length() %>, (W*)(window-><%= self.name() %>.buf+<%= self.get_attr_offset() %>));
434 window-><%= self.name() %>.buf_written = err;
439 LOCAL VOID <%= window_name %>_action<%= self.name() %>(<%= window_name %>_t *window, WEVENT *wev, <%= main_name %>event_t *evt)
443 i = cact_par(window-><%= self.name() %>.id, wev);
445 window-><%= self.name() %>.nextaction = True;
448 if ((wev->s.type == EV_KEYDWN)&&(wev->s.stat & ES_CMD)) {
449 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_KEYMENU;
450 evt->data.<%= window_name %>_<%= self.name() %>_keymenu.keycode = wev->e.data.key.code;
452 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_MENU;
453 evt->data.<%= window_name %>_<%= self.name() %>_menu.pos = wev->s.pos;
455 <%= window_name %>_setflag(window, <%= window_name.upcase %>_FLAG_PARTS_NEXTACTION);
459 <%= window_name %>_setflag(window, <%= window_name.upcase %>_FLAG_PARTS_OTHEREVENT);
464 window-><%= self.name() %>.nextaction = False;
466 len = cget_val(window-><%= self.name() %>.id, <%= self.text_length() %>, (W*)(window-><%= self.name() %>.buf+<%= self.get_attr_offset() %>));
468 window-><%= self.name() %>.buf_written = len;
473 cchg_par(window-><%= self.name() %>.id, P_INACT);
474 cchg_par(window-><%= self.name() %>.id, P_ACT);
481 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_DETERMINE;
482 evt->data.<%= window_name %>_<%= self.name() %>_determine.value = window-><%= self.name() %>.buf+<%= self.get_attr_offset() %>;
483 evt->data.<%= window_name %>_<%= self.name() %>_determine.len = window-><%= self.name() %>.buf_written;
486 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_MOVE;
487 evt->data.<%= window_name %>_<%= self.name() %>_move.rel_wid = wev->s.wid;
488 evt->data.<%= window_name %>_<%= self.name() %>_move.pos = wev->s.pos;
491 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_COPY;
492 evt->data.<%= window_name %>_<%= self.name() %>_copy.rel_wid = wev->s.wid;
493 evt->data.<%= window_name %>_<%= self.name() %>_copy.pos = wev->s.pos;
500 erb = ERB.new(script, nil, '-');
504 def generate_initialize_in_new()
506 window-><%= self.name() %>.id = -1;
507 <%- if self.is_databox_specify_argument() -%>
508 window-><%= self.name() %>.dnum = dnum_<%= self.name() %>;
510 memset(window-><%= self.name() %>.buf, 0, sizeof(TC)*<%= self.text_length() %>);
511 <%- if self.is_attr_specified() -%>
512 window-><%= self.name() %>.buf[0] = MC_ATTR;
513 *(COLOR*)(window-><%= self.name() %>.buf + 1) = <%= self.get_attrval_chcol() %>;
514 window-><%= self.name() %>.buf[3] = <%= self.get_attrval_class() %>;
515 window-><%= self.name() %>.buf[4] = <%= self.get_attrval_attr() %>;
516 window-><%= self.name() %>.buf[5] = <%= self.get_attrval_csize_h() %>;
517 window-><%= self.name() %>.buf[6] = <%= self.get_attrval_csize_v() %>;
518 window-><%= self.name() %>.buf[7] = TNULL;
520 window-><%= self.name() %>.buf[0] = MC_STR;
521 window-><%= self.name() %>.buf[1] = TNULL;
523 window-><%= self.name() %>.nextaction = False;
526 erb = ERB.new(script, nil, '-');
530 def generate_create_systemcall_direct()
531 script = "ccre_tbx(wid, TB_PARTS|P_DISP, &r, <%= self.text_length() %>, window-><%= self.name() %>.buf, NULL)"
533 erb = ERB.new(script, nil, '-');
537 def generate_loadvalue_in_open()
539 cset_val(window-><%= self.name() %>.id, <%= self.text_length() %>, (W*)(window-><%= self.name() %>.buf+<%= self.get_attr_offset() %>));
542 erb = ERB.new(script, nil, '-');
546 def generate_savevalue_in_close()
548 err = cget_val(window-><%= self.name() %>.id, <%= self.text_length() %>, (W*)(window-><%= self.name() %>.buf+<%= self.get_attr_offset() %>));
550 window-><%= self.name() %>.buf_written = err;
554 erb = ERB.new(script, nil, '-');
558 def generate_action_in_butdnwork(main_name, window_name)
560 if (id == window-><%= self.name() %>.id) {
561 memcpy(&window->savedwev, wev, sizeof(WEVENT));
562 <%= window_name %>_action<%= self.name() %>(window, wev, evt);
567 erb = ERB.new(script, nil, '-');
572 class HMISecretTextBoxParts < HMITextBoxParts
573 def generate_create_systemcall_direct()
574 script = "ccre_xbx(wid, XB_PARTS|P_DISP, &r, <%= self.text_length() %>, window-><%= self.name() %>.buf, NULL);";
576 erb = ERB.new(script, nil, '-');
581 class HMINumberBoxParts < HMIParts
582 def is_need_eventbreak()
586 if @yaml["format"]["datatype"] == "double"
591 def is_pointdisplay()
592 ret = @yaml["format"]["pointdisplay"];
599 ret = @yaml["format"]["hankaku"];
606 sz = @yaml["format"]["fontsize"]
618 def get_decimalplace()
619 sz = @yaml["format"]["decimalplace"]
632 def generate_header_eventtype_enumulate(main_name, window_name)
634 <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_DETERMINE,
635 <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_COPY,
636 <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_MOVE,
637 <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_MENU,
638 <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_KEYMENU,
641 erb = ERB.new(script, nil, '-');
645 def generate_header_eventstruct_definition(main_name, window_name)
647 struct <%= window_name %>_eventdata_<%= self.name() %>_determine_t_ {
648 <% if self.is_double() %>DOUBLE<% else %>W<% end %> value;
650 typedef struct <%= window_name %>_eventdata_<%= self.name() %>_determine_t_ <%= window_name %>_eventdata_<%= self.name() %>_determine_t;
652 struct <%= window_name %>_eventdata_<%= self.name() %>_copy_t_ {
656 typedef struct <%= window_name %>_eventdata_<%= self.name() %>_copy_t_ <%= window_name %>_eventdata_<%= self.name() %>_copy_t;
658 struct <%= window_name %>_eventdata_<%= self.name() %>_move_t_ {
662 typedef struct <%= window_name %>_eventdata_<%= self.name() %>_move_t_ <%= window_name %>_eventdata_<%= self.name() %>_move_t;
664 struct <%= window_name %>_eventdata_<%= self.name() %>_menu_t_ {
667 typedef struct <%= window_name %>_eventdata_<%= self.name() %>_menu_t_ <%= window_name %>_eventdata_<%= self.name() %>_menu_t;
669 struct <%= window_name %>_eventdata_<%= self.name() %>_keymenu_t_ {
672 typedef struct <%= window_name %>_eventdata_<%= self.name() %>_keymenu_t_ <%= window_name %>_eventdata_<%= self.name() %>_keymenu_t;
676 erb = ERB.new(script, nil, '-');
680 def generate_header_eventunion_member(main_name, window_name)
682 <%= window_name %>_eventdata_<%= self.name() %>_determine_t <%= window_name %>_<%= self.name() %>_determine;
683 <%= window_name %>_eventdata_<%= self.name() %>_copy_t <%= window_name %>_<%= self.name() %>_copy;
684 <%= window_name %>_eventdata_<%= self.name() %>_move_t <%= window_name %>_<%= self.name() %>_move;
685 <%= window_name %>_eventdata_<%= self.name() %>_menu_t <%= window_name %>_<%= self.name() %>_menu;
686 <%= window_name %>_eventdata_<%= self.name() %>_keymenu_t <%= window_name %>_<%= self.name() %>_keymenu;
689 erb = ERB.new(script, nil, '-');
693 def generate_prototypes(window_name)
695 IMPORT W <%= window_name %>_set<%= self.name() %>value(<%= window_name %>_t *window, <% if self.is_double() %>DOUBLE<% else %>W<% end %> value);
696 IMPORT W <%= window_name %>_get<%= self.name() %>value(<%= window_name %>_t *window, <% if self.is_double() %>DOUBLE<% else %>W<% end %> *value);
699 erb = ERB.new(script, nil, '-');
703 def generate_source_struct(window_name)
707 <% if self.is_databox_specify_argument() %>W dnum;<% end %>
709 <% if self.is_double() %>DOUBLE<% else %>W<% end %> cv;
711 } <%= self.name() %>;
714 erb = ERB.new(script, nil, '-');
718 def generate_source_functions(main_name, window_name)
720 EXPORT W <%= window_name %>_set<%= self.name() %>value(<%= window_name %>_t *window, <% if self.is_double() %>DOUBLE<% else %>W<% end %> value)
722 window-><%= self.name() %>.cv = value;
723 if (window->wid < 0) {
727 return cset_val(window-><%= self.name() %>.id, <% if self.is_double() %>2<% else %>1<% end %>, (W*)(&window-><%= self.name() %>.cv));
730 EXPORT W <%= window_name %>_get<%= self.name() %>value(<%= window_name %>_t *window, <% if self.is_double() %>DOUBLE<% else %>W<% end %> *value)
734 if (window->wid > 0) {
735 err = cget_val(window-><%= self.name() %>.id, <% if self.is_double() %>2<% else %>1<% end %>, (W*)(&window-><%= self.name() %>.cv));
741 *value = window-><%= self.name() %>.cv;
745 LOCAL VOID <%= window_name %>_action<%= self.name() %>(<%= window_name %>_t *window, WEVENT *wev, <%= main_name %>event_t *evt)
749 i = cact_par(window-><%= self.name() %>.id, wev);
751 window-><%= self.name() %>.nextaction = True;
752 <%= window_name %>_setflag(window, <%= window_name.upcase %>_FLAG_PARTS_OTHEREVENT);
756 window-><%= self.name() %>.nextaction = False;
758 cget_val(window-><%= self.name() %>.id, <% if self.is_double() %>2<% else %>1<% end %>, (W*)(&window-><%= self.name() %>.cv));
768 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_DETERMINE;
769 evt->data.<%= window_name %>_<%= self.name() %>_determine.value = window-><%= self.name() %>.cv;
772 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_MOVE;
773 evt->data.<%= window_name %>_<%= self.name() %>_move.rel_wid = wev->s.wid;
774 evt->data.<%= window_name %>_<%= self.name() %>_move.pos = wev->s.pos;
777 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_COPY;
778 evt->data.<%= window_name %>_<%= self.name() %>_copy.rel_wid = wev->s.wid;
779 evt->data.<%= window_name %>_<%= self.name() %>_copy.pos = wev->s.pos;
782 if ((wev->s.type == EV_KEYDWN)&&(wev->s.stat & ES_CMD)) {
783 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_KEYMENU;
784 evt->data.<%= window_name %>_<%= self.name() %>_keymenu.keycode = wev->e.data.key.code;
786 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_MENU;
787 evt->data.<%= window_name %>_<%= self.name() %>_menu.pos = wev->s.pos;
789 window-><%= self.name() %>.nextaction = True;
790 <%= window_name %>_setflag(window, <%= window_name.upcase %>_FLAG_PARTS_NEXTACTION);
798 erb = ERB.new(script, nil, '-');
802 def generate_initialize_in_new()
804 window-><%= self.name() %>.id = -1;
805 <%- if self.is_databox_specify_argument() -%>
806 window-><%= self.name() %>.dnum = dnum_<%= self.name() %>;
808 window-><%= self.name() %>.format = (<%= self.get_fontsize() %> << 8)|<% if self.is_double() %>0xF0<% else %>0<% end %>|<% if self.is_hankaku() %>0x40<% else %>0<% end %>|<% if self.is_pointdisplay() %>0x10<% else %>0<% end %>|<%= self.get_decimalplace() %>;
809 window-><%= self.name() %>.cv = <% if self.is_double() %>0.0<% else %>0<% end %>;
810 window-><%= self.name() %>.nextaction = False;
813 erb = ERB.new(script, nil, '-');
817 def generate_create_systemcall_direct()
818 script = "ccre_nbx(wid, NB_PARTS|P_DISP, &r, window-><%= self.name() %>.format, (W*)&window-><%= self.name() %>.cv, NULL)"
820 erb = ERB.new(script, nil, '-');
824 def generate_loadvalue_in_open()
826 cset_val(window-><%= self.name() %>.id, <% if self.is_double() %>2<% else %>1<% end %>, (W*)(&window-><%= self.name() %>.cv));
829 erb = ERB.new(script, nil, '-');
833 def generate_savevalue_in_close()
835 err = cget_val(window-><%= self.name() %>.id, <% if self.is_double() %>2<% else %>1<% end %>, (W*)(&window-><%= self.name() %>.cv));
838 erb = ERB.new(script, nil, '-');
842 def generate_action_in_butdnwork(main_name, window_name)
844 if (id == window-><%= self.name() %>.id) {
845 <%= window_name %>_action<%= self.name() %>(window, wev, evt);
850 erb = ERB.new(script, nil, '-');
855 class HMITextMomentallySwitchParts < HMIParts
856 def generate_header_eventtype_enumulate(main_name, window_name)
858 <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_PUSH,
861 erb = ERB.new(script, nil, '-');
865 def generate_source_struct(window_name)
869 <% if self.is_databox_specify_argument() %>W dnum;<% end %>
870 } <%= self.name() %>;
873 erb = ERB.new(script, nil, '-');
877 def generate_create_systemcall_direct()
878 script = "ccre_msw(wid, MS_PARTS|P_DISP, &r, (TC[]){MC_STR, <%= self.text_array() %>}, NULL)"
880 erb = ERB.new(script, nil, '-');
884 def generate_action_in_butdnwork(main_name, window_name)
886 if (id == window-><%= self.name() %>.id) {
887 ret = cact_par(window-><%= self.name() %>.id, wev);
888 if ((ret & 0x5000) != 0x5000) {
891 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_PUSH;
896 erb = ERB.new(script, nil, '-');
901 class HMISerialBoxParts < HMIParts
902 def calc_serialbox_formatlength()
904 @yaml["fields"].each { |field|
907 l += 3; # specify, max, min
910 field["items"].each { |item| # item text
911 l+= 1 + calc_euc_to_TCArray_length(item["text"]);
915 l += calc_euc_to_TCArray_length(field["text"]);
918 l += 1; # for last TNULL
921 def calc_serialbox_fieldsnumber()
923 @yaml["fields"].each { |field|
925 when "number", "items"
928 # not variable field.
933 def is_need_eventbreak()
937 def generate_header_eventtype_enumulate(main_name, window_name)
941 erb = ERB.new(script, nil, '-');
945 def generate_prototypes(window_name)
947 struct <%= window_name %>_<%= self.name() %>value_t_ {
948 <%- @yaml["fields"].each do |field| -%>
949 <%- case field["type"] -%>
950 <%- when "number" -%>
951 W <%= field["name"] %>;
954 <%- field["items"].each do |item| -%>
955 <%= window_name.upcase %>_<%= self.name().upcase %>_<%= field["name"].upcase %>VALUE_<%= item["name"].upcase %>,
957 } <%= field["name"] %>;
961 typedef struct <%= window_name %>_<%= self.name() %>value_t_ <%= window_name %>_<%= self.name() %>value_t;
962 IMPORT W <%= window_name %>_set<%= self.name() %>value(<%= window_name %>_t *window, <%= window_name %>_<%= self.name() %>value_t *value);
963 IMPORT W <%= window_name %>_get<%= self.name() %>value(<%= window_name %>_t *window, <%= window_name %>_<%= self.name() %>value_t *value);
966 erb = ERB.new(script, nil, '-');
970 def generate_source_struct(window_name)
974 <% if self.is_databox_specify_argument() %>W dnum;<% end %>
975 TC format[<%= self.calc_serialbox_formatlength() %>];
976 W cv[<%= self.calc_serialbox_fieldsnumber() %>];
978 } <%= self.name() %>;
981 erb = ERB.new(script, nil, '-');
985 def generate_source_functions(main_name, window_name)
987 EXPORT W <%= window_name %>_set<%= self.name() %>value(<%= window_name %>_t *window, <%= window_name %>_<%= self.name() %>value_t *value)
990 <%- @yaml["fields"].each do |field| -%>
991 <%- case field["type"] -%>
992 <%- when "number" -%>
993 if ((<%= field["min"] %> <= value-><%= field["name"] %>)&&(value-><%= field["name"] %> <= <%= field["max"] %>)) {
994 window-><%= self.name() %>.cv[<%= j %>] = value-><%= field["name"] %>;<%- j+=1 %>
997 if ((0 <= value-><%= field["name"] %>)&&(value-><%= field["name"] %> < <%= field["items"].length %>)) {
998 window-><%= self.name() %>.cv[<%= j %>] = value-><%= field["name"] %>;<%- j+=1 %>
1002 if (window->wid < 0) {
1006 return cset_val(window-><%= self.name() %>.id, <%= self.calc_serialbox_fieldsnumber() %>, (W*)(window-><%= self.name() %>.cv));
1009 EXPORT W <%= window_name %>_get<%= self.name() %>value(<%= window_name %>_t *window, <%= window_name %>_<%= self.name() %>value_t *value)
1013 if (window->wid > 0) {
1014 err = cget_val(window-><%= self.name() %>.id, <%= self.calc_serialbox_fieldsnumber() %>, (W*)(window-><%= self.name() %>.cv));
1021 <%- @yaml["fields"].each do |field| -%>
1022 <%- case field["type"] -%>
1023 <%- when "number", "items" -%>
1024 value-><%= field["name"] %> = window-><%= self.name() %>.cv[<%= j %>];<%- j+=1 %>
1031 LOCAL VOID <%= window_name %>_action<%= self.name() %>(<%= window_name %>_t *window, WEVENT *wev, <%= main_name %>event_t *evt)
1035 i = cact_par(window-><%= self.name() %>.id, wev);
1037 window-><%= self.name() %>.nextaction = True;
1038 <%= window_name %>_setflag(window, <%= window_name.upcase %>_FLAG_PARTS_OTHEREVENT);
1042 window-><%= self.name() %>.nextaction = False;
1044 cget_val(window-><%= self.name() %>.id, <%= self.calc_serialbox_fieldsnumber() %>, (W*)(window-><%= self.name() %>.cv));
1045 /* TODO: export event */
1062 erb = ERB.new(script, nil, '-');
1066 def generate_initialize_in_new()
1068 window-><%= self.name() %>.id = -1;
1069 <%- if self.is_databox_specify_argument() -%>
1070 window-><%= self.name() %>.dnum = dnum_<%= self.name() %>;
1073 <%- @yaml["fields"].each do |field| -%>
1074 <%- case field["type"] -%>
1075 <%- when "number" -%>
1076 window-><%= self.name() %>.format[<%= l %>] = 0x0e00 | <%= field["chars"] %>;<%- l+=1 %>
1077 window-><%= self.name() %>.format[<%= l %>] = <%= field["min"] %>;<%- l+=1 %>
1078 window-><%= self.name() %>.format[<%= l %>] = <%= field["max"] %>;<%- l+=1 %>
1079 <%- when "items" -%>
1080 window-><%= self.name() %>.format[<%= l %>] = 0x0800 | <%= field["chars"] %>;<%- l+=1 %>
1081 <%- field["items"].each do |item| -%>
1082 window-><%= self.name() %>.format[<%= l %>] = MC_STR;<%- l+=1 %>
1083 <%- conv_euc_to_TCArray(item["text"]).each do |ch| -%>
1084 window-><%= self.name() %>.format[<%= l %>] = 0x<%= ch.to_s(16) %>;<%- l+=1 %>
1087 window-><%= self.name() %>.format[<%= l %>] = TNULL;<%- l+=1 %>
1088 <%- when "fixed" -%>
1089 <%- conv_euc_to_TCArray(field["text"]).each do |ch| -%>
1090 window-><%= self.name() %>.format[<%= l %>] = 0x<%= ch.to_s(16) %>;<%- l+=1 %>
1094 window-><%= self.name() %>.format[<%= l %>] = TNULL;<%- l+=1 %>
1096 <%- @yaml["fields"].each do |field| -%>
1097 <%- case field["type"] -%>
1098 <%- when "number" -%>
1099 window-><%= self.name() %>.cv[<%= l %>] = <%= field["min"] %>;<%- l+=1 %>
1100 <%- when "items" -%>
1101 window-><%= self.name() %>.cv[<%= l %>] = 0;<%- l+=1 %>
1104 window-><%= self.name() %>.nextaction = False;
1107 erb = ERB.new(script, nil, '-');
1111 def generate_create_systemcall_direct()
1112 script = "ccre_sbx(wid, SB_PARTS|P_DISP, &r, window-><%= self.name() %>.format, <%= self.calc_serialbox_fieldsnumber() %>, window-><%= self.name() %>.cv, NULL)"
1114 erb = ERB.new(script, nil, '-');
1118 def generate_loadvalue_in_open()
1120 cset_val(window-><%= self.name() %>.id, <%= self.calc_serialbox_fieldsnumber() %>, (W*)(window-><%= self.name() %>.cv));
1123 erb = ERB.new(script, nil, '-');
1127 def generate_savevalue_in_close()
1129 err = cget_val(window-><%= self.name() %>.id, <%= self.calc_serialbox_fieldsnumber() %>, (W*)(window-><%= self.name() %>.cv));
1132 erb = ERB.new(script, nil, '-');
1136 def generate_action_in_butdnwork(main_name, window_name)
1138 if (id == window-><%= self.name() %>.id) {
1139 <%= window_name %>_action<%= self.name() %>(window, wev, evt);
1144 erb = ERB.new(script, nil, '-');
1149 class HMISwitchSelectorParts < HMIParts
1150 def calc_formatlength()
1152 @yaml["fields"].each { |field|
1153 l+= 1 + calc_euc_to_TCArray_length(field["text"]);
1155 l += 1; # for last TNULL
1158 def is_need_eventbreak()
1162 def generate_header_eventtype_enumulate(main_name, window_name)
1164 <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_CHANGE,
1167 erb = ERB.new(script, nil, '-');
1171 def generate_header_eventstruct_definition(main_name, window_name)
1173 struct <%= window_name %>_eventdata_<%= self.name() %>_change_t_ {
1174 <%= window_name.upcase %>_<%= self.name().upcase %>VALUE_T value;
1176 typedef struct <%= window_name %>_eventdata_<%= self.name() %>_change_t_ <%= window_name %>_eventdata_<%= self.name() %>_change_t;
1180 erb = ERB.new(script, nil, '-');
1184 def generate_header_eventunion_member(main_name, window_name)
1186 <%= window_name %>_eventdata_<%= self.name() %>_change_t <%= window_name %>_<%= self.name() %>_change;
1189 erb = ERB.new(script, nil, '-');
1193 def generate_prototypes(window_name)
1195 enum <%= window_name.upcase %>_<%= self.name().upcase %>VALUE_T_ {
1196 <%= window_name.upcase %>_<%= self.name().upcase %>VALUE_NOSEL = 0,
1197 <%- @yaml["fields"].each do |field| -%>
1198 <%= window_name.upcase %>_<%= self.name().upcase %>VALUE_<%= field["name"].upcase %>,
1201 typedef enum <%= window_name.upcase %>_<%= self.name().upcase %>VALUE_T_ <%= window_name.upcase %>_<%= self.name().upcase %>VALUE_T;
1202 IMPORT W <%= window_name %>_set<%= self.name() %>value(<%= window_name %>_t *window, <%= window_name.upcase %>_<%= self.name().upcase %>VALUE_T value);
1203 IMPORT W <%= window_name %>_get<%= self.name() %>value(<%= window_name %>_t *window, <%= window_name.upcase %>_<%= self.name().upcase %>VALUE_T *value);
1206 erb = ERB.new(script, nil, '-');
1210 def generate_source_struct(window_name)
1214 <%- if self.is_databox_use() -%>
1217 TC format[<%= self.calc_formatlength()%>];
1219 <%= window_name.upcase %>_<%= self.name().upcase %>VALUE_T value;
1220 } <%= self.name() %>;
1223 erb = ERB.new(script, nil, '-');
1227 def generate_source_functions(main_name, window_name)
1229 EXPORT W <%= window_name %>_set<%= self.name() %>value(<%= window_name %>_t *window, <%= window_name.upcase %>_<%= self.name().upcase %>VALUE_T value)
1233 val = window-><%= self.name() %>.value = value;
1234 if (window->wid < 0) {
1238 return cset_val(window-><%= self.name() %>.id, 1, (W*)(&val));
1241 EXPORT W <%= window_name %>_get<%= self.name() %>value(<%= window_name %>_t *window, <%= window_name.upcase %>_<%= self.name().upcase %>VALUE_T *value)
1245 if (window->wid > 0) {
1246 err = cget_val(window-><%= self.name() %>.id, 1, (W*)(&val));
1251 *value = window-><%= self.name() %>.value = val;
1256 LOCAL VOID <%= window_name %>_action<%= self.name() %>(<%= window_name %>_t *window, WEVENT *wev, <%= main_name %>event_t *evt)
1260 i = cact_par(window-><%= self.name() %>.id, wev);
1261 if ((i & 0x5000) != 0x5000) {
1264 window-><%= self.name() %>.value = i & 0xfff;
1265 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_CHANGE;
1266 evt->data.<%= window_name %>_<%= self.name() %>_change.value = window-><%= self.name() %>.value;
1271 erb = ERB.new(script, nil, '-');
1275 def generate_initialize_in_new()
1277 window-><%= self.name() %>.id = -1;
1278 <%- if self.is_databox_use() -%>
1279 window-><%= self.name() %>.dnum = dnum_<%= self.name() %>;
1282 <%- @yaml["fields"].each do |field| -%>
1283 window-><%= self.name() %>.format[<%= l %>] = MC_STR;<%- l+=1 %>
1284 <%- conv_euc_to_TCArray(field["text"]).each do |ch| -%>
1285 window-><%= self.name() %>.format[<%= l %>] = 0x<%= ch.to_s(16) %>;<%- l+=1 %>
1288 window-><%= self.name() %>.format[<%= l %>] = TNULL;<%- l+=1 %>
1290 window-><%= self.name() %>.value = 0;
1293 erb = ERB.new(script, nil, '-');
1297 def generate_create_systemcall_direct()
1298 script = "ccre_sel(wid, WS_PARTS|P_DISP, &r, window-><%= self.name() %>.value, window-><%= self.name() %>.format, NULL)"
1300 erb = ERB.new(script, nil, '-');
1304 def generate_loadvalue_in_open()
1306 cset_val(window-><%= self.name() %>.id, 1, (W*)(&window-><%= self.name() %>.value));
1309 erb = ERB.new(script, nil, '-');
1313 def generate_savevalue_in_close()
1315 err = cget_val(window-><%= self.name() %>.id, 1, (W*)(&window-><%= self.name() %>.value));
1318 erb = ERB.new(script, nil, '-');
1322 def generate_action_in_butdnwork(main_name, window_name)
1324 if (id == window-><%= self.name() %>.id) {
1325 <%= window_name %>_action<%= self.name() %>(window, wev, evt);
1330 erb = ERB.new(script, nil, '-');
1335 def generate_parts(type, a)
1338 return HMITextBoxParts.new(a);
1339 when "secrettextbox"
1340 return HMISecretTextBoxParts.new(a);
1341 when "textmomentallyswitch"
1342 return HMITextMomentallySwitchParts.new(a);
1344 return HMISerialBoxParts.new(a);
1346 return HMINumberBoxParts.new(a);
1347 when "switchselector"
1348 return HMISwitchSelectorParts.new(a);
1353 attr_accessor :yaml, :parts
1354 def initialize(yaml)
1356 @parts = Array.new();
1357 if yaml["parts"] != nil
1358 yaml["parts"].each { |a|
1359 w = generate_parts(a["type"], a)
1365 @yaml["window_name"]
1367 def is_attr_xxx(name)
1368 if @yaml["attributes"] == nil || @yaml["attributes"].empty?
1371 @yaml["attributes"].any? { |item|
1376 def is_exportevent_xxx(name)
1377 if @yaml["export_events"] == nil || @yaml["export_events"].empty?
1380 @yaml["export_events"].any? { |item|
1385 def is_attr_scrollable()
1386 self.is_attr_xxx("scrollable");
1388 def is_attr_resizable()
1389 self.is_attr_xxx("resizable");
1391 def is_attr_opencheckable()
1392 self.is_attr_xxx("opencheckable");
1394 def is_attr_subwindow()
1395 self.is_attr_xxx("subwindow");
1397 def is_attr_alwaysopen()
1398 self.is_attr_xxx("alwaysopen");
1400 def is_exportevent_draw()
1401 self.is_exportevent_xxx("draw");
1403 def is_exportevent_butdn()
1404 self.is_exportevent_xxx("butdn");
1406 def is_exportevent_paste()
1407 self.is_exportevent_xxx("paste");
1409 def is_exportevent_close()
1410 self.is_exportevent_xxx("close");
1412 def is_exportevent_switch()
1413 self.is_exportevent_xxx("switch");
1415 def is_exportevent_mousemove()
1416 self.is_exportevent_xxx("mousemove");
1418 def is_exportevent_scroll()
1419 self.is_exportevent_xxx("scroll");
1421 def is_exist_controllparts()
1424 def is_exist_nondatabox_controllparts()
1425 @parts.any? { |item|
1426 !item.is_databox_use();
1432 def get_window_width()
1435 def get_window_height()
1438 def get_window_title()
1441 def is_exist_eventbreak_parts()
1442 @parts.any? { |item|
1443 item.is_need_eventbreak();
1446 def get_window_parent()
1449 def get_window_title_max_length()
1450 len = @yaml["title_max_length"];
1457 def generate_header_eventtype_enumulate(main_name)
1459 <%- if self.is_exportevent_draw() -%>
1460 <%= main_name.upcase %>EVENT_TYPE_<%= self.struct_name().upcase %>_DRAW,
1462 <%- if self.is_attr_resizable() -%>
1463 <%= main_name.upcase %>EVENT_TYPE_<%= self.struct_name().upcase %>_RESIZE,
1465 <%- if self.is_exportevent_close() -%>
1466 <%= main_name.upcase %>EVENT_TYPE_<%= self.struct_name().upcase %>_CLOSE,
1468 <%- if self.is_exportevent_butdn() -%>
1469 <%= main_name.upcase %>EVENT_TYPE_<%= self.struct_name().upcase %>_BUTDN,
1471 <%- if self.is_exportevent_paste() -%>
1472 <%= main_name.upcase %>EVENT_TYPE_<%= self.struct_name().upcase %>_PASTE,
1474 <%- if self.is_exportevent_switch() -%>
1475 <%= main_name.upcase %>EVENT_TYPE_<%= self.struct_name().upcase %>_SWITCH,
1477 <%- if self.is_exportevent_mousemove() -%>
1478 <%= main_name.upcase %>EVENT_TYPE_<%= self.struct_name().upcase %>_MOUSEMOVE,
1480 <%- if self.is_exportevent_scroll() and self.is_attr_scrollable() -%>
1481 <%= main_name.upcase %>EVENT_TYPE_<%= self.struct_name().upcase %>_SCROLL,
1483 <%- @parts.each do |p| -%><%= p.generate_header_eventtype_enumulate(main_name, self.struct_name()) %><%- end -%>
1486 erb = ERB.new(script, nil, '-');
1490 def generate_header_partsevent_struct(main_name)
1492 <%- @parts.each do |p| -%><%= p.generate_header_eventstruct_definition(main_name, self.struct_name()) %><%- end -%>
1495 erb = ERB.new(script, nil, '-');
1499 def generate_header_partsevent_unionmember(main_name)
1501 <%- @parts.each do |p| -%><%= p.generate_header_eventunion_member(main_name, self.struct_name()) %><%- end -%>
1504 erb = ERB.new(script, nil, '-');
1508 def generate_prototypes()
1510 typedef struct <%= self.struct_name() %>_t_ <%= self.struct_name() %>_t;
1511 <%- if self.is_attr_scrollable() -%>
1512 typedef VOID (*<%= self.struct_name() %>_scrollcalback)(VP arg, W dh, W dv);
1515 <%- if self.is_attr_scrollable() -%>
1516 IMPORT VOID <%= self.struct_name() %>_scrollbyvalue(<%= self.struct_name() %>_t *window, W dh, W dv);
1517 IMPORT W <%= self.struct_name() %>_setdrawrect(<%= self.struct_name() %>_t *window, W l, W t, W r, W b);
1518 IMPORT W <%= self.struct_name() %>_setworkrect(<%= self.struct_name() %>_t *window, W l, W t, W r, W b);
1519 IMPORT W <%= self.struct_name() %>_scrollworkarea(<%= self.struct_name() %>_t *window, W dh, W dv);
1520 IMPORT W <%= self.struct_name() %>_getworkrect(<%= self.struct_name() %>_t *window, RECT *r);
1522 <%- if self.is_attr_opencheckable() -%>
1523 IMPORT Bool <%= self.struct_name() %>_isopen(<%= self.struct_name() %>_t *window);
1525 <%- if self.is_exportevent_paste() -%>
1526 IMPORT VOID <%= self.struct_name() %>_responsepasterequest(<%= self.struct_name() %>_t *window, W nak, PNT *pos);
1528 <%- if self.is_exportevent_draw() -%>
1529 IMPORT W <%= self.struct_name() %>_startredisp(<%= self.struct_name() %>_t *window, RECT *r);
1530 IMPORT W <%= self.struct_name() %>_endredisp(<%= self.struct_name() %>_t *window);
1531 IMPORT W <%= self.struct_name() %>_eraseworkarea(<%= self.struct_name() %>_t *window, RECT *r);
1533 IMPORT W <%= self.struct_name() %>_requestredisp(<%= self.struct_name() %>_t *window);
1534 <%- if self.is_exportevent_butdn() -%>
1535 IMPORT GID <%= self.struct_name() %>_startdrag(<%= self.struct_name() %>_t *window);
1536 IMPORT W <%= self.struct_name() %>_getdrag(<%= self.struct_name() %>_t *window, PNT *pos, WID *wid, PNT *pos_butup);
1537 IMPORT VOID <%= self.struct_name() %>_enddrag(<%= self.struct_name() %>_t *window);
1539 IMPORT GID <%= self.struct_name() %>_getGID(<%= self.struct_name() %>_t *window);
1540 IMPORT WID <%= self.struct_name() %>_getWID(<%= self.struct_name() %>_t *window);
1541 IMPORT W <%= self.struct_name() %>_settitle(<%= self.struct_name() %>_t *window, TC *title);
1542 IMPORT Bool <%= self.struct_name() %>_isactive(<%= self.struct_name() %>_t *window);
1543 <%- if !self.is_attr_alwaysopen() -%>
1544 IMPORT W <%= self.struct_name() %>_open(<%= self.struct_name() %>_t *window);
1545 IMPORT VOID <%= self.struct_name() %>_close(<%= self.struct_name() %>_t *window);
1547 <%- @parts.each do |p| -%><%= p.generate_prototypes(self.struct_name()) %><%- end -%>
1550 erb = ERB.new(script, nil, '-');
1554 def generate_initialize_arguments()
1556 <%- if self.is_attr_resizable() -%>RECT *r<% else %>PNT *p<% end %>, <%- if self.is_attr_subwindow() -%><%= self.get_window_parent() %>_t *parent<%- else -%>WID parent<%- end -%>, TC *title, PAT *bgpat<%- @parts.each do |p| -%><% if p.is_databox_specify_argument() %>, W dnum_<%= p.name() %><% end %><%- end -%><%- -%>
1559 erb = ERB.new(script, nil, '-');
1563 def generate_initialize_arguments_values()
1565 <%- if self.is_attr_resizable() -%>r<% else %>p<% end %>, parent, title, bgpat<%- @parts.each do |p| -%><% if p.is_databox_specify_argument() %>, dnum_<%= p.name() %><% end %><%- end -%><%- -%>
1568 erb = ERB.new(script, nil, '-');
1572 def generate_source_struct()
1574 struct <%= self.struct_name() %>_t_ {
1575 <%- if self.is_need_flag() -%>
1580 <%- if self.is_attr_subwindow() -%>
1581 <%= self.get_window_parent() %>_t *parent;
1587 <%- if self.is_attr_scrollable() -%>
1588 hmi_windowscroll_t wscr;
1590 <%- if !self.is_attr_alwaysopen() -%>
1591 TC title[<%= self.get_window_title_max_length() %>+1];
1594 <%- @parts.each do |p| -%><%= p.generate_source_struct(self.struct_name()) %><%- end -%>
1599 erb = ERB.new(script, nil, '-');
1603 def generate_source_functions(main_name)
1605 <%- if self.is_need_flag() -%>
1606 #define <%= self.struct_name().upcase %>_FLAG_DRAWREQUEST 0x00000001
1607 <%- if self.is_attr_scrollable() -%>
1608 #define <%= self.struct_name().upcase %>_FLAG_RSCROLLING 0x00000002
1609 #define <%= self.struct_name().upcase %>_FLAG_BSCROLLING 0x00000004
1611 <%- if self.is_exist_eventbreak_parts -%>
1612 #define <%= self.struct_name().upcase %>_FLAG_PARTS_OTHEREVENT 0x0000000f
1613 #define <%= self.struct_name().upcase %>_FLAG_PARTS_NEXTACTION 0x00000010
1616 #define <%= self.struct_name() %>_setflag(window, flagx) (window)->flag = (window)->flag | (flagx)
1617 #define <%= self.struct_name() %>_clearflag(window, flagx) (window)->flag = (window)->flag & ~(flagx)
1618 #define <%= self.struct_name() %>_issetflag(window, flagx) (((window)->flag & (flagx)) == 0 ? False : True)
1621 <%- @parts.each do |p| -%><%= p.generate_source_functions(main_name, self.struct_name()) %><%- end -%>
1622 <%- if self.is_attr_scrollable() -%>
1623 EXPORT VOID <%= self.struct_name() %>_scrollbyvalue(<%= self.struct_name() %>_t *window, W dh, W dv)
1625 hmi_windowscroll_scrollworkrect(&window->wscr, dh, dv);
1628 EXPORT W <%= self.struct_name() %>_setdrawrect(<%= self.struct_name() %>_t *window, W l, W t, W r, W b)
1630 return hmi_windowscroll_setdrawrect(&window->wscr, l, t, r, b);
1633 EXPORT W <%= self.struct_name() %>_setworkrect(<%= self.struct_name() %>_t *window, W l, W t, W r, W b)
1635 return hmi_windowscroll_setworkrect(&window->wscr, l, t, r, b);
1638 EXPORT W <%= self.struct_name() %>_scrollworkarea(<%= self.struct_name() %>_t *window, W dh, W dv)
1641 err = wscr_wnd(window->wid, NULL, dh, dv, W_MOVE|W_RDSET);
1645 if ((err & W_RDSET) != 0) {
1646 <%= self.struct_name() %>_setflag(window, <%= self.struct_name().upcase %>_FLAG_DRAWREQUEST);
1651 EXPORT W <%= self.struct_name() %>_getworkrect(<%= self.struct_name() %>_t *window, RECT *r)
1653 return wget_wrk(window->wid, r);
1657 <%- if self.is_attr_opencheckable() -%>
1658 EXPORT Bool <%= self.struct_name() %>_isopen(<%= self.struct_name() %>_t *window)
1660 if (window->wid < 0) {
1667 <%- if self.is_exportevent_paste() -%>
1668 EXPORT VOID <%= self.struct_name() %>_responsepasterequest(<%= self.struct_name() %>_t *window, W nak, PNT *pos)
1671 window->savedwev.r.r.p.rightbot.x = pos->x;
1672 window->savedwev.r.r.p.rightbot.y = pos->y;
1674 wrsp_evt(&window->savedwev, nak);
1678 <%- if self.is_exportevent_draw() -%>
1679 EXPORT W <%= self.struct_name() %>_startredisp(<%= self.struct_name() %>_t *window, RECT *r)
1681 return wsta_dsp(window->wid, r, NULL);
1684 EXPORT W <%= self.struct_name() %>_endredisp(<%= self.struct_name() %>_t *window)
1686 return wend_dsp(window->wid);
1689 EXPORT W <%= self.struct_name() %>_eraseworkarea(<%= self.struct_name() %>_t *window, RECT *r)
1691 return wera_wnd(window->wid, r);
1695 LOCAL VOID <%= self.struct_name() %>_draw(<%= self.struct_name() %>_t *window, RECT *r)
1697 cdsp_pwd(window->wid, r, P_RDISP);
1700 LOCAL VOID <%= self.struct_name() %>_redisp(<%= self.struct_name() %>_t *window)
1704 if (wsta_dsp(window->wid, &r, NULL) == 0) {
1707 wera_wnd(window->wid, &r);
1708 <%= self.struct_name() %>_draw(window, &r);
1709 } while (wend_dsp(window->wid) > 0);
1713 EXPORT W <%= self.struct_name() %>_requestredisp(<%= self.struct_name() %>_t *window)
1715 return wreq_dsp(window->wid);
1718 <%- if self.is_exportevent_butdn() -%>
1719 EXPORT GID <%= self.struct_name() %>_startdrag(<%= self.struct_name() %>_t *window)
1721 return wsta_drg(window->wid, 0);
1724 EXPORT W <%= self.struct_name() %>_getdrag(<%= self.struct_name() %>_t *window, PNT *pos, WID *wid, PNT *pos_butup)
1728 etype = wget_drg(pos, &window->savedwev);
1729 *wid = window->savedwev.s.wid;
1730 if (etype == EV_BUTUP) {
1731 *pos_butup = window->savedwev.s.pos;
1737 EXPORT VOID <%= self.struct_name() %>_enddrag(<%= self.struct_name() %>_t *window)
1743 EXPORT GID <%= self.struct_name() %>_getGID(<%= self.struct_name() %>_t *window)
1745 return wget_gid(window->wid);
1748 EXPORT WID <%= self.struct_name() %>_getWID(<%= self.struct_name() %>_t *window)
1753 EXPORT W <%= self.struct_name() %>_settitle(<%= self.struct_name() %>_t *window, TC *title)
1755 <%- if !self.is_attr_alwaysopen() -%>
1756 tc_strncpy(window->title, title, <%= self.get_window_title_max_length() %>);
1757 window->title[<%= self.get_window_title_max_length() %>] = TNULL;
1758 return wset_tit(window->wid, -1, window->title, 0);
1760 return wset_tit(window->wid, -1, title, 0);
1764 EXPORT Bool <%= self.struct_name() %>_isactive(<%= self.struct_name() %>_t *window)
1767 wid = wget_act(NULL);
1768 if (window->wid == wid) {
1774 LOCAL VOID <%= self.struct_name() %>_butdnwork(<%= self.struct_name() %>_t *window, WEVENT *wev, <%= main_name %>event_t *evt)
1776 <%- if self.is_exist_controllparts() -%>
1780 ret = cfnd_par(window->wid, wev->s.pos, &id);
1784 <%- @parts.each do |p| -%><%= p.generate_action_in_butdnwork(main_name, self.struct_name()) %><%- end -%>
1786 <%- if self.is_exportevent_butdn() -%>
1787 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= self.struct_name().upcase %>_BUTDN;
1788 evt->data.<%= self.struct_name() %>_butdn.type = wchk_dck(wev->s.time);
1789 evt->data.<%= self.struct_name() %>_butdn.pos = wev->s.pos;
1790 memcpy(&window->savedwev, wev, sizeof(WEVENT));
1794 <%- if self.is_attr_resizable() -%>
1795 LOCAL VOID <%= self.struct_name() %>_resize(<%= self.struct_name() %>_t *window, SIZE *sz)
1798 Bool workchange = False;
1800 wget_wrk(window->wid, &work);
1801 if (work.c.left != 0) {
1805 if (work.c.top != 0) {
1809 wset_wrk(window->wid, &work);
1810 gset_vis(window->gid, work);
1812 if (workchange == True) {
1813 wera_wnd(window->wid, NULL);
1814 wreq_dsp(window->wid);
1817 sz->v = work.c.bottom - work.c.top;
1818 sz->h = work.c.right - work.c.left;
1822 <% if self.is_attr_alwaysopen() %>LOCAL<% else %>EXPORT<% end %> W <%= self.struct_name() %>_open(<%= self.struct_name() %>_t *window<% if self.is_attr_alwaysopen() %>, TC *title<% end %>)
1825 <%- if self.is_exist_nondatabox_controllparts() -%>
1829 if (window->wid > 0) {
1833 wid = wopn_wnd(WA_STD<% if self.is_attr_subwindow() %>|WA_SUBW<% end %><% if self.is_attr_resizable() %>|WA_SIZE|WA_HHDL|WA_VHDL<% end %><% if self.is_attr_scrollable() %>|WA_BBAR|WA_RBAR<% end %>, <% if self.is_attr_subwindow() %>window->parent->wid<% else %>window->parent<% end %>, &(window->r), NULL, 2, <% if !self.is_attr_alwaysopen() %>window->title<%- else -%>title<%- end -%>, &window->bgpat, NULL);
1835 DP_ER("wopn_wnd: subjectoption error", wid);
1839 window->gid = wget_gid(wid);
1840 <%- if self.is_attr_scrollable() -%>
1841 hmi_windowscroll_settarget(&window->wscr, wid);
1844 <%- @parts.each do |p| -%><%= p.generate_create_in_open() %><%- end -%>
1851 <%- if !self.is_attr_alwaysopen() -%>
1852 EXPORT VOID <%= self.struct_name() %>_close(<%= self.struct_name() %>_t *window)
1857 if (window->wid < 0) {
1862 err = wget_sts(window->wid, &stat, NULL);
1866 <%- @parts.reverse_each do |p| -%><%= p.generate_savevalue_in_close() %><%- end -%>
1867 <%- if self.is_exist_controllparts() -%>
1868 cdel_pwd(window->wid, NOCLR);
1870 wcls_wnd(window->wid, CLR);
1878 erb = ERB.new(script, nil, '-');
1882 def generate_checkpartsflag_in_checkflag(main_name)
1884 <%- if self.is_exist_eventbreak_parts() -%>
1885 if (<%= self.struct_name() %>_issetflag(hmi-><%= self.struct_name() %>, <%= self.struct_name().upcase %>_FLAG_PARTS_OTHEREVENT) == True) {
1886 <%= self.struct_name() %>_clearflag(hmi-><%= self.struct_name() %>, <%= self.struct_name().upcase %>_FLAG_PARTS_OTHEREVENT);
1887 <%= self.struct_name() %>_setflag(hmi-><%= self.struct_name() %>, <%= self.struct_name().upcase %>_FLAG_PARTS_NEXTACTION);
1889 } else if (<%= self.struct_name() %>_issetflag(hmi-><%= self.struct_name() %>, <%= self.struct_name().upcase %>_FLAG_PARTS_NEXTACTION) == True) {
1890 <%= self.struct_name() %>_clearflag(hmi-><%= self.struct_name() %>, <%= self.struct_name().upcase %>_FLAG_PARTS_NEXTACTION);
1891 <%- self.parts.each do |p| -%>
1892 <%- if p.is_need_eventbreak() -%>
1893 if (hmi-><%= self.struct_name() %>-><%= p.name() %>.nextaction == True) {
1894 hmi->wev.s.type = EV_NULL;
1895 <%= self.struct_name() %>_action<%= p.name() %>(hmi-><%= self.struct_name() %>, &hmi->wev, &hmi->evt);
1904 erb = ERB.new(script, nil, '-');
1908 def generate_new_del_functions()
1910 EXPORT <%= self.struct_name() %>_t* <%= self.struct_name() %>_new(<%= self.generate_initialize_arguments() %>)
1912 <%= self.struct_name() %>_t *window;
1913 <%- if self.is_attr_scrollable() -%>
1917 window = (<%= self.struct_name() %>_t*)malloc(sizeof(<%= self.struct_name() %>_t));
1918 if (window == NULL) {
1921 <%- if self.is_attr_scrollable() -%>
1926 window->parent = parent;
1927 <%- if self.is_attr_resizable() -%>
1930 window->r.c.left = p->x;
1931 window->r.c.top = p->y;
1932 window->r.c.right = p->x + <%= self.get_window_width() %>;
1933 window->r.c.bottom = p->y + <%= self.get_window_height() %>;
1935 <%- if self.is_attr_scrollable() -%>
1936 err = hmi_windowscroll_initialize(&window->wscr, window->wid);
1942 <%- if !self.is_attr_alwaysopen() -%>
1943 tc_strset(window->title, TNULL, <%= self.get_window_title_max_length() %>+1);
1945 tc_strncpy(window->title, title, <%= self.get_window_title_max_length() %>);
1948 <%- conv_euc_to_TCArray(self.get_window_title()).each do |ch| -%>
1949 window->title[<%= l %>] = 0x<%= ch.to_s(16) %>;<%- l+=1 %>
1953 <%- @parts.each do |p| -%><%= p.generate_initialize_in_new() %><%- end -%>
1955 <%- if self.is_attr_alwaysopen() -%>
1956 err = <%= self.struct_name() %>_open(window, title);
1958 <%- if self.is_attr_scrollable() -%>
1959 hmi_windowscroll_finalize(&window->wscr);
1969 LOCAL VOID <%= self.struct_name() %>_delete(<%= self.struct_name() %>_t *window)
1971 if (window->wid > 0) {
1972 <%- if self.is_exist_controllparts() -%>
1973 cdel_pwd(window->wid, NOCLR);
1975 wcls_wnd(window->wid, CLR);
1977 <%- if self.is_attr_scrollable() -%>
1978 hmi_windowscroll_finalize(&window->wscr);
1985 erb = ERB.new(script, nil, '-');
1991 attr_accessor :yaml, :win, :name
1992 def initialize(yaml)
1995 yaml["windows"].each { |a|
1996 w = HMIWindow.new(a);
2001 @yaml["generator"]["name"]
2003 def lisence_header()
2004 @yaml["generator"]["lisence_header"]
2006 def lisence_source()
2007 @yaml["generator"]["lisence_source"]
2009 def filename_header()
2010 @yaml["generator"]["output_header"]
2013 def generate_header_eventtype_enumulate()
2016 <%= self.main_name().upcase %>EVENT_TYPE_NONE,
2017 <%= self.main_name().upcase %>EVENT_TYPE_COMMON_MOUSEMOVE,
2018 <%= self.main_name().upcase %>EVENT_TYPE_COMMON_KEYDOWN,
2019 <%= self.main_name().upcase %>EVENT_TYPE_COMMON_MENU,
2020 <%= self.main_name().upcase %>EVENT_TYPE_COMMON_TIMEOUT,
2021 <%- @win.each do |w| -%><%= w.generate_header_eventtype_enumulate(self.main_name()) %><%- end -%>
2025 erb = ERB.new(script, nil, '-');
2028 def generate_header_eventtype_struct()
2030 struct <%= self.main_name() %>_eventdata_mousemove_t_ {
2033 typedef struct <%= self.main_name() %>_eventdata_mousemove_t_ <%= self.main_name() %>_eventdata_mousemove_t;
2035 struct <%= self.main_name() %>_eventdata_keydown_t_ {
2040 typedef struct <%= self.main_name() %>_eventdata_keydown_t_ <%= self.main_name() %>_eventdata_keydown_t;
2042 struct <%= self.main_name() %>_eventdata_menu_t_ {
2045 typedef struct <%= self.main_name() %>_eventdata_menu_t_ <%= self.main_name() %>_eventdata_menu_t;
2047 struct <%= self.main_name() %>_eventdata_timeout_t_ {
2050 typedef struct <%= self.main_name() %>_eventdata_timeout_t_ <%= self.main_name() %>_eventdata_timeout_t;
2052 <%- @win.each do |w| -%>
2053 <%- if w.is_exportevent_draw() -%>
2054 struct <%= w.struct_name() %>_eventdata_draw_t_ {
2056 typedef struct <%= w.struct_name() %>_eventdata_draw_t_ <%= w.struct_name() %>_eventdata_draw_t;
2059 <%- if w.is_attr_resizable() -%>
2060 struct <%= w.struct_name() %>_eventdata_resize_t_ {
2063 typedef struct <%= w.struct_name() %>_eventdata_resize_t_ <%= w.struct_name() %>_eventdata_resize_t;
2066 <%- if w.is_exportevent_close() -%>
2067 struct <%= w.struct_name() %>_eventdata_close_t_ {
2070 typedef struct <%= w.struct_name() %>_eventdata_close_t_ <%= w.struct_name() %>_eventdata_close_t;
2073 <%- if w.is_exportevent_butdn() -%>
2074 struct <%= w.struct_name() %>_eventdata_butdn_t_ {
2078 typedef struct <%= w.struct_name() %>_eventdata_butdn_t_ <%= w.struct_name() %>_eventdata_butdn_t;
2081 <%- if w.is_exportevent_paste() -%>
2082 struct <%= w.struct_name() %>_eventdata_paste_t_ {
2084 typedef struct <%= w.struct_name() %>_eventdata_paste_t_ <%= w.struct_name() %>_eventdata_paste_t;
2087 <%- if w.is_exportevent_switch() -%>
2088 struct <%= w.struct_name() %>_eventdata_switch_t_ {
2090 typedef struct <%= w.struct_name() %>_eventdata_switch_t_ <%= w.struct_name() %>_eventdata_switch_t;
2093 <%- if w.is_exportevent_mousemove() -%>
2094 struct <%= w.struct_name() %>_eventdata_mousemove_t_ {
2098 typedef struct <%= w.struct_name() %>_eventdata_mousemove_t_ <%= w.struct_name() %>_eventdata_mousemove_t;
2101 <%- if w.is_exportevent_scroll() and w.is_attr_scrollable() -%>
2102 struct <%= w.struct_name() %>_eventdata_scroll_t_ {
2106 typedef struct <%= w.struct_name() %>_eventdata_scroll_t_ <%= w.struct_name() %>_eventdata_scroll_t;
2109 <%= w.generate_header_partsevent_struct(self.main_name()) %><%- -%>
2113 erb = ERB.new(script, nil, '-');
2116 def generate_header_eventtype_union()
2118 struct <%= self.main_name() %>event_t_ {
2121 <%= self.main_name() %>_eventdata_mousemove_t common_mousemove;
2122 <%= self.main_name() %>_eventdata_keydown_t common_keydown;
2123 <%= self.main_name() %>_eventdata_menu_t common_menu;
2124 <%= self.main_name() %>_eventdata_timeout_t common_timeout;
2125 <%- @win.each do |w| -%>
2126 <%- if w.is_exportevent_draw() -%>
2127 <%= w.struct_name() %>_eventdata_draw_t <%= w.struct_name() %>_draw;
2129 <%- if w.is_attr_resizable() -%>
2130 <%= w.struct_name() %>_eventdata_resize_t <%= w.struct_name() %>_resize;
2132 <%- if w.is_exportevent_close() -%>
2133 <%= w.struct_name() %>_eventdata_close_t <%= w.struct_name() %>_close;
2135 <%- if w.is_exportevent_butdn() -%>
2136 <%= w.struct_name() %>_eventdata_butdn_t <%= w.struct_name() %>_butdn;
2138 <%- if w.is_exportevent_paste() -%>
2139 <%= w.struct_name() %>_eventdata_paste_t <%= w.struct_name() %>_paste;
2141 <%- if w.is_exportevent_switch() -%>
2142 <%= w.struct_name() %>_eventdata_switch_t <%= w.struct_name() %>_switch;
2144 <%- if w.is_exportevent_mousemove() -%>
2145 <%= w.struct_name() %>_eventdata_mousemove_t <%= w.struct_name() %>_mousemove;
2147 <%- if w.is_exportevent_scroll() and w.is_attr_scrollable() -%>
2148 <%= w.struct_name() %>_eventdata_scroll_t <%= w.struct_name() %>_scroll;
2150 <%- -%><%= w.generate_header_partsevent_unionmember(self.main_name()) %><%- -%>
2154 typedef struct <%= self.main_name() %>event_t_ <%= self.main_name() %>event_t;
2157 erb = ERB.new(script, nil, '-');
2160 def generate_header_main_prototypes()
2162 typedef struct <%= self.main_name() %>_t_ <%= self.main_name() %>_t;
2164 IMPORT <%= self.main_name() %>_t* <%= self.main_name() %>_new();
2165 IMPORT VOID <%= self.main_name() %>_delete(<%= self.main_name() %>_t *hmi);
2166 IMPORT W <%= self.main_name() %>_getevent(<%= self.main_name() %>_t *hmi, <%= self.main_name() %>event_t **evt);
2167 <%- @win.each do |w| -%>
2168 IMPORT <%= w.struct_name() %>_t* <%= self.main_name() %>_new<%= w.struct_name() %>(<%= self.main_name() %>_t *hmi, <%= w.generate_initialize_arguments() %>);
2170 <%- @win.each do |w| -%>
2171 IMPORT VOID <%= self.main_name() %>_delete<%= w.struct_name() %>(<%= self.main_name() %>_t *hmi, <%= w.struct_name() %>_t *window);
2175 erb = ERB.new(script, nil, '-');
2179 def generate_header()
2182 str += w.generate_prototypes() + "\n";
2184 str += self.generate_header_eventtype_enumulate() + "\n";
2185 str += self.generate_header_eventtype_struct();
2186 str += self.generate_header_eventtype_union() + "\n";
2187 str += self.generate_header_main_prototypes() + "\n";
2191 def generate_source_include_files()
2193 #include "<%= self.filename_header() %>"
2194 #include "hmi/hmi_windowscroll.h"
2197 #include <bstdlib.h>
2199 #include <tstring.h>
2200 #include <btron/btron.h>
2201 #include <btron/hmi.h>
2202 #include <btron/vobj.h>
2205 # define DP(arg) printf arg
2206 # define DP_ER(msg, err) printf("%s (%d/%x)\\n", msg, err>>16, err)
2208 # define DP(arg) /**/
2209 # define DP_ER(msg, err) /**/
2214 erb = ERB.new(script, nil, '-');
2218 def generate_source_mainloop_windowid_valuablelist()
2220 <%- @win.each_with_index do |w, idx| -%>
2221 <%= w.struct_name() %>_id<%- if idx != @win.length - 1 -%>, <%- end -%>
2224 erb = ERB.new(script, nil, '-');
2228 def generate_source_mainloop()
2230 LOCAL VOID <%= self.main_name() %>_setswitchbutdnflag(<%= self.main_name() %>_t *hmi)
2232 hmi->flag = hmi->flag | <%= self.main_name().upcase %>_FLAG_SWITCHBUTDN;
2235 LOCAL VOID <%= self.main_name() %>_clearswitchbutdnflag(<%= self.main_name() %>_t *hmi)
2237 hmi->flag = hmi->flag & ~<%= self.main_name().upcase %>_FLAG_SWITCHBUTDN;
2240 LOCAL Bool <%= self.main_name() %>_issetswitchbutdnflag(<%= self.main_name() %>_t *hmi)
2242 if ((hmi->flag & <%= self.main_name().upcase %>_FLAG_SWITCHBUTDN) == 0) {
2248 <%- @win.each do |w| -%>
2249 LOCAL Bool <%= self.main_name() %>_is<%= w.struct_name() %>WID(<%= self.main_name() %>_t *hmi, WID wid)
2251 if (hmi-><%= w.struct_name() %>->wid == wid) {
2258 LOCAL VOID <%= self.main_name() %>_weventnull(<%= self.main_name() %>_t *hmi, WEVENT *wev, <%= self.main_name() %>event_t *evt)
2260 cidl_par(wev->s.wid, &wev->s.pos);
2261 if (wev->s.cmd != W_WORK)
2262 return; /*ºî¶ÈÎΰ賰*/
2263 if (wev->s.stat & ES_CMD)
2264 return; /*Ì¿Îᥡ¼¤¬²¡¤µ¤ì¤Æ¤¤¤ë*/
2265 <%- @win.each do |w| -%>
2266 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->s.wid) == True) {
2267 <%- if w.is_exist_controllparts() -%>
2268 cidl_par(wev->s.wid, &wev->s.pos);
2270 <%- if w.is_exportevent_mousemove() -%>
2271 hmi->evt.type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_MOUSEMOVE;
2272 hmi->evt.data.<%= w.struct_name() %>_mousemove.pos = wev->s.pos;
2273 hmi->evt.data.<%= w.struct_name() %>_mousemove.stat = wev->s.stat;
2274 <%- elsif !w.is_exist_controllparts() -%>
2275 gset_ptr(PS_SELECT, NULL, -1, -1);
2281 hmi->evt.type = <%= self.main_name().upcase %>EVENT_TYPE_COMMON_MOUSEMOVE;
2282 hmi->evt.data.common_mousemove.pos = wev->s.pos;
2285 LOCAL VOID <%= self.main_name() %>_weventrequest(<%= self.main_name() %>_t *hmi, WEVENT *wev, <%= self.main_name() %>event_t *evt)
2287 switch (wev->g.cmd) {
2288 case W_REDISP: /*ºÆɽ¼¨Í×µá*/
2289 <%- @win.each do |w| -%>
2290 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->g.wid) == True) {
2291 <%- if w.is_exportevent_draw() -%>
2292 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_DRAW;
2294 <%= w.struct_name() %>_redisp(hmi-><%= w.struct_name() %>);
2300 case W_PASTE: /*Ž¹þ¤ßÍ×µá*/
2301 <%- @win.each do |w| -%>
2302 <%- if w.is_exportevent_paste() -%>
2303 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->g.wid) == True) {
2304 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_PASTE;
2305 memcpy(&hmi-><%= w.struct_name() %>->savedwev, wev, sizeof(WEVENT));
2310 wrsp_evt(wev, 1); /*NACK*/
2312 case W_DELETE: /*Êݸ½ªÎ»*/
2313 wrsp_evt(wev, 0); /*ACK*/
2314 <%- @win.each do |w| -%>
2315 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->g.wid) == True) {
2316 <%- if w.is_exportevent_close() -%>
2317 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_CLOSE;
2318 evt->data.<%= w.struct_name() %>_close.save = True;
2320 <%= w.struct_name() %>_close(hmi-><%= w.struct_name() %>);
2326 case W_FINISH: /*ÇÑ´þ½ªÎ»*/
2327 wrsp_evt(wev, 0); /*ACK*/
2328 <%- @win.each do |w| -%>
2329 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->g.wid) == True) {
2330 <%- if w.is_exportevent_close() -%>
2331 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_CLOSE;
2332 evt->data.<%= w.struct_name() %>_close.save = False;
2334 <%= w.struct_name() %>_close(hmi-><%= w.struct_name() %>);
2343 LOCAL VOID <%= self.main_name() %>_weventbutdn(<%= self.main_name() %>_t *hmi, WEVENT *wev, <%= self.main_name() %>event_t *evt)
2346 W dh, dv; /* TODO: add check for exist scrollable window */
2348 switch (wev->s.cmd) {
2350 switch (wchk_dck(wev->s.time)) {
2352 <%- @win.each do |w| -%>
2353 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->s.wid) == True) {
2354 <%- if w.is_exportevent_close() -%>
2355 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_CLOSE;
2356 evt->data.<%= w.struct_name() %>_close.save = True; /* TODO: tmp value */
2358 <%= w.struct_name() %>_close(hmi-><%= w.struct_name() %>);
2371 if (wmov_drg(wev, NULL) > 0) {
2372 <%- @win.each do |w| -%>
2373 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->s.wid) == True) {
2374 <%- if w.is_exportevent_draw() -%>
2375 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_DRAW;
2377 <%= w.struct_name() %>_redisp(hmi-><%= w.struct_name() %>);
2388 switch (wchk_dck(wev->s.time)) {
2390 i = wchg_wnd(wev->s.wid, NULL, W_MOVE);
2393 i = wrsz_drg(wev, NULL, NULL);
2399 <%- @win.each do |w| -%>
2400 <%- if w.is_attr_resizable() -%>
2401 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->s.wid) == True) {
2402 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_RESIZE;
2403 <%= w.struct_name() %>_resize(hmi-><%= w.struct_name() %>, &evt->data.<%= w.struct_name() %>_resize.work_sz);
2404 hmi_windowscroll_updatebar(&hmi-><%= w.struct_name() %>->wscr);
2406 <%= w.struct_name() %>_setflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_DRAWREQUEST);
2414 <%- @win.each do |w| -%>
2415 <%- if w.is_attr_scrollable() -%>
2416 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->s.wid) == True) {
2417 err = hmi_windowscroll_weventrbar(&hmi-><%= w.struct_name() %>->wscr, wev, &dh, &dv);
2422 <%= w.struct_name() %>_clearflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_RSCROLLING);
2424 <%= w.struct_name() %>_setflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_RSCROLLING);
2426 <%- if w.is_exportevent_scroll() -%>
2427 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_SCROLL;
2428 evt->data.<%= w.struct_name() %>_scroll.dh = dh;
2429 evt->data.<%= w.struct_name() %>_scroll.dv = dv;
2437 <%- @win.each do |w| -%>
2438 <%- if w.is_attr_scrollable() -%>
2439 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->s.wid) == True) {
2440 err = hmi_windowscroll_weventbbar(&hmi-><%= w.struct_name() %>->wscr, wev, &dh, &dv);
2445 <%= w.struct_name() %>_clearflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_BSCROLLING);
2447 <%= w.struct_name() %>_setflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_BSCROLLING);
2449 <%- if w.is_exportevent_scroll() -%>
2450 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_SCROLL;
2451 evt->data.<%= w.struct_name() %>_scroll.dh = dh;
2452 evt->data.<%= w.struct_name() %>_scroll.dv = dv;
2460 <%- @win.each do |w| -%>
2461 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->s.wid) == True) {
2462 <%= w.struct_name() %>_butdnwork(hmi-><%= w.struct_name() %>, wev, evt);
2472 LOCAL VOID <%= self.main_name() %>_weventswitch(<%= self.main_name() %>_t *hmi, WEVENT *wev, <%= self.main_name() %>event_t *evt)
2474 <%= self.main_name() %>_setswitchbutdnflag(hmi);
2475 <%- @win.each do |w| -%>
2476 <%- if w.is_exportevent_switch() -%>
2477 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->s.wid) == True) {
2478 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_SWITCH;
2485 LOCAL VOID <%= self.main_name() %>_weventreswitch(<%= self.main_name() %>_t *hmi, WEVENT *wev, <%= self.main_name() %>event_t *evt)
2487 <%= self.main_name() %>_setswitchbutdnflag(hmi);
2488 <%- @win.each do |w| -%>
2489 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->s.wid) == True) {
2490 <%- if w.is_exportevent_switch() -%>
2491 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_SWITCH;
2492 <%= w.struct_name() %>_setflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_DRAWREQUEST);
2495 <%- if w.is_exportevent_draw() -%>
2496 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_DRAW;
2498 <%= w.struct_name() %>_redisp(hmi-><%= w.struct_name() %>);
2506 LOCAL VOID <%= self.main_name() %>_receivemessage(<%= self.main_name() %>_t *hmi, <%= self.main_name() %>event_t *evt)
2511 err = rcv_msg(MM_ALL, &msg, sizeof(MESSAGE), WAIT|NOCLR);
2513 if (msg.msg_type == MS_TMOUT) { /* should be use other type? */
2514 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_COMMON_TIMEOUT;
2515 evt->data.common_timeout.code = msg.msg_body.TMOUT.code;
2518 clr_msg(MM_ALL, MM_ALL);
2521 LOCAL Bool <%= self.main_name() %>_checkflag(<%= self.main_name() %>_t *hmi, <%= self.main_name() %>event_t **evt)
2525 <%- @win.each do |w| -%>
2526 <%- if w.is_need_flag() and w.is_attr_scrollable() -%>
2527 if (<%= w.struct_name() %>_issetflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_RSCROLLING) == True) {
2528 err = hmi_windowscroll_weventrbar(&hmi-><%= w.struct_name() %>->wscr, &hmi->wev, &dh, &dv);
2530 <%= w.struct_name() %>_clearflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_RSCROLLING);
2534 <%= w.struct_name() %>_clearflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_RSCROLLING);
2536 <%= w.struct_name() %>_setflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_RSCROLLING);
2538 <%- if w.is_exportevent_scroll() -%>
2539 hmi->evt.type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_SCROLL;
2540 hmi->evt.data.<%= w.struct_name() %>_scroll.dh = dh;
2541 hmi->evt.data.<%= w.struct_name() %>_scroll.dv = dv;
2545 if (<%= w.struct_name() %>_issetflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_BSCROLLING) == True) {
2546 err = hmi_windowscroll_weventbbar(&hmi-><%= w.struct_name() %>->wscr, &hmi->wev, &dh, &dv);
2548 <%= w.struct_name() %>_clearflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_BSCROLLING);
2552 <%= w.struct_name() %>_clearflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_BSCROLLING);
2554 <%= w.struct_name() %>_setflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_BSCROLLING);
2556 <%- if w.is_exportevent_scroll() -%>
2557 hmi->evt.type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_SCROLL;
2558 hmi->evt.data.<%= w.struct_name() %>_scroll.dh = dh;
2559 hmi->evt.data.<%= w.struct_name() %>_scroll.dv = dv;
2565 <%- @win.each do |w| -%><%= w.generate_checkpartsflag_in_checkflag(self.main_name()) %><%- end -%>
2570 EXPORT W <%= self.main_name() %>_getevent(<%= self.main_name() %>_t *hmi, <%= self.main_name() %>event_t **evt)
2575 hmi->evt.type = <%= self.main_name().upcase %>EVENT_TYPE_NONE;
2579 ok = <%= self.main_name() %>_issetswitchbutdnflag(hmi);
2581 <%= self.main_name() %>_weventbutdn(hmi, wev0, &hmi->evt);
2582 <%= self.main_name() %>_clearswitchbutdnflag(hmi);
2586 <%- @win.each do |w| -%>
2587 <%- if w.is_need_flag() -%>
2588 if (<%= w.struct_name() %>_issetflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_DRAWREQUEST) == True) {
2589 <%- if w.is_exportevent_draw() -%>
2590 hmi->evt.type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_DRAW;
2592 <%= w.struct_name() %>_redisp(hmi-><%= w.struct_name() %>);
2594 <%= w.struct_name() %>_clearflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_DRAWREQUEST);
2600 ok = <%= self.main_name() %>_checkflag(hmi, evt);
2605 wget_evt(wev0, WAIT);
2606 switch (wev0->s.type) {
2608 <%= self.main_name() %>_weventnull(hmi, wev0, &hmi->evt);
2611 <%= self.main_name() %>_weventrequest(hmi, wev0, &hmi->evt);
2614 <%= self.main_name() %>_weventreswitch(hmi, wev0, &hmi->evt);
2617 <%= self.main_name() %>_weventswitch(hmi, wev0, &hmi->evt);
2620 <%= self.main_name() %>_weventbutdn(hmi, wev0, &hmi->evt);
2624 hmi->evt.type = <%= self.main_name().upcase %>EVENT_TYPE_COMMON_KEYDOWN;
2625 hmi->evt.data.common_keydown.keycode = wev0->e.data.key.code;
2626 hmi->evt.data.common_keydown.keytop = wev0->e.data.key.keytop;
2627 hmi->evt.data.common_keydown.stat = wev0->e.stat;
2633 oprc_dev(&wev0->e, NULL, 0);
2636 <%= self.main_name() %>_receivemessage(hmi, &hmi->evt);
2639 hmi->evt.type = <%= self.main_name().upcase %>EVENT_TYPE_COMMON_MENU;
2640 hmi->evt.data.common_menu.pos = wev0->s.pos;
2649 erb = ERB.new(script, nil, '-');
2653 def generate_struct()
2656 str += w.generate_source_struct();
2659 #define <%= self.main_name().upcase %>_FLAG_SWITCHBUTDN 0x00000001
2661 struct <%= self.main_name() %>_t_ {
2663 <%= self.main_name() %>event_t evt;
2665 <%- @win.each do |w| -%>
2666 <%= w.struct_name() %>_t *<%= w.struct_name() %>;
2671 erb = ERB.new(script, nil, '-');
2672 str += erb.result(binding)
2675 def generate_windowfunctions()
2678 str += w.generate_source_functions(self.main_name());
2683 def generate_source_new_del_wrappers()
2685 <%- @win.each do |w| -%>
2686 EXPORT <%= w.struct_name() %>_t* <%= self.main_name() %>_new<%= w.struct_name() %>(<%= self.main_name() %>_t *hmi, <%= w.generate_initialize_arguments() %>)
2688 <%- if w.is_attr_subwindow -%>
2689 if (parent == NULL) {
2693 if (hmi-><%= w.struct_name() %> != NULL) {
2696 hmi-><%= w.struct_name() %> = <%= w.struct_name() %>_new(<%= w.generate_initialize_arguments_values() %>);
2697 return hmi-><%= w.struct_name() %>;
2700 EXPORT VOID <%= self.main_name() %>_delete<%= w.struct_name() %>(<%= self.main_name() %>_t *hmi, <%= w.struct_name() %>_t *window)
2702 <%= w.struct_name() %>_delete(hmi-><%= w.struct_name() %>);
2703 hmi-><%= w.struct_name() %> = NULL;
2708 EXPORT <%= self.main_name() %>_t* <%= self.main_name() %>_new()
2710 <%= self.main_name() %>_t *hmi;
2712 hmi = (<%= self.main_name() %>_t *)malloc(sizeof(<%= self.main_name() %>_t));
2717 <%- @win.each do |w| -%>
2718 hmi-><%= w.struct_name() %> = NULL;
2724 EXPORT VOID <%= self.main_name() %>_delete(<%= self.main_name() %>_t *hmi)
2726 <%- @win.each do |w| -%>
2727 if (hmi-><%= w.struct_name() %> != NULL) {
2728 <%= w.struct_name() %>_delete(hmi-><%= w.struct_name() %>);
2735 erb = ERB.new(script, nil, '-');
2739 def generate_source_mainfunctions()
2742 str += w.generate_new_del_functions();
2744 str += self.generate_source_new_del_wrappers()
2748 def generate_source()
2750 str += self.generate_struct();
2751 str += self.generate_windowfunctions();
2752 str += self.generate_source_mainloop();
2753 str += self.generate_source_mainfunctions();
2760 def generate_header(filename, data)
2761 fd = File.open(filename, "w");
2762 fd.puts data.lisence_header();
2765 /* This file is automatically generated. */
2768 #include <btron/dp.h>
2769 #include <btron/hmi.h>
2772 fd.puts "#ifndef __" + filename.upcase.gsub(/\./, '_') + "__";
2773 fd.puts "#define __" + filename.upcase.gsub(/\./, '_') + "__";
2775 fd.puts data.generate_header();
2779 def generate_source(filename, data)
2780 fd = File.open(filename, "w");
2781 fd.puts data.lisence_source();
2784 /* This file is automatically generated. */
2787 fd.puts data.generate_source_include_files();
2789 fd.puts data.generate_source();
2795 yaml = YAML.load_file(ARGV[0]);
2796 data = HMIData.new(yaml);
2798 fname_header = yaml["generator"]["output_header"]
2799 fname_source = yaml["generator"]["output_source"]
2801 generate_header(fname_header, data);
2802 generate_source(fname_source, data);