]> Creatis software - bbtk.git/blobdiff - packages/wx/src/bbwxLayoutTab.cxx
#3382 BBTK Feature New Normal - box Tab selection output
[bbtk.git] / packages / wx / src / bbwxLayoutTab.cxx
index 639281af23eb74860925699de05a7eb992397e93..a93b5d8efa7770b84d880075a8b41a956aee859b 100644 (file)
 
 namespace bbwx
 {
-  BBTK_ADD_BLACK_BOX_TO_PACKAGE(wx , LayoutTab);
+
+
+   //--------------------------------------------------------------------------
+  class TabWidget : public wxPanel
+  {
+  public:
+    TabWidget(LayoutTab* box, wxWindow *parent, long style);
+    ~TabWidget();
+    void OnTabChange( wxEvent& );
+       wxNotebook*     GetmwxNotebook();       
+  private:
+    LayoutTab  *mBox;
+    wxNotebook *mwxNotebook;
+  }; 
+
+
+  TabWidget::TabWidget(LayoutTab* box,
+                                          wxWindow *parent,long style )
+    : wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL),
+      mBox(box)
+  { 
+    wxPanel *panel     = this;
+    mwxNotebook        = new wxNotebook(panel, //bbGetWxParent(),
+                                  -1, 
+                                  wxDefaultPosition,
+                                  wxDefaultSize,
+                                  style );
+    Connect( mwxNotebook->GetId(),   wxEVT_NOTEBOOK_PAGE_CHANGED , 
+            (wxObjectEventFunction) 
+            (void (wxPanel::*)(wxEvent&))
+            &TabWidget::OnTabChange ); 
+    wxFlexGridSizer *sizer     = new wxFlexGridSizer(1);
+    sizer -> Add( mwxNotebook,1,wxGROW | wxALL,10 ); 
+    sizer      -> AddGrowableCol(0);
+    panel      -> SetSizer(sizer);
+    panel      -> SetAutoLayout(true);
+    panel      -> Layout();
+  }
+  
+  TabWidget::~TabWidget()
+  {
+  }
   
+  void TabWidget::OnTabChange( wxEvent& )
+  {
+   printf("EED TabWidget::OnTabChange %d\n",mwxNotebook->GetSelection() );
+       mBox->bbSetOutputSelection( mwxNotebook->GetSelection() );
+    mBox->bbSignalOutputModification();
+  }
 
+wxNotebook*    TabWidget::GetmwxNotebook()
+{
+       return mwxNotebook;
+}
+
+
+
+  BBTK_ADD_BLACK_BOX_TO_PACKAGE(wx , LayoutTab);
   BBTK_BLACK_BOX_IMPLEMENTATION(LayoutTab,bbtk::WxBlackBox);
   
        //-----------------------------------------------------------------     
@@ -84,17 +139,16 @@ namespace bbwx
        //-----------------------------------------------------------------     
   void LayoutTab::TryInsertWindow(wxNotebook *book, const std::string& input )
   {
-    wxWindow* w = bbCreateWidgetOfInput(input,book); //panel);
+    wxWindow* w = bbCreateWidgetOfInput(input,book); 
     if (w!=NULL)
     {
                book->AddPage(w,w->GetName());
-    }
+    } // if w
   }
 
 
-  void LayoutTab::SetTitleTabs()
-  {
-
+void LayoutTab::SetTitleTabs()
+{
        std::vector<std::string> vecTitle;
        std::vector<std::string> vecInputNameWidget;
        vecInputNameWidget.push_back("Widget1");        
@@ -119,26 +173,29 @@ namespace bbwx
                } // if c
        } // for iWidget
 
-
-       wxNotebook* w = (wxNotebook*)bbGetOutputWidget();
-       if (w!=NULL) 
+//EED2020-04-06
+//     wxNotebook* w = (wxNotebook*)bbGetOutputWidget();
+       TabWidget *tabwidget=(TabWidget*)bbGetOutputWidget();
+       if (tabwidget!=NULL)
        {
-               int i,size=vecTitle.size();
-               for (i=0; i<size; i++)
+               wxNotebook *w = tabwidget->GetmwxNotebook();
+               if (w!=NULL) 
                {
-                       w->SetPageText(i, wxString( vecTitle[i].c_str(),wxConvUTF8 ) ); 
-               } // for i
-       } //w
+                       int i,size=vecTitle.size();
+                       for (i=0; i<size; i++)
+                       {
+                               w->SetPageText(i, wxString( vecTitle[i].c_str(),wxConvUTF8 ) ); 
+                       } // for i
+               } //w
+       } // if tabwidget
   }
 
-
   void LayoutTab::Process() 
   { 
        PutWinTitle();
        SetTitleTabs();
   }
-  
-  
+    
   void LayoutTab::CreateWidget(wxWindow* parent) 
   { 
     long style = wxNB_TOP;
@@ -150,13 +207,20 @@ namespace bbwx
       { style=wxNB_BOTTOM; }
     if (bbtk::Utilities::loosematch(bbGetInputOrientation(),"3|L|LEFT")==true)
       { style=wxNB_LEFT; }
-    wxNotebook *w = new wxNotebook(parent, //bbGetWxParent(),
-                                  -1, 
-                                  wxDefaultPosition,
-                                  wxDefaultSize,
-                                  style );
-    w->SetName( bbtk::std2wx( bbGetInputWinTitle() ) );
-    
+
+//EED2020-04-06
+//   wxNotebook *w = new wxNotebook(parent, //bbGetWxParent(),
+//                                -1, 
+//                                wxDefaultPosition,
+//                                wxDefaultSize,
+//                                style );
+//
+       TabWidget *tabwidget = new TabWidget (this, parent, style );
+    tabwidget->SetName( bbtk::std2wx( bbGetInputWinTitle() ) );    
+       wxNotebook *w = tabwidget->GetmwxNotebook();
+
+//EED2020-04-06
+//    w->SetName( bbtk::std2wx( bbGetInputWinTitle() ) );    
     TryInsertWindow(w,"Widget1");
     TryInsertWindow(w,"Widget2");
     TryInsertWindow(w,"Widget3");
@@ -167,26 +231,31 @@ namespace bbwx
     TryInsertWindow(w,"Widget8");
     TryInsertWindow(w,"Widget9");
     
-    bbSetOutputWidget( w );
+//EED2020-04-06
+//    bbSetOutputWidget( w );
+    bbSetOutputWidget( tabwidget );
   }
   
   
-  // This callback is necessary to get actual processing of the view 
-  // when window is shown
-  void  LayoutTab::OnShowWidget()
-  {
-    wxNotebook* w = (wxNotebook*)bbGetOutputWidget();
-    if (w) 
-      {
-       if (w->GetPageCount()>0)
-         {
-           w->SetSelection(0);
-           for (unsigned int i=0; i<w->GetPageCount(); ++i)  w->AdvanceSelection();
-         }
-      }
-    
-   
-  }
+ // This callback is necessary to get actual processing of the view 
+// when window is shown
+void  LayoutTab::OnShowWidget()
+{
+//EED2020-04-06
+//     wxNotebook* w = (wxNotebook*)bbGetOutputWidget();
+       wxNotebook* w = ((TabWidget*)bbGetOutputWidget())->GetmwxNotebook();
+       if (w) 
+       {
+               if (w->GetPageCount()>0)
+               {
+                       w->SetSelection(0);
+                       for (unsigned int i=0; i<w->GetPageCount(); ++i) 
+                       { 
+                               w->AdvanceSelection(); 
+                       } // for
+               } // if PageCount
+       } // if w    
+}
 
 
 }//namespace bbwx