]> Creatis software - bbtkGEditor.git/commitdiff
Feature #1674 . RaC
authorcorredor <>
Fri, 12 Oct 2012 15:37:24 +0000 (15:37 +0000)
committercorredor <>
Fri, 12 Oct 2012 15:37:24 +0000 (15:37 +0000)
All basic functionality is working and has been tested. Important to define if it works the console command export.

lib/EditorGraphicBBS/bbsKernelEditorGraphic/GlobalConstants.h
lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/bbtkwxGUIEditorGraphicBBS.cxx
lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/bbtkwxGUIEditorGraphicBBS.h
lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.cxx
lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.h

index add1719f4bfe753f51afc4a923a93201b0eebfb2..b21d18e68c572f46db0fdd4598a87b60a77d2ef8 100644 (file)
@@ -184,21 +184,22 @@ namespace bbtk {
        const int ID_BTNBOX                                             =       1013;
        const int ID_HELP_BBEDITOR                              =       1014;
        const int ID_BTEXECUTABLEBOX                    =       1016; // EED
+       const int ID_EXPORT_CONSOLEAPP                  =       1017; // RaC
        
-       const int wxID_NOTEBOOK                                 =       1017;  // EED updated
+       const int wxID_NOTEBOOK                                 =       1018;  // EED updated
        
-       const int ID_bbEditor_Tool_Menu_CreatePackage   =       1018;  // EED
-       const int ID_bbEditor_Tool_Menu_CreateBlackBox          =       1019;  // EED
-       const int ID_bbEditor_Tool_Menu_PlugPackage                     =       1020;  // EED
-       const int ID_bbEditor_Tool_Menu_EditConfig                      =       1021;  // EED
-       const int ID_bbEditor_Tool_Menu_ShowHTMLDoc                     =       1022;  // EED
-       const int ID_bbEditor_Tool_Menu_CreateIndex                     =       1023;  // EED
+       const int ID_bbEditor_Tool_Menu_CreatePackage   =       1019;  // EED
+       const int ID_bbEditor_Tool_Menu_CreateBlackBox          =       1020;  // EED
+       const int ID_bbEditor_Tool_Menu_PlugPackage                     =       1021;  // EED
+       const int ID_bbEditor_Tool_Menu_EditConfig                      =       1022;  // EED
+       const int ID_bbEditor_Tool_Menu_ShowHTMLDoc                     =       1023;  // EED
+       const int ID_bbEditor_Tool_Menu_CreateIndex                     =       1024;  // EED
        
-       const int ID_UNDO                                                                       =       1024;  // FCY
-       const int ID_REDO                                                                       =       1025;  // FCY
-       const int ID_CHANGENAME                                                         =   1026;
+       const int ID_UNDO                                                                       =       1025;  // FCY
+       const int ID_REDO                                                                       =       1026;  // FCY
+       const int ID_CHANGENAME                                                         =   1027;
 
-       const int ID_EDITPROPERTIES                                                                     =       1027;  // RaC 2nd HackFest
+       const int ID_EDITPROPERTIES                                                                     =       1028;  // RaC 2nd HackFest
 }
 // namespace bbtk
 #endif
index 36014fa6e33b89ed3344916f898106d3218289b8..af3e5ce7d1e592f1ebddd3f15cc0c8e569f48a21 100644 (file)
@@ -78,6 +78,11 @@ wxGUIEditorGraphicBBS::wxGUIEditorGraphicBBS(wxFrame *parent) :
        _actualPkgBrowserBoxName = "";
        _actualPkgBrowserPkgName = "";
        refreshGUIControls();
+
+       /////////////////////////////////
+       /// IMPORTANT!! FOR SAVE&LOAD PROCESSES THE VERSION IS VERY IMPORTANT.
+       /// RaC 2012 2nd Hackfest
+       _currentBBGversion="1.4";
 }
 
 //=========================================================================
@@ -140,7 +145,8 @@ void wxGUIEditorGraphicBBS::initToolbar() {
                        wxNullBitmap, wxITEM_NORMAL, _T("Complex box"), _T("Complex box"));
        toolbar->SetToggle(ID_BTNCOMPLEXBOX, true);
 
