- }
-
- script+="\n";
-
- for(i = 0; i<(int)execBoxes.size();i++)
- {
- script+="exec ";
- int id = execBoxes[i];
- GObjectController *control = _controllers[id];
- GBlackBoxModel *model = (GBlackBoxModel*)control->getModel();
-
- script+=model->getBBTKName();
- script+="\n";
- }
-
- script+="\n";
- script+="# Complex input ports\n";
- script+=complexInputs;
-
- script+="\n";
- script+="# Complex output ports\n";
- script+=complexOutputs;
-
- script+="\n";
- script+="endefine";
- script+="\n";
-
- return script;
- }
-
- //=========================================================================
-
- void wxVtkSceneManager::deleteAllBoxes()
- {
- std::map<int, GObjectController*>::iterator it;
- for(it = _controllers.begin(); it != _controllers.end(); ++it)
- {
- GObjectController *cont = it->second;
- cont->removeFromScene();
- unregisterController((InteractorStyleMaracas*)cont);
- }
- _selectedObjects.clear();
- _controllers.clear();
- refreshScene();
- }
-
- //=========================================================================
-
-
- void wxVtkSceneManager::refresh()
- {
- _baseView->Refresh();
- }
- //=========================================================================
-
- void wxVtkSceneManager::refreshScene()
- {
- _baseView->RefreshView();
- }
-
- //=========================================================================
-
- void wxVtkSceneManager::centerView()
- {
- double temp[3];
- _baseView->GetRenderer()->GetActiveCamera()->GetFocalPoint(temp);
- _baseView->GetRenderer()->GetActiveCamera()->SetFocalPoint(0,0,temp[2]);
- _baseView->GetRenderer()->GetActiveCamera()->GetPosition(temp);
- _baseView->GetRenderer()->GetActiveCamera()->SetPosition(0,0,temp[2]);
- _baseView->RefreshView();
-
- }
-
- //=========================================================================
-
- void wxVtkSceneManager::saveDiagram(std::string &content)
- {
- char buffer [50];
-
- //Print info IF COMPLEX BOX
- content+="COMPLEXBOX:";
- if(_isComplexBox)
- {
- content+="TRUE\n";
-
- //Print info complex input ports
- std::vector<int> inputs = getComplexInputPorts();
- int insize = inputs.size();
- content+="COMPLEXINPUTS:";
- sprintf (buffer, "%d", insize);
- content+=buffer;
- content+="\n";
-
- for(int i = 0;i<insize;i++)
- {
- int id = inputs[i];
- GObjectController *cont = _controllers[id];
- cont->getModel()->save(content);
- }
-
- //Print info complex output ports
- std::vector<int> outputs = getComplexOutputPorts();
- int outsize = outputs.size();
- content+="COMPLEXOUTPUTS:";
- sprintf (buffer, "%d", outsize);
- content+=buffer;
- content+="\n";
-
- for(int i = 0;i<outsize;i++)
- {
- int id = outputs[i];
- GObjectController *cont = _controllers[id];
- cont->getModel()->save(content);
- }
- } // _isComplexBox
- else
- {
- content+="FALSE\n";
- }
-
- //Print boxes
- std::vector<int> boxes = getBlackBoxes();
- int bsize = boxes.size();
- content+="BOXES:";
- sprintf (buffer, "%d", bsize);
- content+=buffer;
- content+="\n";
-
- for(int i = 0;i<bsize;i++)
- {
- int id = boxes[i];
- GObjectController *cont = _controllers[id];
- cont->getModel()->save(content);
- }
-
- //Print connections
- std::vector<int> connections = getConnections();
- int csize = connections.size();
- content+="CONNECTIONS:";
- sprintf (buffer, "%d", csize);
- content+=buffer;
- content+="\n";
-
- for(int i = 0;i<csize;i++)
- {
- int id = connections[i];
- GObjectController *cont = _controllers[id];
- cont->getModel()->save(content);
- }
-
- }
-
- //=========================================================================
-
- void wxVtkSceneManager::loadDiagram(ifstream &inputStream)
- {
-
- std::string line="";
- char delims[] = ":";
- char *result = NULL;
- getline(inputStream,line);
-
- bool start = false;
- while ( !inputStream.eof() )
- {
- if(line=="" || line[0]=='#')
- {
- getline(inputStream,line);
- }
- else if(line=="APP_START")
- {
- start = true;
- break;
- }
- }
-
- if(start)
- {
-
- //----------
- getline(inputStream,line);//COMPLEX_BOX:TRUE|FALSE
- char complex[30];
- strcpy( complex, line.c_str() );
- result = strtok( complex, delims );
- result = strtok( NULL, delims );
- std::string isComplexBox(result);
-
- if(isComplexBox=="TRUE")
- {
- _isComplexBox=true;
-
- //-----------------------
- //- COMPLEX INPUT PORTS
- //-----------------------
- getline(inputStream,line);//COMPLEXINPUTS:num
- char inputs[30];
- strcpy( inputs, line.c_str() );
- result = strtok( inputs, delims );
- result = strtok( NULL, delims );
-
- int numInputs;
- std::istringstream inps(result);
- inps >> numInputs;
-
- for(int i = 0;i<numInputs;i++)
- {
- //----------
- getline(inputStream,line);//COMPLEX_PORT
- getline(inputStream,line);//name
- std::string inputPortName(line);
-
- //----------
- getline(inputStream,line);//xInic:yInic:zInic
- char coord[80];
- strcpy( coord, line.c_str() );
- result = strtok( coord, delims );//xInic
- std::string xInic(result);
- result = strtok( NULL, delims );//yInic
- std::string yInic(result);
- result = strtok( NULL, delims );//zInic
- std::string zInic(result);
-
- double xIn, yIn, zIn;
- std::istringstream xSt(xInic);
- xSt >> xIn;
- std::istringstream ySt(yInic);
- ySt >> yIn;
- std::istringstream zSt(zInic);
- zSt >> zIn;
-
- getline(inputStream,line);//FIN_COMPLEX_PORT