From 7a50f9c0b05dbe71543ffedacb9466dbf1802dec Mon Sep 17 00:00:00 2001 From: Daniel Gonzalez Date: Tue, 9 Oct 2012 15:17:02 +0000 Subject: [PATCH] Bug #1658 Linux DirDialogBox not working --- kernel/src/bbtkWxGUIScriptingInterface.cxx | 79 ++++++++++++++-------- 1 file changed, 52 insertions(+), 27 deletions(-) diff --git a/kernel/src/bbtkWxGUIScriptingInterface.cxx b/kernel/src/bbtkWxGUIScriptingInterface.cxx index 4c48545..826f7eb 100644 --- a/kernel/src/bbtkWxGUIScriptingInterface.cxx +++ b/kernel/src/bbtkWxGUIScriptingInterface.cxx @@ -2,8 +2,8 @@ Program: bbtk Module: $RCSfile: bbtkWxGUIScriptingInterface.cxx,v $ Language: C++ - Date: $Date: 2011/03/21 11:18:00 $ - Version: $Revision: 1.45 $ + Date: $Date: 2012/10/09 15:17:02 $ + Version: $Revision: 1.46 $ =========================================================================*/ /* --------------------------------------------------------------------- @@ -739,37 +739,62 @@ std::cout << "================================================================== //================================================================ + /** + * Event Handler for the plug package menu. + * This method prompts the user for the directory where the bbtkPackage file is + * located and associates the related package with the configuration file. + * @param event event not used. + */ + + //DFGO - 8/10/2012 void WxGUIScriptingInterface::OnMenuPlugPackage(wxCommandEvent& WXUNUSED(event)) { long style = wxDD_DEFAULT_STYLE | wxDD_DIR_MUST_EXIST; - wxDirDialog* FD = - new wxDirDialog( 0, + wxDirDialog* FD = + new wxDirDialog( 0, _T("Select package directory"), _T(""), style); - - if (FD->ShowModal()==wxID_OK) - { - std::string path = wx2std (FD->GetPath()) ; - std::string fname = path + "/bbtkPackage"; - if ( ! Utilities::FileExists( fname ) ) - { - wxString err(_T("The directory does not contain a 'bbtkPackage' file")); - wxMessageBox(err,_T("Plug package"),wxOK | wxICON_ERROR); - return; - } - - std::ifstream f; - f.open(fname.c_str()); - std::string pname; - f >> pname; - f.close(); - - bbtk::ConfigurationFile::GetInstance().AddPackagePathsAndWrite( path ); - - DoRegeneratePackageDoc(pname); - DoRegenerateBoxesLists(); - } + long userResponse; + do + { + userResponse = FD->ShowModal(); + if(userResponse==wxID_OK) + { + std::string path = wx2std (FD->GetPath()) ; + std::string fname = path + "/bbtkPackage"; + std::cout << "Path chosen = \"" << FD->GetPath() << "\"" << std::endl; + if ( Utilities::FileExists( fname ) ) + { + std::ifstream f; + f.open(fname.c_str()); + std::string pname; + f >> pname; + f.close(); + + bbtk::ConfigurationFile::GetInstance().AddPackagePathsAndWrite( path ); + + DoRegeneratePackageDoc(pname); + DoRegenerateBoxesLists(); + + wxMessageBox(_T("Package successfully plugged"),_T("Plug package"),wxOK | wxICON_INFORMATION); + + userResponse = wxID_CANCEL; + } + else + { + std::string err = "The directory \"" + path + "\" does not contain a 'bbtkPackage' file."; + #ifndef WIN32 + #ifndef MACOSX + err += "\nNote: If you are on Linux please select the folder and click \"Open\", don't enter in it."; + #endif + #endif + + + wxMessageBox(_T(err),_T("Plug package"),wxOK | wxICON_ERROR); + } + } + }while(userResponse != wxID_CANCEL); } //================================================================ -- 2.45.0