140 FbdBlock = self.GetBlockType(type) |
156 FbdBlock = self.GetBlockType(type) |
141 element_num_patte = 1 |
157 element_num_patte = 1 |
142 for input in FbdBlock["inputs"]: |
158 for input in FbdBlock["inputs"]: |
143 element_type = TYPECONVERSION[input[1]] |
159 element_type = TYPECONVERSION[input[1]] |
144 element_c_type = CTYPECONVERSION[input[1]] |
160 element_c_type = CTYPECONVERSION[input[1]] |
145 line = "__I"+element_type+self.BusNumber+"_"+element_id+"_"+str(element_num_patte)+";\n" |
161 line = "__Q"+element_type+self.BusNumber+"_"+element_id+"_"+str(element_num_patte)+";\n" |
146 text += " "+element_c_type+" "+line |
162 text += element_c_type+" "+line |
147 text += " "+element_c_type+" _copy"+line |
163 text += element_c_type+" _copy"+line |
148 element_num_patte +=1 |
164 element_num_patte +=1 |
149 element_num_patte = 1 |
165 element_num_patte = 1 |
150 for output in FbdBlock["outputs"]: |
166 for output in FbdBlock["outputs"]: |
151 element_type = TYPECONVERSION[output[1]] |
167 element_type = TYPECONVERSION[output[1]] |
152 element_c_type = CTYPECONVERSION[output[1]] |
168 element_c_type = CTYPECONVERSION[output[1]] |
153 |
169 |
154 line = "__Q"+element_type+self.BusNumber+"_"+element_id+"_"+str(element_num_patte)+";\n" |
170 line = "__I"+element_type+self.BusNumber+"_"+element_id+"_"+str(element_num_patte)+";\n" |
155 text += " "+element_c_type+" "+line |
171 text += element_c_type+" "+line |
156 text += " "+element_c_type+" _copy"+line |
172 text += element_c_type+" _copy"+line |
157 element_num_patte +=1 |
173 element_num_patte +=1 |
158 text +="\n" |
174 text +="\n" |
159 return text |
175 return text |
160 |
176 |
161 def GenerateGlobalVarsAndFuncs(self): |
177 def GenerateGlobalVarsAndFuncs(self): |
162 text = "" |
178 text = "" |
|
179 pri_vars = self.GenerateIECVars() |
|
180 if (pri_vars): |
|
181 text += pri_vars |
|
182 |
163 text += "IMPLEMENT_APP_NO_MAIN(SVGViewApp);\n" |
183 text += "IMPLEMENT_APP_NO_MAIN(SVGViewApp);\n" |
164 text += "IMPLEMENT_WX_THEME_SUPPORT;\n" |
184 text += "IMPLEMENT_WX_THEME_SUPPORT;\n" |
165 text += "SVGViewApp *myapp;\n" |
185 text += "SVGViewApp *myapp;\n" |
166 text += "pthread_t wxMainLoop,automate;\n" |
186 text += "pthread_t wxMainLoop,automate;\n" |
167 text += "int myargc;\n" |
187 text += "int myargc;\n" |
356 fct += " if (flag_"+element_id+")\n {\n" |
376 fct += " if (flag_"+element_id+")\n {\n" |
357 fct += " flag_"+element_id+" = false;\n" |
377 fct += " flag_"+element_id+" = false;\n" |
358 element_num_patte = 1 |
378 element_num_patte = 1 |
359 for output in FbdBlock["outputs"]: |
379 for output in FbdBlock["outputs"]: |
360 if element_num_patte == 1: |
380 if element_num_patte == 1: |
361 fct += " if (transform->GetX() != _copy__QD"+self.BusNumber+"_"+element_id+"_1)\n" |
381 fct += " if (transform->GetX() != _copy__ID"+self.BusNumber+"_"+element_id+"_1)\n" |
362 fct += " {\n" |
382 fct += " {\n" |
363 fct += " _copy__QD"+self.BusNumber+"_"+element_id+"_1 = transform->GetX();\n" |
383 fct += " _copy__ID"+self.BusNumber+"_"+element_id+"_1 = transform->GetX();\n" |
364 fct += " _copy__QX"+self.BusNumber+"_"+element_id+"_6 = true;\n" |
384 fct += " _copy__IX"+self.BusNumber+"_"+element_id+"_6 = true;\n" |
365 fct += " }\n" |
385 fct += " }\n" |
366 elif element_num_patte == 2: |
386 elif element_num_patte == 2: |
367 fct += " if (transform->GetY() != _copy__QD"+self.BusNumber+"_"+element_id+"_2)\n" |
387 fct += " if (transform->GetY() != _copy__ID"+self.BusNumber+"_"+element_id+"_2)\n" |
368 fct += " {\n" |
388 fct += " {\n" |
369 fct += " _copy__QD"+self.BusNumber+"_"+element_id+"_2 = transform->GetY();\n" |
389 fct += " _copy__ID"+self.BusNumber+"_"+element_id+"_2 = transform->GetY();\n" |
370 fct += " _copy__QX"+self.BusNumber+"_"+element_id+"_6 = true;\n" |
390 fct += " _copy__IX"+self.BusNumber+"_"+element_id+"_6 = true;\n" |
371 fct += " }\n" |
391 fct += " }\n" |
372 elif element_num_patte == 3: |
392 elif element_num_patte == 3: |
373 fct += " if (transform->GetXScale() != _copy__QD"+self.BusNumber+"_"+element_id+"_3)\n" |
393 fct += " if (transform->GetXScale() != _copy__ID"+self.BusNumber+"_"+element_id+"_3)\n" |
374 fct += " {\n" |
394 fct += " {\n" |
375 fct += " _copy__QD"+self.BusNumber+"_"+element_id+"_3 = transform->GetXScale();\n" |
395 fct += " _copy__ID"+self.BusNumber+"_"+element_id+"_3 = transform->GetXScale();\n" |
376 fct += " _copy__QX"+self.BusNumber+"_"+element_id+"_6 = true;\n" |
396 fct += " _copy__IX"+self.BusNumber+"_"+element_id+"_6 = true;\n" |
377 fct += " }\n" |
397 fct += " }\n" |
378 elif element_num_patte == 4: |
398 elif element_num_patte == 4: |
379 fct += " if (transform->GetYScale() != _copy__QD"+self.BusNumber+"_"+element_id+"_4)\n" |
399 fct += " if (transform->GetYScale() != _copy__ID"+self.BusNumber+"_"+element_id+"_4)\n" |
380 fct += " {\n" |
400 fct += " {\n" |
381 fct += " _copy__QD"+self.BusNumber+"_"+element_id+"_4 = transform->GetYScale();\n" |
401 fct += " _copy__ID"+self.BusNumber+"_"+element_id+"_4 = transform->GetYScale();\n" |
382 fct += " _copy__QX"+self.BusNumber+"_"+element_id+"_6 = true;\n" |
402 fct += " _copy__IX"+self.BusNumber+"_"+element_id+"_6 = true;\n" |
383 fct += " }\n" |
403 fct += " }\n" |
384 elif element_num_patte == 5: |
404 elif element_num_patte == 5: |
385 fct += " if (transform->GetAngle() != _copy__QD"+self.BusNumber+"_"+element_id+"_5)\n" |
405 fct += " if (transform->GetAngle() != _copy__ID"+self.BusNumber+"_"+element_id+"_5)\n" |
386 fct += " {\n" |
406 fct += " {\n" |
387 fct += " _copy__QD"+self.BusNumber+"_"+element_id+"_5 = transform->GetAngle();\n" |
407 fct += " _copy__ID"+self.BusNumber+"_"+element_id+"_5 = transform->GetAngle();\n" |
388 fct += " _copy__QX"+self.BusNumber+"_"+element_id+"_6 = true;\n" |
408 fct += " _copy__IX"+self.BusNumber+"_"+element_id+"_6 = true;\n" |
389 fct += " }\n" |
409 fct += " }\n" |
390 element_num_patte +=1 |
410 element_num_patte +=1 |
391 fct += " flag_"+element_id+" = true;\n" |
411 fct += " flag_"+element_id+" = true;\n" |
392 fct += " }\n" |
412 fct += " }\n" |
393 fct += " event.Skip();\n" |
413 fct += " event.Skip();\n" |
394 fct += "}\n\n" |
414 fct += "}\n\n" |
395 elif type == "Container": |
415 elif type == "Container": |
396 fct += "void Program::On"+element_name+"Paint(wxPaintEvent& event)\n{\n" |
416 fct += "void Program::On"+element_name+"Paint(wxPaintEvent& event)\n{\n" |
397 fct += " SVGUIContainer* container = (SVGUIContainer*)GetElementById(wxT(\""+element_id+"\"));\n" |
417 fct += " SVGUIContainer* container = (SVGUIContainer*)GetElementById(wxT(\""+element_id+"\"));\n" |
398 fct += " if (container->IsVisible() != _copy__QX"+self.BusNumber+"_"+element_id+"_1 && flag_"+element_id+")\n" |
418 fct += " if (container->IsVisible() != _copy__IX"+self.BusNumber+"_"+element_id+"_1 && flag_"+element_id+")\n" |
399 fct += " {\n" |
419 fct += " {\n" |
400 fct += " flag_"+element_id+" = false;\n" |
420 fct += " flag_"+element_id+" = false;\n" |
401 fct += " _copy__QX"+self.BusNumber+"_"+element_id+"_1 = container->IsVisible();\n" |
421 fct += " _copy__IX"+self.BusNumber+"_"+element_id+"_1 = container->IsVisible();\n" |
402 fct += " _copy__QX"+self.BusNumber+"_"+element_id+"_2 = true;\n" |
422 fct += " _copy__IX"+self.BusNumber+"_"+element_id+"_2 = true;\n" |
403 fct += " flag_"+element_id+" = true;\n" |
423 fct += " flag_"+element_id+" = true;\n" |
404 fct += " }\n" |
424 fct += " }\n" |
405 fct += " event.Skip();\n" |
425 fct += " event.Skip();\n" |
406 fct += "}\n\n" |
426 fct += "}\n\n" |
407 |
427 |
471 element_id = str(info["value"]) |
491 element_id = str(info["value"]) |
472 type = element.GetElementInfos()["type"] |
492 type = element.GetElementInfos()["type"] |
473 FbdBlock = self.GetBlockType(type) |
493 FbdBlock = self.GetBlockType(type) |
474 if type == "Button": |
494 if type == "Button": |
475 fct += " old_state = __sync_val_compare_and_swap (&step_"+element_id+", FREE_AND_CHANGES, PLC_OUT_BUSY);\n" |
495 fct += " old_state = __sync_val_compare_and_swap (&step_"+element_id+", FREE_AND_CHANGES, PLC_OUT_BUSY);\n" |
476 fct += " if (_copy__IX"+self.BusNumber+"_"+element_id+"_2 && flag_"+element_id+" && old_state == FREE_AND_CHANGES)\n" |
496 fct += " if (_copy__QX"+self.BusNumber+"_"+element_id+"_2 && flag_"+element_id+" && old_state == FREE_AND_CHANGES)\n" |
477 fct += " {\n" |
497 fct += " {\n" |
478 fct += " flag_"+element_id+" = false;\n" |
498 fct += " flag_"+element_id+" = false;\n" |
479 fct += " SVGUIButton* button = (SVGUIButton*)GetElementById(wxT(\""+element_id+"\"));\n" |
499 fct += " SVGUIButton* button = (SVGUIButton*)GetElementById(wxT(\""+element_id+"\"));\n" |
480 fct += " if (_copy__IX"+self.BusNumber+"_"+element_id+"_1)\n" |
500 fct += " if (_copy__QX"+self.BusNumber+"_"+element_id+"_1)\n" |
481 fct += " button->Show();\n" |
501 fct += " button->Show();\n" |
482 fct += " else\n" |
502 fct += " else\n" |
483 fct += " button->Hide();\n" |
503 fct += " button->Hide();\n" |
484 fct += " flag_"+element_id+" = true;\n" |
504 fct += " flag_"+element_id+" = true;\n" |
485 fct += " }\n" |
505 fct += " }\n" |
486 fct += " __sync_val_compare_and_swap (&step_"+element_id+", PLC_OUT_BUSY, FREE_AND_NO_CHANGES);\n" |
506 fct += " __sync_val_compare_and_swap (&step_"+element_id+", PLC_OUT_BUSY, FREE_AND_NO_CHANGES);\n" |
487 elif type == "Container": |
507 elif type == "Container": |
488 fct += " old_state = __sync_val_compare_and_swap (&step_"+element_id+", FREE_AND_CHANGES, PLC_OUT_BUSY);\n" |
508 fct += " old_state = __sync_val_compare_and_swap (&step_"+element_id+", FREE_AND_CHANGES, PLC_OUT_BUSY);\n" |
489 fct += " if (_copy__IX"+self.BusNumber+"_"+element_id+"_2 && flag_"+element_id+" && old_state == FREE_AND_CHANGES)\n" |
509 fct += " if (_copy__QX"+self.BusNumber+"_"+element_id+"_2 && flag_"+element_id+" && old_state == FREE_AND_CHANGES)\n" |
490 fct += " {\n" |
510 fct += " {\n" |
491 fct += " flag_"+element_id+" = false;\n" |
511 fct += " flag_"+element_id+" = false;\n" |
492 fct += " SVGUIContainer* container = (SVGUIContainer*)GetElementById(wxT(\""+element_id+"\"));\n" |
512 fct += " SVGUIContainer* container = (SVGUIContainer*)GetElementById(wxT(\""+element_id+"\"));\n" |
493 fct += " if (_copy__IX"+self.BusNumber+"_"+element_id+"_1)\n" |
513 fct += " if (_copy__QX"+self.BusNumber+"_"+element_id+"_1)\n" |
494 fct += " container->Show();\n" |
514 fct += " container->Show();\n" |
495 fct += " else\n" |
515 fct += " else\n" |
496 fct += " container->Hide();\n" |
516 fct += " container->Hide();\n" |
497 fct += " flag_"+element_id+" = true;\n" |
517 fct += " flag_"+element_id+" = true;\n" |
498 fct += " }\n" |
518 fct += " }\n" |
499 fct += " __sync_val_compare_and_swap (&step_"+element_id+", PLC_OUT_BUSY, FREE_AND_NO_CHANGES);\n" |
519 fct += " __sync_val_compare_and_swap (&step_"+element_id+", PLC_OUT_BUSY, FREE_AND_NO_CHANGES);\n" |
500 elif type == "TextCtrl": |
520 elif type == "TextCtrl": |
501 fct += " old_state = __sync_val_compare_and_swap (&step_"+element_id+", FREE_AND_CHANGES, PLC_OUT_BUSY);\n" |
521 fct += " old_state = __sync_val_compare_and_swap (&step_"+element_id+", FREE_AND_CHANGES, PLC_OUT_BUSY);\n" |
502 fct += " if (_copy__IX"+self.BusNumber+"_"+element_id+"_2 && flag_"+element_id+" && old_state == FREE_AND_CHANGES)\n" |
522 fct += " if (_copy__QX"+self.BusNumber+"_"+element_id+"_2 && flag_"+element_id+" && old_state == FREE_AND_CHANGES)\n" |
503 fct += " {\n" |
523 fct += " {\n" |
504 fct += " flag_"+element_id+" = false;\n" |
524 fct += " flag_"+element_id+" = false;\n" |
505 fct += " SVGUITextCtrl* text = (SVGUITextCtrl*)GetElementById(wxT(\""+element_id+"\"));\n" |
525 fct += " SVGUITextCtrl* text = (SVGUITextCtrl*)GetElementById(wxT(\""+element_id+"\"));\n" |
506 fct += " wxString str = wxString::FromAscii(_copy__IB"+self.BusNumber+"_"+element_id+"_1);\n" |
526 fct += " wxString str = wxString::FromAscii(_copy__QB"+self.BusNumber+"_"+element_id+"_1);\n" |
507 fct += " text->SetText(str);\n" |
527 fct += " text->SetText(str);\n" |
508 fct += " flag_"+element_id+" = true;\n" |
528 fct += " flag_"+element_id+" = true;\n" |
509 fct += " }\n" |
529 fct += " }\n" |
510 fct += " __sync_val_compare_and_swap (&step_"+element_id+", PLC_OUT_BUSY, FREE_AND_NO_CHANGES);\n" |
530 fct += " __sync_val_compare_and_swap (&step_"+element_id+", PLC_OUT_BUSY, FREE_AND_NO_CHANGES);\n" |
511 elif type == "ScrollBar": |
531 elif type == "ScrollBar": |
512 fct += " old_state = __sync_val_compare_and_swap (&step_"+element_id+", FREE_AND_CHANGES, PLC_OUT_BUSY);\n" |
532 fct += " old_state = __sync_val_compare_and_swap (&step_"+element_id+", FREE_AND_CHANGES, PLC_OUT_BUSY);\n" |
513 fct += " if (_copy__IX"+self.BusNumber+"_"+element_id+"_2 && flag_"+element_id+" && old_state == FREE_AND_CHANGES)\n" |
533 fct += " if (_copy__QX"+self.BusNumber+"_"+element_id+"_2 && flag_"+element_id+" && old_state == FREE_AND_CHANGES)\n" |
514 fct += " {\n" |
534 fct += " {\n" |
515 fct += " flag_"+element_id+" = false;\n" |
535 fct += " flag_"+element_id+" = false;\n" |
516 fct += " SVGUIScrollBar* scrollbar = (SVGUIScrollBar*)GetElementById(wxT(\""+element_id+"\"));\n" |
536 fct += " SVGUIScrollBar* scrollbar = (SVGUIScrollBar*)GetElementById(wxT(\""+element_id+"\"));\n" |
517 fct += " scrollbar->SetThumbPosition(_copy__IW"+self.BusNumber+"_"+element_id+"_1);\n" |
537 fct += " scrollbar->SetThumbPosition(_copy__QW"+self.BusNumber+"_"+element_id+"_1);\n" |
518 fct += " flag_"+element_id+" = true;\n" |
538 fct += " flag_"+element_id+" = true;\n" |
519 fct += " }\n" |
539 fct += " }\n" |
520 fct += " __sync_val_compare_and_swap (&step_"+element_id+", PLC_OUT_BUSY, FREE_AND_NO_CHANGES);\n" |
540 fct += " __sync_val_compare_and_swap (&step_"+element_id+", PLC_OUT_BUSY, FREE_AND_NO_CHANGES);\n" |
521 elif type == "RotatingCtrl": |
541 elif type == "RotatingCtrl": |
522 fct += " old_state = __sync_val_compare_and_swap (&step_"+element_id+", FREE_AND_CHANGES, PLC_OUT_BUSY);\n" |
542 fct += " old_state = __sync_val_compare_and_swap (&step_"+element_id+", FREE_AND_CHANGES, PLC_OUT_BUSY);\n" |
523 fct += " if (_copy__IX"+self.BusNumber+"_"+element_id+"_2 && flag_"+element_id+" && old_state == FREE_AND_CHANGES)\n" |
543 fct += " if (_copy__QX"+self.BusNumber+"_"+element_id+"_2 && flag_"+element_id+" && old_state == FREE_AND_CHANGES)\n" |
524 fct += " {\n" |
544 fct += " {\n" |
525 fct += " flag_"+element_id+" = false;\n" |
545 fct += " flag_"+element_id+" = false;\n" |
526 fct += " SVGUIRotatingCtrl* rotating = (SVGUIRotatingCtrl*)GetElementById(wxT(\""+element_id+"\"));\n" |
546 fct += " SVGUIRotatingCtrl* rotating = (SVGUIRotatingCtrl*)GetElementById(wxT(\""+element_id+"\"));\n" |
527 fct += " rotating->SetAngle(_copy__ID"+self.BusNumber+"_"+element_id+"_1);\n" |
547 fct += " rotating->SetAngle(_copy__QD"+self.BusNumber+"_"+element_id+"_1);\n" |
528 fct += " flag_"+element_id+" = true;\n" |
548 fct += " flag_"+element_id+" = true;\n" |
529 fct += " }\n" |
549 fct += " }\n" |
530 fct += " __sync_val_compare_and_swap (&step_"+element_id+", PLC_OUT_BUSY, FREE_AND_NO_CHANGES);\n" |
550 fct += " __sync_val_compare_and_swap (&step_"+element_id+", PLC_OUT_BUSY, FREE_AND_NO_CHANGES);\n" |
531 elif type == "NoteBook": |
551 elif type == "NoteBook": |
532 fct += " old_state = __sync_val_compare_and_swap (&step_"+element_id+", FREE_AND_CHANGES, PLC_OUT_BUSY);\n" |
552 fct += " old_state = __sync_val_compare_and_swap (&step_"+element_id+", FREE_AND_CHANGES, PLC_OUT_BUSY);\n" |
533 fct += " if (_copy__IX"+self.BusNumber+"_"+element_id+"_2 && flag_"+element_id+" && old_state == FREE_AND_CHANGES)\n" |
553 fct += " if (_copy__QX"+self.BusNumber+"_"+element_id+"_2 && flag_"+element_id+" && old_state == FREE_AND_CHANGES)\n" |
534 fct += " {\n" |
554 fct += " {\n" |
535 fct += " flag_"+element_id+" = false;\n" |
555 fct += " flag_"+element_id+" = false;\n" |
536 fct += " SVGUINoteBook* notebook = (SVGUINoteBook*)GetElementById(wxT(\""+element_id+"\"));\n" |
556 fct += " SVGUINoteBook* notebook = (SVGUINoteBook*)GetElementById(wxT(\""+element_id+"\"));\n" |
537 fct += " notebook->SetCurrentPage(_copy__IB"+self.BusNumber+"_"+element_id+"_1);\n" |
557 fct += " notebook->SetCurrentPage(_copy__QB"+self.BusNumber+"_"+element_id+"_1);\n" |
538 fct += " flag_"+element_id+" = true;\n" |
558 fct += " flag_"+element_id+" = true;\n" |
539 fct += " }\n" |
559 fct += " }\n" |
540 fct += " __sync_val_compare_and_swap (&step_"+element_id+", PLC_OUT_BUSY, FREE_AND_NO_CHANGES);\n" |
560 fct += " __sync_val_compare_and_swap (&step_"+element_id+", PLC_OUT_BUSY, FREE_AND_NO_CHANGES);\n" |
541 elif type == "Transform": |
561 elif type == "Transform": |
542 fct += " old_state = __sync_val_compare_and_swap (&step_"+element_id+", FREE_AND_CHANGES, PLC_OUT_BUSY);\n" |
562 fct += " old_state = __sync_val_compare_and_swap (&step_"+element_id+", FREE_AND_CHANGES, PLC_OUT_BUSY);\n" |
543 fct += " if (_copy__IX"+self.BusNumber+"_"+element_id+"_6 && flag_"+element_id+" && old_state == FREE_AND_CHANGES)\n" |
563 fct += " if (_copy__QX"+self.BusNumber+"_"+element_id+"_6 && flag_"+element_id+" && old_state == FREE_AND_CHANGES)\n" |
544 fct += " {\n" |
564 fct += " {\n" |
545 fct += " flag_"+element_id+" = false;\n" |
565 fct += " flag_"+element_id+" = false;\n" |
546 fct += " SVGUITransform* transform = (SVGUITransform*)GetElementById(wxT(\""+element_id+"\"));\n" |
566 fct += " SVGUITransform* transform = (SVGUITransform*)GetElementById(wxT(\""+element_id+"\"));\n" |
547 fct += " transform->Move(_copy__ID"+self.BusNumber+"_"+element_id+"_1,_copy__ID"+self.BusNumber+"_"+element_id+"_2);\n" |
567 fct += " transform->Move(_copy__QD"+self.BusNumber+"_"+element_id+"_1,_copy__QD"+self.BusNumber+"_"+element_id+"_2);\n" |
548 fct += " transform->Scale(_copy__ID"+self.BusNumber+"_"+element_id+"_3,_copy__ID"+self.BusNumber+"_"+element_id+"_4);\n" |
568 fct += " transform->Scale(_copy__QD"+self.BusNumber+"_"+element_id+"_3,_copy__QD"+self.BusNumber+"_"+element_id+"_4);\n" |
549 fct += " transform->Rotate(_copy__ID"+self.BusNumber+"_"+element_id+"_5);\n" |
569 fct += " transform->Rotate(_copy__QD"+self.BusNumber+"_"+element_id+"_5);\n" |
550 fct += " flag_"+element_id+" = true;\n" |
570 fct += " flag_"+element_id+" = true;\n" |
551 fct += " }\n" |
571 fct += " }\n" |
552 fct += " __sync_val_compare_and_swap (&step_"+element_id+", PLC_OUT_BUSY, FREE_AND_NO_CHANGES);\n" |
572 fct += " __sync_val_compare_and_swap (&step_"+element_id+", PLC_OUT_BUSY, FREE_AND_NO_CHANGES);\n" |
553 fct += " Update_Elements();\n" |
573 fct += " Update_Elements();\n" |
554 fct += " Refresh();\n" |
574 fct += " Refresh();\n" |
621 if type == "Button": |
641 if type == "Button": |
622 if (not button): |
642 if (not button): |
623 fct += " SVGUIButton* button;\n" |
643 fct += " SVGUIButton* button;\n" |
624 fct += " button = (SVGUIButton*)GetElementById(wxT(\""+element_id+"\"));\n" |
644 fct += " button = (SVGUIButton*)GetElementById(wxT(\""+element_id+"\"));\n" |
625 fct += " if (button->IsVisible())\n" |
645 fct += " if (button->IsVisible())\n" |
626 fct += " _copy__QX"+self.BusNumber+"_"+element_id+"_1 = true;\n" |
646 fct += " _copy__IX"+self.BusNumber+"_"+element_id+"_1 = true;\n" |
627 fct += " else\n" |
647 fct += " else\n" |
628 fct += " _copy__QX"+self.BusNumber+"_"+element_id+"_1 = false;\n" |
648 fct += " _copy__IX"+self.BusNumber+"_"+element_id+"_1 = false;\n" |
629 fct += " _copy__QX"+self.BusNumber+"_"+element_id+"_2 = true;\n\n" |
649 fct += " _copy__IX"+self.BusNumber+"_"+element_id+"_2 = true;\n\n" |
630 button = True |
650 button = True |
631 elif type == "Container": |
651 elif type == "Container": |
632 if (not container): |
652 if (not container): |
633 fct += " SVGUIContainer* container;\n" |
653 fct += " SVGUIContainer* container;\n" |
634 fct += " container = (SVGUIContainer*)GetElementById(wxT(\""+element_id+"\"));\n" |
654 fct += " container = (SVGUIContainer*)GetElementById(wxT(\""+element_id+"\"));\n" |
635 fct += " if (container->IsVisible())\n" |
655 fct += " if (container->IsVisible())\n" |
636 fct += " _copy__QX"+self.BusNumber+"_"+element_id+"_1 = true;\n" |
656 fct += " _copy__IX"+self.BusNumber+"_"+element_id+"_1 = true;\n" |
637 fct += " else\n" |
657 fct += " else\n" |
638 fct += " _copy__QX"+self.BusNumber+"_"+element_id+"_1 = false;\n" |
658 fct += " _copy__IX"+self.BusNumber+"_"+element_id+"_1 = false;\n" |
639 fct += " _copy__QX"+self.BusNumber+"_"+element_id+"_2 = true;\n\n" |
659 fct += " _copy__IX"+self.BusNumber+"_"+element_id+"_2 = true;\n\n" |
640 container = True |
660 container = True |
641 elif type == "TextCtrl": |
661 elif type == "TextCtrl": |
642 if (not textctrl): |
662 if (not textctrl): |
643 fct += " SVGUITextCtrl* text;\n" |
663 fct += " SVGUITextCtrl* text;\n" |
644 fct += " text = (SVGUITextCtrl*)GetElementById(wxT(\""+element_id+"\"));\n" |
664 fct += " text = (SVGUITextCtrl*)GetElementById(wxT(\""+element_id+"\"));\n" |
645 fct += " _copy__QB"+self.BusNumber+"_"+element_id+"_1 = wxStringToStr(text->GetValue());\n" |
665 fct += " _copy__IB"+self.BusNumber+"_"+element_id+"_1 = wxStringToStr(text->GetValue());\n" |
646 fct += " _copy__QX"+self.BusNumber+"_"+element_id+"_2 = true;\n\n" |
666 fct += " _copy__IX"+self.BusNumber+"_"+element_id+"_2 = true;\n\n" |
647 textctrl = True |
667 textctrl = True |
648 elif type == "ScrollBar": |
668 elif type == "ScrollBar": |
649 if (not scrollbar): |
669 if (not scrollbar): |
650 fct += " SVGUIScrollBar* scrollbar;\n" |
670 fct += " SVGUIScrollBar* scrollbar;\n" |
651 fct += " scrollbar = (SVGUIScrollBar*)GetElementById(wxT(\""+element_id+"\"));\n" |
671 fct += " scrollbar = (SVGUIScrollBar*)GetElementById(wxT(\""+element_id+"\"));\n" |
652 fct += " _copy__QW"+self.BusNumber+"_"+element_id+"_1 = scrollbar->GetThumbPosition();\n" |
672 fct += " _copy__IW"+self.BusNumber+"_"+element_id+"_1 = scrollbar->GetThumbPosition();\n" |
653 fct += " _copy__QX"+self.BusNumber+"_"+element_id+"_2 = true;\n\n" |
673 fct += " _copy__IX"+self.BusNumber+"_"+element_id+"_2 = true;\n\n" |
654 scrollbar = True |
674 scrollbar = True |
655 elif type == "RotatingCtrl": |
675 elif type == "RotatingCtrl": |
656 if (not rotatingctrl): |
676 if (not rotatingctrl): |
657 fct += " SVGUIRotatingCtrl* rotating;\n" |
677 fct += " SVGUIRotatingCtrl* rotating;\n" |
658 fct += " rotating = (SVGUIRotatingCtrl*)GetElementById(wxT(\""+element_id+"\"));\n" |
678 fct += " rotating = (SVGUIRotatingCtrl*)GetElementById(wxT(\""+element_id+"\"));\n" |
659 fct += " _copy__QD"+self.BusNumber+"_"+element_id+"_1 = rotating->GetAngle();\n" |
679 fct += " _copy__ID"+self.BusNumber+"_"+element_id+"_1 = rotating->GetAngle();\n" |
660 fct += " _copy__QX"+self.BusNumber+"_"+element_id+"_2 = true;\n\n" |
680 fct += " _copy__IX"+self.BusNumber+"_"+element_id+"_2 = true;\n\n" |
661 rotatingctrl = True |
681 rotatingctrl = True |
662 elif type == "NoteBook": |
682 elif type == "NoteBook": |
663 if (not notebook): |
683 if (not notebook): |
664 fct += " SVGUINoteBook* notebook;\n" |
684 fct += " SVGUINoteBook* notebook;\n" |
665 fct += " notebook = (SVGUINoteBook*)GetElementById(wxT(\""+element_id+"\"));\n" |
685 fct += " notebook = (SVGUINoteBook*)GetElementById(wxT(\""+element_id+"\"));\n" |
666 fct += " _copy__QB"+self.BusNumber+"_"+element_id+"_1 = notebook->GetCurrentPage();\n" |
686 fct += " _copy__IB"+self.BusNumber+"_"+element_id+"_1 = notebook->GetCurrentPage();\n" |
667 fct += " _copy__QX"+self.BusNumber+"_"+element_id+"_2 = true;\n\n" |
687 fct += " _copy__IX"+self.BusNumber+"_"+element_id+"_2 = true;\n\n" |
668 notebook = True |
688 notebook = True |
669 elif type == "Transform": |
689 elif type == "Transform": |
670 if (not transform): |
690 if (not transform): |
671 fct += " SVGUITransform* transform;\n" |
691 fct += " SVGUITransform* transform;\n" |
672 fct += " transform = (SVGUITransform*)GetElementById(wxT(\""+element_id+"\"));\n" |
692 fct += " transform = (SVGUITransform*)GetElementById(wxT(\""+element_id+"\"));\n" |
673 fct += " _copy__QD"+self.BusNumber+"_"+element_id+"_1 = transform->GetX();\n" |
693 fct += " _copy__ID"+self.BusNumber+"_"+element_id+"_1 = transform->GetX();\n" |
674 fct += " _copy__QD"+self.BusNumber+"_"+element_id+"_2 = transform->GetY();\n" |
694 fct += " _copy__ID"+self.BusNumber+"_"+element_id+"_2 = transform->GetY();\n" |
675 fct += " _copy__QD"+self.BusNumber+"_"+element_id+"_3 = transform->GetXScale();\n" |
695 fct += " _copy__ID"+self.BusNumber+"_"+element_id+"_3 = transform->GetXScale();\n" |
676 fct += " _copy__QD"+self.BusNumber+"_"+element_id+"_4 = transform->GetYScale();\n" |
696 fct += " _copy__ID"+self.BusNumber+"_"+element_id+"_4 = transform->GetYScale();\n" |
677 fct += " _copy__QD"+self.BusNumber+"_"+element_id+"_5 = transform->GetAngle();\n" |
697 fct += " _copy__ID"+self.BusNumber+"_"+element_id+"_5 = transform->GetAngle();\n" |
678 fct += " _copy__QX"+self.BusNumber+"_"+element_id+"_6 = true;\n\n" |
698 fct += " _copy__IX"+self.BusNumber+"_"+element_id+"_6 = true;\n\n" |
679 transform = True |
699 transform = True |
680 fct += "}\n\n" |
700 fct += "}\n\n" |
681 |
701 |
682 fct += "void Program::SetNoChanges()\n{\n" |
702 fct += "void Program::SetNoChanges()\n{\n" |
683 for element in elementsTab: |
703 for element in elementsTab: |
686 if info["name"] == "id": |
706 if info["name"] == "id": |
687 element_id = str(info["value"]) |
707 element_id = str(info["value"]) |
688 type = element.GetElementInfos()["type"] |
708 type = element.GetElementInfos()["type"] |
689 FbdBlock = self.GetBlockType(type) |
709 FbdBlock = self.GetBlockType(type) |
690 if type == "Button": |
710 if type == "Button": |
691 fct += " _copy__QX"+self.BusNumber+"_"+element_id+"_2 = false;\n" |
711 fct += " _copy__IX"+self.BusNumber+"_"+element_id+"_2 = false;\n" |
692 elif type == "Container": |
712 elif type == "Container": |
693 fct += " _copy__QX"+self.BusNumber+"_"+element_id+"_2 = false;\n" |
713 fct += " _copy__IX"+self.BusNumber+"_"+element_id+"_2 = false;\n" |
694 elif type == "TextCtrl": |
714 elif type == "TextCtrl": |
695 fct += " _copy__QX"+self.BusNumber+"_"+element_id+"_2 = false;\n" |
715 fct += " _copy__IX"+self.BusNumber+"_"+element_id+"_2 = false;\n" |
696 elif type == "ScrollBar": |
716 elif type == "ScrollBar": |
697 fct += " _copy__QX"+self.BusNumber+"_"+element_id+"_2 = false;\n" |
717 fct += " _copy__IX"+self.BusNumber+"_"+element_id+"_2 = false;\n" |
698 elif type == "RotatingCtrl": |
718 elif type == "RotatingCtrl": |
699 fct += " _copy__QX"+self.BusNumber+"_"+element_id+"_2 = false;\n" |
719 fct += " _copy__IX"+self.BusNumber+"_"+element_id+"_2 = false;\n" |
700 elif type == "NoteBook": |
720 elif type == "NoteBook": |
701 fct += " _copy__QX"+self.BusNumber+"_"+element_id+"_2 = false;\n" |
721 fct += " _copy__IX"+self.BusNumber+"_"+element_id+"_2 = false;\n" |
702 elif type == "Transform": |
722 elif type == "Transform": |
703 fct += " _copy__QX"+self.BusNumber+"_"+element_id+"_6 = false;\n" |
723 fct += " _copy__IX"+self.BusNumber+"_"+element_id+"_6 = false;\n" |
704 fct += "}\n\n" |
724 fct += "}\n\n" |
705 |
725 |
706 #DEBUG Fonction d'affichage |
726 #DEBUG Fonction d'affichage |
707 fct += "void Program::Print()\n{\n" |
727 fct += "void Program::Print()\n{\n" |
708 for element in elementsTab: |
728 for element in elementsTab: |
749 raise ValueError, "No corresponding block found" |
769 raise ValueError, "No corresponding block found" |
750 if not generator.ComputedBlocks.get(name, False): |
770 if not generator.ComputedBlocks.get(name, False): |
751 for num, variable in enumerate(block.inputVariables.getVariable()): |
771 for num, variable in enumerate(block.inputVariables.getVariable()): |
752 connections = variable.connectionPointIn.getConnections() |
772 connections = variable.connectionPointIn.getConnections() |
753 if connections and len(connections) == 1: |
773 if connections and len(connections) == 1: |
754 parameter = "__I%s%d_%d_%d"%(TYPECONVERSION[block_infos["inputs"][num][1]], bus_id, block_id, num) |
774 parameter = "__Q%s%d_%d_%d"%(TYPECONVERSION[block_infos["inputs"][num][1]], bus_id, block_id, num) |
755 value = generator.ComputeFBDExpression(body, connections[0]) |
775 value = generator.ComputeFBDExpression(body, connections[0]) |
756 generator.Program += (" %s := %s;\n"%(parameter, generator.ExtractModifier(variable, value))) |
776 generator.Program += (" %s := %s;\n"%(parameter, generator.ExtractModifier(variable, value))) |
757 generator.ComputedBlocks[name] = True |
777 generator.ComputedBlocks[name] = True |
758 if link: |
778 if link: |
759 connectionPoint = link.getPosition()[-1] |
779 connectionPoint = link.getPosition()[-1] |
760 for num, variable in enumerate(block.outputVariables.getVariable()): |
780 for num, variable in enumerate(block.outputVariables.getVariable()): |
761 blockPointx, blockPointy = variable.connectionPointOut.getRelPosition() |
781 blockPointx, blockPointy = variable.connectionPointOut.getRelPosition() |
762 if block.getX() + blockPointx == connectionPoint.getX() and block.getY() + blockPointy == connectionPoint.getY(): |
782 if block.getX() + blockPointx == connectionPoint.getX() and block.getY() + blockPointy == connectionPoint.getY(): |
763 return "__Q%s%d_%d_%d"%(TYPECONVERSION[block_infos["outputs"][num][1]], bus_id, block_id, num) |
783 return "__I%s%d_%d_%d"%(TYPECONVERSION[block_infos["outputs"][num][1]], bus_id, block_id, num) |
764 raise ValueError, "No output variable found" |
784 raise ValueError, "No output variable found" |
765 else: |
785 else: |
766 return None |
786 return None |
767 |
787 |
768 return [{"name" : "SVGUI function blocks", "list" : |
788 return [{"name" : "SVGUI function blocks", "list" : |