wxVtkSceneManager::wxVtkSceneManager(wxGEditorTabPanel *parent, wxVtk3DBaseView *baseView, int idManager,Factory::Pointer bbtkfactory)
{
- _cbName = "ComplexBoxName";
- _cbPackageName = "PackageName";
- _Author = "Author ??";
- _Category = "<VOID>";
- _Description = "Description ??";
-
- _parent = parent;
- _numBoxes = 0;
- _idManager = idManager;
- _baseView = baseView;
- _bbtkfactory = bbtkfactory;
+ _cbName = "ComplexBoxName";
+ _cbPackageName = "PackageName";
+ _Author = "Author ??";
+ _Category = "<VOID>";
+ _Description = "Description ??";
+ _MessageKind = "-";
+ _MessageLevel = "-";
+
+ _bugTextActor_text = "void";
+ _bugTextActor_status = 0;
+
+ _parent = parent;
+ _numBoxes = 0;
+ _idManager = idManager;
+ _baseView = baseView;
+ _bbtkfactory = bbtkfactory;
- _startDragging = false;
- _isComplexBox = false;
+ _startDragging = false;
+ _isComplexBox = false;
if (_baseView != NULL) {
//EED02JUIN2010
void wxVtkSceneManager::disconnectDrop()
{
- printf("EED %p ~wxVtkSceneManager::disconnectDrop()\n", this);
//EED02JUIN2010 _baseView->GetWxVTKRenderWindowInteractor()->SetDropTarget(NULL);
// _baseView->GetWxVTKRenderWindowInteractor()->SetDropTarget( new tmpClasswxTextDropTarget() );
}
wxVtkSceneManager::~wxVtkSceneManager()
{
//FCY memory leaks
- printf("EED %p ~wxVtkSceneManager() START\n", this);
disconnectDrop();
delete _baseView;
- printf("EED %p ~wxVtkSceneManager() END\n", this);
}
//=========================================================================
// Actos Port_Text
_textActor = vtkTextActor3D::New();
+// _textActor = vtkTextActor::New();
_textActor->SetPosition(-9999, -9999, GPOSITION_Z);
_textActor->SetInput("<void>");
_textActor->GetTextProperty()->SetFontSize(60);
//EED 15 oct 2012 BlackBoxDescriptor::Pointer descriptor = GObjectsMVCFactory::getInstance()->getBlackBoxDescriptor(packageName, boxType);
+
Package::Pointer k;
std::map< std::string, BlackBoxDescriptor::Pointer> mapDesc;
try{
model->addObserver(view);
model->addObserver(this);
+
+//EED2017 change order
+ //Associates the view with the correspondent renderer and the model.
+ //(NOTE: Refresh is only made by the view)
+ view->setModel(model);
+ view->setBaseView(_baseView);
+
+ //Associates the controller with the correspondent model and view
+ controller->setModelAndView(model, view);
+
+
//Iterate and create the input ports
std::map<std::string, BlackBoxInputDescriptor*> descriptorInMap =
descriptor->GetInputDescriptorMap();
std::map<std::string, BlackBoxInputDescriptor*>::iterator itInput;
-
int i = 0;
- for (itInput = descriptorInMap.begin(); itInput != descriptorInMap.end(); ++itInput) {
+ for (itInput = descriptorInMap.begin(); itInput != descriptorInMap.end(); ++itInput)
+ {
BlackBoxInputDescriptor *desc = itInput->second;
- createGInputPort(GINPUTPORT, i, model, desc);
+//EED2017-04-07
+// createGInputPort(GINPUTPORT, i, model, desc);
+ createGInputPort(GINPUTPORT, i, controller, desc);
i++;
}
std::map<std::string, BlackBoxOutputDescriptor*> descriptorOutMap =
descriptor->GetOutputDescriptorMap();
std::map<std::string, BlackBoxOutputDescriptor*>::iterator itOutput;
-
i = 0;
- for (itOutput = descriptorOutMap.begin(); itOutput
- != descriptorOutMap.end(); ++itOutput) {
+ for (itOutput = descriptorOutMap.begin(); itOutput!= descriptorOutMap.end(); ++itOutput)
+ {
BlackBoxOutputDescriptor *desc = itOutput->second;
- createGOutputPort(GOUTPUTPORT, i, model, desc);
+//EED2017-04-07
+// createGOutputPort(GOUTPUTPORT, i, model, desc);
+ createGOutputPort(GOUTPUTPORT, i, controller, desc);
i++;
}
- //Associates the view with the correspondent renderer and the model.
- //(NOTE: Refresh is only made by the view)
- view->setModel(model);
- view->setBaseView(_baseView);
+//EED2017 change order
view->initVtkObjects();
- //Associates the controller with the correspondent model and view
- controller->setModelAndView(model, view);
-
//Resgiter change to the observers of the actual model
model->notifyObservers(_idManager);
-
int newId = addObjectController(controller);
return newId;
//=========================================================================
-int wxVtkSceneManager::createGInputPort(int portType, int posinBox, GBoxModel *blackBox, BlackBoxInputDescriptor *desc)
+//EED2017-04-08
+//int wxVtkSceneManager::createGInputPort(int portType, int posinBox, GBoxModel *blackBox, BlackBoxInputDescriptor *desc)
+int wxVtkSceneManager::createGInputPort(int portType, int posinBox, GObjectController *gBoxControler, BlackBoxInputDescriptor *desc)
{
+ GBoxModel *blackBox=(GBoxModel*)gBoxControler->getModel();
GPortController* portController = createGPort(portType, desc->GetName(),
desc->GetTypeName(), desc->GetDescription(), posinBox, blackBox);
- blackBox->addInputPort((GPortModel*) portController->getModel());
+ blackBox->addInputPort( (GPortModel*)portController->getModel() );
+
+ vtkGBoxView *vtkgboxView=(vtkGBoxView*)gBoxControler->getView();
+ vtkgboxView->addInputPort( (vtkGPortView*)portController->getView() );
+
return portController->getId();
}
//=========================================================================
-int wxVtkSceneManager::createGOutputPort(int portType, int posinBox,GBoxModel *blackBox, BlackBoxOutputDescriptor *desc)
+//EED2017-04-08
+//int wxVtkSceneManager::createGOutputPort(int portType, int posinBox,GBoxModel *blackBox, BlackBoxOutputDescriptor *desc)
+int wxVtkSceneManager::createGOutputPort(int portType, int posinBox,GObjectController *gBoxControler, BlackBoxOutputDescriptor *desc)
{
+ GBoxModel *blackBox=(GBoxModel*)gBoxControler->getModel();
GPortController* portController = createGPort(portType, desc->GetName(),
desc->GetTypeName(),desc->GetDescription(), posinBox, blackBox);
blackBox->addOutputPort((GPortModel*) portController->getModel());
+
+ vtkGBoxView *vtkgboxView=(vtkGBoxView*)gBoxControler->getView();
+ vtkgboxView->addOutputPort( (vtkGPortView*)portController->getView() );
+
return portController->getId();
}
int type = GPORT;
//Create the MVC Objects
- GPortModel
- *model =
- (GPortModel*) GObjectsMVCFactory::getInstance()->createGObjectModel(
- type);
- vtkGObjectView *view =
- GObjectsMVCFactory::getInstance()->createGObjectView(type);
- GObjectController* controller =
- GObjectsMVCFactory::getInstance()->createGObjectController(type);
-
+ GPortModel *model = (GPortModel*) GObjectsMVCFactory::getInstance()->createGObjectModel(type);
+ vtkGObjectView *view = GObjectsMVCFactory::getInstance()->createGObjectView(type);
+ GObjectController *controller = GObjectsMVCFactory::getInstance()->createGObjectController(type);
model->registerInBox(blackBox, portType, posInBox);
-
model->setBBTKType(bbtkType);
model->setBBTKName(bbtkName);
model->setBBTKDescription(bbtkDescription);
-
model->addObserver(view);
model->addObserver(this);
-
//Associates the view with the correspondent renderer and the model.
//(NOTE: Refresh is only made by the view)
view->setModel(model);
view->setBaseView(_baseView);
- view->initVtkObjects();
+//EED017 view->initVtkObjects();
+ view->createVtkObjects();
+// view->addVtkActors();
//Associates the controller with the correspondent model and view
controller->setModelAndView(model, view);
-
model->notifyObservers(_idManager);
-
addObjectController(controller);
-
return (GPortController*) controller;
}
* JGRR AND CM
* Width increased from 2 to 3, it simplifies line handling and spline control :P
* @param WidthLine
- */
+ */
+ //EED2017
manContourView->SetWidthLine( 3 ) ;
manContourView->SetShowText(false);
// Highliht element
obc->getView( )->setState( POSSIBLE_CONNECTION ) ;
//obc->getView( )->setState( HIGHLIGHTED ) ;
- }
- }
- }
- }
+ } // if obc_type
+ } // for c_it
+ } // if
+ } // if iter
// EO JGRR & CM WH
if ((obc_type == GPORT) && (obc_state == SELECTED_POSSIBLE_CONNECTION)) {
// Change element to connected state
obc->getView()->setState(HIGHLIGHTED);
-
}
}
{
int X, Y;
bool okStatusMessage = false;
- bool okPortMessage = false;
+ bool okPortMessage = false;
wxVTKRenderWindowInteractor *wxVTKiren;
wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk3DBaseView()->GetWxVTKRenderWindowInteractor();
wxVTKiren->GetEventPosition(X, Y);
if ((state == HIGHLIGHTED) || (state == SELECTED_POSSIBLE_CONNECTION ))
{
// EO JGRR & CM
- okStatusMessage = true;
+ okStatusMessage = true;
updateStatusBar(desc->getStatusText());
if (type == GBLACKBOX)
{
if (type == GPORT)
{
// PortText
- okPortMessage = true;
- py = py + 5;
- _textActor->SetInput(desc->getStatusText().c_str());
- _textActor->SetScale(0.1);
- _textActor->SetPosition(px - 25, py + 1, pz + 2);
-
- // FillPortText
- px = px - 33;
- //py = py;
- _fillObjectActor->SetScale(1);
- _fillObjectActor->GetProperty()->SetOpacity(0.50);
- _fillObjectActor->SetPosition(px, py, 1);
- _aPolygonMapper->Modified();
- } // if GPORT
+ if ( ( _bugTextActor_text==desc->getStatusText() ) || (_bugTextActor_status==0) )
+ {
+ _bugTextActor_status = 1;
+ okPortMessage = true;
+ py = py + 5;
+ _textActor->SetScale(0.1);
+ std::string tmp = desc->getStatusText()+"\n";
+ _textActor->SetInput( tmp.c_str() );
+ _textActor->SetPosition(px - 25, py + 1, pz + 2);
+ _textActor->Modified();
+ // FillPortText
+ px = px - 33;
+ //py = py;
+ _fillObjectActor->SetScale(1);
+ _fillObjectActor->GetProperty()->SetOpacity(0.50);
+ _fillObjectActor->SetPosition(px, py, 1);
+ _aPolygonMapper->Modified();
+ } else {
+ _bugTextActor_status = 2;
+ } // _bugTextActor_tex
+ _bugTextActor_text = desc->getStatusText();
- } // for controllers it
- }
+ } // if GPORT
+ } //if state
+ } // for controllers it
}
if (okStatusMessage == false)
{
updateStatusBar("");
}
- if (okPortMessage == false)
+ if ((okPortMessage == false) || (_bugTextActor_status== 2 ) )
{
+ _bugTextActor_status = 0;
_textActor->SetScale(0.0001);
+ _textActor->SetInput("a\n");
+ _textActor->Modified();
_fillObjectActor->SetScale(0.0001);
}
return true;
//=========================================================================
std::string wxVtkSceneManager::getDiagramBBS(bool wln) {
+ std::cout << "wxVtkSceneManager::getDiagramBBS" << std::endl;
bool existsExec = false;
std::vector<std::string> packages;
script += "\n";
//ups2
-
+
script += LineNumber(wln, lnNmbr);
script += "author \"";
script += _Author;
script += LineNumber(wln, lnNmbr);
script += "new ";
int id = boxes[i];
- GObjectController *control = _controllers[id];
- GBlackBoxModel *model = (GBlackBoxModel*) control->getModel();
+ GObjectController *control = _controllers[id];
+ GBlackBoxModel *model = (GBlackBoxModel*) control->getModel();
+ script += model->getBBTKPackage()+":";
script += model->getBBTKType();
script += " ";
script += model->getBBTKName();
}
else
{
+ script += LineNumber(wln, lnNmbr);
script += "connect ";
script += startBox->getBBTKName();
script += ".";
script += "\n";
}
+ script += LineNumber(wln, lnNmbr);
script += "\n";
}
script += LineNumber(wln, lnNmbr);
script += "\n";
+ script += LineNumber(wln, lnNmbr);
script += "\n";
+
+ script += LineNumber(wln, lnNmbr);
script += "# Complex input ports\n";
script += complexInputs;
+ if((_MessageKind!="-")&&(_MessageLevel!="-")){
+ script += LineNumber(wln, lnNmbr);
+ script += "message ";
+ script += _MessageKind;
+ script += " ";
+ script += _MessageLevel;
+ script += "\n";
+ }
+
for (i = 0; i < (int) execBoxes.size(); i++) {
script += LineNumber(wln, lnNmbr);
script += "exec ";
//=========================================================================
std::string wxVtkSceneManager::saveComplexBoxBBS() {
+ std::cout<<"wxVtkSceneManager::saveComplexBoxBBS"<<std::endl;
std::vector<std::string> packages;
std::vector<int> boxes;
std::vector<int> connections;
GObjectController *control = _controllers[id];
GBlackBoxModel *model = (GBlackBoxModel*) control->getModel();
+ script += model->getBBTKPackage()+":";
script += model->getBBTKType();
script += " ";
script += model->getBBTKName();
script += "\n";
- for (i = 0; i < (int) execBoxes.size(); i++) {
+ if((_MessageKind!="-")&&(_MessageLevel!="-"))
+ {
+ script += "message ";
+ script += _MessageKind;
+ script += " ";
+ script += _MessageLevel;
+ script += "\n";
+ }
+
+ for (i = 0; i < (int) execBoxes.size(); i++)
+ {
script += "exec ";
int id = execBoxes[i];
GObjectController *control = _controllers[id];
}
//=========================================================================
-void wxVtkSceneManager::refreshScene() {
+void wxVtkSceneManager::refreshScene()
+{
_baseView->RefreshView();
}
//=========================================================================
-void wxVtkSceneManager::centerView() {
+void wxVtkSceneManager::centerView()
+{
+ double bb[6];
+ _baseView->GetRenderer()->ComputeVisiblePropBounds(bb);
+
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->GetRenderer()->ResetCamera();
+ _baseView->GetRenderer()->ResetCameraClippingRange();
+
+/*
+ double tt=_baseView->GetRenderer()->GetNearClippingPlaneTolerance();
+ printf("EED wxVtkSceneManager::centerView() tolerance=%f\n",tt);
+ double cr1,cr2;
+ _baseView->GetRenderer()->GetActiveCamera()->GetClippingRange(cr1,cr2);
+ printf("EED wxVtkSceneManager::centerView() cr1=%f cr2=%f\n",cr1,cr2);
+ _baseView->GetRenderer()->GetActiveCamera()->SetClippingRange(0.01,100000);
+ _baseView->GetRenderer()->GetActiveCamera()->GetClippingRange(cr1,cr2);
+ printf("EED wxVtkSceneManager::centerView() cr1=%f cr2=%f\n",cr1,cr2);
+*/
+
+ _baseView->GetRenderer()->Render();
}
//=========================================================================
-void wxVtkSceneManager::saveDiagram(std::string &content) {
+void wxVtkSceneManager::saveDiagram(std::string &content)
+{
char buffer[50];
content += "CATEGORY:";
sprintf(buffer, "%d", bsize);
content += buffer;
content += "\n";
-
+
for (int i = 0; i < bsize; i++) {
int id = boxes[i];
+// std::cout<<"id "<<id<<std::endl;//CFT
GObjectController *cont = _controllers[id];
+// std::cout<<"nombre: "<<cont->getStatusText()<<std::endl;//CFT
+// std::cout<<"tipo: "<<cont->getModel()->getBBTKType()<<std::endl;//CFT
+// //boxesDiagram[i] = cont->getModel()->getBBTKType();//CFT
+// std::cout<<"nname: "<<cont->getModel()->getBBTKName()<<std::endl;//CFT
+// std::cout<<"categorie: "<<GetCategory()<<std::endl;//CFT
+// std::cout<<"type: "<<cont->getModel()->getGObjectType()<<std::endl;//CFT
cont->getModel()->save(content);
}
//=========================================================================
void wxVtkSceneManager::loadDiagram(stringstream &inputStream)
{
-
int size;
std::string version = "<void>";
std::string line = "";
std::istringstream is(result);
is >> numBoxes;
- for (int i = 0; i < numBoxes; i++) {
+ for (int i = 0; i < numBoxes; i++)
+ {
//----------
getCleanLine(inputStream, line);//BOX
getCleanLine(inputStream, line);//package:type:name
bool boxExecutable = false;
- if (isExec == "TRUE") {
+ if (isExec == "TRUE")
+ {
boxExecutable = true;
}
isCons >> numConns;
- for (int i = 0; i < numConns; i++) {
+ for (int i = 0; i < numConns; i++)
+ {
//----------
getCleanLine(inputStream, line);//CONNECTION
getCleanLine(inputStream, line);//Startbox.PortName:EndBox.PortName
result = strtok(NULL, delims);
std::string nameEndPort(result);
-
int idCon = configGConnetion(nameStartBox, nameStartPort,nameEndBox, nameEndPort);
if (version != "1.0") {
//=========================================================================
+void wxVtkSceneManager::SetMessageKind(std::string kind) {
+ _MessageKind = kind;
+
+}
+
+//=========================================================================
+
+std::string wxVtkSceneManager::GetMessageKind(){
+ return _MessageKind;
+}
+
+//=========================================================================
+
+void wxVtkSceneManager::SetMessageLevel(std::string Level){
+ _MessageLevel = Level;
+}
+
+//=========================================================================
+
+std::string wxVtkSceneManager::GetMessageLevel(){
+ return _MessageLevel;
+}
+
+//=========================================================================
+
std::vector< std::string> wxVtkSceneManager::GetExternalInputsNames()
{