-/*=========================================================================
+/*
+ # ---------------------------------------------------------------------
+ #
+ # 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.
-* ------------------------------------------------------------------------ */
+
/**
#include "bbtkWxStreamRedirector.h"
#include "bbtkUtilities.h"
+#include "creaWx.h"
+
#include <wx/tipwin.h>
#include <wx/splash.h>
+
//#include "icons/cc_run.xpm"
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") );
#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));
style,
1000, 0, -1, wxDefaultPosition, wxDefaultSize,
wxSIMPLE_BORDER|wxSTAY_ON_TOP);
-
-
+
if (ConfigurationFile::GetInstance().DotBbtkIsNew())
{
//================================================================
WxGUIScriptingInterface::~WxGUIScriptingInterface()
{
+ bbtkDebugMessage("widget",9,"bbStudio::~bbStudio()"<<std::endl);
SavePerspective();
m_mgr.UnInit();
}
//================================================================
+ //================================================================
+ void WxGUIScriptingInterface::OnClose(wxCloseEvent& event)
+ {
+ bbtkDebugMessage("widget",9,"bbStudio::OnClose()"<<std::endl);
+ //Wx::SetWindowsHaveBeenDestroyedByParent();
+ //mInterpreter.reset();
+ wxWindowList& list = GetChildren();
+ wxWindowList::iterator iter;
+ for (iter = list.begin(); iter != list.end(); ++iter)
+ {
+ (*iter)->Close();
+ }
+ this->Destroy();
+ }
+ //================================================================
+
+
//================================================================
void WxGUIScriptingInterface::Open(const std::string& filename)
{
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\" ";
command += separator + "bbi\" ";
#endif
command += "\""+filename + "\"";
+
+#ifdef WIN32
+ command += "\"";
+#endif
+
command += " & ";
printf ("EED WxGUIScriptingInterface::WxGUITextEditorRunBBI %s \n" , command.c_str() );
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);
}
//================================================================
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();
}
//================================================================
command = "include toolsbbtk/appli/GUICreatePackage";
bbtkMessage("Debug",1,"Executing : '"<<command<<"'"<<std::endl);
mWxGUICommand->SendCommand(command);
-
}
//================================================================
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 ";
#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() );
err += bbtk::std2wx(command) + _T("'");
wxMessageBox(err,_T("Regenerate package doc"),wxOK | wxICON_ERROR);
}
-
-
-
}
command += " -q";
bbtkMessage("debug",1,"Executing system command '"<<command<<"'"<<std::endl);
-
-
+std::cout << "==========================================================================================================" << command.c_str() << std::endl;
if ( ! system ( command.c_str() ) )
{
SetStatusText( _T("Done !"));
//================================================================
+ /**
+ * 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(crea::std2wx(err),_T("Plug package"),wxOK | wxICON_ERROR);
+ }
+ }
+ }while(userResponse != wxID_CANCEL);
}
//================================================================
{
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 ((int)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;
}
//================================================================
}
}
-
//================================================================
void WxGUIScriptingInterface::OnMenuWindowsFiles(wxCommandEvent& event)
{
//================================================================
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)