X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=kernel%2Fsrc%2FbbtkWxGUIScriptingInterface.cxx;h=9e8e57dbe5732772b25494f9ad15dfa167bccf49;hb=cfad95b6e08e6e53846ffcda7fbc5932065f2c47;hp=4cb10db79bff0daccd28c7af3ba31cf30e133286;hpb=975161a89341e867c53da1dedd15e2f97cbd4586;p=bbtk.git diff --git a/kernel/src/bbtkWxGUIScriptingInterface.cxx b/kernel/src/bbtkWxGUIScriptingInterface.cxx index 4cb10db..9e8e57d 100644 --- a/kernel/src/bbtkWxGUIScriptingInterface.cxx +++ b/kernel/src/bbtkWxGUIScriptingInterface.cxx @@ -1,32 +1,39 @@ -/*========================================================================= +/* + # --------------------------------------------------------------------- + # + # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image + # pour la SantÈ) + # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton + # Previous Authors : Laurent Guigues, Jean-Pierre Roux + # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil + # + # This software is governed by the CeCILL-B license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL-B + # license as circulated by CEA, CNRS and INRIA at the following URL + # http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html + # or in the file LICENSE.txt. + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL-B license and that you accept its terms. + # ------------------------------------------------------------------------ */ + + +/*========================================================================= Program: bbtk Module: $RCSfile: bbtkWxGUIScriptingInterface.cxx,v $ Language: C++ - Date: $Date: 2009/04/15 15:45:49 $ - Version: $Revision: 1.37 $ + Date: $Date: 2012/11/16 08:49:01 $ + Version: $Revision: 1.49 $ =========================================================================*/ -/* --------------------------------------------------------------------- - -* Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale) -* Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux -* -* This software is governed by the CeCILL-B license under French law and -* abiding by the rules of distribution of free software. You can use, -* modify and/ or redistribute the software under the terms of the CeCILL-B -* license as circulated by CEA, CNRS and INRIA at the following URL -* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html -* or in the file LICENSE.txt. -* -* As a counterpart to the access to the source code and rights to copy, -* modify and redistribute granted by the license, users are provided only -* with a limited warranty and the software's author, the holder of the -* economic rights, and the successive licensors have only limited -* liability. -* -* The fact that you are presently reading this means that you have had -* knowledge of the CeCILL-B license and that you accept its terms. -* ------------------------------------------------------------------------ */ + /** @@ -54,9 +61,12 @@ #include "bbtkWxStreamRedirector.h" #include "bbtkUtilities.h" +#include "creaWx.h" + #include #include + //#include "icons/cc_run.xpm" namespace bbtk @@ -109,13 +119,13 @@ namespace bbtk menuAbout->Append( ID_Menu_About, _T("&About...") ); wxMenu *menuTools = new wxMenu; - menuTools->Append( ID_Menu_CreatePackage, _T("Create &package") ); + menuTools->Append( ID_Menu_CreatePackage, _T("Create &package") ); menuTools->Append( ID_Menu_CreateBlackBox, _T("Create &black box") ); - menuTools->Append( ID_Menu_PlugPackage, _T("&Plug package") ); + menuTools->Append( ID_Menu_PlugPackage, _T("&Plug package") ); menuTools->AppendSeparator(); menuTools->Append( ID_Menu_RegeneratePackageDoc,_T("Regenerate package &doc") ); menuTools->Append( ID_Menu_RegenerateBoxesLists,_T("Regenerate boxes &lists") ); - menuTools->Append( ID_Menu_RegenerateAll,_T("Regenerate &all") ); + menuTools->Append( ID_Menu_RegenerateAll, _T("Regenerate &all") ); menuTools->AppendSeparator(); menuTools->Append( ID_Menu_ShowImageGraph, _T("&Show last graph") ); @@ -243,8 +253,10 @@ namespace bbtk #endif // parent window of all bbtk windows will be a child of this - Wx::SetTopWindowParent(this); - // Add the method OnWxSignal as a Wx::Signal observer + // Wx::SetTopWindowParent(this); + Wx::SetTopWindow(this); + // Wx::SetAutoDestroyTopWindow(false); + // Add the method OnWxSignal as a Wx::Signal observer //bbtkAddWxSignalObserver(WxGUIPackageBrowser2Window::OnWxSignal); //.PaneBorder(false)); @@ -278,8 +290,7 @@ namespace bbtk style, 1000, 0, -1, wxDefaultPosition, wxDefaultSize, wxSIMPLE_BORDER|wxSTAY_ON_TOP); - - + if (ConfigurationFile::GetInstance().DotBbtkIsNew()) { @@ -301,11 +312,29 @@ namespace bbtk //================================================================ WxGUIScriptingInterface::~WxGUIScriptingInterface() { + bbtkDebugMessage("widget",9,"bbStudio::~bbStudio()"<Close(); + } + this->Destroy(); + } + //================================================================ + + //================================================================ void WxGUIScriptingInterface::Open(const std::string& filename) { @@ -420,7 +449,12 @@ namespace bbtk std::string filename = dir + separator + "tmp_bbtk.bbs"; mWxGUITextEditor->GetCurrentPage()->SaveFile(filename); - std::string command = "\""; + std::string command = "\""; + +#ifdef WIN32 + command += "\""; +#endif + command += ConfigurationFile::GetInstance().Get_bin_path(); #ifdef MACOSX command += separator + "bbi.app/Contents/MacOS/bbi\" "; @@ -428,6 +462,11 @@ namespace bbtk command += separator + "bbi\" "; #endif command += "\""+filename + "\""; + +#ifdef WIN32 + command += "\""; +#endif + command += " & "; printf ("EED WxGUIScriptingInterface::WxGUITextEditorRunBBI %s \n" , command.c_str() ); @@ -474,8 +513,8 @@ namespace bbtk void WxGUIScriptingInterface::OnMenuAbout(wxCommandEvent& WXUNUSED(event)) { m_mgr.Update(); - Refresh(); - wxMessageBox(_T(" bbStudio\nThe Black Box Toolkit Development Studio\n(c) CREATIS-LRMN 2008"), + Refresh(); + wxMessageBox(_T(" bbStudio\nThe Black Box Toolkit Development Studio\n(c) CREATIS 2008\n\n http://www.creatis.insa-lyon.fr/site/en/CreaTools_home"), _T("About ..."), wxOK | wxICON_INFORMATION, this); } @@ -485,9 +524,12 @@ namespace bbtk //================================================================ void WxGUIScriptingInterface::OnMenuEditConfig(wxCommandEvent& WXUNUSED(event)) { + std::string configFile = ConfigurationFile::GetInstance().Get_config_xml_full_path(); Open(configFile); + wxMessageDialog ww(NULL,_T("If you change the bbtk_config.xml, you have to restart this appliaction..."), _T("Alert !"), wxOK); + ww.ShowModal(); } //================================================================ @@ -539,7 +581,6 @@ namespace bbtk command = "include toolsbbtk/appli/GUICreatePackage"; bbtkMessage("Debug",1,"Executing : '"<SendCommand(command); - } //================================================================ @@ -572,8 +613,7 @@ namespace bbtk doc_path += bbtk::ConfigurationFile::GetInstance().Get_file_separator(); std::string pack_name("User"); - std::string pack_path = doc_path + pack_name; - + std::string pack_path = doc_path + pack_name; #if defined(WIN32) std::string strappli="start "; @@ -583,8 +623,7 @@ namespace bbtk #else std::string strappli="gnome-open "; #endif -#endif - +#endif std::string strcommand = strappli +pack_path+"/workspace_workspacePrototype.png"; // std::cout << "system: " << strcommand << std::endl; system ( strcommand.c_str() ); @@ -635,9 +674,6 @@ namespace bbtk err += bbtk::std2wx(command) + _T("'"); wxMessageBox(err,_T("Regenerate package doc"),wxOK | wxICON_ERROR); } - - - } @@ -674,8 +710,7 @@ namespace bbtk command += " -q"; bbtkMessage("debug",1,"Executing system command '"<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(crea::std2wx(err),_T("Plug package"),wxOK | wxICON_ERROR); + } + } + }while(userResponse != wxID_CANCEL); } //================================================================ @@ -781,17 +839,49 @@ namespace bbtk { size_t s = target.length(); if ((s>3) && (target[s-1]=='s') - && (target[s-2]=='b') - && (target[s-3]=='b') - && (target[s-4]=='.')) - { - mWxGUITextEditor->Open(target); -#if NOTEBOOK - mwxNotebook->SetSelection(0); -#endif - mWxGUITextEditor->SetFocus(); - return false; - } + && (target[s-2]=='b') + && (target[s-3]=='b') + && (target[s-4]=='.')) + { + mWxGUITextEditor->Open(target); + #if NOTEBOOK + mwxNotebook->SetSelection(0); + #endif + mWxGUITextEditor->SetFocus(); + return false; + } + + if ((s>3) && (target[s-1]=='f') + && (target[s-2]=='d') + && (target[s-3]=='p') + && (target[s-4]=='.')) + { + + // Open pdf in linux + // gnome-open target + + // Open pdf in macOS + + // Open pdf in windows + int size=target.size(); + int pos=target.rfind("\\"); + std::string commandStart("start "); + std::string commandPath("/D \""+target.substr(0,pos) +"\""); + std::string commandPDF( target.substr(pos+1,size-pos+1) ); + + printf("EED WxGUIScriptingInterface::WxGUIHtmlBrowserUserOnLinkClicked cc %s \n",commandPath.c_str() ); + // cleanning path + while (commandPath.rfind("\\\\")!=-1 ) + { + commandPath.erase( commandPath.rfind("\\\\") , 1 ); + printf("EED WxGUIScriptingInterface::WxGUIHtmlBrowserUserOnLinkClicked cc %s \n",commandPath.c_str() ); + } + + std::string command = commandStart+commandPath+" "+commandPDF; + printf("EED WxGUIScriptingInterface::WxGUIHtmlBrowserUserOnLinkClicked BB %s \n",command.c_str() ); + system( command.c_str() ); + return false; + } return true; } //================================================================ @@ -809,7 +899,6 @@ namespace bbtk } } - //================================================================ void WxGUIScriptingInterface::OnMenuWindowsFiles(wxCommandEvent& event) { @@ -916,6 +1005,7 @@ namespace bbtk //================================================================ BEGIN_EVENT_TABLE(WxGUIScriptingInterface, wxFrame) + EVT_CLOSE( WxGUIScriptingInterface::OnClose) EVT_MENU(ID_Menu_Quit, WxGUIScriptingInterface::OnMenuQuit) EVT_MENU(ID_Menu_About, WxGUIScriptingInterface::OnMenuAbout) EVT_MENU(ID_Menu_EditConfig, WxGUIScriptingInterface::OnMenuEditConfig)