]> Creatis software - bbtkGEditor.git/commitdiff
Fix to file drop crashing:
authorDaniel Gonzalez <daniel@daniel.laptop>
Thu, 27 Jun 2013 14:09:19 +0000 (16:09 +0200)
committerDaniel Gonzalez <daniel@daniel.laptop>
Thu, 27 Jun 2013 14:09:19 +0000 (16:09 +0200)
Now detects if the incoming text has the keyword: "box:" or "file:"

lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxGEditorTabPanel.cxx

index b6ff6fad5058eb20349cc797a3d18bd84c35624a..a10d7bc2786dd1ac1a33489c68b30bff44309c2d 100644 (file)
@@ -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 << "'" <<std::endl;
+             /*
+                    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;
+              */
+             if ( _panelsManager->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;
        }