1 # -*- coding: euc-jp -*-
5 # Copyright (c) 2012-2015 project bchan
7 # This software is provided 'as-is', without any express or implied
8 # warranty. In no event will the authors be held liable for any damages
9 # arising from the use of this software.
11 # Permission is granted to anyone to use this software for any purpose,
12 # including commercial applications, and to alter it and redistribute it
13 # freely, subject to the following restrictions:
15 # 1. The origin of this software must not be misrepresented; you must not
16 # claim that you wrote the original software. If you use this software
17 # in a product, an acknowledgment in the product documentation would be
18 # appreciated but is not required.
20 # 2. Altered source versions must be plainly marked as such, and must not be
21 # misrepresented as being the original software.
23 # 3. This notice may not be removed or altered from any source
30 def conv_euc_to_TCArray(str)
32 str.encode("EUC-JP").each_char do |x|
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 @yaml["rect"]["left"].to_s
78 @yaml["rect"]["top"].to_s
81 @yaml["rect"]["right"].to_s
84 @yaml["rect"]["bottom"].to_s
87 conv_TCArray_to_hex_definition(conv_euc_to_TCArray(@yaml["text"]));
89 def text_array_length()
90 calc_euc_to_TCArray_length(@yaml["text"]);
92 def is_attr_specified()
96 if self.is_attr_specified()
102 def get_attrval_chcol()
103 if @yaml["attr"]["chcol"] == nil
106 @yaml["attr"]["chcol"]
108 def get_attrval_class()
109 if @yaml["attr"]["class"] == nil
112 @yaml["attr"]["class"]
114 def get_attrval_attr()
115 if @yaml["attr"]["attr"] == nil
118 @yaml["attr"]["attr"]
120 def get_attrval_csize_h()
121 if @yaml["attr"]["csize"] == nil || @yaml["attr"]["csize"]["h"] == nil
124 @yaml["attr"]["csize"]["h"]
126 def get_attrval_csize_v()
127 if @yaml["attr"]["csize"] == nil || @yaml["attr"]["csize"]["v"] == nil
130 @yaml["attr"]["csize"]["v"]
132 def is_need_eventbreak()
135 def get_databox_specify()
136 return @yaml["databox"]["specify"]
138 def get_databox_number()
139 return @yaml["databox"]["number"]
141 def is_databox_specify_argument()
142 @yaml["databox"] != nil && @yaml["databox"]["specify"] == "argument"
145 @yaml["databox"] != nil && (@yaml["databox"]["specify"] != "direct" || @yaml["databox"]["specify"] != "argument")
147 def is_use_rect_in_open()
151 def generate_header_eventtype_enumulate(main_name, window_name)
155 erb = ERB.new(script, nil, '-');
159 def generate_header_eventstruct_definition(main_name, window_name)
163 erb = ERB.new(script, nil, '-');
167 def generate_header_eventunion_member(main_name, window_name)
171 erb = ERB.new(script, nil, '-');
175 def generate_prototypes(window_name)
179 erb = ERB.new(script, nil, '-');
183 def generate_source_struct(window_name)
187 erb = ERB.new(script, nil, '-');
191 def generate_source_functions(main_name, window_name)
195 erb = ERB.new(script, nil, '-');
199 def generate_initialize_in_new()
201 window-><%= self.name() %>.id = -1;
202 <%- if self.is_databox_specify_argument() -%>
203 window-><%= self.name() %>.dnum = dnum_<%= self.name() %>;
207 erb = ERB.new(script, nil, '-');
211 def generate_create_systemcall_databox()
212 case self.get_databox_specify()
214 script = "copn_par(wid, window-><%= self.name() %>.dnum, NULL)"
216 script = "copn_par(wid, <%= self.get_databox_number() %>, NULL)"
219 erb = ERB.new(script, nil, '-');
223 def generate_create_systemcall_direct()
227 erb = ERB.new(script, nil, '-');
231 def generate_create_systemcall()
232 if self.is_databox_use()
233 return self.generate_create_systemcall_databox()
235 return self.generate_create_systemcall_direct()
239 def generate_create_in_open()
241 <%- if !self.is_databox_use() -%>
242 r = (RECT)<%= self.rect_string() %>;
244 window-><%= self.name() %>.id = <%= self.generate_create_systemcall()%>;
245 if (window-><%= self.name() %>.id < 0) {
246 DP_ER("ccre_xxx <%= self.name() %> error:", window-><%= self.name() %>.id);
248 <%- if self.is_databox_use() -%><%= self.generate_loadvalue_in_open() %><%- end -%>
251 erb = ERB.new(script, nil, '-');
255 def generate_loadvalue_in_open()
259 erb = ERB.new(script, nil, '-');
263 def generate_savevalue_in_close()
267 erb = ERB.new(script, nil, '-');
271 def generate_action_in_butdnwork(main_name, window_name)
275 erb = ERB.new(script, nil, '-');
279 def generate_draw_in_draw(main_name, window_name)
283 erb = ERB.new(script, nil, '-');
288 class HMITextBoxParts < HMIParts
289 def is_need_eventbreak()
293 def generate_header_eventtype_enumulate(main_name, window_name)
295 <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_DETERMINE,
296 <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_COPY,
297 <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_MOVE,
298 <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_MENU,
299 <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_KEYMENU,
302 erb = ERB.new(script, nil, '-');
306 def generate_header_eventstruct_definition(main_name, window_name)
308 struct <%= window_name %>_eventdata_<%= self.name() %>_determine_t_ {
312 typedef struct <%= window_name %>_eventdata_<%= self.name() %>_determine_t_ <%= window_name %>_eventdata_<%= self.name() %>_determine_t;
314 struct <%= window_name %>_eventdata_<%= self.name() %>_copy_t_ {
318 typedef struct <%= window_name %>_eventdata_<%= self.name() %>_copy_t_ <%= window_name %>_eventdata_<%= self.name() %>_copy_t;
320 struct <%= window_name %>_eventdata_<%= self.name() %>_move_t_ {
324 typedef struct <%= window_name %>_eventdata_<%= self.name() %>_move_t_ <%= window_name %>_eventdata_<%= self.name() %>_move_t;
326 struct <%= window_name %>_eventdata_<%= self.name() %>_menu_t_ {
329 typedef struct <%= window_name %>_eventdata_<%= self.name() %>_menu_t_ <%= window_name %>_eventdata_<%= self.name() %>_menu_t;
331 struct <%= window_name %>_eventdata_<%= self.name() %>_keymenu_t_ {
334 typedef struct <%= window_name %>_eventdata_<%= self.name() %>_keymenu_t_ <%= window_name %>_eventdata_<%= self.name() %>_keymenu_t;
338 erb = ERB.new(script, nil, '-');
342 def generate_header_eventunion_member(main_name, window_name)
344 <%= window_name %>_eventdata_<%= self.name() %>_determine_t <%= window_name %>_<%= self.name() %>_determine;
345 <%= window_name %>_eventdata_<%= self.name() %>_copy_t <%= window_name %>_<%= self.name() %>_copy;
346 <%= window_name %>_eventdata_<%= self.name() %>_move_t <%= window_name %>_<%= self.name() %>_move;
347 <%= window_name %>_eventdata_<%= self.name() %>_menu_t <%= window_name %>_<%= self.name() %>_menu;
348 <%= window_name %>_eventdata_<%= self.name() %>_keymenu_t <%= window_name %>_<%= self.name() %>_keymenu;
351 erb = ERB.new(script, nil, '-');
355 def generate_prototypes(window_name)
357 IMPORT W <%= window_name %>_set<%= self.name() %>text(<%= window_name %>_t *window, TC *str, W len);
358 IMPORT W <%= window_name %>_get<%= self.name() %>text(<%= window_name %>_t *window, TC *str, W len);
359 IMPORT W <%= window_name %>_cut<%= self.name() %>text(<%= window_name %>_t *window, TC *str, W len, Bool cut);
360 IMPORT W <%= window_name %>_insert<%= self.name() %>text(<%= window_name %>_t *window, TC *str, W len);
363 erb = ERB.new(script, nil, '-');
367 def generate_source_struct(window_name)
371 <% if self.is_databox_specify_argument() %>W dnum;<% end %>
372 TC buf[<%= self.text_length() %>+<%= self.get_attr_offset() %>+1];
376 } <%= self.name() %>;
379 erb = ERB.new(script, nil, '-');
383 def generate_source_functions(main_name, window_name)
385 EXPORT W <%= window_name %>_set<%= self.name() %>text(<%= window_name %>_t *window, TC *str, W len)
389 if (len < <%= self.text_length() %>) {
392 cp_len = <%= self.text_length() %>;
394 memcpy(window-><%= self.name() %>.buf+<%= self.get_attr_offset() %>, str, cp_len * sizeof(TC));
395 window-><%= self.name() %>.buf[<%= self.get_attr_offset() %> + cp_len] = TNULL;
396 window-><%= self.name() %>.buf_written = cp_len;
397 if (window->wid < 0) {
401 return cset_val(window-><%= self.name() %>.id, cp_len, (W*)(window-><%= self.name() %>.buf+<%= self.get_attr_offset() %>));
404 EXPORT W <%= window_name %>_get<%= self.name() %>text(<%= window_name %>_t *window, TC *str, W len)
408 if (window->wid > 0) {
409 err = cget_val(window-><%= self.name() %>.id, <%= self.text_length() %>, (W*)(window-><%= self.name() %>.buf+<%= self.get_attr_offset() %>));
413 window-><%= self.name() %>.buf_written = err;
416 if (len < window-><%= self.name() %>.buf_written) {
419 cp_len = window-><%= self.name() %>.buf_written;
421 memcpy(str, window-><%= self.name() %>.buf + <%= self.get_attr_offset() %>, cp_len * sizeof(TC));
426 EXPORT W <%= window_name %>_cut<%= self.name() %>text(<%= window_name %>_t *window, TC *str, W len, Bool cut)
430 len0 = ccut_txt(window-><%= self.name() %>.id, len, str, cut == False ? 0 : 1);
436 err = cget_val(window-><%= self.name() %>.id, <%= self.text_length() %>, (W*)(window-><%= self.name() %>.buf+<%= self.get_attr_offset() %>));
440 window-><%= self.name() %>.buf_written = err;
447 EXPORT W <%= window_name %>_insert<%= self.name() %>text(<%= window_name %>_t *window, TC *str, W len)
451 err = cins_txt(window-><%= self.name() %>.id, (PNT){0x8000, 0x8000}, str);
456 err = cget_val(window-><%= self.name() %>.id, <%= self.text_length() %>, (W*)(window-><%= self.name() %>.buf+<%= self.get_attr_offset() %>));
460 window-><%= self.name() %>.buf_written = err;
465 LOCAL VOID <%= window_name %>_action<%= self.name() %>(<%= window_name %>_t *window, WEVENT *wev, <%= main_name %>event_t *evt)
469 i = cact_par(window-><%= self.name() %>.id, wev);
471 window-><%= self.name() %>.nextaction = True;
474 if ((wev->s.type == EV_KEYDWN)&&(wev->s.stat & ES_CMD)) {
475 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_KEYMENU;
476 evt->data.<%= window_name %>_<%= self.name() %>_keymenu.keycode = wev->e.data.key.code;
478 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_MENU;
479 evt->data.<%= window_name %>_<%= self.name() %>_menu.pos = wev->s.pos;
481 <%= window_name %>_setflag(window, <%= window_name.upcase %>_FLAG_PARTS_NEXTACTION);
485 <%= window_name %>_setflag(window, <%= window_name.upcase %>_FLAG_PARTS_OTHEREVENT);
490 window-><%= self.name() %>.nextaction = False;
492 len = cget_val(window-><%= self.name() %>.id, <%= self.text_length() %>, (W*)(window-><%= self.name() %>.buf+<%= self.get_attr_offset() %>));
494 window-><%= self.name() %>.buf_written = len;
499 cchg_par(window-><%= self.name() %>.id, P_INACT);
500 cchg_par(window-><%= self.name() %>.id, P_ACT);
507 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_DETERMINE;
508 evt->data.<%= window_name %>_<%= self.name() %>_determine.value = window-><%= self.name() %>.buf+<%= self.get_attr_offset() %>;
509 evt->data.<%= window_name %>_<%= self.name() %>_determine.len = window-><%= self.name() %>.buf_written;
512 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_MOVE;
513 evt->data.<%= window_name %>_<%= self.name() %>_move.rel_wid = wev->s.wid;
514 evt->data.<%= window_name %>_<%= self.name() %>_move.pos = wev->s.pos;
517 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_COPY;
518 evt->data.<%= window_name %>_<%= self.name() %>_copy.rel_wid = wev->s.wid;
519 evt->data.<%= window_name %>_<%= self.name() %>_copy.pos = wev->s.pos;
526 erb = ERB.new(script, nil, '-');
530 def generate_initialize_in_new()
532 window-><%= self.name() %>.id = -1;
533 <%- if self.is_databox_specify_argument() -%>
534 window-><%= self.name() %>.dnum = dnum_<%= self.name() %>;
536 memset(window-><%= self.name() %>.buf, 0, sizeof(TC)*<%= self.text_length() %>);
537 <%- if self.is_attr_specified() -%>
538 window-><%= self.name() %>.buf[0] = MC_ATTR;
539 *(COLOR*)(window-><%= self.name() %>.buf + 1) = <%= self.get_attrval_chcol() %>;
540 window-><%= self.name() %>.buf[3] = <%= self.get_attrval_class() %>;
541 window-><%= self.name() %>.buf[4] = <%= self.get_attrval_attr() %>;
542 window-><%= self.name() %>.buf[5] = <%= self.get_attrval_csize_h() %>;
543 window-><%= self.name() %>.buf[6] = <%= self.get_attrval_csize_v() %>;
544 window-><%= self.name() %>.buf[7] = TNULL;
546 window-><%= self.name() %>.buf[0] = MC_STR;
547 window-><%= self.name() %>.buf[1] = TNULL;
549 window-><%= self.name() %>.nextaction = False;
552 erb = ERB.new(script, nil, '-');
556 def generate_create_systemcall_direct()
557 script = "ccre_tbx(wid, TB_PARTS|P_DISP, &r, <%= self.text_length() %>, window-><%= self.name() %>.buf, NULL)"
559 erb = ERB.new(script, nil, '-');
563 def generate_loadvalue_in_open()
565 cset_val(window-><%= self.name() %>.id, <%= self.text_length() %>, (W*)(window-><%= self.name() %>.buf+<%= self.get_attr_offset() %>));
568 erb = ERB.new(script, nil, '-');
572 def generate_savevalue_in_close()
574 err = cget_val(window-><%= self.name() %>.id, <%= self.text_length() %>, (W*)(window-><%= self.name() %>.buf+<%= self.get_attr_offset() %>));
576 window-><%= self.name() %>.buf_written = err;
580 erb = ERB.new(script, nil, '-');
584 def generate_action_in_butdnwork(main_name, window_name)
586 if (id == window-><%= self.name() %>.id) {
587 memcpy(&window->savedwev, wev, sizeof(WEVENT));
588 <%= window_name %>_action<%= self.name() %>(window, wev, evt);
593 erb = ERB.new(script, nil, '-');
598 class HMISecretTextBoxParts < HMITextBoxParts
599 def generate_create_systemcall_direct()
600 script = "ccre_xbx(wid, XB_PARTS|P_DISP, &r, <%= self.text_length() %>, window-><%= self.name() %>.buf, NULL);";
602 erb = ERB.new(script, nil, '-');
607 class HMINumberBoxParts < HMIParts
608 def is_need_eventbreak()
612 if @yaml["format"]["datatype"] == "double"
617 def is_pointdisplay()
618 ret = @yaml["format"]["pointdisplay"];
625 ret = @yaml["format"]["hankaku"];
632 sz = @yaml["format"]["fontsize"]
644 def get_decimalplace()
645 sz = @yaml["format"]["decimalplace"]
658 def generate_header_eventtype_enumulate(main_name, window_name)
660 <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_DETERMINE,
661 <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_COPY,
662 <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_MOVE,
663 <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_MENU,
664 <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_KEYMENU,
667 erb = ERB.new(script, nil, '-');
671 def generate_header_eventstruct_definition(main_name, window_name)
673 struct <%= window_name %>_eventdata_<%= self.name() %>_determine_t_ {
674 <% if self.is_double() %>DOUBLE<% else %>W<% end %> value;
676 typedef struct <%= window_name %>_eventdata_<%= self.name() %>_determine_t_ <%= window_name %>_eventdata_<%= self.name() %>_determine_t;
678 struct <%= window_name %>_eventdata_<%= self.name() %>_copy_t_ {
682 typedef struct <%= window_name %>_eventdata_<%= self.name() %>_copy_t_ <%= window_name %>_eventdata_<%= self.name() %>_copy_t;
684 struct <%= window_name %>_eventdata_<%= self.name() %>_move_t_ {
688 typedef struct <%= window_name %>_eventdata_<%= self.name() %>_move_t_ <%= window_name %>_eventdata_<%= self.name() %>_move_t;
690 struct <%= window_name %>_eventdata_<%= self.name() %>_menu_t_ {
693 typedef struct <%= window_name %>_eventdata_<%= self.name() %>_menu_t_ <%= window_name %>_eventdata_<%= self.name() %>_menu_t;
695 struct <%= window_name %>_eventdata_<%= self.name() %>_keymenu_t_ {
698 typedef struct <%= window_name %>_eventdata_<%= self.name() %>_keymenu_t_ <%= window_name %>_eventdata_<%= self.name() %>_keymenu_t;
702 erb = ERB.new(script, nil, '-');
706 def generate_header_eventunion_member(main_name, window_name)
708 <%= window_name %>_eventdata_<%= self.name() %>_determine_t <%= window_name %>_<%= self.name() %>_determine;
709 <%= window_name %>_eventdata_<%= self.name() %>_copy_t <%= window_name %>_<%= self.name() %>_copy;
710 <%= window_name %>_eventdata_<%= self.name() %>_move_t <%= window_name %>_<%= self.name() %>_move;
711 <%= window_name %>_eventdata_<%= self.name() %>_menu_t <%= window_name %>_<%= self.name() %>_menu;
712 <%= window_name %>_eventdata_<%= self.name() %>_keymenu_t <%= window_name %>_<%= self.name() %>_keymenu;
715 erb = ERB.new(script, nil, '-');
719 def generate_prototypes(window_name)
721 IMPORT W <%= window_name %>_set<%= self.name() %>value(<%= window_name %>_t *window, <% if self.is_double() %>DOUBLE<% else %>W<% end %> value);
722 IMPORT W <%= window_name %>_get<%= self.name() %>value(<%= window_name %>_t *window, <% if self.is_double() %>DOUBLE<% else %>W<% end %> *value);
725 erb = ERB.new(script, nil, '-');
729 def generate_source_struct(window_name)
733 <% if self.is_databox_specify_argument() %>W dnum;<% end %>
735 <% if self.is_double() %>DOUBLE<% else %>W<% end %> cv;
737 } <%= self.name() %>;
740 erb = ERB.new(script, nil, '-');
744 def generate_source_functions(main_name, window_name)
746 EXPORT W <%= window_name %>_set<%= self.name() %>value(<%= window_name %>_t *window, <% if self.is_double() %>DOUBLE<% else %>W<% end %> value)
748 window-><%= self.name() %>.cv = value;
749 if (window->wid < 0) {
753 return cset_val(window-><%= self.name() %>.id, <% if self.is_double() %>2<% else %>1<% end %>, (W*)(&window-><%= self.name() %>.cv));
756 EXPORT W <%= window_name %>_get<%= self.name() %>value(<%= window_name %>_t *window, <% if self.is_double() %>DOUBLE<% else %>W<% end %> *value)
760 if (window->wid > 0) {
761 err = cget_val(window-><%= self.name() %>.id, <% if self.is_double() %>2<% else %>1<% end %>, (W*)(&window-><%= self.name() %>.cv));
767 *value = window-><%= self.name() %>.cv;
771 LOCAL VOID <%= window_name %>_action<%= self.name() %>(<%= window_name %>_t *window, WEVENT *wev, <%= main_name %>event_t *evt)
775 i = cact_par(window-><%= self.name() %>.id, wev);
777 window-><%= self.name() %>.nextaction = True;
778 <%= window_name %>_setflag(window, <%= window_name.upcase %>_FLAG_PARTS_OTHEREVENT);
782 window-><%= self.name() %>.nextaction = False;
784 cget_val(window-><%= self.name() %>.id, <% if self.is_double() %>2<% else %>1<% end %>, (W*)(&window-><%= self.name() %>.cv));
794 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_DETERMINE;
795 evt->data.<%= window_name %>_<%= self.name() %>_determine.value = window-><%= self.name() %>.cv;
798 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_MOVE;
799 evt->data.<%= window_name %>_<%= self.name() %>_move.rel_wid = wev->s.wid;
800 evt->data.<%= window_name %>_<%= self.name() %>_move.pos = wev->s.pos;
803 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_COPY;
804 evt->data.<%= window_name %>_<%= self.name() %>_copy.rel_wid = wev->s.wid;
805 evt->data.<%= window_name %>_<%= self.name() %>_copy.pos = wev->s.pos;
808 if ((wev->s.type == EV_KEYDWN)&&(wev->s.stat & ES_CMD)) {
809 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_KEYMENU;
810 evt->data.<%= window_name %>_<%= self.name() %>_keymenu.keycode = wev->e.data.key.code;
812 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_MENU;
813 evt->data.<%= window_name %>_<%= self.name() %>_menu.pos = wev->s.pos;
815 window-><%= self.name() %>.nextaction = True;
816 <%= window_name %>_setflag(window, <%= window_name.upcase %>_FLAG_PARTS_NEXTACTION);
824 erb = ERB.new(script, nil, '-');
828 def generate_initialize_in_new()
830 window-><%= self.name() %>.id = -1;
831 <%- if self.is_databox_specify_argument() -%>
832 window-><%= self.name() %>.dnum = dnum_<%= self.name() %>;
834 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() %>;
835 window-><%= self.name() %>.cv = <% if self.is_double() %>0.0<% else %>0<% end %>;
836 window-><%= self.name() %>.nextaction = False;
839 erb = ERB.new(script, nil, '-');
843 def generate_create_systemcall_direct()
844 script = "ccre_nbx(wid, NB_PARTS|P_DISP, &r, window-><%= self.name() %>.format, (W*)&window-><%= self.name() %>.cv, NULL)"
846 erb = ERB.new(script, nil, '-');
850 def generate_loadvalue_in_open()
852 cset_val(window-><%= self.name() %>.id, <% if self.is_double() %>2<% else %>1<% end %>, (W*)(&window-><%= self.name() %>.cv));
855 erb = ERB.new(script, nil, '-');
859 def generate_savevalue_in_close()
861 err = cget_val(window-><%= self.name() %>.id, <% if self.is_double() %>2<% else %>1<% end %>, (W*)(&window-><%= self.name() %>.cv));
864 erb = ERB.new(script, nil, '-');
868 def generate_action_in_butdnwork(main_name, window_name)
870 if (id == window-><%= self.name() %>.id) {
871 <%= window_name %>_action<%= self.name() %>(window, wev, evt);
876 erb = ERB.new(script, nil, '-');
881 class HMITextMomentallySwitchParts < HMIParts
882 def generate_header_eventtype_enumulate(main_name, window_name)
884 <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_PUSH,
887 erb = ERB.new(script, nil, '-');
891 def generate_source_struct(window_name)
895 <% if self.is_databox_specify_argument() %>W dnum;<% end %>
896 } <%= self.name() %>;
899 erb = ERB.new(script, nil, '-');
903 def generate_create_systemcall_direct()
904 script = "ccre_msw(wid, MS_PARTS|P_DISP, &r, (TC[]){MC_STR, <%= self.text_array() %>}, NULL)"
906 erb = ERB.new(script, nil, '-');
910 def generate_action_in_butdnwork(main_name, window_name)
912 if (id == window-><%= self.name() %>.id) {
913 ret = cact_par(window-><%= self.name() %>.id, wev);
914 if ((ret & 0x5000) != 0x5000) {
917 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_PUSH;
922 erb = ERB.new(script, nil, '-');
927 class HMISerialBoxParts < HMIParts
928 def calc_serialbox_formatlength()
930 @yaml["fields"].each { |field|
933 l += 3; # specify, max, min
936 field["items"].each { |item| # item text
937 l+= 1 + calc_euc_to_TCArray_length(item["text"]);
941 l += calc_euc_to_TCArray_length(field["text"]);
944 l += 1; # for last TNULL
947 def calc_serialbox_fieldsnumber()
949 @yaml["fields"].each { |field|
951 when "number", "items"
954 # not variable field.
959 def is_need_eventbreak()
963 def generate_header_eventtype_enumulate(main_name, window_name)
967 erb = ERB.new(script, nil, '-');
971 def generate_prototypes(window_name)
973 struct <%= window_name %>_<%= self.name() %>value_t_ {
974 <%- @yaml["fields"].each do |field| -%>
975 <%- case field["type"] -%>
976 <%- when "number" -%>
977 W <%= field["name"] %>;
980 <%- field["items"].each do |item| -%>
981 <%= window_name.upcase %>_<%= self.name().upcase %>_<%= field["name"].upcase %>VALUE_<%= item["name"].upcase %>,
983 } <%= field["name"] %>;
987 typedef struct <%= window_name %>_<%= self.name() %>value_t_ <%= window_name %>_<%= self.name() %>value_t;
988 IMPORT W <%= window_name %>_set<%= self.name() %>value(<%= window_name %>_t *window, <%= window_name %>_<%= self.name() %>value_t *value);
989 IMPORT W <%= window_name %>_get<%= self.name() %>value(<%= window_name %>_t *window, <%= window_name %>_<%= self.name() %>value_t *value);
992 erb = ERB.new(script, nil, '-');
996 def generate_source_struct(window_name)
1000 <% if self.is_databox_specify_argument() %>W dnum;<% end %>
1001 TC format[<%= self.calc_serialbox_formatlength() %>];
1002 W cv[<%= self.calc_serialbox_fieldsnumber() %>];
1004 } <%= self.name() %>;
1007 erb = ERB.new(script, nil, '-');
1011 def generate_source_functions(main_name, window_name)
1013 EXPORT W <%= window_name %>_set<%= self.name() %>value(<%= window_name %>_t *window, <%= window_name %>_<%= self.name() %>value_t *value)
1016 <%- @yaml["fields"].each do |field| -%>
1017 <%- case field["type"] -%>
1018 <%- when "number" -%>
1019 if ((<%= field["min"] %> <= value-><%= field["name"] %>)&&(value-><%= field["name"] %> <= <%= field["max"] %>)) {
1020 window-><%= self.name() %>.cv[<%= j %>] = value-><%= field["name"] %>;<%- j+=1 %>
1022 <%- when "items" -%>
1023 if ((0 <= value-><%= field["name"] %>)&&(value-><%= field["name"] %> < <%= field["items"].length %>)) {
1024 window-><%= self.name() %>.cv[<%= j %>] = value-><%= field["name"] %>;<%- j+=1 %>
1028 if (window->wid < 0) {
1032 return cset_val(window-><%= self.name() %>.id, <%= self.calc_serialbox_fieldsnumber() %>, (W*)(window-><%= self.name() %>.cv));
1035 EXPORT W <%= window_name %>_get<%= self.name() %>value(<%= window_name %>_t *window, <%= window_name %>_<%= self.name() %>value_t *value)
1039 if (window->wid > 0) {
1040 err = cget_val(window-><%= self.name() %>.id, <%= self.calc_serialbox_fieldsnumber() %>, (W*)(window-><%= self.name() %>.cv));
1047 <%- @yaml["fields"].each do |field| -%>
1048 <%- case field["type"] -%>
1049 <%- when "number", "items" -%>
1050 value-><%= field["name"] %> = window-><%= self.name() %>.cv[<%= j %>];<%- j+=1 %>
1057 LOCAL VOID <%= window_name %>_action<%= self.name() %>(<%= window_name %>_t *window, WEVENT *wev, <%= main_name %>event_t *evt)
1061 i = cact_par(window-><%= self.name() %>.id, wev);
1063 window-><%= self.name() %>.nextaction = True;
1064 <%= window_name %>_setflag(window, <%= window_name.upcase %>_FLAG_PARTS_OTHEREVENT);
1068 window-><%= self.name() %>.nextaction = False;
1070 cget_val(window-><%= self.name() %>.id, <%= self.calc_serialbox_fieldsnumber() %>, (W*)(window-><%= self.name() %>.cv));
1071 /* TODO: export event */
1088 erb = ERB.new(script, nil, '-');
1092 def generate_initialize_in_new()
1094 window-><%= self.name() %>.id = -1;
1095 <%- if self.is_databox_specify_argument() -%>
1096 window-><%= self.name() %>.dnum = dnum_<%= self.name() %>;
1099 <%- @yaml["fields"].each do |field| -%>
1100 <%- case field["type"] -%>
1101 <%- when "number" -%>
1102 window-><%= self.name() %>.format[<%= l %>] = 0x0e00 | <%= field["chars"] %>;<%- l+=1 %>
1103 window-><%= self.name() %>.format[<%= l %>] = <%= field["min"] %>;<%- l+=1 %>
1104 window-><%= self.name() %>.format[<%= l %>] = <%= field["max"] %>;<%- l+=1 %>
1105 <%- when "items" -%>
1106 window-><%= self.name() %>.format[<%= l %>] = 0x0800 | <%= field["chars"] %>;<%- l+=1 %>
1107 <%- field["items"].each do |item| -%>
1108 window-><%= self.name() %>.format[<%= l %>] = MC_STR;<%- l+=1 %>
1109 <%- conv_euc_to_TCArray(item["text"]).each do |ch| -%>
1110 window-><%= self.name() %>.format[<%= l %>] = 0x<%= ch.to_s(16) %>;<%- l+=1 %>
1113 window-><%= self.name() %>.format[<%= l %>] = TNULL;<%- l+=1 %>
1114 <%- when "fixed" -%>
1115 <%- conv_euc_to_TCArray(field["text"]).each do |ch| -%>
1116 window-><%= self.name() %>.format[<%= l %>] = 0x<%= ch.to_s(16) %>;<%- l+=1 %>
1120 window-><%= self.name() %>.format[<%= l %>] = TNULL;<%- l+=1 %>
1122 <%- @yaml["fields"].each do |field| -%>
1123 <%- case field["type"] -%>
1124 <%- when "number" -%>
1125 window-><%= self.name() %>.cv[<%= l %>] = <%= field["min"] %>;<%- l+=1 %>
1126 <%- when "items" -%>
1127 window-><%= self.name() %>.cv[<%= l %>] = 0;<%- l+=1 %>
1130 window-><%= self.name() %>.nextaction = False;
1133 erb = ERB.new(script, nil, '-');
1137 def generate_create_systemcall_direct()
1138 script = "ccre_sbx(wid, SB_PARTS|P_DISP, &r, window-><%= self.name() %>.format, <%= self.calc_serialbox_fieldsnumber() %>, window-><%= self.name() %>.cv, NULL)"
1140 erb = ERB.new(script, nil, '-');
1144 def generate_loadvalue_in_open()
1146 cset_val(window-><%= self.name() %>.id, <%= self.calc_serialbox_fieldsnumber() %>, (W*)(window-><%= self.name() %>.cv));
1149 erb = ERB.new(script, nil, '-');
1153 def generate_savevalue_in_close()
1155 err = cget_val(window-><%= self.name() %>.id, <%= self.calc_serialbox_fieldsnumber() %>, (W*)(window-><%= self.name() %>.cv));
1158 erb = ERB.new(script, nil, '-');
1162 def generate_action_in_butdnwork(main_name, window_name)
1164 if (id == window-><%= self.name() %>.id) {
1165 <%= window_name %>_action<%= self.name() %>(window, wev, evt);
1170 erb = ERB.new(script, nil, '-');
1175 class HMISwitchSelectorParts < HMIParts
1176 def calc_formatlength()
1178 @yaml["fields"].each { |field|
1179 l+= 1 + calc_euc_to_TCArray_length(field["text"]);
1181 l += 1; # for last TNULL
1184 def is_need_eventbreak()
1188 def generate_header_eventtype_enumulate(main_name, window_name)
1190 <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_CHANGE,
1193 erb = ERB.new(script, nil, '-');
1197 def generate_header_eventstruct_definition(main_name, window_name)
1199 struct <%= window_name %>_eventdata_<%= self.name() %>_change_t_ {
1200 <%= window_name.upcase %>_<%= self.name().upcase %>VALUE_T value;
1202 typedef struct <%= window_name %>_eventdata_<%= self.name() %>_change_t_ <%= window_name %>_eventdata_<%= self.name() %>_change_t;
1206 erb = ERB.new(script, nil, '-');
1210 def generate_header_eventunion_member(main_name, window_name)
1212 <%= window_name %>_eventdata_<%= self.name() %>_change_t <%= window_name %>_<%= self.name() %>_change;
1215 erb = ERB.new(script, nil, '-');
1219 def generate_prototypes(window_name)
1221 enum <%= window_name.upcase %>_<%= self.name().upcase %>VALUE_T_ {
1222 <%= window_name.upcase %>_<%= self.name().upcase %>VALUE_NOSEL = 0,
1223 <%- @yaml["fields"].each do |field| -%>
1224 <%= window_name.upcase %>_<%= self.name().upcase %>VALUE_<%= field["name"].upcase %>,
1227 typedef enum <%= window_name.upcase %>_<%= self.name().upcase %>VALUE_T_ <%= window_name.upcase %>_<%= self.name().upcase %>VALUE_T;
1228 IMPORT W <%= window_name %>_set<%= self.name() %>value(<%= window_name %>_t *window, <%= window_name.upcase %>_<%= self.name().upcase %>VALUE_T value);
1229 IMPORT W <%= window_name %>_get<%= self.name() %>value(<%= window_name %>_t *window, <%= window_name.upcase %>_<%= self.name().upcase %>VALUE_T *value);
1232 erb = ERB.new(script, nil, '-');
1236 def generate_source_struct(window_name)
1240 <%- if self.is_databox_use() -%>
1243 TC format[<%= self.calc_formatlength()%>];
1245 <%= window_name.upcase %>_<%= self.name().upcase %>VALUE_T value;
1246 } <%= self.name() %>;
1249 erb = ERB.new(script, nil, '-');
1253 def generate_source_functions(main_name, window_name)
1255 EXPORT W <%= window_name %>_set<%= self.name() %>value(<%= window_name %>_t *window, <%= window_name.upcase %>_<%= self.name().upcase %>VALUE_T value)
1259 val = window-><%= self.name() %>.value = value;
1260 if (window->wid < 0) {
1264 return cset_val(window-><%= self.name() %>.id, 1, (W*)(&val));
1267 EXPORT W <%= window_name %>_get<%= self.name() %>value(<%= window_name %>_t *window, <%= window_name.upcase %>_<%= self.name().upcase %>VALUE_T *value)
1271 if (window->wid > 0) {
1272 err = cget_val(window-><%= self.name() %>.id, 1, (W*)(&val));
1277 *value = window-><%= self.name() %>.value = val;
1282 LOCAL VOID <%= window_name %>_action<%= self.name() %>(<%= window_name %>_t *window, WEVENT *wev, <%= main_name %>event_t *evt)
1286 i = cact_par(window-><%= self.name() %>.id, wev);
1287 if ((i & 0x5000) != 0x5000) {
1290 window-><%= self.name() %>.value = i & 0xfff;
1291 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= window_name.upcase %>_PARTS_<%= self.name().upcase %>_CHANGE;
1292 evt->data.<%= window_name %>_<%= self.name() %>_change.value = window-><%= self.name() %>.value;
1297 erb = ERB.new(script, nil, '-');
1301 def generate_initialize_in_new()
1303 window-><%= self.name() %>.id = -1;
1304 <%- if self.is_databox_use() -%>
1305 window-><%= self.name() %>.dnum = dnum_<%= self.name() %>;
1308 <%- @yaml["fields"].each do |field| -%>
1309 window-><%= self.name() %>.format[<%= l %>] = MC_STR;<%- l+=1 %>
1310 <%- conv_euc_to_TCArray(field["text"]).each do |ch| -%>
1311 window-><%= self.name() %>.format[<%= l %>] = 0x<%= ch.to_s(16) %>;<%- l+=1 %>
1314 window-><%= self.name() %>.format[<%= l %>] = TNULL;<%- l+=1 %>
1316 window-><%= self.name() %>.value = 0;
1319 erb = ERB.new(script, nil, '-');
1323 def generate_create_systemcall_direct()
1324 script = "ccre_sel(wid, WS_PARTS|P_DISP, &r, window-><%= self.name() %>.value, window-><%= self.name() %>.format, NULL)"
1326 erb = ERB.new(script, nil, '-');
1330 def generate_loadvalue_in_open()
1332 cset_val(window-><%= self.name() %>.id, 1, (W*)(&window-><%= self.name() %>.value));
1335 erb = ERB.new(script, nil, '-');
1339 def generate_savevalue_in_close()
1341 err = cget_val(window-><%= self.name() %>.id, 1, (W*)(&window-><%= self.name() %>.value));
1344 erb = ERB.new(script, nil, '-');
1348 def generate_action_in_butdnwork(main_name, window_name)
1350 if (id == window-><%= self.name() %>.id) {
1351 <%= window_name %>_action<%= self.name() %>(window, wev, evt);
1356 erb = ERB.new(script, nil, '-');
1361 class HMIFixedTextParts < HMIParts
1362 def is_need_eventbreak()
1365 def is_use_rect_in_open()
1369 def generate_initialize_in_new()
1372 def generate_create_in_open()
1375 def generate_draw_in_draw(main_name, window_name)
1377 gset_chc(window->gid, 0x10000000, -1);
1378 gdra_stp(window->gid, <%= self.rect_left() %>, <%= self.rect_bottom() %>, (TC[]){<%= self.text_array() %>}, <%= self.text_array_length() %>, G_STORE);
1381 erb = ERB.new(script, nil, '-');
1386 def generate_parts(type, a)
1389 return HMITextBoxParts.new(a);
1390 when "secrettextbox"
1391 return HMISecretTextBoxParts.new(a);
1392 when "textmomentallyswitch"
1393 return HMITextMomentallySwitchParts.new(a);
1395 return HMISerialBoxParts.new(a);
1397 return HMINumberBoxParts.new(a);
1398 when "switchselector"
1399 return HMISwitchSelectorParts.new(a);
1401 return HMIFixedTextParts.new(a)
1406 attr_accessor :yaml, :parts
1407 def initialize(yaml)
1409 @parts = Array.new();
1410 if yaml["parts"] != nil
1411 yaml["parts"].each { |a|
1412 w = generate_parts(a["type"], a)
1418 @yaml["window_name"]
1420 def is_attr_xxx(name)
1421 if @yaml["attributes"] == nil || @yaml["attributes"].empty?
1424 @yaml["attributes"].any? { |item|
1429 def is_exportevent_xxx(name)
1430 if @yaml["export_events"] == nil || @yaml["export_events"].empty?
1433 @yaml["export_events"].any? { |item|
1438 def is_attr_scrollable()
1439 self.is_attr_xxx("scrollable");
1441 def is_attr_resizable()
1442 self.is_attr_xxx("resizable");
1444 def is_attr_opencheckable()
1445 self.is_attr_xxx("opencheckable");
1447 def is_attr_subwindow()
1448 self.is_attr_xxx("subwindow");
1450 def is_attr_alwaysopen()
1451 self.is_attr_xxx("alwaysopen");
1453 def is_exportevent_draw()
1454 self.is_exportevent_xxx("draw");
1456 def is_exportevent_butdn()
1457 self.is_exportevent_xxx("butdn");
1459 def is_exportevent_paste()
1460 self.is_exportevent_xxx("paste");
1462 def is_exportevent_close()
1463 self.is_exportevent_xxx("close");
1465 def is_exportevent_switch()
1466 self.is_exportevent_xxx("switch");
1468 def is_exportevent_mousemove()
1469 self.is_exportevent_xxx("mousemove");
1471 def is_exportevent_scroll()
1472 self.is_exportevent_xxx("scroll");
1474 def is_exist_controllparts()
1477 def is_exist_use_rect_in_open()
1478 @parts.any? { |item|
1479 item.is_use_rect_in_open();
1485 def get_window_width()
1488 def get_window_height()
1491 def get_window_title()
1494 def is_exist_eventbreak_parts()
1495 @parts.any? { |item|
1496 item.is_need_eventbreak();
1499 def get_window_parent()
1502 def get_window_title_max_length()
1503 len = @yaml["title_max_length"];
1510 def generate_header_eventtype_enumulate(main_name)
1512 <%- if self.is_exportevent_draw() -%>
1513 <%= main_name.upcase %>EVENT_TYPE_<%= self.struct_name().upcase %>_DRAW,
1515 <%- if self.is_attr_resizable() -%>
1516 <%= main_name.upcase %>EVENT_TYPE_<%= self.struct_name().upcase %>_RESIZE,
1518 <%- if self.is_exportevent_close() -%>
1519 <%= main_name.upcase %>EVENT_TYPE_<%= self.struct_name().upcase %>_CLOSE,
1521 <%- if self.is_exportevent_butdn() -%>
1522 <%= main_name.upcase %>EVENT_TYPE_<%= self.struct_name().upcase %>_BUTDN,
1524 <%- if self.is_exportevent_paste() -%>
1525 <%= main_name.upcase %>EVENT_TYPE_<%= self.struct_name().upcase %>_PASTE,
1527 <%- if self.is_exportevent_switch() -%>
1528 <%= main_name.upcase %>EVENT_TYPE_<%= self.struct_name().upcase %>_SWITCH,
1530 <%- if self.is_exportevent_mousemove() -%>
1531 <%= main_name.upcase %>EVENT_TYPE_<%= self.struct_name().upcase %>_MOUSEMOVE,
1533 <%- if self.is_exportevent_scroll() and self.is_attr_scrollable() -%>
1534 <%= main_name.upcase %>EVENT_TYPE_<%= self.struct_name().upcase %>_SCROLL,
1536 <%- @parts.each do |p| -%><%= p.generate_header_eventtype_enumulate(main_name, self.struct_name()) %><%- end -%>
1539 erb = ERB.new(script, nil, '-');
1543 def generate_header_partsevent_struct(main_name)
1545 <%- @parts.each do |p| -%><%= p.generate_header_eventstruct_definition(main_name, self.struct_name()) %><%- end -%>
1548 erb = ERB.new(script, nil, '-');
1552 def generate_header_partsevent_unionmember(main_name)
1554 <%- @parts.each do |p| -%><%= p.generate_header_eventunion_member(main_name, self.struct_name()) %><%- end -%>
1557 erb = ERB.new(script, nil, '-');
1561 def generate_prototypes()
1563 typedef struct <%= self.struct_name() %>_t_ <%= self.struct_name() %>_t;
1564 <%- if self.is_attr_scrollable() -%>
1565 typedef VOID (*<%= self.struct_name() %>_scrollcalback)(VP arg, W dh, W dv);
1568 <%- if self.is_attr_scrollable() -%>
1569 IMPORT VOID <%= self.struct_name() %>_scrollbyvalue(<%= self.struct_name() %>_t *window, W dh, W dv);
1570 IMPORT W <%= self.struct_name() %>_setdrawrect(<%= self.struct_name() %>_t *window, W l, W t, W r, W b);
1571 IMPORT W <%= self.struct_name() %>_setworkrect(<%= self.struct_name() %>_t *window, W l, W t, W r, W b);
1572 IMPORT W <%= self.struct_name() %>_scrollworkarea(<%= self.struct_name() %>_t *window, W dh, W dv);
1573 IMPORT W <%= self.struct_name() %>_getworkrect(<%= self.struct_name() %>_t *window, RECT *r);
1575 <%- if self.is_attr_opencheckable() -%>
1576 IMPORT Bool <%= self.struct_name() %>_isopen(<%= self.struct_name() %>_t *window);
1578 <%- if self.is_exportevent_paste() -%>
1579 IMPORT VOID <%= self.struct_name() %>_responsepasterequest(<%= self.struct_name() %>_t *window, W nak, PNT *pos);
1581 <%- if self.is_exportevent_draw() -%>
1582 IMPORT W <%= self.struct_name() %>_startredisp(<%= self.struct_name() %>_t *window, RECT *r);
1583 IMPORT W <%= self.struct_name() %>_endredisp(<%= self.struct_name() %>_t *window);
1584 IMPORT W <%= self.struct_name() %>_eraseworkarea(<%= self.struct_name() %>_t *window, RECT *r);
1586 IMPORT W <%= self.struct_name() %>_requestredisp(<%= self.struct_name() %>_t *window);
1587 <%- if self.is_exportevent_butdn() -%>
1588 IMPORT GID <%= self.struct_name() %>_startdrag(<%= self.struct_name() %>_t *window);
1589 IMPORT W <%= self.struct_name() %>_getdrag(<%= self.struct_name() %>_t *window, PNT *pos, WID *wid, PNT *pos_butup);
1590 IMPORT VOID <%= self.struct_name() %>_enddrag(<%= self.struct_name() %>_t *window);
1592 IMPORT GID <%= self.struct_name() %>_getGID(<%= self.struct_name() %>_t *window);
1593 IMPORT WID <%= self.struct_name() %>_getWID(<%= self.struct_name() %>_t *window);
1594 IMPORT W <%= self.struct_name() %>_settitle(<%= self.struct_name() %>_t *window, TC *title);
1595 IMPORT Bool <%= self.struct_name() %>_isactive(<%= self.struct_name() %>_t *window);
1596 <%- if !self.is_attr_alwaysopen() -%>
1597 IMPORT W <%= self.struct_name() %>_open(<%= self.struct_name() %>_t *window);
1598 IMPORT VOID <%= self.struct_name() %>_close(<%= self.struct_name() %>_t *window);
1600 <%- @parts.each do |p| -%><%= p.generate_prototypes(self.struct_name()) %><%- end -%>
1603 erb = ERB.new(script, nil, '-');
1607 def generate_initialize_arguments()
1609 <%- 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 -%><%- -%>
1612 erb = ERB.new(script, nil, '-');
1616 def generate_initialize_arguments_values()
1618 <%- 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 -%><%- -%>
1621 erb = ERB.new(script, nil, '-');
1625 def generate_source_struct()
1627 struct <%= self.struct_name() %>_t_ {
1628 <%- if self.is_need_flag() -%>
1633 <%- if self.is_attr_subwindow() -%>
1634 <%= self.get_window_parent() %>_t *parent;
1640 <%- if self.is_attr_scrollable() -%>
1641 hmi_windowscroll_t wscr;
1643 <%- if !self.is_attr_alwaysopen() -%>
1644 TC title[<%= self.get_window_title_max_length() %>+1];
1647 <%- @parts.each do |p| -%><%= p.generate_source_struct(self.struct_name()) %><%- end -%>
1652 erb = ERB.new(script, nil, '-');
1656 def generate_source_functions(main_name)
1658 <%- if self.is_need_flag() -%>
1659 #define <%= self.struct_name().upcase %>_FLAG_DRAWREQUEST 0x00000001
1660 <%- if self.is_attr_scrollable() -%>
1661 #define <%= self.struct_name().upcase %>_FLAG_RSCROLLING 0x00000002
1662 #define <%= self.struct_name().upcase %>_FLAG_BSCROLLING 0x00000004
1664 <%- if self.is_exist_eventbreak_parts -%>
1665 #define <%= self.struct_name().upcase %>_FLAG_PARTS_OTHEREVENT 0x0000000f
1666 #define <%= self.struct_name().upcase %>_FLAG_PARTS_NEXTACTION 0x00000010
1669 #define <%= self.struct_name() %>_setflag(window, flagx) (window)->flag = (window)->flag | (flagx)
1670 #define <%= self.struct_name() %>_clearflag(window, flagx) (window)->flag = (window)->flag & ~(flagx)
1671 #define <%= self.struct_name() %>_issetflag(window, flagx) (((window)->flag & (flagx)) == 0 ? False : True)
1674 <%- @parts.each do |p| -%><%= p.generate_source_functions(main_name, self.struct_name()) %><%- end -%>
1675 <%- if self.is_attr_scrollable() -%>
1676 EXPORT VOID <%= self.struct_name() %>_scrollbyvalue(<%= self.struct_name() %>_t *window, W dh, W dv)
1678 hmi_windowscroll_scrollworkrect(&window->wscr, dh, dv);
1681 EXPORT W <%= self.struct_name() %>_setdrawrect(<%= self.struct_name() %>_t *window, W l, W t, W r, W b)
1683 return hmi_windowscroll_setdrawrect(&window->wscr, l, t, r, b);
1686 EXPORT W <%= self.struct_name() %>_setworkrect(<%= self.struct_name() %>_t *window, W l, W t, W r, W b)
1688 return hmi_windowscroll_setworkrect(&window->wscr, l, t, r, b);
1691 EXPORT W <%= self.struct_name() %>_scrollworkarea(<%= self.struct_name() %>_t *window, W dh, W dv)
1694 err = wscr_wnd(window->wid, NULL, dh, dv, W_MOVE|W_RDSET);
1698 if ((err & W_RDSET) != 0) {
1699 <%= self.struct_name() %>_setflag(window, <%= self.struct_name().upcase %>_FLAG_DRAWREQUEST);
1704 EXPORT W <%= self.struct_name() %>_getworkrect(<%= self.struct_name() %>_t *window, RECT *r)
1706 return wget_wrk(window->wid, r);
1710 <%- if self.is_attr_opencheckable() -%>
1711 EXPORT Bool <%= self.struct_name() %>_isopen(<%= self.struct_name() %>_t *window)
1713 if (window->wid < 0) {
1720 <%- if self.is_exportevent_paste() -%>
1721 EXPORT VOID <%= self.struct_name() %>_responsepasterequest(<%= self.struct_name() %>_t *window, W nak, PNT *pos)
1724 window->savedwev.r.r.p.rightbot.x = pos->x;
1725 window->savedwev.r.r.p.rightbot.y = pos->y;
1727 wrsp_evt(&window->savedwev, nak);
1731 <%- if self.is_exportevent_draw() -%>
1732 EXPORT W <%= self.struct_name() %>_startredisp(<%= self.struct_name() %>_t *window, RECT *r)
1734 return wsta_dsp(window->wid, r, NULL);
1737 EXPORT W <%= self.struct_name() %>_endredisp(<%= self.struct_name() %>_t *window)
1739 return wend_dsp(window->wid);
1742 EXPORT W <%= self.struct_name() %>_eraseworkarea(<%= self.struct_name() %>_t *window, RECT *r)
1744 return wera_wnd(window->wid, r);
1748 LOCAL VOID <%= self.struct_name() %>_draw(<%= self.struct_name() %>_t *window, RECT *r)
1750 cdsp_pwd(window->wid, r, P_RDISP);
1751 <%- @parts.each do |p| -%><%= p.generate_draw_in_draw(main_name, self.struct_name()) %><%- end -%>
1754 LOCAL VOID <%= self.struct_name() %>_redisp(<%= self.struct_name() %>_t *window)
1758 if (wsta_dsp(window->wid, &r, NULL) == 0) {
1761 wera_wnd(window->wid, &r);
1762 <%= self.struct_name() %>_draw(window, &r);
1763 } while (wend_dsp(window->wid) > 0);
1767 EXPORT W <%= self.struct_name() %>_requestredisp(<%= self.struct_name() %>_t *window)
1769 return wreq_dsp(window->wid);
1772 <%- if self.is_exportevent_butdn() -%>
1773 EXPORT GID <%= self.struct_name() %>_startdrag(<%= self.struct_name() %>_t *window)
1775 return wsta_drg(window->wid, 0);
1778 EXPORT W <%= self.struct_name() %>_getdrag(<%= self.struct_name() %>_t *window, PNT *pos, WID *wid, PNT *pos_butup)
1782 etype = wget_drg(pos, &window->savedwev);
1783 *wid = window->savedwev.s.wid;
1784 if (etype == EV_BUTUP) {
1785 *pos_butup = window->savedwev.s.pos;
1791 EXPORT VOID <%= self.struct_name() %>_enddrag(<%= self.struct_name() %>_t *window)
1797 EXPORT GID <%= self.struct_name() %>_getGID(<%= self.struct_name() %>_t *window)
1799 return wget_gid(window->wid);
1802 EXPORT WID <%= self.struct_name() %>_getWID(<%= self.struct_name() %>_t *window)
1807 EXPORT W <%= self.struct_name() %>_settitle(<%= self.struct_name() %>_t *window, TC *title)
1809 <%- if !self.is_attr_alwaysopen() -%>
1810 tc_strncpy(window->title, title, <%= self.get_window_title_max_length() %>);
1811 window->title[<%= self.get_window_title_max_length() %>] = TNULL;
1812 return wset_tit(window->wid, -1, window->title, 0);
1814 return wset_tit(window->wid, -1, title, 0);
1818 EXPORT Bool <%= self.struct_name() %>_isactive(<%= self.struct_name() %>_t *window)
1821 wid = wget_act(NULL);
1822 if (window->wid == wid) {
1828 LOCAL VOID <%= self.struct_name() %>_butdnwork(<%= self.struct_name() %>_t *window, WEVENT *wev, <%= main_name %>event_t *evt)
1830 <%- if self.is_exist_controllparts() -%>
1834 ret = cfnd_par(window->wid, wev->s.pos, &id);
1838 <%- @parts.each do |p| -%><%= p.generate_action_in_butdnwork(main_name, self.struct_name()) %><%- end -%>
1840 <%- if self.is_exportevent_butdn() -%>
1841 evt->type = <%= main_name.upcase %>EVENT_TYPE_<%= self.struct_name().upcase %>_BUTDN;
1842 evt->data.<%= self.struct_name() %>_butdn.type = wchk_dck(wev->s.time);
1843 evt->data.<%= self.struct_name() %>_butdn.pos = wev->s.pos;
1844 memcpy(&window->savedwev, wev, sizeof(WEVENT));
1848 <%- if self.is_attr_resizable() -%>
1849 LOCAL VOID <%= self.struct_name() %>_resize(<%= self.struct_name() %>_t *window, SIZE *sz)
1852 Bool workchange = False;
1854 wget_wrk(window->wid, &work);
1855 if (work.c.left != 0) {
1859 if (work.c.top != 0) {
1863 wset_wrk(window->wid, &work);
1864 gset_vis(window->gid, work);
1866 if (workchange == True) {
1867 wera_wnd(window->wid, NULL);
1868 wreq_dsp(window->wid);
1871 sz->v = work.c.bottom - work.c.top;
1872 sz->h = work.c.right - work.c.left;
1876 <% 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 %>)
1879 <%- if self.is_exist_use_rect_in_open() -%>
1883 if (window->wid > 0) {
1887 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);
1889 DP_ER("wopn_wnd: subjectoption error", wid);
1893 window->gid = wget_gid(wid);
1894 <%- if self.is_attr_scrollable() -%>
1895 hmi_windowscroll_settarget(&window->wscr, wid);
1898 <%- @parts.each do |p| -%><%= p.generate_create_in_open() %><%- end -%>
1905 <%- if !self.is_attr_alwaysopen() -%>
1906 EXPORT VOID <%= self.struct_name() %>_close(<%= self.struct_name() %>_t *window)
1911 if (window->wid < 0) {
1916 err = wget_sts(window->wid, &stat, NULL);
1920 <%- @parts.reverse_each do |p| -%><%= p.generate_savevalue_in_close() %><%- end -%>
1921 <%- if self.is_exist_controllparts() -%>
1922 cdel_pwd(window->wid, NOCLR);
1924 wcls_wnd(window->wid, CLR);
1932 erb = ERB.new(script, nil, '-');
1936 def generate_checkpartsflag_in_checkflag(main_name)
1938 <%- if self.is_exist_eventbreak_parts() -%>
1939 if (<%= self.struct_name() %>_issetflag(hmi-><%= self.struct_name() %>, <%= self.struct_name().upcase %>_FLAG_PARTS_OTHEREVENT) == True) {
1940 <%= self.struct_name() %>_clearflag(hmi-><%= self.struct_name() %>, <%= self.struct_name().upcase %>_FLAG_PARTS_OTHEREVENT);
1941 <%= self.struct_name() %>_setflag(hmi-><%= self.struct_name() %>, <%= self.struct_name().upcase %>_FLAG_PARTS_NEXTACTION);
1943 } else if (<%= self.struct_name() %>_issetflag(hmi-><%= self.struct_name() %>, <%= self.struct_name().upcase %>_FLAG_PARTS_NEXTACTION) == True) {
1944 <%= self.struct_name() %>_clearflag(hmi-><%= self.struct_name() %>, <%= self.struct_name().upcase %>_FLAG_PARTS_NEXTACTION);
1945 <%- self.parts.each do |p| -%>
1946 <%- if p.is_need_eventbreak() -%>
1947 if (hmi-><%= self.struct_name() %>-><%= p.name() %>.nextaction == True) {
1948 hmi->wev.s.type = EV_NULL;
1949 <%= self.struct_name() %>_action<%= p.name() %>(hmi-><%= self.struct_name() %>, &hmi->wev, &hmi->evt);
1958 erb = ERB.new(script, nil, '-');
1962 def generate_new_del_functions()
1964 EXPORT <%= self.struct_name() %>_t* <%= self.struct_name() %>_new(<%= self.generate_initialize_arguments() %>)
1966 <%= self.struct_name() %>_t *window;
1967 <%- if self.is_attr_scrollable() -%>
1971 window = (<%= self.struct_name() %>_t*)malloc(sizeof(<%= self.struct_name() %>_t));
1972 if (window == NULL) {
1975 <%- if self.is_attr_scrollable() -%>
1980 window->parent = parent;
1981 <%- if self.is_attr_resizable() -%>
1984 window->r.c.left = p->x;
1985 window->r.c.top = p->y;
1986 window->r.c.right = p->x + <%= self.get_window_width() %>;
1987 window->r.c.bottom = p->y + <%= self.get_window_height() %>;
1989 if (bgpat != NULL) {
1990 window->bgpat = *bgpat;
1992 window->bgpat = (PAT){{0, 16, 16, 0x10ffffff, 0, FILL100}};
1994 <%- if self.is_attr_scrollable() -%>
1995 err = hmi_windowscroll_initialize(&window->wscr, window->wid);
2001 <%- if !self.is_attr_alwaysopen() -%>
2002 tc_strset(window->title, TNULL, <%= self.get_window_title_max_length() %>+1);
2004 tc_strncpy(window->title, title, <%= self.get_window_title_max_length() %>);
2007 <%- conv_euc_to_TCArray(self.get_window_title()).each do |ch| -%>
2008 window->title[<%= l %>] = 0x<%= ch.to_s(16) %>;<%- l+=1 %>
2012 <%- @parts.each do |p| -%><%= p.generate_initialize_in_new() %><%- end -%>
2014 <%- if self.is_attr_alwaysopen() -%>
2015 err = <%= self.struct_name() %>_open(window, title);
2017 <%- if self.is_attr_scrollable() -%>
2018 hmi_windowscroll_finalize(&window->wscr);
2028 LOCAL VOID <%= self.struct_name() %>_delete(<%= self.struct_name() %>_t *window)
2030 if (window->wid > 0) {
2031 <%- if self.is_exist_controllparts() -%>
2032 cdel_pwd(window->wid, NOCLR);
2034 wcls_wnd(window->wid, CLR);
2036 <%- if self.is_attr_scrollable() -%>
2037 hmi_windowscroll_finalize(&window->wscr);
2044 erb = ERB.new(script, nil, '-');
2050 attr_accessor :yaml, :win, :name
2051 def initialize(yaml)
2054 yaml["windows"].each { |a|
2055 w = HMIWindow.new(a);
2060 @yaml["generator"]["name"]
2062 def lisence_header()
2063 @yaml["generator"]["lisence_header"]
2065 def lisence_source()
2066 @yaml["generator"]["lisence_source"]
2068 def filename_header()
2069 @yaml["generator"]["output_header"]
2072 def generate_header_eventtype_enumulate()
2075 <%= self.main_name().upcase %>EVENT_TYPE_NONE,
2076 <%= self.main_name().upcase %>EVENT_TYPE_COMMON_MOUSEMOVE,
2077 <%= self.main_name().upcase %>EVENT_TYPE_COMMON_KEYDOWN,
2078 <%= self.main_name().upcase %>EVENT_TYPE_COMMON_MENU,
2079 <%= self.main_name().upcase %>EVENT_TYPE_COMMON_TIMEOUT,
2080 <%- @win.each do |w| -%><%= w.generate_header_eventtype_enumulate(self.main_name()) %><%- end -%>
2084 erb = ERB.new(script, nil, '-');
2087 def generate_header_eventtype_struct()
2089 struct <%= self.main_name() %>_eventdata_mousemove_t_ {
2092 typedef struct <%= self.main_name() %>_eventdata_mousemove_t_ <%= self.main_name() %>_eventdata_mousemove_t;
2094 struct <%= self.main_name() %>_eventdata_keydown_t_ {
2099 typedef struct <%= self.main_name() %>_eventdata_keydown_t_ <%= self.main_name() %>_eventdata_keydown_t;
2101 struct <%= self.main_name() %>_eventdata_menu_t_ {
2104 typedef struct <%= self.main_name() %>_eventdata_menu_t_ <%= self.main_name() %>_eventdata_menu_t;
2106 struct <%= self.main_name() %>_eventdata_timeout_t_ {
2109 typedef struct <%= self.main_name() %>_eventdata_timeout_t_ <%= self.main_name() %>_eventdata_timeout_t;
2111 <%- @win.each do |w| -%>
2112 <%- if w.is_exportevent_draw() -%>
2113 struct <%= w.struct_name() %>_eventdata_draw_t_ {
2115 typedef struct <%= w.struct_name() %>_eventdata_draw_t_ <%= w.struct_name() %>_eventdata_draw_t;
2118 <%- if w.is_attr_resizable() -%>
2119 struct <%= w.struct_name() %>_eventdata_resize_t_ {
2122 typedef struct <%= w.struct_name() %>_eventdata_resize_t_ <%= w.struct_name() %>_eventdata_resize_t;
2125 <%- if w.is_exportevent_close() -%>
2126 struct <%= w.struct_name() %>_eventdata_close_t_ {
2129 typedef struct <%= w.struct_name() %>_eventdata_close_t_ <%= w.struct_name() %>_eventdata_close_t;
2132 <%- if w.is_exportevent_butdn() -%>
2133 struct <%= w.struct_name() %>_eventdata_butdn_t_ {
2137 typedef struct <%= w.struct_name() %>_eventdata_butdn_t_ <%= w.struct_name() %>_eventdata_butdn_t;
2140 <%- if w.is_exportevent_paste() -%>
2141 struct <%= w.struct_name() %>_eventdata_paste_t_ {
2143 typedef struct <%= w.struct_name() %>_eventdata_paste_t_ <%= w.struct_name() %>_eventdata_paste_t;
2146 <%- if w.is_exportevent_switch() -%>
2147 struct <%= w.struct_name() %>_eventdata_switch_t_ {
2149 typedef struct <%= w.struct_name() %>_eventdata_switch_t_ <%= w.struct_name() %>_eventdata_switch_t;
2152 <%- if w.is_exportevent_mousemove() -%>
2153 struct <%= w.struct_name() %>_eventdata_mousemove_t_ {
2157 typedef struct <%= w.struct_name() %>_eventdata_mousemove_t_ <%= w.struct_name() %>_eventdata_mousemove_t;
2160 <%- if w.is_exportevent_scroll() and w.is_attr_scrollable() -%>
2161 struct <%= w.struct_name() %>_eventdata_scroll_t_ {
2165 typedef struct <%= w.struct_name() %>_eventdata_scroll_t_ <%= w.struct_name() %>_eventdata_scroll_t;
2168 <%= w.generate_header_partsevent_struct(self.main_name()) %><%- -%>
2172 erb = ERB.new(script, nil, '-');
2175 def generate_header_eventtype_union()
2177 struct <%= self.main_name() %>event_t_ {
2180 <%= self.main_name() %>_eventdata_mousemove_t common_mousemove;
2181 <%= self.main_name() %>_eventdata_keydown_t common_keydown;
2182 <%= self.main_name() %>_eventdata_menu_t common_menu;
2183 <%= self.main_name() %>_eventdata_timeout_t common_timeout;
2184 <%- @win.each do |w| -%>
2185 <%- if w.is_exportevent_draw() -%>
2186 <%= w.struct_name() %>_eventdata_draw_t <%= w.struct_name() %>_draw;
2188 <%- if w.is_attr_resizable() -%>
2189 <%= w.struct_name() %>_eventdata_resize_t <%= w.struct_name() %>_resize;
2191 <%- if w.is_exportevent_close() -%>
2192 <%= w.struct_name() %>_eventdata_close_t <%= w.struct_name() %>_close;
2194 <%- if w.is_exportevent_butdn() -%>
2195 <%= w.struct_name() %>_eventdata_butdn_t <%= w.struct_name() %>_butdn;
2197 <%- if w.is_exportevent_paste() -%>
2198 <%= w.struct_name() %>_eventdata_paste_t <%= w.struct_name() %>_paste;
2200 <%- if w.is_exportevent_switch() -%>
2201 <%= w.struct_name() %>_eventdata_switch_t <%= w.struct_name() %>_switch;
2203 <%- if w.is_exportevent_mousemove() -%>
2204 <%= w.struct_name() %>_eventdata_mousemove_t <%= w.struct_name() %>_mousemove;
2206 <%- if w.is_exportevent_scroll() and w.is_attr_scrollable() -%>
2207 <%= w.struct_name() %>_eventdata_scroll_t <%= w.struct_name() %>_scroll;
2209 <%- -%><%= w.generate_header_partsevent_unionmember(self.main_name()) %><%- -%>
2213 typedef struct <%= self.main_name() %>event_t_ <%= self.main_name() %>event_t;
2216 erb = ERB.new(script, nil, '-');
2219 def generate_header_main_prototypes()
2221 typedef struct <%= self.main_name() %>_t_ <%= self.main_name() %>_t;
2223 IMPORT <%= self.main_name() %>_t* <%= self.main_name() %>_new();
2224 IMPORT VOID <%= self.main_name() %>_delete(<%= self.main_name() %>_t *hmi);
2225 IMPORT W <%= self.main_name() %>_getevent(<%= self.main_name() %>_t *hmi, <%= self.main_name() %>event_t **evt);
2226 <%- @win.each do |w| -%>
2227 IMPORT <%= w.struct_name() %>_t* <%= self.main_name() %>_new<%= w.struct_name() %>(<%= self.main_name() %>_t *hmi, <%= w.generate_initialize_arguments() %>);
2229 <%- @win.each do |w| -%>
2230 IMPORT VOID <%= self.main_name() %>_delete<%= w.struct_name() %>(<%= self.main_name() %>_t *hmi, <%= w.struct_name() %>_t *window);
2234 erb = ERB.new(script, nil, '-');
2238 def generate_header()
2241 str += w.generate_prototypes() + "\n";
2243 str += self.generate_header_eventtype_enumulate() + "\n";
2244 str += self.generate_header_eventtype_struct();
2245 str += self.generate_header_eventtype_union() + "\n";
2246 str += self.generate_header_main_prototypes() + "\n";
2250 def generate_source_include_files()
2252 #include "<%= self.filename_header() %>"
2253 #include "hmi/hmi_windowscroll.h"
2256 #include <bstdlib.h>
2258 #include <tstring.h>
2259 #include <btron/btron.h>
2260 #include <btron/hmi.h>
2261 #include <btron/vobj.h>
2264 # define DP(arg) printf arg
2265 # define DP_ER(msg, err) printf("%s (%d/%x)\\n", msg, err>>16, err)
2267 # define DP(arg) /**/
2268 # define DP_ER(msg, err) /**/
2273 erb = ERB.new(script, nil, '-');
2277 def generate_source_mainloop_windowid_valuablelist()
2279 <%- @win.each_with_index do |w, idx| -%>
2280 <%= w.struct_name() %>_id<%- if idx != @win.length - 1 -%>, <%- end -%>
2283 erb = ERB.new(script, nil, '-');
2287 def generate_source_mainloop()
2289 LOCAL VOID <%= self.main_name() %>_setswitchbutdnflag(<%= self.main_name() %>_t *hmi)
2291 hmi->flag = hmi->flag | <%= self.main_name().upcase %>_FLAG_SWITCHBUTDN;
2294 LOCAL VOID <%= self.main_name() %>_clearswitchbutdnflag(<%= self.main_name() %>_t *hmi)
2296 hmi->flag = hmi->flag & ~<%= self.main_name().upcase %>_FLAG_SWITCHBUTDN;
2299 LOCAL Bool <%= self.main_name() %>_issetswitchbutdnflag(<%= self.main_name() %>_t *hmi)
2301 if ((hmi->flag & <%= self.main_name().upcase %>_FLAG_SWITCHBUTDN) == 0) {
2307 <%- @win.each do |w| -%>
2308 LOCAL Bool <%= self.main_name() %>_is<%= w.struct_name() %>WID(<%= self.main_name() %>_t *hmi, WID wid)
2310 if (hmi-><%= w.struct_name() %>->wid == wid) {
2317 LOCAL VOID <%= self.main_name() %>_weventnull(<%= self.main_name() %>_t *hmi, WEVENT *wev, <%= self.main_name() %>event_t *evt)
2319 cidl_par(wev->s.wid, &wev->s.pos);
2320 if (wev->s.cmd != W_WORK)
2321 return; /*ºî¶ÈÎΰ賰*/
2322 if (wev->s.stat & ES_CMD)
2323 return; /*Ì¿Îᥡ¼¤¬²¡¤µ¤ì¤Æ¤¤¤ë*/
2324 <%- @win.each do |w| -%>
2325 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->s.wid) == True) {
2326 <%- if w.is_exist_controllparts() -%>
2327 cidl_par(wev->s.wid, &wev->s.pos);
2329 <%- if w.is_exportevent_mousemove() -%>
2330 hmi->evt.type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_MOUSEMOVE;
2331 hmi->evt.data.<%= w.struct_name() %>_mousemove.pos = wev->s.pos;
2332 hmi->evt.data.<%= w.struct_name() %>_mousemove.stat = wev->s.stat;
2333 <%- elsif !w.is_exist_controllparts() -%>
2334 gset_ptr(PS_SELECT, NULL, -1, -1);
2340 hmi->evt.type = <%= self.main_name().upcase %>EVENT_TYPE_COMMON_MOUSEMOVE;
2341 hmi->evt.data.common_mousemove.pos = wev->s.pos;
2344 LOCAL VOID <%= self.main_name() %>_weventrequest(<%= self.main_name() %>_t *hmi, WEVENT *wev, <%= self.main_name() %>event_t *evt)
2346 switch (wev->g.cmd) {
2347 case W_REDISP: /*ºÆɽ¼¨Í×µá*/
2348 <%- @win.each do |w| -%>
2349 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->g.wid) == True) {
2350 <%- if w.is_exportevent_draw() -%>
2351 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_DRAW;
2353 <%= w.struct_name() %>_redisp(hmi-><%= w.struct_name() %>);
2359 case W_PASTE: /*Ž¹þ¤ßÍ×µá*/
2360 <%- @win.each do |w| -%>
2361 <%- if w.is_exportevent_paste() -%>
2362 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->g.wid) == True) {
2363 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_PASTE;
2364 memcpy(&hmi-><%= w.struct_name() %>->savedwev, wev, sizeof(WEVENT));
2369 wrsp_evt(wev, 1); /*NACK*/
2371 case W_DELETE: /*Êݸ½ªÎ»*/
2372 wrsp_evt(wev, 0); /*ACK*/
2373 <%- @win.each do |w| -%>
2374 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->g.wid) == True) {
2375 <%- if w.is_exportevent_close() -%>
2376 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_CLOSE;
2377 evt->data.<%= w.struct_name() %>_close.save = True;
2379 <%= w.struct_name() %>_close(hmi-><%= w.struct_name() %>);
2385 case W_FINISH: /*ÇÑ´þ½ªÎ»*/
2386 wrsp_evt(wev, 0); /*ACK*/
2387 <%- @win.each do |w| -%>
2388 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->g.wid) == True) {
2389 <%- if w.is_exportevent_close() -%>
2390 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_CLOSE;
2391 evt->data.<%= w.struct_name() %>_close.save = False;
2393 <%= w.struct_name() %>_close(hmi-><%= w.struct_name() %>);
2402 LOCAL VOID <%= self.main_name() %>_weventbutdn(<%= self.main_name() %>_t *hmi, WEVENT *wev, <%= self.main_name() %>event_t *evt)
2405 W dh, dv; /* TODO: add check for exist scrollable window */
2407 switch (wev->s.cmd) {
2409 switch (wchk_dck(wev->s.time)) {
2411 <%- @win.each do |w| -%>
2412 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->s.wid) == True) {
2413 <%- if w.is_exportevent_close() -%>
2414 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_CLOSE;
2415 evt->data.<%= w.struct_name() %>_close.save = True; /* TODO: tmp value */
2417 <%= w.struct_name() %>_close(hmi-><%= w.struct_name() %>);
2430 if (wmov_drg(wev, NULL) > 0) {
2431 <%- @win.each do |w| -%>
2432 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->s.wid) == True) {
2433 <%- if w.is_exportevent_draw() -%>
2434 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_DRAW;
2436 <%= w.struct_name() %>_redisp(hmi-><%= w.struct_name() %>);
2447 switch (wchk_dck(wev->s.time)) {
2449 i = wchg_wnd(wev->s.wid, NULL, W_MOVE);
2452 i = wrsz_drg(wev, NULL, NULL);
2458 <%- @win.each do |w| -%>
2459 <%- if w.is_attr_resizable() -%>
2460 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->s.wid) == True) {
2461 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_RESIZE;
2462 <%= w.struct_name() %>_resize(hmi-><%= w.struct_name() %>, &evt->data.<%= w.struct_name() %>_resize.work_sz);
2463 hmi_windowscroll_updatebar(&hmi-><%= w.struct_name() %>->wscr);
2465 <%= w.struct_name() %>_setflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_DRAWREQUEST);
2473 <%- @win.each do |w| -%>
2474 <%- if w.is_attr_scrollable() -%>
2475 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->s.wid) == True) {
2476 err = hmi_windowscroll_weventrbar(&hmi-><%= w.struct_name() %>->wscr, wev, &dh, &dv);
2481 <%= w.struct_name() %>_clearflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_RSCROLLING);
2483 <%= w.struct_name() %>_setflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_RSCROLLING);
2485 <%- if w.is_exportevent_scroll() -%>
2486 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_SCROLL;
2487 evt->data.<%= w.struct_name() %>_scroll.dh = dh;
2488 evt->data.<%= w.struct_name() %>_scroll.dv = dv;
2496 <%- @win.each do |w| -%>
2497 <%- if w.is_attr_scrollable() -%>
2498 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->s.wid) == True) {
2499 err = hmi_windowscroll_weventbbar(&hmi-><%= w.struct_name() %>->wscr, wev, &dh, &dv);
2504 <%= w.struct_name() %>_clearflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_BSCROLLING);
2506 <%= w.struct_name() %>_setflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_BSCROLLING);
2508 <%- if w.is_exportevent_scroll() -%>
2509 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_SCROLL;
2510 evt->data.<%= w.struct_name() %>_scroll.dh = dh;
2511 evt->data.<%= w.struct_name() %>_scroll.dv = dv;
2519 <%- @win.each do |w| -%>
2520 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->s.wid) == True) {
2521 <%= w.struct_name() %>_butdnwork(hmi-><%= w.struct_name() %>, wev, evt);
2531 LOCAL VOID <%= self.main_name() %>_weventswitch(<%= self.main_name() %>_t *hmi, WEVENT *wev, <%= self.main_name() %>event_t *evt)
2533 <%= self.main_name() %>_setswitchbutdnflag(hmi);
2534 <%- @win.each do |w| -%>
2535 <%- if w.is_exportevent_switch() -%>
2536 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->s.wid) == True) {
2537 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_SWITCH;
2544 LOCAL VOID <%= self.main_name() %>_weventreswitch(<%= self.main_name() %>_t *hmi, WEVENT *wev, <%= self.main_name() %>event_t *evt)
2546 <%= self.main_name() %>_setswitchbutdnflag(hmi);
2547 <%- @win.each do |w| -%>
2548 if (<%= self.main_name() %>_is<%= w.struct_name() %>WID(hmi, wev->s.wid) == True) {
2549 <%- if w.is_exportevent_switch() -%>
2550 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_SWITCH;
2551 <%= w.struct_name() %>_setflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_DRAWREQUEST);
2554 <%- if w.is_exportevent_draw() -%>
2555 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_DRAW;
2557 <%= w.struct_name() %>_redisp(hmi-><%= w.struct_name() %>);
2565 LOCAL VOID <%= self.main_name() %>_receivemessage(<%= self.main_name() %>_t *hmi, <%= self.main_name() %>event_t *evt)
2570 err = rcv_msg(MM_ALL, &msg, sizeof(MESSAGE), WAIT|NOCLR);
2572 if (msg.msg_type == MS_TMOUT) { /* should be use other type? */
2573 evt->type = <%= self.main_name().upcase %>EVENT_TYPE_COMMON_TIMEOUT;
2574 evt->data.common_timeout.code = msg.msg_body.TMOUT.code;
2577 clr_msg(MM_ALL, MM_ALL);
2580 LOCAL Bool <%= self.main_name() %>_checkflag(<%= self.main_name() %>_t *hmi, <%= self.main_name() %>event_t **evt)
2584 <%- @win.each do |w| -%>
2585 <%- if w.is_need_flag() and w.is_attr_scrollable() -%>
2586 if (<%= w.struct_name() %>_issetflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_RSCROLLING) == True) {
2587 err = hmi_windowscroll_weventrbar(&hmi-><%= w.struct_name() %>->wscr, &hmi->wev, &dh, &dv);
2589 <%= w.struct_name() %>_clearflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_RSCROLLING);
2593 <%= w.struct_name() %>_clearflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_RSCROLLING);
2595 <%= w.struct_name() %>_setflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_RSCROLLING);
2597 <%- if w.is_exportevent_scroll() -%>
2598 hmi->evt.type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_SCROLL;
2599 hmi->evt.data.<%= w.struct_name() %>_scroll.dh = dh;
2600 hmi->evt.data.<%= w.struct_name() %>_scroll.dv = dv;
2604 if (<%= w.struct_name() %>_issetflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_BSCROLLING) == True) {
2605 err = hmi_windowscroll_weventbbar(&hmi-><%= w.struct_name() %>->wscr, &hmi->wev, &dh, &dv);
2607 <%= w.struct_name() %>_clearflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_BSCROLLING);
2611 <%= w.struct_name() %>_clearflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_BSCROLLING);
2613 <%= w.struct_name() %>_setflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_BSCROLLING);
2615 <%- if w.is_exportevent_scroll() -%>
2616 hmi->evt.type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_SCROLL;
2617 hmi->evt.data.<%= w.struct_name() %>_scroll.dh = dh;
2618 hmi->evt.data.<%= w.struct_name() %>_scroll.dv = dv;
2624 <%- @win.each do |w| -%><%= w.generate_checkpartsflag_in_checkflag(self.main_name()) %><%- end -%>
2629 EXPORT W <%= self.main_name() %>_getevent(<%= self.main_name() %>_t *hmi, <%= self.main_name() %>event_t **evt)
2634 hmi->evt.type = <%= self.main_name().upcase %>EVENT_TYPE_NONE;
2638 ok = <%= self.main_name() %>_issetswitchbutdnflag(hmi);
2640 <%= self.main_name() %>_weventbutdn(hmi, wev0, &hmi->evt);
2641 <%= self.main_name() %>_clearswitchbutdnflag(hmi);
2645 <%- @win.each do |w| -%>
2646 <%- if w.is_need_flag() -%>
2647 if (<%= w.struct_name() %>_issetflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_DRAWREQUEST) == True) {
2648 <%- if w.is_exportevent_draw() -%>
2649 hmi->evt.type = <%= self.main_name().upcase %>EVENT_TYPE_<%= w.struct_name().upcase %>_DRAW;
2651 <%= w.struct_name() %>_redisp(hmi-><%= w.struct_name() %>);
2653 <%= w.struct_name() %>_clearflag(hmi-><%= w.struct_name() %>, <%= w.struct_name().upcase %>_FLAG_DRAWREQUEST);
2659 ok = <%= self.main_name() %>_checkflag(hmi, evt);
2664 wget_evt(wev0, WAIT);
2665 switch (wev0->s.type) {
2667 <%= self.main_name() %>_weventnull(hmi, wev0, &hmi->evt);
2670 <%= self.main_name() %>_weventrequest(hmi, wev0, &hmi->evt);
2673 <%= self.main_name() %>_weventreswitch(hmi, wev0, &hmi->evt);
2676 <%= self.main_name() %>_weventswitch(hmi, wev0, &hmi->evt);
2679 <%= self.main_name() %>_weventbutdn(hmi, wev0, &hmi->evt);
2683 hmi->evt.type = <%= self.main_name().upcase %>EVENT_TYPE_COMMON_KEYDOWN;
2684 hmi->evt.data.common_keydown.keycode = wev0->e.data.key.code;
2685 hmi->evt.data.common_keydown.keytop = wev0->e.data.key.keytop;
2686 hmi->evt.data.common_keydown.stat = wev0->e.stat;
2692 oprc_dev(&wev0->e, NULL, 0);
2695 <%= self.main_name() %>_receivemessage(hmi, &hmi->evt);
2698 hmi->evt.type = <%= self.main_name().upcase %>EVENT_TYPE_COMMON_MENU;
2699 hmi->evt.data.common_menu.pos = wev0->s.pos;
2708 erb = ERB.new(script, nil, '-');
2712 def generate_struct()
2715 str += w.generate_source_struct();
2718 #define <%= self.main_name().upcase %>_FLAG_SWITCHBUTDN 0x00000001
2720 struct <%= self.main_name() %>_t_ {
2722 <%= self.main_name() %>event_t evt;
2724 <%- @win.each do |w| -%>
2725 <%= w.struct_name() %>_t *<%= w.struct_name() %>;
2730 erb = ERB.new(script, nil, '-');
2731 str += erb.result(binding)
2734 def generate_windowfunctions()
2737 str += w.generate_source_functions(self.main_name());
2742 def generate_source_new_del_wrappers()
2744 <%- @win.each do |w| -%>
2745 EXPORT <%= w.struct_name() %>_t* <%= self.main_name() %>_new<%= w.struct_name() %>(<%= self.main_name() %>_t *hmi, <%= w.generate_initialize_arguments() %>)
2747 <%- if w.is_attr_subwindow -%>
2748 if (parent == NULL) {
2752 if (hmi-><%= w.struct_name() %> != NULL) {
2755 hmi-><%= w.struct_name() %> = <%= w.struct_name() %>_new(<%= w.generate_initialize_arguments_values() %>);
2756 return hmi-><%= w.struct_name() %>;
2759 EXPORT VOID <%= self.main_name() %>_delete<%= w.struct_name() %>(<%= self.main_name() %>_t *hmi, <%= w.struct_name() %>_t *window)
2761 <%= w.struct_name() %>_delete(hmi-><%= w.struct_name() %>);
2762 hmi-><%= w.struct_name() %> = NULL;
2767 EXPORT <%= self.main_name() %>_t* <%= self.main_name() %>_new()
2769 <%= self.main_name() %>_t *hmi;
2771 hmi = (<%= self.main_name() %>_t *)malloc(sizeof(<%= self.main_name() %>_t));
2776 <%- @win.each do |w| -%>
2777 hmi-><%= w.struct_name() %> = NULL;
2783 EXPORT VOID <%= self.main_name() %>_delete(<%= self.main_name() %>_t *hmi)
2785 <%- @win.each do |w| -%>
2786 if (hmi-><%= w.struct_name() %> != NULL) {
2787 <%= w.struct_name() %>_delete(hmi-><%= w.struct_name() %>);
2794 erb = ERB.new(script, nil, '-');
2798 def generate_source_mainfunctions()
2801 str += w.generate_new_del_functions();
2803 str += self.generate_source_new_del_wrappers()
2807 def generate_source()
2809 str += self.generate_struct();
2810 str += self.generate_windowfunctions();
2811 str += self.generate_source_mainloop();
2812 str += self.generate_source_mainfunctions();
2819 def generate_header(filename, data)
2820 fd = File.open(filename, "w");
2821 fd.puts data.lisence_header();
2824 /* This file is automatically generated. */
2827 #include <btron/dp.h>
2828 #include <btron/hmi.h>
2831 fd.puts "#ifndef __" + filename.upcase.gsub(/\./, '_') + "__";
2832 fd.puts "#define __" + filename.upcase.gsub(/\./, '_') + "__";
2834 fd.puts data.generate_header();
2838 def generate_source(filename, data)
2839 fd = File.open(filename, "w");
2840 fd.puts data.lisence_source();
2843 /* This file is automatically generated. */
2846 fd.puts data.generate_source_include_files();
2848 fd.puts data.generate_source();
2852 yaml = YAML.load(File.read(ARGV[0], encoding: 'EUC-JP:UTF-8'));
2853 data = HMIData.new(yaml);
2855 fname_header = yaml["generator"]["output_header"]
2856 fname_source = yaml["generator"]["output_source"]
2858 generate_header(fname_header, data);
2859 generate_source(fname_source, data);