]> Creatis software - bbtkGEditor.git/blobdiff - lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/bbtkwxGUIEditorGraphicBBS.cxx
Bug #1688 RaC 2012 Bug to avoid opening twice the same diagram. Corrected and tested.
[bbtkGEditor.git] / lib / EditorGraphicBBS / bbsWxGUIEditorGraphic / bbtkwxGUIEditorGraphicBBS.cxx
index af3e5ce7d1e592f1ebddd3f15cc0c8e569f48a21..e7a93620d5d2595955f55a1ad5f0c3eff37b481b 100644 (file)
 namespace bbtk {
 
 //=========================================================================
-wxGUIEditorGraphicBBS::wxGUIEditorGraphicBBS(wxFrame *parent) :
-                       wxFrame(parent, -1, _T("bbtkGEditor"), wxDefaultPosition, wxSize(
-                                       1200, 800)) {
-
+wxGUIEditorGraphicBBS::wxGUIEditorGraphicBBS(wxFrame *parent) 
+       : wxFrame( parent, -1, _T("bbtkGEditor"), wxDefaultPosition, wxSize(1200,800) ) 
+{
+       _pkgBrowser = NULL;
        _frameAUIMgr = new wxAuiManager(this);
 
        /*std::string datadir( crea::System::GetExecutablePath() );
@@ -69,8 +69,8 @@ wxGUIEditorGraphicBBS::wxGUIEditorGraphicBBS(wxFrame *parent) :
 
        initMenu();
        initToolbar();
-       initTabPanelsManager();
        initPackageBrowser();
+       initTabPanelsManager();
         // JGGR & CM  initHelpHTMLBrowser();
         _helpHtmlBrowser = NULL;
        CreateStatusBar();
@@ -430,16 +430,22 @@ wxAuiNotebook* wxGUIEditorGraphicBBS::getAuiNotebook() {
 
 //================================================================
 
-void wxGUIEditorGraphicBBS::displayBlackBoxInfo(std::string packageName,
-               std::string boxName) {
-       if (_actualPkgBrowserPkgName != packageName || _actualPkgBrowserBoxName
-                       != boxName) {
+void wxGUIEditorGraphicBBS::displayBlackBoxInfo(std::string packageName, std::string boxName) 
+{
+       if (_actualPkgBrowserPkgName != packageName || _actualPkgBrowserBoxName != boxName) 
+       {
                _actualPkgBrowserPkgName = packageName;
                _actualPkgBrowserBoxName = boxName;
 
-               BlackBoxDescriptor::Pointer descriptor =
-                               GObjectsMVCFactory::getInstance()->getBlackBoxDescriptor(
-                                               packageName, boxName);
+//EED 15 oct 2012              BlackBoxDescriptor::Pointer descriptor = GObjectsMVCFactory::getInstance()->getBlackBoxDescriptor(packageName, boxName);
+               
+               Package::Pointer k;
+               BlackBoxDescriptor::Pointer descriptor;
+               std::map< std::string, BlackBoxDescriptor::Pointer> mapDesc;
+               k                       = _pkgBrowser->GetFactory()->GetPackage(packageName);
+               mapDesc         = k->GetDescriptorMap();                
+               descriptor      = mapDesc[boxName];
+               
                _pkgBrowser->WxGUIBlackBoxListUserOnSelected(descriptor.get());
        }
 }
@@ -974,13 +980,21 @@ void wxGUIEditorGraphicBBS::OnOpenDiagram(wxCommandEvent& event) {
                        wxEmptyString, wxT(""), wxT("*.bbg"), wxOPEN | wxFILE_MUST_EXIST);
        printf("SCP: wxGUIEditorGraphicBBS::OnOpenDiagram  \n");
        if (openFileDialog->ShowModal() == wxID_OK) {
-               wxString fileName = openFileDialog->GetPath();
+               wxString filePath = openFileDialog->GetPath();
                ifstream inputStream;
-               std::string fName = (const char*) (fileName.mb_str());
+               std::string fName = (const char*) (filePath.mb_str());
 
                inputStream.open(fName.c_str());
                assert(inputStream.good()); // fails
-               _tabsMgr->addNewTab(openFileDialog->GetFilename());
+
+               if(_tabsMgr->FindTab(crea::wx2std(filePath))!=-1) //RaC2012 avoid opening same diagram twice
+               {
+                       inputStream.close();
+                       printf("RaC: Diagram already opened\n");
+                       return;
+               }
+               wxString fileName = openFileDialog->GetFilename();
+               _tabsMgr->addNewTab(fileName);
                _tabsMgr->loadDiagram(inputStream, fName);
                _tabsMgr->saveTempActualDiagram("load diagram");
                GetToolBar()->EnableTool(ID_UNDO, false);
@@ -1004,7 +1018,9 @@ void wxGUIEditorGraphicBBS::OnClickBtnBox(wxCommandEvent& event) {
 
                if (pnl != NULL) {
                        wxVtkSceneManager *scn = pnl->getSceneManager();
+printf("EED wxGUIEditorGraphicBBS::OnClickBtnBox 1.\n");                       
                        scn->createGBlackBox(50, 50, packageName, typeName);
+printf("EED wxGUIEditorGraphicBBS::OnClickBtnBox 2.\n");                       
                        scn->refresh();
                }
 
@@ -1183,7 +1199,16 @@ void wxGUIEditorGraphicBBS::OnExit(wxCommandEvent& event) {
        Close(true);
 }
 
-//=========================================================================
+Factory::Pointer wxGUIEditorGraphicBBS::GetBBTKFactory()
+{
+       if (_pkgBrowser==NULL) 
+       {
+               printf ("EED ERROR! wxGUIEditorGraphicBBS::GetBBTKFactory _pkgBrowser = NULL\n");
+       }
+       return _pkgBrowser->GetFactory();
+}
+
+       //=========================================================================
 
 void wxGUIEditorGraphicBBS::enableComplexBox() {
        _tabsMgr->setActualDiagramComplexBox(true);
@@ -1240,6 +1265,7 @@ std::string wxGUIEditorGraphicBBS::getCurrentDiagramCategory()
        return _tabsMgr->GetCategory();
 }
 
+       
 //=========================================================================
 
 bool wxGUIEditorGraphicBBS::isCurrentDiagramComplexBox()