X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FEditorGraphicBBS%2FbbsWxGUIEditorGraphic%2FwxGEditorTabPanel.cxx;h=a8e2efb5bdbd7da061e442307e556952a8902752;hb=58a4fa51477cbf5061dd468facfff7eb251e51c6;hp=58e8835daf6f83690c92aeb5fa7694541078b3da;hpb=782cadf1306a646406ed7a089907f73a5f12c4e5;p=bbtkGEditor.git diff --git a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxGEditorTabPanel.cxx b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxGEditorTabPanel.cxx index 58e8835..a8e2efb 100644 --- a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxGEditorTabPanel.cxx +++ b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxGEditorTabPanel.cxx @@ -75,7 +75,7 @@ namespace bbtk wxGEditorTabPanel::wxGEditorTabPanel(wxWindow *parent,int id, Factory::Pointer bbtkfactory) : wxPanel(parent),wxTextDropTarget() { - _id=id; + _id = id; _panelAUIMgr = new wxAuiManager(this); _sceneManager = NULL; _actualdo = states.begin(); @@ -89,7 +89,7 @@ namespace bbtk { //ED02JUIN2010 _sceneManager->disconnectDrop(); - _panelsManager->VerifyLastTabPanel(); + _panelsManager->VerifyLastTabPanel(); //FCY memory leaks delete _panelAUIMgr; delete _sceneManager; @@ -98,8 +98,13 @@ namespace bbtk //========================================================================= void wxGEditorTabPanel::initWxVtkCanvas() { - wxVtk3DBaseView *baseview = new wxVtk3DBaseView(this); + wxVtk3DBaseView *baseview = new wxVtk3DBaseView(this,NULL); baseview->Configure(); +//EED 07 juin 2013 + baseview->GetCamera()->SetViewUp (0, 1, 0); + baseview->GetCamera()->SetPosition (0, 0, 1); + baseview->GetCamera()->SetFocalPoint (0, 0, 0); + //EED 15 oct 2012 _sceneManager=new wxVtkSceneManager(this,baseview,_id); _sceneManager=new wxVtkSceneManager(this,baseview,_id, _bbtkfactory); @@ -115,26 +120,104 @@ namespace bbtk bool wxGEditorTabPanel::OnDropText(wxCoord x, wxCoord y, const wxString& data) { - std::string packageName=""; - std::string boxType=""; - - wxString foo( (data) ); - char str[150]; - strcpy( str, (const char*)foo.mb_str(wxConvUTF8) ); - - char delims[] = ":"; - char *result = NULL; - result = strtok( str, delims ); - packageName += result; - result = strtok( NULL, delims ); - boxType += result; + /* + * DFGO + * To handle bbs and bbg: + * handle data parameter to detect if incoming string is file or bbs or + * bbg or blackbox. + * + * For a drag and drop tutorial read: + * http://zetcode.com/gui/wxwidgets/dragdrop/ + */ + + //wxMessageBox(data); + + std::string stdData = crea::wx2std(data); + + //std::cout << "Text drop: '" << stdData << "'" << std::endl; + + if(stdData.substr(0,4) == "box:") + { + int posT = stdData.find_first_of(':', 4); + std::string packageName = stdData.substr(4, posT-4); + posT = stdData.find_first_not_of(':', posT); + std::string boxType = stdData.substr(posT); + + //std::cout << "box: Package='" << packageName << "' BoxType='" << boxType << "'" <TryToOpenScriptApplication(packageName,boxType) == false ) + { + _sceneManager->createGBlackBox(x,y,packageName, boxType); + saveTempandUpdate("drop box"); + } + } + // DFGO: file for linux + else if(stdData.substr(0,5) == "file:") + { + stdData=stdData.substr(0,stdData.size()-1); + std::cout << "Dropped file: " << stdData << std::endl; + std::stringstream ss(stdData); + std::getline(ss, stdData, (char)13); + while(!ss.eof()) + { + std::string filePath = stdData.substr(7); + std::cout << filePath << ": "; + + FILE *ff=fopen(filePath.c_str(),"r"); + if( +// wxFile::Exists( crea::std2wx(filePath)) + ff!=NULL + ) + { + fclose(ff); + std::cout << "File Exists." << std::endl; + wxFileName fileToOpen(crea::std2wx(filePath)); + + std::string filetype = crea::wx2std(fileToOpen.GetExt()); + std::string filename = crea::wx2std(fileToOpen.GetFullName()); + std::string filepath = crea::wx2std(fileToOpen.GetFullPath()); + + + if(filetype == "bbs") + { + std::cout << "Importing bbs file." << std::endl; + wxMessageBox(crea::std2wx("You are opening a bbs file, " + "make sure not to overwrite an existing bbg file " + "when saving the pipeline."), + crea::std2wx("Opening File Warning"), wxICON_INFORMATION); + this->_panelsManager->GetParentGUIEditorGraphicBBS()->OpenBBS(filepath, filename); + } + else if(filetype == "bbg") + { + std::cout << "Opening bbg file." << std::endl; + this->_panelsManager->GetParentGUIEditorGraphicBBS()->OpenDiagram(filepath, filename); + } + else + { + std::cout << "Unknown file type: Can't open this kind of file: " << filetype << std::endl; + } + } + else + { + std::cout << "File Doesn't Exists. The given path is invalid: " << filePath << std::endl; + } + std::getline(ss, stdData, (char)13); + } + } - if ( _panelsManager->TryToOpenScriptApplication(packageName,boxType) == false ) - { - _sceneManager->createGBlackBox(x,y,packageName, boxType); - saveTempandUpdate("drop box"); - } return true; } @@ -260,21 +343,22 @@ namespace bbtk unsigned short wxGEditorTabPanel::getUndoState( std::string &stun) { stun = "Undo"; - if(states.size()>0) + if(sstates.size()>0) { if(_actualdo == states.begin() ) +// if(sstates.size()==1 ) { - +// _sactualdo=sstates.begin(); return 0; - } - else - { + } else { stun +=" - "; - stun += _sactualdo->substr(0,(--_sactualdo)->find_last_of(".")); +printf("EED wxGEditorTabPanel::getUndoState This mecanisme is not working ?????? _sactualdo sstates _actualdo state \n"); +// stun += _sactualdo->substr(0,(--_sactualdo)->find_last_of(".")); _sactualdo++; return 1; } } + return 0; } unsigned short wxGEditorTabPanel::getRedoState( std::string &stre) @@ -438,6 +522,16 @@ namespace bbtk { return _sceneManager->GetCategory(); } + //========================================================================= + std::string wxGEditorTabPanel::GetMessageKind() + { + return _sceneManager->GetMessageKind(); + } + //========================================================================= + std::string wxGEditorTabPanel::GetMessageLevel() + { + return _sceneManager->GetMessageLevel(); + } //========================================================================= void wxGEditorTabPanel::SetCbName(std::string cbName) @@ -471,6 +565,18 @@ namespace bbtk { _sceneManager->SetDescription( description ); } + + //========================================================================= + void wxGEditorTabPanel::SetMessageKind(std::string kind) + { + _sceneManager->SetMessageKind( kind ); + } + + //========================================================================= + void wxGEditorTabPanel::SetMessageLevel(std::string level) + { + _sceneManager->SetMessageLevel( level ); + } //========================================================================= //DFCH void wxGEditorTabPanel::SetFullPath( const std::string& fullpath )