From dac242863581e890b01c581127473ad267f46073 Mon Sep 17 00:00:00 2001 From: Daniel Gonzalez Date: Thu, 27 Jun 2013 16:09:19 +0200 Subject: [PATCH] Fix to file drop crashing: Now detects if the incoming text has the keyword: "box:" or "file:" --- .../wxGEditorTabPanel.cxx | 62 +++++++++++++------ 1 file changed, 44 insertions(+), 18 deletions(-) diff --git a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxGEditorTabPanel.cxx b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxGEditorTabPanel.cxx index b6ff6fa..a10d7bc 100644 --- a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxGEditorTabPanel.cxx +++ b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxGEditorTabPanel.cxx @@ -120,26 +120,52 @@ 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/ + */ + 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:") + { + std::cout << "file to open: " << stdData << std::endl; + } - 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; } -- 2.45.0