X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FEditorGraphicBBS%2FbbsWxGUIEditorGraphic%2FwxGEditorTabPanel.cxx;h=a941a94c79c9df46ca330810107895c0653a31e8;hb=14342b19da6542ac157c5e7881a8294b209d1a32;hp=b6ff6fad5058eb20349cc797a3d18bd84c35624a;hpb=cbf0adf452e707e77d2e00d4d5920422693ec650;p=bbtkGEditor.git diff --git a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxGEditorTabPanel.cxx b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxGEditorTabPanel.cxx index b6ff6fa..a941a94 100644 --- a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxGEditorTabPanel.cxx +++ b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxGEditorTabPanel.cxx @@ -120,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) ); + /* + * 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); + } + } - char delims[] = ":"; - char *result = NULL; - result = strtok( str, delims ); - packageName += result; - - result = strtok( NULL, delims ); - boxType += result; - - if ( _panelsManager->TryToOpenScriptApplication(packageName,boxType) == false ) - { - _sceneManager->createGBlackBox(x,y,packageName, boxType); - saveTempandUpdate("drop box"); - } return true; }