plugins/svgui/svgui.py
changeset 47 fd45c291fed0
parent 44 1f5407c0263f
child 49 45dc6a944ab6
--- a/plugins/svgui/svgui.py	Tue Sep 18 18:04:07 2007 +0200
+++ b/plugins/svgui/svgui.py	Thu Sep 20 17:30:32 2007 +0200
@@ -182,7 +182,8 @@
         text += "IMPLEMENT_APP_NO_MAIN(SVGViewApp);\n"
         text += "IMPLEMENT_WX_THEME_SUPPORT;\n"
         text += "SVGViewApp *myapp = NULL;\n"
-        text += "pthread_t wxMainLoop,automate;\n"
+        text += "pthread_t wxMainLoop;\n"
+#        text += "pthread_t wxMainLoop,automate;\n"
         text += "int myargc = 0;\n"
         text += "char** myargv = NULL;\n\n"
         
@@ -207,17 +208,18 @@
 #        text += "  return args;\n"
 #        text += "}\n\n"
         
-        if (self.SVGUIRootElement):
-            width = self.SVGUIRootElement.GetBBox().GetWidth()
-            height = self.SVGUIRootElement.GetBBox().GetHeight()
-        else :
-            width = 250
-            height = 350
+#        if (self.SVGUIRootElement):
+#            width = self.SVGUIRootElement.GetBBox().GetWidth()
+#            height = self.SVGUIRootElement.GetBBox().GetHeight()
+#        else :
+#            width = 250
+#            height = 350
         text += "bool SVGViewApp::OnInit()\n{\n"
         text += "  #ifndef __WXMSW__\n"
         text += "    setlocale(LC_NUMERIC, \"C\");\n"
         text += "  #endif\n"
-        text += "  frame = new MainFrame(NULL, wxT(\"Program\"),wxDefaultPosition, wxSize((int)"+str(width)+", (int)"+str(height)+"));\n"
+        #text += "  frame = new MainFrame(NULL, wxT(\"Program\"),wxDefaultPosition, wxSize((int)"+str(width)+", (int)"+str(height)+"));\n"
+        text += "  frame = new MainFrame(NULL, wxT(\"Program\"),wxDefaultPosition, wxDefaultSize);\n"
         text += "  myapp = this;\n"
 #        text += "  pthread_create(&automate, NULL, SimulAutomate, NULL);\n"
         text += "  return true;\n"
@@ -227,7 +229,9 @@
         text += "  myargc = argc;\n"
         text += "  myargv = argv;\n"
         text += "  pthread_create(&wxMainLoop, NULL, InitWxEntry, NULL);\n"
-        text += "  pause();\n"
+        text += "}\n\n"
+
+        text += "int __cleanup_"+self.BusNumber+"()\n{\n"
         text += "}\n\n"
 
         text += "int __retrive_"+self.BusNumber+"()\n{\n"
@@ -321,6 +325,7 @@
                 if info["name"] == "id":
                     element_id = str(info["value"])
             text += "    out_state_"+element_id+" = UNCHANGED;\n"
+            text += "    in_state_"+element_id+" = UNCHANGED;\n"
         text += "}\n\n"
         return text
     
@@ -753,8 +758,9 @@
     def PlugGenerate_C(self, buildpath, locations, logger):
         current_location = self.GetCurrentLocation()
         self.BusNumber = "_".join(map(lambda x:str(x), current_location))
-        self.GenerateProgram(buildpath)
-        Gen_C_file = os.path.join(buildpath, "program.cpp" )
+        progname = self.BusNumber + "_SVGUI"
+        self.GenerateProgram(buildpath, progname)
+        Gen_C_file = os.path.join(buildpath, progname+".cpp" )
         return [(Gen_C_file,"")],""
     
     def BlockTypesFactory(self):
@@ -770,7 +776,7 @@
                 for num, variable in enumerate(block.inputVariables.getVariable()):
                     connections = variable.connectionPointIn.getConnections()
                     if connections and len(connections) == 1:
-                        parameter = "%sQ%s%s.%d.%d"%("%", TYPECONVERSION[block_infos["inputs"][num][1]], current_location, block_id, num)
+                        parameter = "%sQ%s%s.%d.%d"%("%", TYPECONVERSION[block_infos["inputs"][num][1]], current_location, block_id, num+1)
                         value = generator.ComputeFBDExpression(body, connections[0])
                         generator.Program += ("  %s := %s;\n"%(parameter, generator.ExtractModifier(variable, value)))
                 generator.ComputedBlocks[name] = True
@@ -779,7 +785,7 @@
                 for num, variable in enumerate(block.outputVariables.getVariable()):
                     blockPointx, blockPointy = variable.connectionPointOut.getRelPosition()
                     if block.getX() + blockPointx == connectionPoint.getX() and block.getY() + blockPointy == connectionPoint.getY():
-                        return "%sI%s%s.%d.%d"%("%", TYPECONVERSION[block_infos["outputs"][num][1]], current_location, block_id, num)
+                        return "%sI%s%s.%d.%d"%("%", TYPECONVERSION[block_infos["outputs"][num][1]], current_location, block_id, num+1)
                 raise ValueError, "No output variable found"
             else:
                 return None
@@ -792,9 +798,9 @@
             current_location = ".".join(map(str, self.GetCurrentLocation()))
             variables = []
             for num, (input_name, input_type, input_modifier) in enumerate(block_infos["inputs"]):
-                variables.append((input_type, None, "%sQ%s%s.%d.%d"%("%", TYPECONVERSION[input_type], current_location, block_id, num), None))
+                variables.append((input_type, None, "%sQ%s%s.%d.%d"%("%", TYPECONVERSION[input_type], current_location, block_id, num+1), None))
             for num, (output_name, output_type, output_modifier) in enumerate(block_infos["outputs"]):
-                variables.append((output_type, None, "%sQ%s%s.%d.%d"%("%", TYPECONVERSION[input_type], current_location, block_id, num), None))
+                variables.append((output_type, None, "%sI%s%s.%d.%d"%("%", TYPECONVERSION[input_type], current_location, block_id, num+1), None))
             return variables
 
         return [{"name" : "SVGUI function blocks", "list" :