-       //toolbar->AddTool(ID_ADDCOMPLEXBOXINPUT, _T("Add input to Complex box"),
+       // RaC 2012 2nd HackFest - Now Complex inputs are any external input
+       //              toolbar->AddTool(ID_ADDCOMPLEXBOXINPUT, _T("Add input to Complex box"),
        //              bmp_complexinputport, wxNullBitmap, wxITEM_NORMAL,
        //              _T("Add input to Complex box"), _T("Add input to Complex box"));
        toolbar->AddTool(ID_ADDCOMPLEXBOXINPUT, _T("Add external input (Complex box or console app)"),
@@ -232,6 +238,8 @@ void wxGUIEditorGraphicBBS::initMenu() {
         fileMenu->Append(ID_SAVE_AS_BBS, _T("Save BBS"), _T("Save BBS"));
        fileMenu->Append(ID_SAVE_AS_COMPLEXBOX, _T("Save complex box"),
                        _T("Save complex box"));
+       fileMenu->Append(ID_EXPORT_CONSOLEAPP, _T("Export console commands"),
+                               _T("Export console execution commands"));
        fileMenu->Append(wxID_EXIT, _T("E&xit"), _T("Exit"));
 
        Connect(ID_NEW, wxEVT_COMMAND_MENU_SELECTED,
@@ -248,6 +256,10 @@ void wxGUIEditorGraphicBBS::initMenu() {
                        ID_SAVE_AS_COMPLEXBOX,
                        wxEVT_COMMAND_MENU_SELECTED,
                        wxCommandEventHandler(wxGUIEditorGraphicBBS::OnSaveActualComplexBox));
+       Connect(
+                       ID_EXPORT_CONSOLEAPP,
+                               wxEVT_COMMAND_MENU_SELECTED,
+                               wxCommandEventHandler(wxGUIEditorGraphicBBS::OnExportConsoleExecCommand));
        Connect(wxID_EXIT, wxEVT_COMMAND_MENU_SELECTED,
                        wxCommandEventHandler(wxGUIEditorGraphicBBS::OnExit));
 
@@ -606,7 +618,9 @@ void wxGUIEditorGraphicBBS::SaveActualBBS(std::string filename) {
        std::string content = "";
        // writing file header
        content += "# ----------------------------------\n";
-       content += "# - BBTKGEditor v 1.3 BBS BlackBox Script\n";
+       content += "# - BBTKGEditor v ";
+       content += _currentBBGversion; //VERSION
+       content += " BBS BlackBox Script\n";
        content += "# - ";
        content += filename;
        content += "\n";
@@ -666,7 +680,9 @@ void wxGUIEditorGraphicBBS::SaveActualComplexBox(std::string filename) {
 
        // writing file header
        content += "# ----------------------------------\n";
-       content += "# - BBTKGEditor v 1.3 BBS BlackBox Script (Complex Box)\n";
+       content += "# - BBTKGEditor v ";
+       content += _currentBBGversion;//VERSION
+       content += " BBS BlackBox Script (Complex Box)\n";
        content += "# - ";
        content += filename;
        content += "\n";
@@ -701,7 +717,9 @@ void wxGUIEditorGraphicBBS::SaveActualDiagram(std::string filename) {
 
        // writing file header
        content += "# ----------------------------------\n";
-       content += "# - BBTKGEditor v 1.3 BBG BlackBox Diagram file\n";
+       content += "# - BBTKGEditor v ";
+       content += _currentBBGversion; //VERSION
+       content += " BBG BlackBox Diagram file\n";
        content += "# - ";
 
        content += filename;
@@ -795,6 +813,100 @@ void wxGUIEditorGraphicBBS::OnSaveActualDiagram(wxCommandEvent& event) {
 void wxGUIEditorGraphicBBS::OnSaveAsActualDiagram(wxCommandEvent& event) {
        SaveCurrentDiagramAs();
 }
+
+//=========================================================================
+void wxGUIEditorGraphicBBS::OnExportConsoleExecCommand(wxCommandEvent& event)
+{
+       wxFileDialog * saveFileDialog = new wxFileDialog(this,
+                       wxT("Export console command"), wxEmptyString, wxT("ConsoleApp.txt"),
+                       wxT("*.txt;*.bbs;*.bbg;*.sh;*.bat"), wxSAVE | wxOVERWRITE_PROMPT);
+
+       if (saveFileDialog->ShowModal() == wxID_OK)
+       {
+               wxString fileName = saveFileDialog->GetPath();
+               std::string filename = (const char*) (fileName.mb_str());
+               filename=CheckExtension (filename, ".txt");
+
+               ofstream file;
+               file.open(filename.c_str());
+
+               std::vector<std::string> extInputs = _tabsMgr->getActualTabPanel()->getSceneManager()->GetExternalInputsNames();
+
+               //TODO PUT IN A METHOD OF A FILES AND TEXT MANAGER CLASS !!!
+               //std::string inputsInCommentsWin="";
+               //std::string inputsInCommentsUnix="";
+               //std::string inputsInOneLineWin="";
+               std::string inputsInOneLineUnix="";
+               for (unsigned int i = 0; i < extInputs.size(); ++i)
+               {
+                       /* No gusto la idea al jefe pero por si acaso ...
+                       * RaC 2012 2nd HackFest
+                       *
+                       inputsInCommentsWin+="REM ";
+                       inputsInCommentsWin+=extInputs[i];
+                       inputsInCommentsWin+="=\"value\"\n";
+                       inputsInCommentsUnix+="# ";
+                       inputsInCommentsUnix+=extInputs[i];
+                       inputsInCommentsUnix+="=\"value\"\n";
+
+                       char buffer [50];
+                       sprintf (buffer, "%d", (i+1));
+                       inputsInOneLineWin+=extInputs[i];
+                       inputsInOneLineWin+="=\"%";
+                       inputsInOneLineWin+=buffer;
+                       inputsInOneLineWin+="\" ";
+                       */
+                       inputsInOneLineUnix+=extInputs[i];
+                       inputsInOneLineUnix+="=\"<value>\" ";
+
+               }
+
+
+               std::string content = "";
+               // writing file header
+               content += "# ----------------------------------\n";
+               content += "# - BBTKGEditor v ";
+               content += _currentBBGversion; //VERSION
+               content += " Console Commands to execute BBS application\n";
+               content += "# - ";
+               content += filename;
+               content += "\n";
+               content += "# ----------------------------------\n";
+               content += "\n";
+               content += "\n";
+               content += "# Command to execute bbi\n";
+               content += "bbi <bbs_path> ";
+               content += inputsInOneLineUnix;
+
+               /* No gusto la idea al jefe pero por si acaso ...
+                * RaC 2012 2nd HackFest
+                content += "# For Windows (copy the following lines to a .bat file)\n";
+                content += "REM BBS application\n";
+                content += "REM Inputs:\n";
+                content += inputsInCommentsWin;
+                content += "REM To use previous inputs, put %$inputName% in the corresponding input of the execution bbi line\n";
+                content += "bbi applicationBBS.bbs ";
+                content += inputsInOneLineWin;
+                content += "\n";
+                content += "\n";
+                content += "# For Linux or Mac (copy the following lines to a .sh file)\n";
+                content += "#!/bin/bash\n";
+                content += "# BBS application\n";
+                content += "# Inputs:\n";
+                content += inputsInCommentsUnix;
+                content += "# To use previous inputs, put $inputName in the corresponding input of the execution bbi line\n";
+                content += "bbi applicationBBS.bbs ";
+                content += inputsInOneLineUnix;
+                content += "\n";
+               */
+
+               file << content;
+               file.close();
+       }
+
+
+}
+
 //=========================================================================
 
 void wxGUIEditorGraphicBBS::refreshGUIControls() {
@@ -804,18 +916,20 @@ void wxGUIEditorGraphicBBS::refreshGUIControls() {
        wxToolBar* toolbar = GetToolBar();
        if (_tabsMgr->isActualDiagramComplexBox()) {
                toolbar->ToggleTool(ID_BTNCOMPLEXBOX, true);
-               toolbar->EnableTool(ID_ADDCOMPLEXBOXINPUT, true);
+               //toolbar->EnableTool(ID_ADDCOMPLEXBOXINPUT, true); RaC2012 2nd HackFest
                toolbar->EnableTool(ID_ADDCOMPLEXBOXOUTPUT, true);
 
                GetMenuBar()->GetMenu(0)->Enable(ID_SAVE_AS_COMPLEXBOX, true);
                GetMenuBar()->GetMenu(0)->Enable(ID_SAVE_AS_BBS, false);
+               GetMenuBar()->GetMenu(0)->Enable(ID_EXPORT_CONSOLEAPP, false);
        } else {
                toolbar->ToggleTool(ID_BTNCOMPLEXBOX, false);
-               toolbar->EnableTool(ID_ADDCOMPLEXBOXINPUT, false);
+               //toolbar->EnableTool(ID_ADDCOMPLEXBOXINPUT, false); RaC2012 2nd HackFest
                toolbar->EnableTool(ID_ADDCOMPLEXBOXOUTPUT, false);
 
                GetMenuBar()->GetMenu(0)->Enable(ID_SAVE_AS_COMPLEXBOX, false);
                GetMenuBar()->GetMenu(0)->Enable(ID_SAVE_AS_BBS, true);
+               GetMenuBar()->GetMenu(0)->Enable(ID_EXPORT_CONSOLEAPP, true);
        }
 
        //RaC2012 2ndHackFest
index 35d2f56985b82e0fa0f14b43a7d51081739c8bd2..54a604cc8ece19980d1ebfa668acd82a7dd3b386 100644 (file)
@@ -148,11 +148,13 @@ namespace bbtk
                        void SaveTempActualDiagram(const std::string &);//FCY
 
 
+
                        // File menu and toolbar events
                        void OnCreateNewTab(wxCommandEvent& event);
                        void OnOpenDiagram(wxCommandEvent& event);
                        void OnSaveActualDiagram(wxCommandEvent& event); //DFCH
                        void OnSaveAsActualDiagram(wxCommandEvent& event); //DFCH
+                       void OnExportConsoleExecCommand(wxCommandEvent& event); //RaC
                        void OnOpenBBS(wxCommandEvent& event);
                        void OnSaveActualBBS(wxCommandEvent& event);
                        void OnSaveActualComplexBox(wxCommandEvent& event);
@@ -219,6 +221,10 @@ namespace bbtk
                        std::string                         _actualPkgBrowserBoxName;
                        std::string                         _actualPkgBrowserPkgName;
 
+                       // VERY IMPORTANT FOR SAVE&LOAD PROCESSES
+                       // RaC 2012 2nd HackFest
+                       std::string                                             _currentBBGversion;
+
                protected:
 
 
index 3a411d84aae13f951de908eb7ca225c46b5dfe04..62ecce36189b7f9a345cafd7db5e67e2cd59bbbc 100644 (file)
@@ -1416,32 +1416,66 @@ std::string wxVtkSceneManager::getDiagramBBS(bool wln) {
                script += LineNumber(wln, lnNmbr);
                script += "\n";
 
+
+               std::string complexInputs="";
+
                for (i = 0; i < (int) connections.size(); i++) {
-                       script += LineNumber(wln, lnNmbr);
-                       script += "connect ";
+                       //script += LineNumber(wln, lnNmbr);
+                       //script += "connect ";
                        int id = connections[i];
                        GObjectController *control = _controllers[id];
                        GConnectorModel *model = (GConnectorModel*) control->getModel();
 
-                       //Start Connection info
-                       GPortModel *start = model->getStartPort();
-                       script += start->getParentBox()->getBBTKName();
-                       script += ".";
-                       script += start->getBBTKName();
 
-                       script += " ";
+                       //Connection info
+                       GPortModel *start = model->getStartPort();
+                       GBoxModel *startBox = start->getParentBox();
 
-                       //End Connection info
                        GPortModel *end = model->getEndPort();
-                       script += end->getParentBox()->getBBTKName();
-                       script += ".";
-                       script += end->getBBTKName();
+                       GBoxModel *endBox = end->getParentBox();
+
+                       if (startBox->getGObjectType() == GCOMPLEXINPUTPORT)
+                       {
+                                       complexInputs += "input ";
+                                       complexInputs += startBox->getBBTKName();
+
+                                       complexInputs += " ";
+                                       complexInputs += endBox->getBBTKName();
+                                       complexInputs += ".";
+                                       complexInputs += end->getBBTKName();
+
+                                       complexInputs += " ";
+                                       complexInputs += "\" \"";
+
+                                       complexInputs += "\n";
+                       }
+                       else
+                       {
+                                       script += "connect ";
+                                       script += startBox->getBBTKName();
+                                       script += ".";
+                                       script += start->getBBTKName();
+
+                                       script += " ";
+
+                                       //End Connection info
+                                       script += endBox->getBBTKName();
+                                       script += ".";
+                                       script += end->getBBTKName();
+
+                                       script += "\n";
+                       }
 
                        script += "\n";
                }
 
                script += LineNumber(wln, lnNmbr);
                script += "\n";
+
+               script += "\n";
+               script += "# Complex input ports\n";
+               script += complexInputs;
+
                for (i = 0; i < (int) execBoxes.size(); i++) {
                        script += LineNumber(wln, lnNmbr);
                        script += "exec ";
@@ -1617,6 +1651,14 @@ std::string wxVtkSceneManager::saveComplexBoxBBS() {
                }
        }
 
+       script += "\n";
+       script += "# Complex input ports\n";
+       script += complexInputs;
+
+       script += "\n";
+       script += "# Complex output ports\n";
+       script += complexOutputs;
+
        script += "\n";
 
        for (i = 0; i < (int) execBoxes.size(); i++) {
@@ -1629,14 +1671,6 @@ std::string wxVtkSceneManager::saveComplexBoxBBS() {
                script += "\n";
        }
 
-       script += "\n";
-       script += "# Complex input ports\n";
-       script += complexInputs;
-
-       script += "\n";
-       script += "# Complex output ports\n";
-       script += complexOutputs;
-
        script += "\n";
        script += "endefine";
        script += "\n";
@@ -1709,6 +1743,8 @@ void wxVtkSceneManager::saveDiagram(std::string &content) {
                content += GetCbPackageName();
                content += "\n";
 
+               /* CHANGE TO THE VERSION 1.4 RaC2012 2nd HackFest
+                * External inputs are possible for applications and complex boxes
                //Print info complex input ports
                std::vector<int> inputs = getComplexInputPorts();
                int insize = inputs.size();
@@ -1722,6 +1758,7 @@ void wxVtkSceneManager::saveDiagram(std::string &content) {
                        GObjectController *cont = _controllers[id];
                        cont->getModel()->save(content);
                }
+               */
 
                //Print info complex output ports
                std::vector<int> outputs = getComplexOutputPorts();
@@ -1741,6 +1778,21 @@ void wxVtkSceneManager::saveDiagram(std::string &content) {
                content += "FALSE\n";
        }
 
+       // CHANGE TO THE VERSION 1.4 RaC2012 2nd HackFest
+       // External inputs are possible for applications and complex boxes
+       std::vector<int> inputs = getComplexInputPorts();
+       int insize = inputs.size();
+       content += "COMPLEXINPUTS:";
+       sprintf(buffer, "%d", insize);
+       content += buffer;
+       content += "\n";
+
+       for (int i = 0; i < insize; i++) {
+               int id = inputs[i];
+               GObjectController *cont = _controllers[id];
+               cont->getModel()->save(content);
+       }
+
        //Print boxes
        std::vector<int> boxes = getBlackBoxes();
        int bsize = boxes.size();
@@ -1814,6 +1866,9 @@ void wxVtkSceneManager::loadDiagram(stringstream &inputStream)
                        if (line == "# - BBTKGEditor v 1.3 BBG BlackBox Diagram file") {
                                version = line.substr(18, 3);
                        }
+                       if (line == "# - BBTKGEditor v 1.4 BBG BlackBox Diagram file") {
+                               version = line.substr(18, 3);
+                       }
                } else if (line == "APP_START") {
                        start = true;
                        break;
@@ -1873,24 +1928,78 @@ void wxVtkSceneManager::loadDiagram(stringstream &inputStream)
                                SetCbPackageName(result);
                        }
 
+                       if(version < "1.4")
+                       {
+                               //-----------------------
+                               //- COMPLEX INPUT PORTS
+                               //-----------------------
+                               getCleanLine(inputStream, line);//COMPLEXINPUTS:num
+                               char inputs[30];
+                               strcpy(inputs, line.c_str());
+                               result = strtok(inputs, delims);
+                               result = strtok(NULL, delims);
+
+                               int numInputs;
+                               std::istringstream inps(result);
+                               inps >> numInputs;
+
+                               for (int i = 0; i < numInputs; i++) {
+                                       //----------
+                                       getCleanLine(inputStream, line);//COMPLEX_PORT
+                                       getCleanLine(inputStream, line);//name
+                                       std::string inputPortName(line);
+
+                                       //----------
+                                       getCleanLine(inputStream, line);//xInic:yInic:zInic
+                                       char coord[80];
+                                       strcpy(coord, line.c_str());
+                                       result = strtok(coord, delims);//xInic
+                                       std::string xInic(result);
+                                       result = strtok(NULL, delims);//yInic
+                                       std::string yInic(result);
+                                       result = strtok(NULL, delims);//zInic
+                                       std::string zInic(result);
+
+                                       double xIn, yIn, zIn;
+                                       std::istringstream xSt(xInic);
+                                       xSt >> xIn;
+                                       std::istringstream ySt(yInic);
+                                       ySt >> yIn;
+                                       std::istringstream zSt(zInic);
+                                       zSt >> zIn;
+
+                                       if (version<="1.2")
+                                       {
+                                               if (zIn==900) zIn=GPOSITION_Z;
+                                       }
+
+                                       getCleanLine(inputStream, line);//FIN_COMPLEX_PORT
+
+                                       configGComBoxInputOutputPort(true, inputPortName, xIn, yIn, zIn);
+
+                               } // for input complex box
+                       }
+
+
                        //-----------------------
-                       //- COMPLEX INPUT PORTS
+                       //- COMPLEX OUTPUT PORTS
                        //-----------------------
-                       getCleanLine(inputStream, line);//COMPLEXINPUTS:num
-                       char inputs[30];
-                       strcpy(inputs, line.c_str());
-                       result = strtok(inputs, delims);
+
+                       getCleanLine(inputStream, line);//COMPLEXOUTPUTS:num
+                       char outputs[30];
+                       strcpy(outputs, line.c_str());
+                       result = strtok(outputs, delims);
                        result = strtok(NULL, delims);
 
-                       int numInputs;
-                       std::istringstream inps(result);
-                       inps >> numInputs;
+                       int numOutputs;
+                       std::istringstream outps(result);
+                       outps >> numOutputs;
 
-                       for (int i = 0; i < numInputs; i++) {
+                       for (int i = 0; i < numOutputs; i++) {
                                //----------
                                getCleanLine(inputStream, line);//COMPLEX_PORT
                                getCleanLine(inputStream, line);//name
-                               std::string inputPortName(line);
+                               std::string outputPortName(line);
 
                                //----------
                                getCleanLine(inputStream, line);//xInic:yInic:zInic
@@ -1918,30 +2027,33 @@ void wxVtkSceneManager::loadDiagram(stringstream &inputStream)
                                
                                getCleanLine(inputStream, line);//FIN_COMPLEX_PORT
 
-                               configGComBoxInputOutputPort(true, inputPortName, xIn, yIn, zIn);
+                               configGComBoxInputOutputPort(false, outputPortName, xIn, yIn, zIn);
 
-                       } // for input complex box
+                       } // for output complex box
 
+               } // complex box
 
+               // RaC2012 2nd Hackfest
+               if(version >= "1.4")
+               {
                        //-----------------------
-                       //- COMPLEX OUTPUT PORTS
+                       //- EXTERNAL INPUT PORTS
                        //-----------------------
-
-                       getCleanLine(inputStream, line);//COMPLEXOUTPUTS:num
-                       char outputs[30];
-                       strcpy(outputs, line.c_str());
-                       result = strtok(outputs, delims);
+                       getCleanLine(inputStream, line);//COMPLEXINPUTS:num
+                       char inputs[30];
+                       strcpy(inputs, line.c_str());
+                       result = strtok(inputs, delims);
                        result = strtok(NULL, delims);
 
-                       int numOutputs;
-                       std::istringstream outps(result);
-                       outps >> numOutputs;
+                       int numInputs;
+                       std::istringstream inps(result);
+                       inps >> numInputs;
 
-                       for (int i = 0; i < numOutputs; i++) {
+                       for (int i = 0; i < numInputs; i++) {
                                //----------
                                getCleanLine(inputStream, line);//COMPLEX_PORT
                                getCleanLine(inputStream, line);//name
-                               std::string outputPortName(line);
+                               std::string inputPortName(line);
 
                                //----------
                                getCleanLine(inputStream, line);//xInic:yInic:zInic
@@ -1968,12 +2080,11 @@ void wxVtkSceneManager::loadDiagram(stringstream &inputStream)
                                }
                                
                                getCleanLine(inputStream, line);//FIN_COMPLEX_PORT
+                               configGComBoxInputOutputPort(true, inputPortName, xIn, yIn, zIn);
 
-                               configGComBoxInputOutputPort(false, outputPortName, xIn, yIn, zIn);
-
-                       } // for output complex box
+                       } // for external input
+               }
 
-               } // complex box
 
                //----------
                getCleanLine(inputStream, line);//BOXES:num
@@ -2199,7 +2310,9 @@ GBoxModel* wxVtkSceneManager::findGBox(std::string boxname) {
                }
        } // for
 
-       if ((_isComplexBox) && (boxModel == NULL)) {
+
+
+       if (boxModel == NULL) {
                std::vector<int> lstInputs = getComplexInputPorts();
                for (j = 0; j < (int) lstInputs.size(); j++) {
                        idB = lstInputs[j];
@@ -2209,6 +2322,8 @@ GBoxModel* wxVtkSceneManager::findGBox(std::string boxname) {
                        }
                } // for
 
+               if(_isComplexBox)
+               {
                std::vector<int> lstOutputs = getComplexOutputPorts();
                for (j = 0; j < (int) lstOutputs.size(); j++) {
                        int idB = lstOutputs[j];
@@ -2217,8 +2332,9 @@ GBoxModel* wxVtkSceneManager::findGBox(std::string boxname) {
                                boxModel = bMod;
                        }
                } // for
+               }
 
-       } // complex box
+       } // inputs/outputs
 
        return boxModel;
 }
@@ -2235,6 +2351,10 @@ int wxVtkSceneManager::configGConnetion(std::string nameStartBox,
        GPortModel *endP = NULL;
 
        boxModel = findGBox(nameStartBox);
+       if(boxModel == NULL)
+       {
+               printf("RaC: ERROR in wxVtkSceneManager::configGConnetion A box to connect start port %s is null. Box name is probably wrong.\n", nameStartPort.c_str());
+       }
        if (boxModel != NULL) {
                startP = boxModel->getOutputPort(nameStartPort);
                if(startP == NULL){
@@ -2243,6 +2363,10 @@ int wxVtkSceneManager::configGConnetion(std::string nameStartBox,
        }
 
        boxModel = findGBox(nameEndBox);
+       if(boxModel == NULL)
+       {
+                printf("RaC: ERROR in wxVtkSceneManager::configGConnetion A box to connect start port %s is null. Box name is probably wrong.\n", nameStartPort.c_str());
+       }
        if (boxModel != NULL) {
                endP = boxModel->getInputPort(nameEndPort);
                if(endP == NULL){
@@ -2252,6 +2376,7 @@ int wxVtkSceneManager::configGConnetion(std::string nameStartBox,
 
        //ups2
        int idCon = createGConnector(startP);
+
        _worldState = NOTHING_HAPPENS;
        GConnectorController *tempp = (GConnectorController*) _controllers[idCon];
 
@@ -2727,7 +2852,6 @@ std::string wxVtkSceneManager::GetCategory() {
 //=========================================================================
 void wxVtkSceneManager::SetDescription(std::string description) {
        _Description = description;
-       std::cout<<"Description:"<<_Description<<std::endl;
        if (_Description == "") {
                _Description = "<description of the box>";
        }
@@ -2740,6 +2864,25 @@ std::string wxVtkSceneManager::GetDescription() {
 
 //=========================================================================
 
+std::vector< std::string> wxVtkSceneManager::GetExternalInputsNames()
+{
+
+       std::vector< std::string> extInputs;
+       std::map<int, GObjectController*>::iterator it;
+       for (it = _controllers.begin(); it != _controllers.end(); ++it)
+       {
+               GObjectController *cont = it->second;
+               if (cont->getGObjectType() == GCOMPLEXINPUTPORT)
+               {
+                       extInputs.push_back(cont->getModel()->getBBTKName());
+               }
+       }
+       return extInputs;
+}
+
+//=========================================================================
+
+
 
 void wxVtkSceneManager::printAll(int com , int sta ){
         
index 9203963e8636e6686d9a00682fee5f4526f48573..f92b9064e057a733e11e12eaaedbeb68624881e3 100644 (file)
@@ -209,6 +209,10 @@ namespace bbtk
         std::string GetCategory();
         std::string GetDescription();
   
+        // RaC2012 2nd HackFest
+        // External Inputs was the complex inputs in previous versions
+        // Get names of all external inputs
+        std::vector< std::string> GetExternalInputsNames();
                void getCleanLine(std::stringstream &inputStream, std::string &line);
                
         // JGRR & CM