OSDN Git Service

add enable to specify whether window is always open.
authorornse01 <ornse01@users.sourceforge.jp>
Sat, 14 Apr 2012 06:07:09 +0000 (06:07 +0000)
committerornse01 <ornse01@users.sourceforge.jp>
Sat, 14 Apr 2012 06:07:09 +0000 (06:07 +0000)
git-svn-id: http://svn.sourceforge.jp/svnroot/bchan/bchanf/trunk@431 20a0b8eb-f62a-4a12-8fe1-b598822500fb

src/tools/hmi_generator.rb

index 725bcda..40c39ad 100644 (file)
@@ -1305,6 +1305,9 @@ class HMIWindow
   def is_attr_subwindow()
     self.is_attr_xxx("subwindow");
   end
+  def is_attr_alwaysopen()
+    self.is_attr_xxx("alwaysopen");
+  end
   def is_exportevent_draw()
     self.is_exportevent_xxx("draw");
   end
@@ -1436,8 +1439,10 @@ IMPORT GID <%= self.struct_name() %>_getGID(<%= self.struct_name() %>_t *window)
 IMPORT WID <%= self.struct_name() %>_getWID(<%= self.struct_name() %>_t *window);
 IMPORT W <%= self.struct_name() %>_settitle(<%= self.struct_name() %>_t *window, TC *title);
 IMPORT Bool <%= self.struct_name() %>_isactive(<%= self.struct_name() %>_t *window);
+<%- if !self.is_attr_alwaysopen() -%>
 IMPORT W <%= self.struct_name() %>_open(<%= self.struct_name() %>_t *window);
 IMPORT VOID <%= self.struct_name() %>_close(<%= self.struct_name() %>_t *window);
+<%- end -%>
 <%- @parts.each do |p| -%><%= p.generate_prototypes(self.struct_name()) %><%- end -%>
     EOS
 
@@ -1704,7 +1709,7 @@ LOCAL VOID <%= self.struct_name() %>_resize(<%= self.struct_name() %>_t *window,
 }
 
 <%- end -%>
-EXPORT W <%= self.struct_name() %>_open(<%= self.struct_name() %>_t *window)
+<% if self.is_attr_alwaysopen() %>LOCAL<% else %>EXPORT<% end %> W <%= self.struct_name() %>_open(<%= self.struct_name() %>_t *window)
 {
        WID wid;
        <%- if self.get_window_title() != nil -%>
@@ -1736,6 +1741,7 @@ EXPORT W <%= self.struct_name() %>_open(<%= self.struct_name() %>_t *window)
        return 0;
 }
 
+<%- if !self.is_attr_alwaysopen() -%>
 EXPORT VOID <%= self.struct_name() %>_close(<%= self.struct_name() %>_t *window)
 {
        WDSTAT stat;
@@ -1759,6 +1765,7 @@ EXPORT VOID <%= self.struct_name() %>_close(<%= self.struct_name() %>_t *window)
        window->gid = -1;
 }
 
+<%- end -%>
     EOS
 
     erb = ERB.new(script, nil, '-');
@@ -1827,6 +1834,17 @@ EXPORT <%= self.struct_name() %>_t* <%= self.struct_name() %>_new(<%= self.gener
        <%- end -%>
        <%- @parts.each do |p| -%><%= p.generate_initialize_in_new() %><%- end -%>
 
+       <%- if self.is_attr_alwaysopen() -%>
+       err = <%= self.struct_name() %>_open(window);
+       if (err < 0) {
+               <%- if self.is_attr_scrollable() -%>
+               hmi_windowscroll_finalize(&window->wscr);
+               <%- end -%>
+               free(window);
+               return NULL;
+       }
+       <%- end -%>
+
        return window;
 }