]> Creatis software - bbtkGEditor.git/blobdiff - lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/bbtkwxGUIEditorGraphicBBS.h
Display of the tree obtained in the information dialog window in BBEditor. 12/05...
[bbtkGEditor.git] / lib / EditorGraphicBBS / bbsWxGUIEditorGraphic / bbtkwxGUIEditorGraphicBBS.h
index 4a608bcedaeb0469b7588a04651b0b5ca5a9c217..0c070faf73535ff9d2de056735f9d71987c77b5e 100644 (file)
@@ -1,4 +1,29 @@
-/*=========================================================================                                                                               
+/*
+# ---------------------------------------------------------------------
+#
+# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image 
+#                        pour la Santé)
+# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+#
+#  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$
   Language:  C++
 * 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 
+*  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. 
+*  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.
-* ------------------------------------------------------------------------ */                                                                         
+* ------------------------------------------------------------------------ */
 
 
 
 /**
- *  \file 
- *  \brief Class bbtk::BlackBox : abstract black-box interface. 
+ *  \file
+ *  \brief Class bbtk::BlackBox : abstract black-box interface.
  */
 
 /****
 * Ricardo A Corredor J <ra.corredor67@uniandes.edu.co>
 * RaC - 2010
 ****/
+
 #ifndef __WxGUIEditorGraphicBBS_h__
 #define __WxGUIEditorGraphicBBS_h__
 
 //Includes same project
 #include "wxTabPanelsManager.h"
 #include "wxBlackBoxEditionDialog.h"
+#include "wxDiagramPropertiesEditionDialog.h"
 #include "wxVtkSceneManager.h"
 #include "GlobalConstants.h"
 
+
 #include "wxart_new.xpm" // JPR
 #include "wxart_open.xpm"
 #include "wxart_save.xpm"
 #include "wxart_delete.xpm"
 #include "wxart_centerview.xpm"
 #include "wxart_box.xpm"
+#include "wxart_executablebox.xpm"
 #include "wxart_complexbox.xpm"
 #include "wxart_complexinputport.xpm"
 #include "wxart_complexoutputport.xpm"
+#include "wxart_undo.xpm"
+#include "wxart_redo.xpm"
+#include "wxart_editProperties.xpm"
 
 //Includes creaMaracasVisu
 
 #include <bbtkWxGUIPackageBrowser2.h>
 #include <bbtkWxGUIHtmlBrowser.h>
 #include <bbtkBlackBoxDescriptor.h>
+#include <bbtkComplexBlackBoxDescriptor.h>
+#include <bbtkUtilities.h>
 #include <bbtkConfigurationFile.h>
+#include <bbtkSystemTools.h>
 
 //Includes vtk
 
 //Includes std
 #include <iostream>
 #include <fstream>
