]> Creatis software - bbtkGEditor.git/commitdiff
Feature #2058 File drag and drop
authorDaniel Gonzalez <daniel@daniel.laptop>
Fri, 28 Jun 2013 12:48:34 +0000 (14:48 +0200)
committerDaniel Gonzalez <daniel@daniel.laptop>
Fri, 28 Jun 2013 12:48:34 +0000 (14:48 +0200)
The file drag and drop works with single and multiple file dnd's on Fedora 17.

lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxGEditorTabPanel.cxx
lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxTabPanelsManager.cxx
lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxTabPanelsManager.h

index a10d7bc2786dd1ac1a33489c68b30bff44309c2d..030e52aeca52c607b13bbca5e86828f410036150 100644 (file)
@@ -130,8 +130,12 @@ namespace bbtk
           * 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;
+
+         //std::cout << "Text drop: '" << stdData << "'" << std::endl;
 
          if(stdData.substr(0,4) == "box:")
            {
@@ -140,7 +144,7 @@ namespace bbtk
              posT = stdData.find_first_not_of(':', posT);
              std::string boxType = stdData.substr(posT);
 
-             std::cout << "box: Package='" << packageName << "' BoxType='" << boxType << "'" <<std::endl;
+             //std::cout << "box: Package='" << packageName << "' BoxType='" << boxType << "'" <<std::endl;
              /*
                     wxString foo( (data) );
                     char str[150];
@@ -163,7 +167,49 @@ namespace bbtk
          // DFGO: file for linux
          else if(stdData.substr(0,5) == "file:")
            {
-             std::cout << "file to open: " << stdData << std::endl;
+             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 << ": ";
+                 if(wxFile::Exists(crea::std2wx(filePath)))
+                   {
+                     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);
+               }
            }
 
          return true;
index 4cf8c38fbcb2bd50baff8c0a95353d92e8da479f..12f9bb66dcb72f63c52ebac2552c3f71b3795113 100644 (file)
@@ -82,6 +82,12 @@ namespace bbtk
        {
        }
 
+       //=========================================================================
+       wxGUIEditorGraphicBBS* wxTabPanelsManager::GetParentGUIEditorGraphicBBS() const
+       {
+         return this->_parent;
+       }
+
        //=========================================================================
        void wxTabPanelsManager::addNewTab(wxString tabName)
        {
index 51be8926d7b97ccb197eddfb5b9efd88d0cb4b43..976201a6ff2a005e50e954957b9107648036ae1e 100644 (file)
@@ -98,6 +98,8 @@ namespace bbtk
                wxTabPanelsManager(wxGUIEditorGraphicBBS *parent);
                ~wxTabPanelsManager();
 
+               wxGUIEditorGraphicBBS* GetParentGUIEditorGraphicBBS() const;
+
                void addNewTab(wxString tabName=_T("new_tab"));
                wxAuiNotebook* getAuiNotebook();
                wxGEditorTabPanel* getActualTabPanel();