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);
232 erb = ERB.new(script, nil, '-');
236 def generate_savevalue_in_close()
240 erb = ERB.new(script, nil, '-');
244 def generate_action_in_butdnwork(main_name, window_name)
248 erb = ERB.new(script, nil, '-');
253 class HMITextBoxParts < HMIParts
254 def is_need_eventbreak()
258 def generate_header_eventtype_enumulate(main_name, window_name)
260 <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_DETERMINE,
261 <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_COPY,
262 <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_MOVE,
263 <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_MENU,
264 <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_KEYMENU,
267 erb = ERB.new(script, nil, '-');
271 def generate_header_eventstruct_definition(main_name, window_name)
273 struct <%= window_name %>_eventdata_<%= self.name() %>_determine_t_ {
277 typedef struct <%= window_name %>_eventdata_<%= self.name() %>_determine_t_ <%= window_name %>_eventdata_<%= self.name() %>_determine_t;
279 struct <%= window_name %>_eventdata_<%= self.name() %>_copy_t_ {
283 typedef struct <%= window_name %>_eventdata_<%= self.name() %>_copy_t_ <%= window_name %>_eventdata_<%= self.name() %>_copy_t;
285 struct <%= window_name %>_eventdata_<%= self.name() %>_move_t_ {
289 typedef struct <%= window_name %>_eventdata_<%= self.name() %>_move_t_ <%= window_name %>_eventdata_<%= self.name() %>_move_t;
291 struct <%= window_name %>_eventdata_<%= self.name() %>_menu_t_ {
294 typedef struct <%= window_name %>_eventdata_<%= self.name() %>_menu_t_ <%= window_name %>_eventdata_<%= self.name() %>_menu_t;
296 struct <%= window_name %>_eventdata_<%= self.name() %>_keymenu_t_ {
299 typedef struct <%= window_name %>_eventdata_<%= self.name() %>_keymenu_t_ <%= window_name %>_eventdata_<%= self.name() %>_keymenu_t;
303 erb = ERB.new(script, nil, '-');
307 def generate_header_eventunion_member(main_name, window_name)
309 <%= window_name %>_eventdata_<%= self.name() %>_determine_t <%= window_name %>_<%= self.name() %>_determine;
310 <%= window_name %>_eventdata_<%= self.name() %>_copy_t <%= window_name %>_<%= self.name() %>_copy;
311 <%= window_name %>_eventdata_<%= self.name() %>_move_t <%= window_name %>_<%= self.name() %>_move;
312 <%= window_name %>_eventdata_<%= self.name() %>_menu_t <%= window_name %>_<%= self.name() %>_menu;
313 <%= window_name %>_eventdata_<%= self.name() %>_keymenu_t <%= window_name %>_<%= self.name() %>_keymenu;
316 erb = ERB.new(script, nil, '-');
320 def generate_prototypes(window_name)
322 IMPORT W <%= window_name %>_set<%= self.name() %>text(<%= window_name %>_t *window, TC *str, W len);
323 IMPORT W <%= window_name %>_get<%= self.name() %>text(<%= window_name %>_t *window, TC *str, W len);
324 IMPORT W <%= window_name %>_end<%= self.name() %>action(<%= window_name %>_t *window);
327 erb = ERB.new(script, nil, '-');
331 def generate_source_struct(window_name)
335 <% if self.is_databox_specify_argument() %>W dnum;<% end %>
336 TC buf[<%= self.text_length() %>+<%= self.get_attr_offset() %>+1];
340 } <%= self.name() %>;
343 erb = ERB.new(script, nil, '-');
347 def generate_source_functions(main_name, window_name)
349 EXPORT W <%= window_name %>_set<%= self.name() %>text(<%= window_name %>_t *window, TC *str, W len)
353 if (len < <%= self.text_length() %>) {
356 cp_len = <%= self.text_length() %>;
358 memcpy(window-><%= self.name() %>.buf+<%= self.get_attr_offset() %>, str, cp_len * sizeof(TC));
359 window-><%= self.name() %>.buf[<%= self.get_attr_offset() %> + cp_len] = TNULL;
360 window-><%= self.name() %>.buf_written = cp_len;
361 if (window->wid < 0) {
365 return cset_val(window-><%= self.name() %>.id, cp_len, (W*)(window-><%= self.name() %>.buf+<%= self.get_attr_offset() %>));
368 EXPORT W <%= window_name %>_get<%= self.name() %>text(<%= window_name %>_t *window, TC *str, W len)
372 if (window->wid > 0) {
373 err = cget_val(window-><%= self.name() %>.id, <%= self.text_length() %>, (W*)(window-><%= self.name() %>.buf+<%= self.get_attr_offset() %>));
377 window-><%= self.name() %>.buf_written = err;
380 if (len < window-><%= self.name() %>.buf_written) {
383 cp_len = window-><%= self.name() %>.buf_written;
385 memcpy(str, window-><%= self.name() %>.buf + <%= self.get_attr_offset() %>, cp_len * sizeof(TC));
390 LOCAL VOID <%= window_name %>_action<%= self.name() %>(<%= window_name %>_t *window, WEVENT *wev, <%= main_name %>event_t *evt)
394 i = cact_par(window-><%= self.name() %>.id, wev);
396 window-><%= self.name() %>.nextaction = True;
397 <%= window_name %>_setflag(window, <%= window_name.upcase %>_FLAG_PARTS_OTHEREVENT);
401 window-><%= self.name() %>.nextaction = False;
403 len = cget_val(window-><%= self.name() %>.id, <%= self.text_length() %>, (W*)(window-><%= self.name() %>.buf+<%= self.get_attr_offset() %>));
405 window-><%= self.name() %>.buf_written = len;
416 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_DETERMINE;
417 evt->data.<%= window_name %>_<%= self.name() %>_determine.value = window-><%= self.name() %>.buf+<%= self.get_attr_offset() %>;
418 evt->data.<%= window_name %>_<%= self.name() %>_determine.len = window-><%= self.name() %>.buf_written;
421 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_MOVE;
422 evt->data.<%= window_name %>_<%= self.name() %>_move.rel_wid = wev->s.wid;
423 evt->data.<%= window_name %>_<%= self.name() %>_move.pos = wev->s.pos;
426 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_COPY;
427 evt->data.<%= window_name %>_<%= self.name() %>_copy.rel_wid = wev->s.wid;
428 evt->data.<%= window_name %>_<%= self.name() %>_copy.pos = wev->s.pos;
431 if ((wev->s.type == EV_KEYDWN)&&(wev->s.stat & ES_CMD)) {
432 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_KEYMENU;
433 evt->data.<%= window_name %>_<%= self.name() %>_keymenu.keycode = wev->e.data.key.code;
435 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_MENU;
436 evt->data.<%= window_name %>_<%= self.name() %>_menu.pos = wev->s.pos;
438 window-><%= self.name() %>.nextaction = True;
439 <%= window_name %>_setflag(window, <%= window_name.upcase %>_FLAG_PARTS_NEXTACTION);
447 erb = ERB.new(script, nil, '-');
451 def generate_initialize_in_new()
453 window-><%= self.name() %>.id = -1;
454 <%- if self.is_databox_specify_argument() -%>
455 window-><%= self.name() %>.dnum = dnum_<%= self.name() %>;
457 memset(window-><%= self.name() %>.buf, 0, sizeof(TC)*<%= self.text_length() %>);
458 <%- if self.is_attr_specified() -%>
459 window-><%= self.name() %>.buf[0] = MC_ATTR;
460 *(COLOR*)(window-><%= self.name() %>.buf + 1) = <%= self.get_attrval_chcol() %>;
461 window-><%= self.name() %>.buf[3] = <%= self.get_attrval_class() %>;
462 window-><%= self.name() %>.buf[4] = <%= self.get_attrval_attr() %>;
463 window-><%= self.name() %>.buf[5] = <%= self.get_attrval_csize_h() %>;
464 window-><%= self.name() %>.buf[6] = <%= self.get_attrval_csize_v() %>;
465 window-><%= self.name() %>.buf[7] = TNULL;
467 window-><%= self.name() %>.buf[0] = MC_STR;
468 window-><%= self.name() %>.buf[1] = TNULL;
470 window-><%= self.name() %>.nextaction = False;
473 erb = ERB.new(script, nil, '-');
477 def generate_create_systemcall_direct()
478 script = "ccre_tbx(wid, TB_PARTS|P_DISP, &r, <%= self.text_length() %>, window-><%= self.name() %>.buf, NULL)"
480 erb = ERB.new(script, nil, '-');
484 def generate_savevalue_in_close()
486 err = cget_val(window-><%= self.name() %>.id, <%= self.text_length() %>, (W*)(window-><%= self.name() %>.buf+<%= self.get_attr_offset() %>));
488 window-><%= self.name() %>.buf_written = err;
492 erb = ERB.new(script, nil, '-');
496 def generate_action_in_butdnwork(main_name, window_name)
498 if (id == window-><%= self.name() %>.id) {
499 memcpy(&window->savedwev, wev, sizeof(WEVENT));
500 <%= window_name %>_action<%= self.name() %>(window, wev, evt);
505 erb = ERB.new(script, nil, '-');
510 class HMISecretTextBoxParts < HMITextBoxParts
511 def generate_create_systemcall_direct()
512 script = "ccre_xbx(wid, XB_PARTS|P_DISP, &r, <%= self.text_length() %>, window-><%= self.name() %>.buf, NULL);";
514 erb = ERB.new(script, nil, '-');
519 class HMINumberBoxParts < HMIParts
520 def is_need_eventbreak()
524 if @yaml["format"]["datatype"] == "double"
529 def is_pointdisplay()
530 ret = @yaml["format"]["pointdisplay"];
537 ret = @yaml["format"]["hankaku"];
544 sz = @yaml["format"]["fontsize"]
556 def get_decimalplace()
557 sz = @yaml["format"]["decimalplace"]
570 def generate_header_eventtype_enumulate(main_name, window_name)
572 <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_DETERMINE,
573 <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_COPY,
574 <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_MOVE,
575 <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_MENU,
576 <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_KEYMENU,
579 erb = ERB.new(script, nil, '-');
583 def generate_header_eventstruct_definition(main_name, window_name)
585 struct <%= window_name %>_eventdata_<%= self.name() %>_determine_t_ {
586 <% if self.is_double() %>DOUBLE<% else %>W<% end %> value;
588 typedef struct <%= window_name %>_eventdata_<%= self.name() %>_determine_t_ <%= window_name %>_eventdata_<%= self.name() %>_determine_t;
590 struct <%= window_name %>_eventdata_<%= self.name() %>_copy_t_ {
594 typedef struct <%= window_name %>_eventdata_<%= self.name() %>_copy_t_ <%= window_name %>_eventdata_<%= self.name() %>_copy_t;
596 struct <%= window_name %>_eventdata_<%= self.name() %>_move_t_ {
600 typedef struct <%= window_name %>_eventdata_<%= self.name() %>_move_t_ <%= window_name %>_eventdata_<%= self.name() %>_move_t;
602 struct <%= window_name %>_eventdata_<%= self.name() %>_menu_t_ {
605 typedef struct <%= window_name %>_eventdata_<%= self.name() %>_menu_t_ <%= window_name %>_eventdata_<%= self.name() %>_menu_t;
607 struct <%= window_name %>_eventdata_<%= self.name() %>_keymenu_t_ {
610 typedef struct <%= window_name %>_eventdata_<%= self.name() %>_keymenu_t_ <%= window_name %>_eventdata_<%= self.name() %>_keymenu_t;
614 erb = ERB.new(script, nil, '-');
618 def generate_header_eventunion_member(main_name, window_name)
620 <%= window_name %>_eventdata_<%= self.name() %>_determine_t <%= window_name %>_<%= self.name() %>_determine;
621 <%= window_name %>_eventdata_<%= self.name() %>_copy_t <%= window_name %>_<%= self.name() %>_copy;
622 <%= window_name %>_eventdata_<%= self.name() %>_move_t <%= window_name %>_<%= self.name() %>_move;
623 <%= window_name %>_eventdata_<%= self.name() %>_menu_t <%= window_name %>_<%= self.name() %>_menu;
624 <%= window_name %>_eventdata_<%= self.name() %>_keymenu_t <%= window_name %>_<%= self.name() %>_keymenu;
627 erb = ERB.new(script, nil, '-');
631 def generate_prototypes(window_name)
633 IMPORT W <%= window_name %>_set<%= self.name() %>value(<%= window_name %>_t *window, <% if self.is_double() %>DOUBLE<% else %>W<% end %> value);
634 IMPORT W <%= window_name %>_get<%= self.name() %>value(<%= window_name %>_t *window, <% if self.is_double() %>DOUBLE<% else %>W<% end %> *value);
637 erb = ERB.new(script, nil, '-');
641 def generate_source_struct(window_name)
645 <% if self.is_databox_specify_argument() %>W dnum;<% end %>
647 <% if self.is_double() %>DOUBLE<% else %>W<% end %> cv;
649 } <%= self.name() %>;
652 erb = ERB.new(script, nil, '-');
656 def generate_source_functions(main_name, window_name)
658 EXPORT W <%= window_name %>_set<%= self.name() %>value(<%= window_name %>_t *window, <% if self.is_double() %>DOUBLE<% else %>W<% end %> value)
660 window-><%= self.name() %>.cv = value;
661 if (window->wid < 0) {
665 return cset_val(window-><%= self.name() %>.id, <% if self.is_double() %>2<% else %>1<% end %>, (W*)(&window-><%= self.name() %>.cv));
668 EXPORT W <%= window_name %>_get<%= self.name() %>value(<%= window_name %>_t *window, <% if self.is_double() %>DOUBLE<% else %>W<% end %> *value)
672 if (window->wid > 0) {
673 err = cget_val(window-><%= self.name() %>.id, <% if self.is_double() %>2<% else %>1<% end %>, (W*)(&window-><%= self.name() %>.cv));
679 *value = window-><%= self.name() %>.cv;
683 LOCAL VOID <%= window_name %>_action<%= self.name() %>(<%= window_name %>_t *window, WEVENT *wev, <%= main_name %>event_t *evt)
687 i = cact_par(window-><%= self.name() %>.id, wev);
689 window-><%= self.name() %>.nextaction = True;
690 <%= window_name %>_setflag(window, <%= window_name.upcase %>_FLAG_PARTS_OTHEREVENT);
694 window-><%= self.name() %>.nextaction = False;
696 cget_val(window-><%= self.name() %>.id, <% if self.is_double() %>2<% else %>1<% end %>, (W*)(&window-><%= self.name() %>.cv));
706 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_DETERMINE;
707 evt->data.<%= window_name %>_<%= self.name() %>_determine.value = window-><%= self.name() %>.cv;
710 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_MOVE;
711 evt->data.<%= window_name %>_<%= self.name() %>_move.rel_wid = wev->s.wid;
712 evt->data.<%= window_name %>_<%= self.name() %>_move.pos = wev->s.pos;
715 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_COPY;
716 evt->data.<%= window_name %>_<%= self.name() %>_copy.rel_wid = wev->s.wid;
717 evt->data.<%= window_name %>_<%= self.name() %>_copy.pos = wev->s.pos;
720 if ((wev->s.type == EV_KEYDWN)&&(wev->s.stat & ES_CMD)) {
721 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_KEYMENU;
722 evt->data.<%= window_name %>_<%= self.name() %>_keymenu.keycode = wev->e.data.key.code;
724 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_MENU;
725 evt->data.<%= window_name %>_<%= self.name() %>_menu.pos = wev->s.pos;
727 window-><%= self.name() %>.nextaction = True;
728 <%= window_name %>_setflag(window, <%= window_name.upcase %>_FLAG_PARTS_NEXTACTION);
736 erb = ERB.new(script, nil, '-');
740 def generate_initialize_in_new()
742 window-><%= self.name() %>.id = -1;
743 <%- if self.is_databox_specify_argument() -%>
744 window-><%= self.name() %>.dnum = dnum_<%= self.name() %>;
746 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() %>;
747 window-><%= self.name() %>.cv = <% if self.is_double() %>0.0<% else %>0<% end %>;
748 window-><%= self.name() %>.nextaction = False;
751 erb = ERB.new(script, nil, '-');
755 def generate_create_systemcall_direct()
756 script = "ccre_nbx(wid, NB_PARTS|P_DISP, &r, window-><%= self.name() %>.format, (W*)&window-><%= self.name() %>.cv, NULL)"
758 erb = ERB.new(script, nil, '-');
762 def generate_savevalue_in_close()
764 err = cget_val(window-><%= self.name() %>.id, <% if self.is_double() %>2<% else %>1<% end %>, (W*)(&window-><%= self.name() %>.cv));
767 erb = ERB.new(script, nil, '-');
771 def generate_action_in_butdnwork(main_name, window_name)
773 if (id == window-><%= self.name() %>.id) {
774 <%= window_name %>_action<%= self.name() %>(window, wev, evt);
779 erb = ERB.new(script, nil, '-');
784 class HMITextMomentallySwitchParts < HMIParts
785 def generate_header_eventtype_enumulate(main_name, window_name)
787 <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_PUSH,
790 erb = ERB.new(script, nil, '-');
794 def generate_source_struct(window_name)
798 <% if self.is_databox_specify_argument() %>W dnum;<% end %>
799 } <%= self.name() %>;
802 erb = ERB.new(script, nil, '-');
806 def generate_create_systemcall_direct()
807 script = "ccre_msw(wid, MS_PARTS|P_DISP, &r, (TC[]){MC_STR, <%= self.text_array() %>}, NULL)"
809 erb = ERB.new(script, nil, '-');
813 def generate_action_in_butdnwork(main_name, window_name)
815 if (id == window-><%= self.name() %>.id) {
816 ret = cact_par(window-><%= self.name() %>.id, wev);
817 if ((ret & 0x5000) != 0x5000) {
820 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_PUSH;
825 erb = ERB.new(script, nil, '-');
830 class HMISerialBoxParts < HMIParts
831 def calc_serialbox_formatlength()
833 @yaml["fields"].each { |field|
836 l += 3; # specify, max, min
839 field["items"].each { |item| # item text
840 l+= 1 + calc_euc_to_TCArray_length(item["text"]);
844 l += calc_euc_to_TCArray_length(field["text"]);
847 l += 1; # for last TNULL
850 def calc_serialbox_fieldsnumber()
852 @yaml["fields"].each { |field|
854 when "number", "items"
857 # not variable field.
862 def is_need_eventbreak()
866 def generate_header_eventtype_enumulate(main_name, window_name)
870 erb = ERB.new(script, nil, '-');
874 def generate_prototypes(window_name)
876 struct <%= window_name %>_<%= self.name() %>value_t_ {
877 <%- @yaml["fields"].each do |field| -%>
878 <%- case field["type"] -%>
879 <%- when "number" -%>
880 W <%= field["name"] %>;
883 <%- field["items"].each do |item| -%>
884 <%= window_name.upcase %>_<%= self.name().upcase %>_<%= field["name"].upcase %>VALUE_<%= item["name"].upcase %>,
886 } <%= field["name"] %>;
890 typedef struct <%= window_name %>_<%= self.name() %>value_t_ <%= window_name %>_<%= self.name() %>value_t;
891 IMPORT W <%= window_name %>_set<%= self.name() %>value(<%= window_name %>_t *window, <%= window_name %>_<%= self.name() %>value_t *value);
892 IMPORT W <%= window_name %>_get<%= self.name() %>value(<%= window_name %>_t *window, <%= window_name %>_<%= self.name() %>value_t *value);
895 erb = ERB.new(script, nil, '-');
899 def generate_source_struct(window_name)
903 <% if self.is_databox_specify_argument() %>W dnum;<% end %>
904 TC format[<%= self.calc_serialbox_formatlength() %>];
905 W cv[<%= self.calc_serialbox_fieldsnumber() %>];
907 } <%= self.name() %>;
910 erb = ERB.new(script, nil, '-');
914 def generate_source_functions(main_name, window_name)
916 EXPORT W <%= window_name %>_set<%= self.name() %>value(<%= window_name %>_t *window, <%= window_name %>_<%= self.name() %>value_t *value)
919 <%- @yaml["fields"].each do |field| -%>
920 <%- case field["type"] -%>
921 <%- when "number" -%>
922 if ((<%= field["min"] %> <= value-><%= field["name"] %>)&&(value-><%= field["name"] %> <= <%= field["max"] %>)) {
923 window-><%= self.name() %>.cv[<%= j %>] = value-><%= field["name"] %>;<%- j+=1 %>
926 if ((0 <= value-><%= field["name"] %>)&&(value-><%= field["name"] %> < <%= field["items"].length %>)) {
927 window-><%= self.name() %>.cv[<%= j %>] = value-><%= field["name"] %>;<%- j+=1 %>
931 if (window->wid < 0) {
935 return cset_val(window-><%= self.name() %>.id, <%= self.calc_serialbox_fieldsnumber() %>, (W*)(window-><%= self.name() %>.cv));
938 EXPORT W <%= window_name %>_get<%= self.name() %>value(<%= window_name %>_t *window, <%= window_name %>_<%= self.name() %>value_t *value)
942 if (window->wid > 0) {
943 err = cget_val(window-><%= self.name() %>.id, <%= self.calc_serialbox_fieldsnumber() %>, (W*)(window-><%= self.name() %>.cv));
950 <%- @yaml["fields"].each do |field| -%>
951 <%- case field["type"] -%>
952 <%- when "number", "items" -%>
953 value-><%= field["name"] %> = window-><%= self.name() %>.cv[<%= j %>];<%- j+=1 %>
960 LOCAL VOID <%= window_name %>_action<%= self.name() %>(<%= window_name %>_t *window, WEVENT *wev, <%= main_name %>event_t *evt)
964 i = cact_par(window-><%= self.name() %>.id, wev);
966 window-><%= self.name() %>.nextaction = True;
967 <%= window_name %>_setflag(window, <%= window_name.upcase %>_FLAG_PARTS_OTHEREVENT);
971 window-><%= self.name() %>.nextaction = False;
973 cget_val(window-><%= self.name() %>.id, <%= self.calc_serialbox_fieldsnumber() %>, (W*)(window-><%= self.name() %>.cv));
974 /* TODO: export event */
991 erb = ERB.new(script, nil, '-');
995 def generate_initialize_in_new()
997 window-><%= self.name() %>.id = -1;
998 <%- if self.is_databox_specify_argument() -%>
999 window-><%= self.name() %>.dnum = dnum_<%= self.name() %>;
1002 <%- @yaml["fields"].each do |field| -%>
1003 <%- case field["type"] -%>
1004 <%- when "number" -%>
1005 window-><%= self.name() %>.format[<%= l %>] = 0x0e00 | <%= field["chars"] %>;<%- l+=1 %>
1006 window-><%= self.name() %>.format[<%= l %>] = <%= field["min"] %>;<%- l+=1 %>
1007 window-><%= self.name() %>.format[<%= l %>] = <%= field["max"] %>;<%- l+=1 %>
1008 <%- when "items" -%>
1009 window-><%= self.name() %>.format[<%= l %>] = 0x0800 | <%= field["chars"] %>;<%- l+=1 %>
1010 <%- field["items"].each do |item| -%>
1011 window-><%= self.name() %>.format[<%= l %>] = MC_STR;<%- l+=1 %>
1012 <%- conv_euc_to_TCArray(item["text"]).each do |ch| -%>
1013 window-><%= self.name() %>.format[<%= l %>] = 0x<%= ch.to_s(16) %>;<%- l+=1 %>
1016 window-><%= self.name() %>.format[<%= l %>] = TNULL;<%- l+=1 %>
1017 <%- when "fixed" -%>
1018 <%- conv_euc_to_TCArray(field["text"]).each do |ch| -%>
1019 window-><%= self.name() %>.format[<%= l %>] = 0x<%= ch.to_s(16) %>;<%- l+=1 %>
1023 window-><%= self.name() %>.format[<%= l %>] = TNULL;<%- l+=1 %>
1025 <%- @yaml["fields"].each do |field| -%>
1026 <%- case field["type"] -%>
1027 <%- when "number" -%>
1028 window-><%= self.name() %>.cv[<%= l %>] = <%= field["min"] %>;<%- l+=1 %>
1029 <%- when "items" -%>
1030 window-><%= self.name() %>.cv[<%= l %>] = 0;<%- l+=1 %>
1033 window-><%= self.name() %>.nextaction = False;
1036 erb = ERB.new(script, nil, '-');
1040 def generate_create_systemcall_direct()
1041 script = "ccre_sbx(wid, SB_PARTS|P_DISP, &r, window-><%= self.name() %>.format, <%= self.calc_serialbox_fieldsnumber() %>, window-><%= self.name() %>.cv, NULL)"
1043 erb = ERB.new(script, nil, '-');
1047 def generate_savevalue_in_close()
1049 err = cget_val(window-><%= self.name() %>.id, <%= self.calc_serialbox_fieldsnumber() %>, (W*)(window-><%= self.name() %>.cv));
1052 erb = ERB.new(script, nil, '-');
1056 def generate_action_in_butdnwork(main_name, window_name)
1058 if (id == window-><%= self.name() %>.id) {
1059 <%= window_name %>_action<%= self.name() %>(window, wev, evt);
1064 erb = ERB.new(script, nil, '-');
1069 class HMISwitchSelectorParts < HMIParts
1070 def calc_formatlength()
1072 @yaml["fields"].each { |field|
1073 l+= 1 + calc_euc_to_TCArray_length(field["text"]);
1075 l += 1; # for last TNULL
1078 def is_need_eventbreak()
1082 def generate_header_eventtype_enumulate(main_name, window_name)
1084 <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_CHANGE,
1087 erb = ERB.new(script, nil, '-');
1091 def generate_header_eventstruct_definition(main_name, window_name)
1093 struct <%= window_name %>_eventdata_<%= self.name() %>_change_t_ {
1094 <%= window_name.upcase %>_<%= self.name().upcase %>VALUE_T value;
1096 typedef struct <%= window_name %>_eventdata_<%= self.name() %>_change_t_ <%= window_name %>_eventdata_<%= self.name() %>_change_t;
1100 erb = ERB.new(script, nil, '-');
1104 def generate_header_eventunion_member(main_name, window_name)
1106 <%= window_name %>_eventdata_<%= self.name() %>_change_t <%= window_name %>_<%= self.name() %>_change;
1109 erb = ERB.new(script, nil, '-');
1113 def generate_prototypes(window_name)
1115 enum <%= window_name.upcase %>_<%= self.name().upcase %>VALUE_T_ {
1116 <%= window_name.upcase %>_<%= self.name().upcase %>VALUE_NOSEL = 0,
1117 <%- @yaml["fields"].each do |field| -%>
1118 <%= window_name.upcase %>_<%= self.name().upcase %>VALUE_<%= field["name"].upcase %>,
1121 typedef enum <%= window_name.upcase %>_<%= self.name().upcase %>VALUE_T_ <%= window_name.upcase %>_<%= self.name().upcase %>VALUE_T;
1122 IMPORT W <%= window_name %>_set<%= self.name() %>value(<%= window_name %>_t *window, <%= window_name.upcase %>_<%= self.name().upcase %>VALUE_T value);
1123 IMPORT W <%= window_name %>_get<%= self.name() %>value(<%= window_name %>_t *window, <%= window_name.upcase %>_<%= self.name().upcase %>VALUE_T *value);
1126 erb = ERB.new(script, nil, '-');
1130 def generate_source_struct(window_name)
1134 <%- if self.is_databox_use() -%>
1137 TC format[<%= self.calc_formatlength()%>];
1139 <%= window_name.upcase %>_<%= self.name().upcase %>VALUE_T value;
1140 } <%= self.name() %>;
1143 erb = ERB.new(script, nil, '-');
1147 def generate_source_functions(main_name, window_name)
1149 EXPORT W <%= window_name %>_set<%= self.name() %>value(<%= window_name %>_t *window, <%= window_name.upcase %>_<%= self.name().upcase %>VALUE_T value)
1153 val = window-><%= self.name() %>.value = value;
1154 if (window->wid < 0) {
1158 return cset_val(window-><%= self.name() %>.id, 1, (W*)(&val));
1161 EXPORT W <%= window_name %>_get<%= self.name() %>value(<%= window_name %>_t *window, <%= window_name.upcase %>_<%= self.name().upcase %>VALUE_T *value)
1165 if (window->wid > 0) {
1166 err = cget_val(window-><%= self.name() %>.id, 1, (W*)(&val));
1171 *value = window-><%= self.name() %>.value = val;
1176 LOCAL VOID <%= window_name %>_action<%= self.name() %>(<%= window_name %>_t *window, WEVENT *wev, <%= main_name %>event_t *evt)
1180 i = cact_par(window-><%= self.name() %>.id, wev);
1181 if ((i & 0x5000) != 0x5000) {
1184 window-><%= self.name() %>.value = i & 0xfff;
1185 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_CHANGE;
1186 evt->data.<%= window_name %>_<%= self.name() %>_change.value = window-><%= self.name() %>.value;
1191 erb = ERB.new(script, nil, '-');
1195 def generate_initialize_in_new()
1197 window-><%= self.name() %>.id = -1;
1198 <%- if self.is_databox_use() -%>
1199 window-><%= self.name() %>.dnum = dnum_<%= self.name() %>;
1202 <%- @yaml["fields"].each do |field| -%>
1203 window-><%= self.name() %>.format[<%= l %>] = MC_STR;<%- l+=1 %>
1204 <%- conv_euc_to_TCArray(field["text"]).each do |ch| -%>
1205 window-><%= self.name() %>.format[<%= l %>] = 0x<%= ch.to_s(16) %>;<%- l+=1 %>
1208 window-><%= self.name() %>.format[<%= l %>] = TNULL;<%- l+=1 %>
1210 window-><%= self.name() %>.value = 0;
1213 erb = ERB.new(script, nil, '-');
1217 def generate_create_systemcall_direct()
1218 script = "ccre_sel(wid, WS_PARTS|P_DISP, &r, window-><%= self.name() %>.value, window-><%= self.name() %>.format, NULL)"
1220 erb = ERB.new(script, nil, '-');
1224 def generate_savevalue_in_close()
1226 err = cget_val(window-><%= self.name() %>.id, 1, (W*)(&window-><%= self.name() %>.value));
1229 erb = ERB.new(script, nil, '-');
1233 def generate_action_in_butdnwork(main_name, window_name)
1235 if (id == window-><%= self.name() %>.id) {
1236 <%= window_name %>_action<%= self.name() %>(window, wev, evt);
1241 erb = ERB.new(script, nil, '-');
1246 def generate_parts(type, a)
1249 return HMITextBoxParts.new(a);
1250 when "secrettextbox"
1251 return HMISecretTextBoxParts.new(a);
1252 when "textmomentallyswitch"
1253 return HMITextMomentallySwitchParts.new(a);
1255 return HMISerialBoxParts.new(a);
1257 return HMINumberBoxParts.new(a);
1258 when "switchselector"
1259 return HMISwitchSelectorParts.new(a);
1264 attr_accessor :yaml, :parts
1265 def initialize(yaml)
1267 @parts = Array.new();
1268 if yaml["parts"] != nil
1269 yaml["parts"].each { |a|
1270 w = generate_parts(a["type"], a)
1276 @yaml["window_name"]
1278 def is_attr_xxx(name)
1279 if @yaml["attributes"] == nil || @yaml["attributes"].empty?
1282 @yaml["attributes"].any? { |item|
1287 def is_exportevent_xxx(name)
1288 if @yaml["export_events"] == nil || @yaml["export_events"].empty?
1291 @yaml["export_events"].any? { |item|
1296 def is_attr_scrollable()
1297 self.is_attr_xxx("scrollable");
1299 def is_attr_resizable()
1300 self.is_attr_xxx("resizable");
1302 def is_exportevent_draw()
1303 self.is_exportevent_xxx("draw");
1305 def is_exportevent_butdn()
1306 self.is_exportevent_xxx("butdn");
1308 def is_exportevent_paste()
1309 self.is_exportevent_xxx("paste");
1311 def is_exportevent_close()
1312 self.is_exportevent_xxx("close");
1314 def is_exportevent_switch()
1315 self.is_exportevent_xxx("switch");
1317 def is_exportevent_mousemove()
1318 self.is_exportevent_xxx("mousemove");
1320 def is_exportevent_scroll()
1321 self.is_exportevent_xxx("scroll");
1323 def is_exist_controllparts()
1329 def get_window_width()
1332 def get_window_height()
1335 def get_window_title()
1338 def is_exist_eventbreak_parts()
1339 @parts.any? { |item|
1340 item.is_need_eventbreak();
1344 def generate_header_eventtype_enumulate(main_name)
1346 <%- if self.is_exportevent_draw() -%>
1347 <%= main_name.upcase %>EVENT_TYPE_<%= self.struct_name().upcase %>_DRAW,
1349 <%- if self.is_attr_resizable() -%>
1350 <%= main_name.upcase %>EVENT_TYPE_<%= self.struct_name().upcase %>_RESIZE,
1352 <%- if self.is_exportevent_close() -%>
1353 <%= main_name.upcase %>EVENT_TYPE_<%= self.struct_name().upcase %>_CLOSE,
1355 <%- if self.is_exportevent_butdn() -%>
1356 <%= main_name.upcase %>EVENT_TYPE_<%= self.struct_name().upcase %>_BUTDN,
1358 <%- if self.is_exportevent_paste() -%>
1359 <%= main_name.upcase %>EVENT_TYPE_<%= self.struct_name().upcase %>_PASTE,
1361 <%- if self.is_exportevent_switch() -%>
1362 <%= main_name.upcase %>EVENT_TYPE_<%= self.struct_name().upcase %>_SWITCH,
1364 <%- if self.is_exportevent_mousemove() -%>
1365 <%= main_name.upcase %>EVENT_TYPE_<%= self.struct_name().upcase %>_MOUSEMOVE,
1367 <%- if self.is_exportevent_scroll() and self.is_attr_scrollable() -%>
1368 <%= main_name.upcase %>EVENT_TYPE_<%= self.struct_name().upcase %>_SCROLL,
1370 <%- @parts.each do |p| -%><%= p.generate_header_eventtype_enumulate(main_name, self.struct_name()) %><%- end -%>
1373 erb = ERB.new(script, nil, '-');
1377 def generate_header_partsevent_struct(main_name)
1379 <%- @parts.each do |p| -%><%= p.generate_header_eventstruct_definition(main_name, self.struct_name()) %><%- end -%>
1382 erb = ERB.new(script, nil, '-');
1386 def generate_header_partsevent_unionmember(main_name)
1388 <%- @parts.each do |p| -%><%= p.generate_header_eventunion_member(main_name, self.struct_name()) %><%- end -%>
1391 erb = ERB.new(script, nil, '-');
1395 def generate_prototypes()
1397 typedef struct <%= self.struct_name() %>_t_ <%= self.struct_name() %>_t;
1398 <%- if self.is_attr_scrollable() -%>
1399 typedef VOID (*<%= self.struct_name() %>_scrollcalback)(VP arg, W dh, W dv);
1402 <%- if self.is_attr_scrollable() -%>
1403 IMPORT VOID <%= self.struct_name() %>_scrollbyvalue(<%= self.struct_name() %>_t *window, W dh, W dv);
1404 IMPORT W <%= self.struct_name() %>_setdrawrect(<%= self.struct_name() %>_t *window, W l, W t, W r, W b);
1405 IMPORT W <%= self.struct_name() %>_setworkrect(<%= self.struct_name() %>_t *window, W l, W t, W r, W b);
1406 IMPORT W <%= self.struct_name() %>_scrollworkarea(<%= self.struct_name() %>_t *window, W dh, W dv);
1407 IMPORT W <%= self.struct_name() %>_getworkrect(<%= self.struct_name() %>_t *window, RECT *r);
1409 <%- if self.is_exportevent_paste() -%>
1410 IMPORT VOID <%= self.struct_name() %>_responsepasterequest(<%= self.struct_name() %>_t *window, W nak, PNT *pos);
1412 <%- if self.is_exportevent_draw() -%>
1413 IMPORT W <%= self.struct_name() %>_startredisp(<%= self.struct_name() %>_t *window, RECT *r);
1414 IMPORT W <%= self.struct_name() %>_endredisp(<%= self.struct_name() %>_t *window);
1415 IMPORT W <%= self.struct_name() %>_eraseworkarea(<%= self.struct_name() %>_t *window, RECT *r);
1417 IMPORT W <%= self.struct_name() %>_requestredisp(<%= self.struct_name() %>_t *window);
1418 <%- if self.is_exportevent_butdn() -%>
1419 IMPORT GID <%= self.struct_name() %>_startdrag(<%= self.struct_name() %>_t *window);
1420 IMPORT W <%= self.struct_name() %>_getdrag(<%= self.struct_name() %>_t *window, PNT *pos, WID *wid, PNT *pos_butup);
1421 IMPORT VOID <%= self.struct_name() %>_enddrag(<%= self.struct_name() %>_t *window);
1423 IMPORT GID <%= self.struct_name() %>_getGID(<%= self.struct_name() %>_t *window);
1424 IMPORT WID <%= self.struct_name() %>_getWID(<%= self.struct_name() %>_t *window);
1425 IMPORT W <%= self.struct_name() %>_settitle(<%= self.struct_name() %>_t *window, TC *title);
1426 IMPORT Bool <%= self.struct_name() %>_isactive(<%= self.struct_name() %>_t *window);
1427 IMPORT W <%= self.struct_name() %>_open(<%= self.struct_name() %>_t *window);
1428 IMPORT VOID <%= self.struct_name() %>_close(<%= self.struct_name() %>_t *window);
1429 <%- @parts.each do |p| -%><%= p.generate_prototypes(self.struct_name()) %><%- end -%>
1432 erb = ERB.new(script, nil, '-');
1436 def generate_initialize_arguments()
1438 <%- if self.is_attr_resizable() -%>RECT *r<% else %>PNT *p<% end %>, WID parent, TC *title, PAT *bgpat<%- @parts.each do |p| -%><% if p.is_databox_specify_argument() %>, W dnum_<%= p.name() %><% end %><%- end -%><%- -%>
1441 erb = ERB.new(script, nil, '-');
1445 def generate_initialize_arguments_values()
1447 <%- 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 -%><%- -%>
1450 erb = ERB.new(script, nil, '-');
1454 def generate_source_struct()
1456 struct <%= self.struct_name() %>_t_ {
1457 <%- if self.is_need_flag() -%>
1465 <%- if self.is_attr_scrollable() -%>
1466 hmi_windowscroll_t wscr;
1469 <%- @parts.each do |p| -%><%= p.generate_source_struct(self.struct_name()) %><%- end -%>
1474 erb = ERB.new(script, nil, '-');
1478 def generate_source_functions(main_name)
1480 <%- if self.is_need_flag() -%>
1481 #define <%= self.struct_name().upcase %>_FLAG_DRAWREQUEST 0x00000001
1482 <%- if self.is_attr_scrollable() -%>
1483 #define <%= self.struct_name().upcase %>_FLAG_RSCROLLING 0x00000002
1484 #define <%= self.struct_name().upcase %>_FLAG_BSCROLLING 0x00000004
1486 <%- if self.is_exist_eventbreak_parts -%>
1487 #define <%= self.struct_name().upcase %>_FLAG_PARTS_OTHEREVENT 0x0000000f
1488 #define <%= self.struct_name().upcase %>_FLAG_PARTS_NEXTACTION 0x00000010
1491 #define <%= self.struct_name() %>_setflag(window, flagx) (window)->flag = (window)->flag | (flagx)
1492 #define <%= self.struct_name() %>_clearflag(window, flagx) (window)->flag = (window)->flag & ~(flagx)
1493 #define <%= self.struct_name() %>_issetflag(window, flagx) (((window)->flag & (flagx)) == 0 ? False : True)
1496 <%- @parts.each do |p| -%><%= p.generate_source_functions(main_name, self.struct_name()) %><%- end -%>
1497 <%- if self.is_attr_scrollable() -%>
1498 EXPORT VOID <%= self.struct_name() %>_scrollbyvalue(<%= self.struct_name() %>_t *window, W dh, W dv)
1500 hmi_windowscroll_scrollworkrect(&window->wscr, dh, dv);
1503 EXPORT W <%= self.struct_name() %>_setdrawrect(<%= self.struct_name() %>_t *window, W l, W t, W r, W b)
1505 return hmi_windowscroll_setdrawrect(&window->wscr, l, t, r, b);
1508 EXPORT W <%= self.struct_name() %>_setworkrect(<%= self.struct_name() %>_t *window, W l, W t, W r, W b)
1510 return hmi_windowscroll_setworkrect(&window->wscr, l, t, r, b);
1513 EXPORT W <%= self.struct_name() %>_scrollworkarea(<%= self.struct_name() %>_t *window, W dh, W dv)
1516 err = wscr_wnd(window->wid, NULL, dh, dv, W_MOVE|W_RDSET);
1520 if ((err & W_RDSET) != 0) {
1521 <%= self.struct_name() %>_setflag(window, <%= self.struct_name().upcase %>_FLAG_DRAWREQUEST);
1526 EXPORT W <%= self.struct_name() %>_getworkrect(<%= self.struct_name() %>_t *window, RECT *r)
1528 return wget_wrk(window->wid, r);
1532 <%- if self.is_exportevent_paste() -%>
1533 EXPORT VOID <%= self.struct_name() %>_responsepasterequest(<%= self.struct_name() %>_t *window, W nak, PNT *pos)
1536 window->savedwev.r.r.p.rightbot.x = pos->x;
1537 window->savedwev.r.r.p.rightbot.y = pos->y;
1539 wrsp_evt(&window->savedwev, nak);
1543 <%- if self.is_exportevent_draw() -%>
1544 EXPORT W <%= self.struct_name() %>_startredisp(<%= self.struct_name() %>_t *window, RECT *r)
1546 return wsta_dsp(window->wid, r, NULL);
1549 EXPORT W <%= self.struct_name() %>_endredisp(<%= self.struct_name() %>_t *window)
1551 return wend_dsp(window->wid);
1554 EXPORT W <%= self.struct_name() %>_eraseworkarea(<%= self.struct_name() %>_t *window, RECT *r)
1556 return wera_wnd(window->wid, r);
1560 LOCAL VOID <%= self.struct_name() %>_draw(<%= self.struct_name() %>_t *window, RECT *r)
1562 cdsp_pwd(window->wid, r, P_RDISP);
1565 LOCAL VOID <%= self.struct_name() %>_redisp(<%= self.struct_name() %>_t *window)
1569 if (wsta_dsp(window->wid, &r, NULL) == 0) {
1572 wera_wnd(window->wid, &r);
1573 <%= self.struct_name() %>_draw(window, &r);
1574 } while (wend_dsp(window->wid) > 0);
1578 EXPORT W <%= self.struct_name() %>_requestredisp(<%= self.struct_name() %>_t *window)
1580 return wreq_dsp(window->wid);
1583 <%- if self.is_exportevent_butdn() -%>
1584 EXPORT GID <%= self.struct_name() %>_startdrag(<%= self.struct_name() %>_t *window)
1586 return wsta_drg(window->wid, 0);
1589 EXPORT W <%= self.struct_name() %>_getdrag(<%= self.struct_name() %>_t *window, PNT *pos, WID *wid, PNT *pos_butup)
1593 etype = wget_drg(pos, &window->savedwev);
1594 *wid = window->savedwev.s.wid;
1595 if (etype == EV_BUTUP) {
1596 *pos_butup = window->savedwev.s.pos;
1602 EXPORT VOID <%= self.struct_name() %>_enddrag(<%= self.struct_name() %>_t *window)
1608 EXPORT GID <%= self.struct_name() %>_getGID(<%= self.struct_name() %>_t *window)
1610 return wget_gid(window->wid);
1613 EXPORT WID <%= self.struct_name() %>_getWID(<%= self.struct_name() %>_t *window)
1618 EXPORT W <%= self.struct_name() %>_settitle(<%= self.struct_name() %>_t *window, TC *title)
1620 return wset_tit(window->wid, -1, title, 0);
1623 EXPORT Bool <%= self.struct_name() %>_isactive(<%= self.struct_name() %>_t *window)
1626 wid = wget_act(NULL);
1627 if (window->wid == wid) {
1633 LOCAL VOID <%= self.struct_name() %>_butdnwork(<%= self.struct_name() %>_t *window, WEVENT *wev, <%= main_name %>event_t *evt)
1635 <%- if self.is_exist_controllparts() -%>
1639 ret = cfnd_par(window->wid, wev->s.pos, &id);
1643 <%- @parts.each do |p| -%><%= p.generate_action_in_butdnwork(main_name, self.struct_name()) %><%- end -%>
1645 <%- if self.is_exportevent_butdn() -%>
1646 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= self.struct_name().upcase %>_BUTDN;
1647 evt->data.<%= self.struct_name() %>_butdn.type = wchk_dck(wev->s.time);
1648 evt->data.<%= self.struct_name() %>_butdn.pos = wev->s.pos;
1649 memcpy(&window->savedwev, wev, sizeof(WEVENT));
1653 <%- if self.is_attr_resizable() -%>
1654 LOCAL VOID <%= self.struct_name() %>_resize(<%= self.struct_name() %>_t *window, SIZE *sz)
1657 Bool workchange = False;
1659 wget_wrk(window->wid, &work);
1660 if (work.c.left != 0) {
1664 if (work.c.top != 0) {
1668 wset_wrk(window->wid, &work);
1669 gset_vis(window->gid, work);
1671 if (workchange == True) {
1672 wera_wnd(window->wid, NULL);
1673 wreq_dsp(window->wid);
1676 sz->v = work.c.bottom - work.c.top;
1677 sz->h = work.c.right - work.c.left;
1681 EXPORT W <%= self.struct_name() %>_open(<%= self.struct_name() %>_t *window)
1684 <%- if self.get_window_title() != nil -%>
1685 TC title[] = {<%= conv_TCArray_to_hex_definition(conv_euc_to_TCArray(self.get_window_title())) %>};
1687 <%- if self.is_exist_controllparts() -%>
1691 if (window->wid > 0) {
1695 wid = wopn_wnd(WA_STD<% if self.is_attr_resizable() %>|WA_SIZE|WA_HHDL|WA_VHDL<% end %><% if self.is_attr_scrollable() %>|WA_BBAR|WA_RBAR<% end %>, window->parent, &(window->r), NULL, 2, <%- if self.get_window_title() != nil -%>title<%- else -%>NULL<%- end -%>, &window->bgpat, NULL);
1697 DP_ER("wopn_wnd: subjectoption error", wid);
1701 window->gid = wget_gid(wid);
1702 <%- if self.is_attr_scrollable() -%>
1703 hmi_windowscroll_settarget(&window->wscr, wid);
1706 <%- @parts.each do |p| -%><%= p.generate_create_in_open() %><%- end -%>
1713 EXPORT VOID <%= self.struct_name() %>_close(<%= self.struct_name() %>_t *window)
1718 if (window->wid < 0) {
1723 err = wget_sts(window->wid, &stat, NULL);
1727 <%- @parts.reverse_each do |p| -%><%= p.generate_savevalue_in_close() %><%- end -%>
1728 <%- if self.is_exist_controllparts() -%>
1729 cdel_pwd(window->wid, NOCLR);
1731 wcls_wnd(window->wid, CLR);
1738 erb = ERB.new(script, nil, '-');
1742 def generate_checkpartsflag_in_checkflag(main_name)
1744 <%- if self.is_exist_eventbreak_parts() -%>
1745 if (<%= self.struct_name() %>_issetflag(hmi-><%= self.struct_name() %>, <%= self.struct_name().upcase %>_FLAG_PARTS_OTHEREVENT) == True) {
1746 <%= self.struct_name() %>_clearflag(hmi-><%= self.struct_name() %>, <%= self.struct_name().upcase %>_FLAG_PARTS_OTHEREVENT);
1747 <%= self.struct_name() %>_setflag(hmi-><%= self.struct_name() %>, <%= self.struct_name().upcase %>_FLAG_PARTS_NEXTACTION);
1749 } else if (<%= self.struct_name() %>_issetflag(hmi-><%= self.struct_name() %>, <%= self.struct_name().upcase %>_FLAG_PARTS_NEXTACTION) == True) {
1750 <%= self.struct_name() %>_clearflag(hmi-><%= self.struct_name() %>, <%= self.struct_name().upcase %>_FLAG_PARTS_NEXTACTION);
1751 <%- self.parts.each do |p| -%>
1752 <%- if p.is_need_eventbreak() -%>
1753 if (hmi-><%= self.struct_name() %>-><%= p.name() %>.nextaction == True) {
1754 hmi->wev.s.type = EV_NULL;
1755 <%= self.struct_name() %>_action<%= p.name() %>(hmi-><%= self.struct_name() %>, &hmi->wev, &hmi->evt);
1764 erb = ERB.new(script, nil, '-');
1768 def generate_new_del_functions()
1770 EXPORT <%= self.struct_name() %>_t* <%= self.struct_name() %>_new(<%= self.generate_initialize_arguments() %>)
1772 <%= self.struct_name() %>_t *window;
1773 <%- if self.is_attr_scrollable() -%>
1777 window = (<%= self.struct_name() %>_t*)malloc(sizeof(<%= self.struct_name() %>_t));
1778 if (window == NULL) {
1781 <%- if self.is_attr_scrollable() -%>
1786 window->parent = parent;
1787 <%- if self.is_attr_resizable() -%>
1790 window->r.c.left = p->x;
1791 window->r.c.top = p->y;
1792 window->r.c.right = p->x + <%= self.get_window_width() %>;
1793 window->r.c.bottom = p->y + <%= self.get_window_height() %>;
1795 <%- if self.is_attr_scrollable() -%>
1796 err = hmi_windowscroll_initialize(&window->wscr, window->wid);
1802 <%- @parts.each do |p| -%><%= p.generate_initialize_in_new() %><%- end -%>
1807 LOCAL VOID <%= self.struct_name() %>_delete(<%= self.struct_name() %>_t *window)
1809 if (window->wid > 0) {
1810 <%- if self.is_exist_controllparts() -%>
1811 cdel_pwd(window->wid, NOCLR);
1813 wcls_wnd(window->wid, CLR);
1815 <%- if self.is_attr_scrollable() -%>
1816 hmi_windowscroll_finalize(&window->wscr);
1823 erb = ERB.new(script, nil, '-');
1829 attr_accessor :yaml, :win, :name
1830 def initialize(yaml)
1833 yaml["windows"].each { |a|
1834 w = HMIWindow.new(a);
1839 @yaml["generator"]["name"]
1841 def lisence_header()
1842 @yaml["generator"]["lisence_header"]
1844 def lisence_source()
1845 @yaml["generator"]["lisence_source"]
1847 def filename_header()
1848 @yaml["generator"]["output_header"]
1851 def generate_header_eventtype_enumulate()
1854 <%= self.main_name().upcase %>EVENT_TYPE_NONE,
1855 <%= self.main_name().upcase %>EVENT_TYPE_COMMON_MOUSEMOVE,
1856 <%= self.main_name().upcase %>EVENT_TYPE_COMMON_KEYDOWN,
1857 <%= self.main_name().upcase %>EVENT_TYPE_COMMON_MENU,
1858 <%= self.main_name().upcase %>EVENT_TYPE_COMMON_TIMEOUT,
1859 <%- @win.each do |w| -%><%= w.generate_header_eventtype_enumulate(self.main_name()) %><%- end -%>
1863 erb = ERB.new(script, nil, '-');
1866 def generate_header_eventtype_struct()
1868 struct <%= self.main_name() %>_eventdata_mousemove_t_ {
1871 typedef struct <%= self.main_name() %>_eventdata_mousemove_t_ <%= self.main_name() %>_eventdata_mousemove_t;
1873 struct <%= self.main_name() %>_eventdata_keydown_t_ {
1878 typedef struct <%= self.main_name() %>_eventdata_keydown_t_ <%= self.main_name() %>_eventdata_keydown_t;
1880 struct <%= self.main_name() %>_eventdata_menu_t_ {
1883 typedef struct <%= self.main_name() %>_eventdata_menu_t_ <%= self.main_name() %>_eventdata_menu_t;
1885 struct <%= self.main_name() %>_eventdata_timeout_t_ {
1888 typedef struct <%= self.main_name() %>_eventdata_timeout_t_ <%= self.main_name() %>_eventdata_timeout_t;
1890 <%- @win.each do |w| -%>
1891 <%- if w.is_exportevent_draw() -%>
1892 struct <%= w.struct_name() %>_eventdata_draw_t_ {
1894 typedef struct <%= w.struct_name() %>_eventdata_draw_t_ <%= w.struct_name() %>_eventdata_draw_t;
1897 <%- if w.is_attr_resizable() -%>
1898 struct <%= w.struct_name() %>_eventdata_resize_t_ {
1901 typedef struct <%= w.struct_name() %>_eventdata_resize_t_ <%= w.struct_name() %>_eventdata_resize_t;
1904 <%- if w.is_exportevent_close() -%>
1905 struct <%= w.struct_name() %>_eventdata_close_t_ {
1908 typedef struct <%= w.struct_name() %>_eventdata_close_t_ <%= w.struct_name() %>_eventdata_close_t;
1911 <%- if w.is_exportevent_butdn() -%>
1912 struct <%= w.struct_name() %>_eventdata_butdn_t_ {
1916 typedef struct <%= w.struct_name() %>_eventdata_butdn_t_ <%= w.struct_name() %>_eventdata_butdn_t;
1919 <%- if w.is_exportevent_paste() -%>
1920 struct <%= w.struct_name() %>_eventdata_paste_t_ {
1922 typedef struct <%= w.struct_name() %>_eventdata_paste_t_ <%= w.struct_name() %>_eventdata_paste_t;
1925 <%- if w.is_exportevent_switch() -%>
1926 struct <%= w.struct_name() %>_eventdata_switch_t_ {
1928 typedef struct <%= w.struct_name() %>_eventdata_switch_t_ <%= w.struct_name() %>_eventdata_switch_t;
1931 <%- if w.is_exportevent_mousemove() -%>
1932 struct <%= w.struct_name() %>_eventdata_mousemove_t_ {
1936 typedef struct <%= w.struct_name() %>_eventdata_mousemove_t_ <%= w.struct_name() %>_eventdata_mousemove_t;
1939 <%- if w.is_exportevent_scroll() and w.is_attr_scrollable() -%>
1940 struct <%= w.struct_name() %>_eventdata_scroll_t_ {
1944 typedef struct <%= w.struct_name() %>_eventdata_scroll_t_ <%= w.struct_name() %>_eventdata_scroll_t;
1947 <%= w.generate_header_partsevent_struct(self.main_name()) %><%- -%>
1951 erb = ERB.new(script, nil, '-');
1954 def generate_header_eventtype_union()
1956 struct <%= self.main_name() %>event_t_ {
1959 <%= self.main_name() %>_eventdata_mousemove_t common_mousemove;
1960 <%= self.main_name() %>_eventdata_keydown_t common_keydown;
1961 <%= self.main_name() %>_eventdata_menu_t common_menu;
1962 <%= self.main_name() %>_eventdata_timeout_t common_timeout;
1963 <%- @win.each do |w| -%>
1964 <%- if w.is_exportevent_draw() -%>
1965 <%= w.struct_name() %>_eventdata_draw_t <%= w.struct_name() %>_draw;
1967 <%- if w.is_attr_resizable() -%>
1968 <%= w.struct_name() %>_eventdata_resize_t <%= w.struct_name() %>_resize;
1970 <%- if w.is_exportevent_close() -%>
1971 <%= w.struct_name() %>_eventdata_close_t <%= w.struct_name() %>_close;
1973 <%- if w.is_exportevent_butdn() -%>
1974 <%= w.struct_name() %>_eventdata_butdn_t <%= w.struct_name() %>_butdn;
1976 <%- if w.is_exportevent_paste() -%>
1977 <%= w.struct_name() %>_eventdata_paste_t <%= w.struct_name() %>_paste;
1979 <%- if w.is_exportevent_switch() -%>
1980 <%= w.struct_name() %>_eventdata_switch_t <%= w.struct_name() %>_switch;
1982 <%- if w.is_exportevent_mousemove() -%>
1983 <%= w.struct_name() %>_eventdata_mousemove_t <%= w.struct_name() %>_mousemove;
1985 <%- if w.is_exportevent_scroll() and w.is_attr_scrollable() -%>
1986 <%= w.struct_name() %>_eventdata_scroll_t <%= w.struct_name() %>_scroll;
1988 <%- -%><%= w.generate_header_partsevent_unionmember(self.main_name()) %><%- -%>
1992 typedef struct <%= self.main_name() %>event_t_ <%= self.main_name() %>event_t;
1995 erb = ERB.new(script, nil, '-');
1998 def generate_header_main_prototypes()
2000 typedef struct <%= self.main_name() %>_t_ <%= self.main_name() %>_t;
2002 IMPORT <%= self.main_name() %>_t* <%= self.main_name() %>_new();
2003 IMPORT VOID <%= self.main_name() %>_delete(<%= self.main_name() %>_t *hmi);
2004 IMPORT W <%= self.main_name() %>_getevent(<%= self.main_name() %>_t *hmi, <%= self.main_name() %>event_t **evt);
2005 <%- @win.each do |w| -%>
2006 IMPORT <%= w.struct_name() %>_t* <%= self.main_name() %>_new<%= w.struct_name() %>(<%= self.main_name() %>_t *hmi, <%= w.generate_initialize_arguments() %>);
2008 <%- @win.each do |w| -%>
2009 IMPORT VOID <%= self.main_name() %>_delete<%= w.struct_name() %>(<%= self.main_name() %>_t *hmi, <%= w.struct_name() %>_t *window);
2013 erb = ERB.new(script, nil, '-');
2017 def generate_header()
2020 str += w.generate_prototypes() + "\n";
2022 str += self.generate_header_eventtype_enumulate() + "\n";
2023 str += self.generate_header_eventtype_struct();
2024 str += self.generate_header_eventtype_union() + "\n";
2025 str += self.generate_header_main_prototypes() + "\n";
2029 def generate_source_include_files()
2031 #include "<%= self.filename_header() %>"
2032 #include "hmi/hmi_windowscroll.h"
2035 #include <bstdlib.h>
2037 #include <tstring.h>
2038 #include <btron/btron.h>
2039 #include <btron/hmi.h>
2040 #include <btron/vobj.h>
2043 # define DP(arg) printf arg
2044 # define DP_ER(msg, err) printf("%s (%d/%x)\\n", msg, err>>16, err)
2046 # define DP(arg) /**/
2047 # define DP_ER(msg, err) /**/
2052 erb = ERB.new(script, nil, '-');
2056 def generate_source_mainloop_windowid_valuablelist()
2058 <%- @win.each_with_index do |w, idx| -%>
2059 <%= w.struct_name() %>_id<%- if idx != @win.length - 1 -%>, <%- end -%>
2062 erb = ERB.new(script, nil, '-');
2066 def generate_source_mainloop()
2068 LOCAL VOID <%= self.main_name() %>_setswitchbutdnflag(<%= self.main_name() %>_t *hmi)
2070 hmi->flag = hmi->flag | <%= self.main_name().upcase %>_FLAG_SWITCHBUTDN;
2073 LOCAL VOID <%= self.main_name() %>_clearswitchbutdnflag(<%= self.main_name() %>_t *hmi)
2075 hmi->flag = hmi->flag & ~<%= self.main_name().upcase %>_FLAG_SWITCHBUTDN;
2078 LOCAL Bool <%= self.main_name() %>_issetswitchbutdnflag(<%= self.main_name() %>_t *hmi)
2080 if ((hmi->flag & <%= self.main_name().upcase %>_FLAG_SWITCHBUTDN) == 0) {
2086 <%- @win.each do |w| -%>
2087 LOCAL Bool <%= self.main_name() %>_is<%= w.struct_name() %>WID(<%= self.main_name() %>_t *hmi, WID wid)
2089 if (hmi-><%= w.struct_name() %>->wid == wid) {
2096 LOCAL VOID <%= self.main_name() %>_weventnull(<%= self.main_name() %>_t *hmi, WEVENT *wev, <%= self.main_name() %>event_t *evt)
2098 cidl_par(wev->s.wid, &wev->s.pos);
2099 if (wev->s.cmd != W_WORK)
2100 return; /*ºî¶ÈÎΰ賰*/
2101 if (wev->s.stat & ES_CMD)
2102 return; /*Ì¿Îᥡ¼¤¬²¡¤µ¤ì¤Æ¤¤¤ë*/
2103 <%- @win.each do |w| -%>
2104 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->s.wid) == True) {
2105 <%- if w.is_exist_controllparts() -%>
2106 cidl_par(wev->s.wid, &wev->s.pos);
2108 <%- if w.is_exportevent_mousemove() -%>
2109 hmi->evt.type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_MOUSEMOVE;
2110 hmi->evt.data.<%= w.struct_name() %>_mousemove.pos = wev->s.pos;
2111 hmi->evt.data.<%= w.struct_name() %>_mousemove.stat = wev->s.stat;
2112 <%- elsif !w.is_exist_controllparts() -%>
2113 gset_ptr(PS_SELECT, NULL, -1, -1);
2119 hmi->evt.type = <%= self.main_name().upcase %>EVENT_TYPE_COMMON_MOUSEMOVE;
2120 hmi->evt.data.common_mousemove.pos = wev->s.pos;
2123 LOCAL VOID <%= self.main_name() %>_weventrequest(<%= self.main_name() %>_t *hmi, WEVENT *wev, <%= self.main_name() %>event_t *evt)
2125 switch (wev->g.cmd) {
2126 case W_REDISP: /*ºÆɽ¼¨Í×µá*/
2127 <%- @win.each do |w| -%>
2128 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->g.wid) == True) {
2129 <%- if w.is_exportevent_draw() -%>
2130 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_DRAW;
2132 <%= w.struct_name() %>_redisp(hmi-><%= w.struct_name() %>);
2138 case W_PASTE: /*Ž¹þ¤ßÍ×µá*/
2139 <%- @win.each do |w| -%>
2140 <%- if w.is_exportevent_paste() -%>
2141 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->g.wid) == True) {
2142 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_PASTE;
2143 memcpy(&hmi-><%= w.struct_name() %>->savedwev, wev, sizeof(WEVENT));
2148 wrsp_evt(wev, 1); /*NACK*/
2150 case W_DELETE: /*Êݸ½ªÎ»*/
2151 wrsp_evt(wev, 0); /*ACK*/
2152 <%- @win.each do |w| -%>
2153 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->g.wid) == True) {
2154 <%- if w.is_exportevent_close() -%>
2155 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_CLOSE;
2156 evt->data.<%= w.struct_name() %>_close.save = True;
2158 <%= w.struct_name() %>_close(hmi-><%= w.struct_name() %>);
2164 case W_FINISH: /*ÇÑ´þ½ªÎ»*/
2165 wrsp_evt(wev, 0); /*ACK*/
2166 <%- @win.each do |w| -%>
2167 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->g.wid) == True) {
2168 <%- if w.is_exportevent_close() -%>
2169 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_CLOSE;
2170 evt->data.<%= w.struct_name() %>_close.save = False;
2172 <%= w.struct_name() %>_close(hmi-><%= w.struct_name() %>);
2181 LOCAL VOID <%= self.main_name() %>_weventbutdn(<%= self.main_name() %>_t *hmi, WEVENT *wev, <%= self.main_name() %>event_t *evt)
2184 W dh, dv; /* TODO: add check for exist scrollable window */
2186 switch (wev->s.cmd) {
2188 switch (wchk_dck(wev->s.time)) {
2190 <%- @win.each do |w| -%>
2191 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->s.wid) == True) {
2192 <%- if w.is_exportevent_close() -%>
2193 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_CLOSE;
2194 evt->data.<%= w.struct_name() %>_close.save = True; /* TODO: tmp value */
2196 <%= w.struct_name() %>_close(hmi-><%= w.struct_name() %>);
2209 if (wmov_drg(wev, NULL) > 0) {
2210 <%- @win.each do |w| -%>
2211 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->s.wid) == True) {
2212 <%- if w.is_exportevent_draw() -%>
2213 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_DRAW;
2215 <%= w.struct_name() %>_redisp(hmi-><%= w.struct_name() %>);
2226 switch (wchk_dck(wev->s.time)) {
2228 i = wchg_wnd(wev->s.wid, NULL, W_MOVE);
2231 i = wrsz_drg(wev, NULL, NULL);
2237 <%- @win.each do |w| -%>
2238 <%- if w.is_attr_resizable() -%>
2239 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->s.wid) == True) {
2240 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_RESIZE;
2241 <%= w.struct_name() %>_resize(hmi-><%= w.struct_name() %>, &evt->data.<%= w.struct_name() %>_resize.work_sz);
2242 hmi_windowscroll_updatebar(&hmi-><%= w.struct_name() %>->wscr);
2244 <%= w.struct_name() %>_setflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_DRAWREQUEST);
2252 <%- @win.each do |w| -%>
2253 <%- if w.is_attr_scrollable() -%>
2254 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->s.wid) == True) {
2255 err = hmi_windowscroll_weventrbar(&hmi-><%= w.struct_name() %>->wscr, wev, &dh, &dv);
2260 <%= w.struct_name() %>_clearflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_RSCROLLING);
2262 <%= w.struct_name() %>_setflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_RSCROLLING);
2264 <%- if w.is_exportevent_scroll() -%>
2265 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_SCROLL;
2266 evt->data.<%= w.struct_name() %>_scroll.dh = dh;
2267 evt->data.<%= w.struct_name() %>_scroll.dv = dv;
2275 <%- @win.each do |w| -%>
2276 <%- if w.is_attr_scrollable() -%>
2277 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->s.wid) == True) {
2278 err = hmi_windowscroll_weventbbar(&hmi-><%= w.struct_name() %>->wscr, wev, &dh, &dv);
2283 <%= w.struct_name() %>_clearflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_BSCROLLING);
2285 <%= w.struct_name() %>_setflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_BSCROLLING);
2287 <%- if w.is_exportevent_scroll() -%>
2288 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_SCROLL;
2289 evt->data.<%= w.struct_name() %>_scroll.dh = dh;
2290 evt->data.<%= w.struct_name() %>_scroll.dv = dv;
2298 <%- @win.each do |w| -%>
2299 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->s.wid) == True) {
2300 <%= w.struct_name() %>_butdnwork(hmi-><%= w.struct_name() %>, wev, evt);
2310 LOCAL VOID <%= self.main_name() %>_weventswitch(<%= self.main_name() %>_t *hmi, WEVENT *wev, <%= self.main_name() %>event_t *evt)
2312 <%= self.main_name() %>_setswitchbutdnflag(hmi);
2313 <%- @win.each do |w| -%>
2314 <%- if w.is_exportevent_switch() -%>
2315 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->s.wid) == True) {
2316 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_SWITCH;
2323 LOCAL VOID <%= self.main_name() %>_weventreswitch(<%= self.main_name() %>_t *hmi, WEVENT *wev, <%= self.main_name() %>event_t *evt)
2325 <%= self.main_name() %>_setswitchbutdnflag(hmi);
2326 <%- @win.each do |w| -%>
2327 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->s.wid) == True) {
2328 <%- if w.is_exportevent_switch() -%>
2329 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_SWITCH;
2330 <%= w.struct_name() %>_setflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_DRAWREQUEST);
2333 <%- if w.is_exportevent_draw() -%>
2334 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_DRAW;
2336 <%= w.struct_name() %>_redisp(hmi-><%= w.struct_name() %>);
2344 LOCAL VOID <%= self.main_name() %>_receivemessage(<%= self.main_name() %>_t *hmi, <%= self.main_name() %>event_t *evt)
2349 err = rcv_msg(MM_ALL, &msg, sizeof(MESSAGE), WAIT|NOCLR);
2351 if (msg.msg_type == MS_TMOUT) { /* should be use other type? */
2352 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_COMMON_TIMEOUT;
2353 evt->data.common_timeout.code = msg.msg_body.TMOUT.code;
2356 clr_msg(MM_ALL, MM_ALL);
2359 LOCAL Bool <%= self.main_name() %>_checkflag(<%= self.main_name() %>_t *hmi, <%= self.main_name() %>event_t **evt)
2363 <%- @win.each do |w| -%>
2364 <%- if w.is_need_flag() and w.is_attr_scrollable() -%>
2365 if (<%= w.struct_name() %>_issetflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_RSCROLLING) == True) {
2366 err = hmi_windowscroll_weventrbar(&hmi-><%= w.struct_name() %>->wscr, &hmi->wev, &dh, &dv);
2368 <%= w.struct_name() %>_clearflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_RSCROLLING);
2372 <%= w.struct_name() %>_clearflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_RSCROLLING);
2374 <%= w.struct_name() %>_setflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_RSCROLLING);
2376 <%- if w.is_exportevent_scroll() -%>
2377 hmi->evt.type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_SCROLL;
2378 hmi->evt.data.<%= w.struct_name() %>_scroll.dh = dh;
2379 hmi->evt.data.<%= w.struct_name() %>_scroll.dv = dv;
2383 if (<%= w.struct_name() %>_issetflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_BSCROLLING) == True) {
2384 err = hmi_windowscroll_weventbbar(&hmi-><%= w.struct_name() %>->wscr, &hmi->wev, &dh, &dv);
2386 <%= w.struct_name() %>_clearflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_BSCROLLING);
2390 <%= w.struct_name() %>_clearflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_BSCROLLING);
2392 <%= w.struct_name() %>_setflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_BSCROLLING);
2394 <%- if w.is_exportevent_scroll() -%>
2395 hmi->evt.type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_SCROLL;
2396 hmi->evt.data.<%= w.struct_name() %>_scroll.dh = dh;
2397 hmi->evt.data.<%= w.struct_name() %>_scroll.dv = dv;
2403 <%- @win.each do |w| -%><%= w.generate_checkpartsflag_in_checkflag(self.main_name()) %><%- end -%>
2408 EXPORT W <%= self.main_name() %>_getevent(<%= self.main_name() %>_t *hmi, <%= self.main_name() %>event_t **evt)
2413 hmi->evt.type = <%= self.main_name().upcase %>EVENT_TYPE_NONE;
2417 ok = <%= self.main_name() %>_issetswitchbutdnflag(hmi);
2419 <%= self.main_name() %>_weventbutdn(hmi, wev0, &hmi->evt);
2420 <%= self.main_name() %>_clearswitchbutdnflag(hmi);
2424 <%- @win.each do |w| -%>
2425 <%- if w.is_need_flag() -%>
2426 if (<%= w.struct_name() %>_issetflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_DRAWREQUEST) == True) {
2427 <%- if w.is_exportevent_draw() -%>
2428 hmi->evt.type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_DRAW;
2430 <%= w.struct_name() %>_redisp(hmi-><%= w.struct_name() %>);
2432 <%= w.struct_name() %>_clearflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_DRAWREQUEST);
2438 ok = <%= self.main_name() %>_checkflag(hmi, evt);
2443 wget_evt(wev0, WAIT);
2444 switch (wev0->s.type) {
2446 <%= self.main_name() %>_weventnull(hmi, wev0, &hmi->evt);
2449 <%= self.main_name() %>_weventrequest(hmi, wev0, &hmi->evt);
2452 <%= self.main_name() %>_weventreswitch(hmi, wev0, &hmi->evt);
2455 <%= self.main_name() %>_weventswitch(hmi, wev0, &hmi->evt);
2458 <%= self.main_name() %>_weventbutdn(hmi, wev0, &hmi->evt);
2462 hmi->evt.type = <%= self.main_name().upcase %>EVENT_TYPE_COMMON_KEYDOWN;
2463 hmi->evt.data.common_keydown.keycode = wev0->e.data.key.code;
2464 hmi->evt.data.common_keydown.keytop = wev0->e.data.key.keytop;
2465 hmi->evt.data.common_keydown.stat = wev0->e.stat;
2471 oprc_dev(&wev0->e, NULL, 0);
2474 <%= self.main_name() %>_receivemessage(hmi, &hmi->evt);
2477 hmi->evt.type = <%= self.main_name().upcase %>EVENT_TYPE_COMMON_MENU;
2478 hmi->evt.data.common_menu.pos = wev0->s.pos;
2487 erb = ERB.new(script, nil, '-');
2491 def generate_struct()
2494 str += w.generate_source_struct();
2497 #define <%= self.main_name().upcase %>_FLAG_SWITCHBUTDN 0x00000001
2499 struct <%= self.main_name() %>_t_ {
2501 <%= self.main_name() %>event_t evt;
2503 <%- @win.each do |w| -%>
2504 <%= w.struct_name() %>_t *<%= w.struct_name() %>;
2509 erb = ERB.new(script, nil, '-');
2510 str += erb.result(binding)
2513 def generate_windowfunctions()
2516 str += w.generate_source_functions(self.main_name());
2521 def generate_source_new_del_wrappers()
2523 <%- @win.each do |w| -%>
2524 EXPORT <%= w.struct_name() %>_t* <%= self.main_name() %>_new<%= w.struct_name() %>(<%= self.main_name() %>_t *hmi, <%= w.generate_initialize_arguments() %>)
2526 if (hmi-><%= w.struct_name() %> != NULL) {
2529 hmi-><%= w.struct_name() %> = <%= w.struct_name() %>_new(<%= w.generate_initialize_arguments_values() %>);
2530 return hmi-><%= w.struct_name() %>;
2533 EXPORT VOID <%= self.main_name() %>_delete<%= w.struct_name() %>(<%= self.main_name() %>_t *hmi, <%= w.struct_name() %>_t *window)
2535 <%= w.struct_name() %>_delete(hmi-><%= w.struct_name() %>);
2536 hmi-><%= w.struct_name() %> = NULL;
2541 EXPORT <%= self.main_name() %>_t* <%= self.main_name() %>_new()
2543 <%= self.main_name() %>_t *hmi;
2545 hmi = (<%= self.main_name() %>_t *)malloc(sizeof(<%= self.main_name() %>_t));
2550 <%- @win.each do |w| -%>
2551 hmi-><%= w.struct_name() %> = NULL;
2557 EXPORT VOID <%= self.main_name() %>_delete(<%= self.main_name() %>_t *hmi)
2559 <%- @win.each do |w| -%>
2560 if (hmi-><%= w.struct_name() %> != NULL) {
2561 <%= w.struct_name() %>_delete(hmi-><%= w.struct_name() %>);
2568 erb = ERB.new(script, nil, '-');
2572 def generate_source_mainfunctions()
2575 str += w.generate_new_del_functions();
2577 str += self.generate_source_new_del_wrappers()
2581 def generate_source()
2583 str += self.generate_struct();
2584 str += self.generate_windowfunctions();
2585 str += self.generate_source_mainloop();
2586 str += self.generate_source_mainfunctions();
2593 def generate_header(filename, data)
2594 fd = File.open(filename, "w");
2595 fd.puts data.lisence_header();
2598 /* This file is automatically generated. */
2601 #include <btron/dp.h>
2602 #include <btron/hmi.h>
2605 fd.puts "#ifndef __" + filename.upcase.gsub(/\./, '_') + "__";
2606 fd.puts "#define __" + filename.upcase.gsub(/\./, '_') + "__";
2608 fd.puts data.generate_header();
2612 def generate_source(filename, data)
2613 fd = File.open(filename, "w");
2614 fd.puts data.lisence_source();
2617 /* This file is automatically generated. */
2620 fd.puts data.generate_source_include_files();
2622 fd.puts data.generate_source();
2628 yaml = YAML.load_file(ARGV[0]);
2629 data = HMIData.new(yaml);
2631 fname_header = yaml["generator"]["output_header"]
2632 fname_source = yaml["generator"]["output_source"]
2634 generate_header(fname_header, data);
2635 generate_source(fname_source, data);