+#include <vector>
 
 namespace bbtk
 {
-       //RaC: It is important if it exists a double relation 
+       //RaC: It is important if it exists a double relation
        //e.g. wxTabPanelsManager includes wxGUIEditorGraphicBBS, and wxGUIEditorGraphicBBS includes wxTabPanelsManager
        class wxTabPanelsManager;
        class wxVtkSceneManager;
 
        class  wxGUIEditorGraphicBBS : public wxFrame
        {
-               public: 
+               public:
                        wxGUIEditorGraphicBBS(wxFrame *parent);
                        ~wxGUIEditorGraphicBBS();
 
-                       void initToolbar(); 
+                       void initToolbar();
                        void initMenu();
                        void initTabPanelsManager();
                        void initPackageBrowser();
                        void initHelpHTMLBrowser();
-
                        wxAuiNotebook* getAuiNotebook();
 
                        // Display the info of the black box highlighted in the PackageBrowser
@@ -119,23 +153,42 @@ namespace bbtk
                        // Shows the dialog to change the parameters and values of the black box
                        void editBlackBox(GBlackBoxModel *bbmodel);
 
+                       bool boxNameExists(std::string boxname);
+                       bool isCurrentDiagramComplexBox();
+
+                       // Checks and adds if necessary the .bbg/.bbs extensions
+                       std::string CheckExtension (std::string filename, std::string extension);                       
                        // Method that can be used to refresh the help and package browser
                        // RaC TOFIX!!!
                        void RegenerateAll();
-                       void DoRegeneratePackageDoc(const std::string& pack);   
+                       void DoRegeneratePackageDoc(const std::string& pack);
                        void DoRegenerateBoxesLists();
 
                        // Refresh the state of buttons and menus when changing for example the mode to edit complex box
                        void refreshGUIControls();
+                       
+            void SaveActualBBS(std::string filename);
+            void AskComplexBoxConfiguration();
+            void SaveActualComplexBox(std::string filename);
+            void SaveActualDiagram(std::string filename);
+                       void SaveCurrentDiagramAs( ); //DFCH
+                       void SaveTempActualDiagram(const std::string &);//FCY
+
+
 
                        // File menu and toolbar events
                        void OnCreateNewTab(wxCommandEvent& event);
                        void OnOpenDiagram(wxCommandEvent& event);
-                       void OnSaveActualDiagram(wxCommandEvent& event);
+                       void OpenDiagram(std::string filePathName, std::string fileName); 
+                       void OnSaveActualDiagram(wxCommandEvent& event); //DFCH
+                       void OnSaveAsActualDiagram(wxCommandEvent& event); //DFCH
+                       void OnExportConsoleExecCommand(wxCommandEvent& event); //RaC
                        void OnOpenBBS(wxCommandEvent& event);
+                       void OpenBBS(std::string filePathName, std::string fileName);
                        void OnSaveActualBBS(wxCommandEvent& event);
                        void OnSaveActualComplexBox(wxCommandEvent& event);
                        void OnExecuteActualDiagram(wxCommandEvent& event);
+                       void OnClickBtnExecutableBox(wxCommandEvent& event);
                        void OnDeleteAllBoxesActualDiagram(wxCommandEvent& event);
                        void OnCenterViewActualDiagram(wxCommandEvent& event);
                        void OnClickBtnBox(wxCommandEvent& event);
@@ -144,13 +197,49 @@ namespace bbtk
                        void OnAddComplexBoxOutput(wxCommandEvent& event);
                        void OnExit(wxCommandEvent& event);
                        void OnHelpBBeditor(wxCommandEvent& event);
+                       void OnUndo(wxCommandEvent& event);
+                       void OnRedo(wxCommandEvent& event);
+                       void OnChangeName(wxCommandEvent& event);
+                       void OnEditDiagramProperties(wxCommandEvent& event);
+                       void OnEditComplexBoxScript(wxCommandEvent& event);
 
+               
                        // Edit menu events
-                       void OnCopySelectedToComplexDiagram(wxCommandEvent& event);
-
-
+                       void OnCopySelectedToComplexDiagram(wxCommandEvent& event);                   
+                       
+
+                       // Tool menu events
+                       void OnCreatePackage(wxCommandEvent& event);
+                       void OnCreateBlackBox(wxCommandEvent& event);
+                       void OnPlugPackage(wxCommandEvent& event);
+                       void OnEditConfig(wxCommandEvent& event);
+                       void OnShowHTMLDoc(wxCommandEvent& event);
+                       void OnCreateIndex(wxCommandEvent& event);
+                       void OpenScript(std::string filePathNameBBS ,std::string boxType);
+
+                       bool TryToOpenScriptApplication(std::string packageName ,std::string boxType);
+                       bool TryToOpenScriptComplexBox(std::string packageName ,std::string boxType);
+                       bool TryToOpenScript(std::string packageName ,std::string boxType,bool scriptApplication, bool scriptComplexBox);
+               
+                       Factory::Pointer GetBBTKFactory();
+               
+                       // RaC-2012
+                       void enableComplexBox();
+                       void disableComplexBox();
+
+                       // Getters and Setters of current diagram properties
+
+                       void setCurrentDiagramDescription(std::string description);
+                       void setCurrentDiagramAuthor(std::string author);
+                       void setCurrentDiagramCategory(std::string category);
+
+                       std::string getCurrentDiagramDescription();
+                       std::string getCurrentDiagramAuthor();
+                       std::string getCurrentDiagramCategory();
+               
+               
                private:
-                       
+
                        //AuiManager for the wxWindow
                        wxAuiManager                                            *_frameAUIMgr;
 
@@ -167,12 +256,17 @@ namespace bbtk
                        WxGUIHtmlBrowser                                        *_helpHtmlBrowser;
 
                        //Name of the box and its package that is shown in the browser
-                       std::string _actualPkgBrowserBoxName;
-                       std::string _actualPkgBrowserPkgName;
+                       std::string                         _actualPkgBrowserBoxName;
+                       std::string                         _actualPkgBrowserPkgName;
 
+                       // VERY IMPORTANT FOR SAVE&LOAD PROCESSES
+                       // RaC 2012 2nd HackFest
+                       std::string                                             _currentBBGversion;
+                       
+                       NodeTreeC tree;
                protected:
 
-         
+
  };