}
//=========================================================================
- wxGEditorTabPanel::wxGEditorTabPanel(wxWindow *parent,int id):wxPanel(parent),wxTextDropTarget()
+ wxGEditorTabPanel::wxGEditorTabPanel(wxWindow *parent,int id, Factory::Pointer bbtkfactory)
+ : wxPanel(parent),wxTextDropTarget()
{
-printf("EED wxGEditorTabPanel::wxGEditorTabPanel 0\n");
- printf ("EED %p wxGEditorTabPanel 2 ()\n" , this );
_id=id;
- _panelAUIMgr = new wxAuiManager(this);
- _sceneManager = NULL;
+ _panelAUIMgr = new wxAuiManager(this);
+ _sceneManager = NULL;
+ _actualdo = states.begin();
+ _sactualdo = sstates.begin();
+ _bbtkfactory = bbtkfactory;
initWxVtkCanvas();
-printf("EED wxGEditorTabPanel::wxGEditorTabPanel 1\n");
}
//=========================================================================
wxGEditorTabPanel::~wxGEditorTabPanel()
{
-printf ("EED %p ~wxGEditorTabPanel()\n" , this );
//ED02JUIN2010 _sceneManager->disconnectDrop();
_panelsManager->VerifyLastTabPanel();
//FCY memory leaks
delete _panelAUIMgr;
delete _sceneManager;
-
}
//=========================================================================
void wxGEditorTabPanel::initWxVtkCanvas()
{
-printf("EED wxGEditorTabPanel::initWxVtkCanvas 0\n");
wxVtk3DBaseView *baseview = new wxVtk3DBaseView(this);
baseview->Configure();
- _sceneManager=new wxVtkSceneManager(this,baseview,_id);
+//EED 15 oct 2012 _sceneManager=new wxVtkSceneManager(this,baseview,_id);
+ _sceneManager=new wxVtkSceneManager(this,baseview,_id, _bbtkfactory);
//EED02JUIN2010
_panelAUIMgr->AddPane((wxWindow*)baseview->GetWxVTKRenderWindowInteractor(),wxAuiPaneInfo().Fixed().CenterPane());
_panelAUIMgr->Update();
-printf("EED wxGEditorTabPanel::initWxVtkCanvas 1\n");
}
//=========================================================================
result = strtok( NULL, delims );
boxType += result;
- _sceneManager->createGBlackBox(x,y,packageName, boxType);
+ if ( _panelsManager->TryToOpenScriptApplication(packageName,boxType) == false )
+ {
+ _sceneManager->createGBlackBox(x,y,packageName, boxType);
+ saveTempandUpdate("drop box");
+ }
+/*EED Borrame
+ >>>>>> TryToOpenScriptApplication
+ Package::Pointer k;
+ std::map< std::string, BlackBoxDescriptor::Pointer> mapDesc;
+ BlackBoxDescriptor::Pointer descriptor;
+ k = _bbtkfactory->GetPackage(packageName);
+ mapDesc = k->GetDescriptorMap();
+ descriptor = mapDesc[boxType];
+
+ if (descriptor->IsTypeOfScript_Application()==true)
+ {
+ OpenScript(descriptor->GetScriptFileName(),boxType);
+ >>>>> OpenScript
+ printf("EED wxGEditorTabPanel::OnDropText packageName=%s boxType=%s APPLI ScriptFileName=%s\n", packageName.c_str() , boxType.c_str() , descriptor->GetScriptFileName().c_str() );
+ std::string fileName = boxType+".bbg";
+ std::string filePathNameBBS = descriptor->GetScriptFileName();
+ std::string filePathNameBBG = filePathNameBBS;
+ filePathNameBBG[ filePathNameBBG.length()-1 ] = 'g';
+
+ wxMessageDialog windowMessage1(NULL,_T("The system is going to open a bbg or bbs for you. Be careful if you save this file."), _T("Alert !"), wxOK);
+ windowMessage1.ShowModal();
+
+ if ( Utilities::FileExists( filePathNameBBG ) )
+ {
+ _panelsManager->OpenDiagram( filePathNameBBG , fileName );
+ } else {
+ if ( Utilities::FileExists( filePathNameBBS ) )
+ {
+ _panelsManager->OpenBBS( filePathNameBBS , fileName );
+ } else {
+ wxMessageDialog windowMessage1(NULL,_T("..ERROR.. loading script bbg/bbs."), _T("Alert !"), wxOK);
+ windowMessage1.ShowModal();
+ }
+ }
+ <<<<<
+ }
+ <<<<<<<
+// EED Borrame
+// else {
+// _sceneManager->createGBlackBox(x,y,packageName, boxType);
+// saveTempandUpdate("drop box");
+// }
+
+ */
+
return true;
}
+ //=========================================================================
+ void wxGEditorTabPanel::saveTempandUpdate(const std::string &action)
+ {
+ _panelsManager->saveTempandUpdate(action);
+ }
//=========================================================================
void wxGEditorTabPanel::setPanelsManager(wxTabPanelsManager* panelsManager)
//=========================================================================
+ void wxGEditorTabPanel::saveTempDiagram(const std::string &action) //FCY
+ {
+ std::string content = "";
+ // writing file header
+ content += "# ----------------------------------\n";
+ content += "# - BBTKGEditor v 1.3 BBG BlackBox Diagram file\n";
+ content += "# - ";
+ content += "temp";
+ content += "\n";
+ content += "# ----------------------------------\n";
+ content += "\n";
+ content += "APP_START\n";
+ _sceneManager->saveDiagram(content);
+ content += "APP_END\n"; //put here to avoid mistakes
+ if(_actualdo == states.end() ) // same size, write to the end
+ {
+ states.push_back (content);
+ saveStringAction(action);
+ }
+ else
+ {
+ std::vector<std::string>::iterator it = _actualdo+1;
+ states.erase(it, states.end());
+ states.push_back(content);
+
+ std::vector<std::string>::iterator sit = _sactualdo+1;
+ sstates.erase(sit, sstates.end());
+ saveStringAction(action);
+ }
+ _actualdo = states.end();
+ _sactualdo = sstates.end();
+
+ }
+
+ //=========================================================================
+
void wxGEditorTabPanel::loadDiagram(ifstream &inputStream, const std::string &path) //DFCH
{
this->SetFullPath(path);
- _sceneManager->loadDiagram(inputStream);
+ stringstream ss;
+ ss << inputStream.rdbuf() ;
+ _sceneManager->loadDiagram(ss);
+ }
+
+ //=========================================================================
+ unsigned short wxGEditorTabPanel::getUndoState( std::string &stun)
+ {
+ stun = "Undo";
+ if(states.size()>0)
+ {
+ if(_actualdo == states.begin() )
+ {
+
+ return 0;
+ }
+ else
+ {
+ stun +=" - ";
+ stun += _sactualdo->substr(0,(--_sactualdo)->find_last_of("."));
+ _sactualdo++;
+ return 1;
+ }
+ }
+ }
+
+ unsigned short wxGEditorTabPanel::getRedoState( std::string &stre)
+ {
+ stre = "Redo";
+ if(states.size()>0)
+ {
+ if(_actualdo == --states.end() || states.size() == 1 || _actualdo == states.end())
+ return 0;
+ else
+ {
+ stre +=" - ";
+ stre += _sactualdo->substr(0,(++_sactualdo)->find_last_of("."));
+ --_sactualdo;
+ return 1;
+ }
+ }
+ }
+
+ //=========================================================================
+ void wxGEditorTabPanel::loadTempDiagram(unsigned short un) //FCY
+ {
+ unsigned short res = 1;
+ deleteAllBoxes();
+ std::stringstream ss;
+ if (un == 0) //undo
+ {
+ if(_actualdo == states.end() ) // same size, write to the end
+ {
+ (_actualdo--);
+ (_sactualdo--);
+ }
+ if(_actualdo != states.begin() )
+ {
+ ss << *(--_actualdo);
+ _sactualdo--;
+ }
+ else
+ {
+ ss << *_actualdo;
+ res = 0;
+ }
+ }
+ else //redo
+ {
+ _actualdo++;
+ _sactualdo++;
+ if(_actualdo != states.end())
+ {
+ ss << *_actualdo;
+ }
+ else
+ {
+ res = 0;
+ }
+ }
+ _sceneManager->loadDiagram(ss);
+
+ }
+
+ void wxGEditorTabPanel::saveStringAction(const std::string &action)
+ {
+ char temp[50];
+ sprintf(temp,".%d", sstates.size());
+ sstates.push_back(action + temp);
}
//=========================================================================
{
return _id;
}
+
+
//=========================================================================