]> Creatis software - bbtk.git/blobdiff - kernel/src/bbtkWxGUIPackageBrowser2.cxx
=== MAJOR RELEASE ====
[bbtk.git] / kernel / src / bbtkWxGUIPackageBrowser2.cxx
index 02a11a9b9839475b2d7e8727f0560e2bd5cde9eb..d95d80dee445b049038efc327f155694e990439a 100644 (file)
@@ -3,8 +3,8 @@
 Program:   bbtk
 Module:    $RCSfile: bbtkWxGUIPackageBrowser2.cxx,v $
 Language:  C++
-Date:      $Date: 2008/04/04 08:04:05 $
-Version:   $Revision: 1.1 $
+Date:      $Date: 2008/04/18 12:59:16 $
+Version:   $Revision: 1.5 $
                                                                                 
 Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
 l'Image). All rights reserved. See Doc/License.txt or
@@ -109,7 +109,7 @@ namespace bbtk
 #endif
   }
   
-  void WxGUIBlackBoxList::Insert(BlackBoxDescriptor* d)
+  void WxGUIBlackBoxList::Insert(BlackBoxDescriptor::Pointer d)
   {
     if (GetColumnCount()!=3)
       {
@@ -127,8 +127,9 @@ namespace bbtk
     int nID = this->GetItemCount();
     kNewItem.SetId(nID);
     kNewItem.SetMask(wxLIST_MASK_DATA);
-    kNewItem.SetData(d);  
-    //    BlackBoxDescriptor* d2 = (BlackBoxDescriptor*)kNewItem.GetData();
+    // TO DO : STORE SHARED POINTER
+    //    kNewItem.SetData(d.get());  
+    //    BlackBoxDescriptor::Pointer* d2 = (BlackBoxDescriptor::Pointer*)kNewItem.GetData();
     //    std::cout << "Descr = "<<d<<" = "<<d2<<std::endl;
     this->InsertItem(kNewItem);
     this->SetItem(nID, 0, std2wx(d->GetPackage()->GetName()) );
@@ -312,8 +313,9 @@ namespace bbtk
     info.m_mask = wxLIST_MASK_DATA;
     if ( GetItem(info) )
       {
-       BlackBoxDescriptor* d = (BlackBoxDescriptor*)(info.GetData());
-       if (d!=0) mUser->WxGUIBlackBoxListUserOnSelected(d);
+       // TO DO : STORE SHARED
+       //      BlackBoxDescriptor* d = (BlackBoxDescriptor*)(info.GetData());
+       //      if (d!=0) mUser->WxGUIBlackBoxListUserOnSelected(d);
       }
     else
       {
@@ -556,12 +558,12 @@ namespace bbtk
   WxGUIBlackBoxInfo::WxGUIBlackBoxInfo(wxWindow* parent)
     :
     wxPanel(parent, -1),
-    mDescriptor(0)
+    mDescriptor()
   {
     wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
     
-    mName = new wxStaticText(this,-1,_T(""));
-    sizer->Add(mName,0,wxGROW);
+    //    mName = new wxStaticText(this,-1,_T(""));
+    //    sizer->Add(mName,0,wxGROW);
     mDescription = new wxStaticText(this,-1,_T(""));
     sizer->Add(mDescription,0,wxGROW);
     mAuthor = new wxStaticText(this,-1,_T(""));
@@ -580,8 +582,8 @@ namespace bbtk
                                | wxSUNKEN_BORDER);
     
     
-    inputs->Add(mInputList,0,wxGROW);
-    sizer->Add(inputs,0,wxGROW);
+    inputs->Add(mInputList,1,wxGROW);
+    sizer->Add(inputs,1,wxGROW);
 
     wxBoxSizer *outputs = 
       new wxStaticBoxSizer
@@ -592,8 +594,8 @@ namespace bbtk
                                 wxLC_REPORT //wxLC_LIST
                                 | wxSUNKEN_BORDER);
     
-    outputs->Add(mOutputList,0,wxGROW);
-    sizer->Add(outputs,0,wxGROW);
+    outputs->Add(mOutputList,1,wxGROW);
+    sizer->Add(outputs,1,wxGROW);
     
     
     SetSizer(sizer);
@@ -604,10 +606,10 @@ namespace bbtk
 
     
   //================================================================
-  void WxGUIBlackBoxInfo::UpdateInfo(BlackBoxDescriptor* descr)
+  void WxGUIBlackBoxInfo::UpdateInfo(BlackBoxDescriptor::Pointer descr)
   {
-    std::cout << "UpdateInfo "<<descr<<std::endl;
-    mName->SetLabel(std2wx(descr->GetTypeName()));
+
+    //    mName->SetLabel(std2wx(descr->GetTypeName()));
     mDescription->SetLabel(std2wx(descr->GetDescription()));
     mAuthor->SetLabel(std2wx(descr->GetAuthor()));
     mCategory->SetLabel(std2wx(descr->GetCategory()));
@@ -617,7 +619,9 @@ namespace bbtk
                               wxLIST_FORMAT_LEFT, 80  ); 
     mInputList->InsertColumn( 1, _("Type"), 
                               wxLIST_FORMAT_LEFT, 100 ); 
-    mInputList->InsertColumn( 2, _("Description"), 
+    mInputList->InsertColumn( 2, _("Nature"), 
+                              wxLIST_FORMAT_LEFT, 100  ); 
+    mInputList->InsertColumn( 3, _("Description"), 
                               wxLIST_FORMAT_LEFT, 500  ); 
 
     mOutputList->ClearAll();
@@ -625,7 +629,9 @@ namespace bbtk
                               wxLIST_FORMAT_LEFT, 80  ); 
     mOutputList->InsertColumn( 1, _("Type"), 
                               wxLIST_FORMAT_LEFT, 100 ); 
-    mOutputList->InsertColumn( 2, _("Description"), 
+    mOutputList->InsertColumn( 2, _("Nature"), 
+                              wxLIST_FORMAT_LEFT, 100  ); 
+    mOutputList->InsertColumn( 3, _("Description"), 
                               wxLIST_FORMAT_LEFT, 500  ); 
     
 
@@ -718,14 +724,15 @@ namespace bbtk
     wxListItem kNewItem;
     kNewItem.SetAlign(wxLIST_FORMAT_LEFT);
     int nID = l->GetItemCount();
-    std::cout << nID << std::endl;
+    //    std::cout << nID << std::endl;
     kNewItem.SetId(nID);
     //    kNewItem.SetMask(wxLIST_MASK_DATA);
     //    kNewItem.SetData(d);  
     l->InsertItem(kNewItem);
     l->SetItem(nID, 0, std2wx(d->GetName()) );
     l->SetItem(nID, 1, std2wx(d->GetTypeName()) );
-    l->SetItem(nID, 2, std2wx(d->GetDescription()) );
+    l->SetItem(nID, 2, std2wx(d->GetNature()) );
+    l->SetItem(nID, 3, std2wx(d->GetDescription()) );
   }
   //================================================================
 
@@ -753,10 +760,11 @@ namespace bbtk
                                              WxGUIPackageBrowser2User* user )
     : wxPanel(parent, -1),
       mUser(user),
-      mInterpreter(0)
+      mInterpreter()
   {
+    m_mgr.SetManagedWindow(this);
 
-    wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
+    //    wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
     mBoxList = new WxGUIBlackBoxList(this, LIST_CTRL,
                                     wxDefaultPosition,
                                     wxDefaultSize,
@@ -764,51 +772,103 @@ namespace bbtk
                                     | wxSUNKEN_BORDER);
     mBoxList->SetUser(this);
     mBoxList->SetBackgroundColour(*wxWHITE);
-    sizer->Add(mBoxList,5,wxGROW);
 
-    mBoxInfo = new WxGUIBlackBoxInfo(this);
-    sizer->Add(mBoxInfo,3,wxGROW);
+    m_mgr.AddPane(mBoxList,
+                 wxAuiPaneInfo().Name(wxT("BoxList"))
+                 .Caption(wxT("Black Boxes"))
+                 .MinimizeButton(true)
+                 .MaximizeButton(true)
+                 .Center()
+                 .MinSize(wxSize(100,100))
+                 );     
+    //    sizer->Add(mBoxList,5,wxGROW);
 
+    mBoxInfo = new WxGUIBlackBoxInfo(this);
+    //    sizer->Add(mBoxInfo,3,wxGROW);
+
+    m_mgr.AddPane(mBoxInfo,
+                 wxAuiPaneInfo().Name(wxT("Box"))
+                 .Caption(wxT(""))
+                 .MinimizeButton(true)
+                 .MaximizeButton(true)
+                 .Bottom()
+                 .MinSize(wxSize(100,300))
+                 );     
     
 
-    wxBoxSizer *fsizer = new wxStaticBoxSizer
-      ( new wxStaticBox(this, wxID_ANY, _T("Filters")), wxHORIZONTAL );    
-
-    mPackageFilter = new wxTextCtrl(this,id_f1,_T(""),
+    wxPanel* filters = new wxPanel(this,-1);
+    wxBoxSizer *fsizer = new wxBoxSizer(wxVERTICAL );    
+    wxBoxSizer *fpack = 
+      new wxStaticBoxSizer
+      ( new wxStaticBox(filters, wxID_ANY, _T("Package")), wxHORIZONTAL );    
+    mPackageFilter = new wxTextCtrl(filters,id_f1,_T(""),
                                    wxDefaultPosition,
                                    wxDefaultSize,
                                    wxTE_PROCESS_ENTER);
-    fsizer->Add(mPackageFilter,1,wxGROW);
-    mNameFilter = new wxTextCtrl(this,id_f2,_T(""),
+    fpack->Add(mPackageFilter,1,wxGROW);
+    fsizer->Add(fpack,0,wxGROW);
+    wxBoxSizer *fname = 
+      new wxStaticBoxSizer
+      ( new wxStaticBox(filters, wxID_ANY, _T("Name")), wxHORIZONTAL );    
+    mNameFilter = new wxTextCtrl(filters,id_f2,_T(""),
                                    wxDefaultPosition,
                                    wxDefaultSize,
                                    wxTE_PROCESS_ENTER);
-    fsizer->Add(mNameFilter,1,wxGROW);
-    mDescriptionFilter = new wxTextCtrl(this,id_f3,_T(""),
+    fname->Add(mNameFilter,1,wxGROW);
+    fsizer->Add(fname,0,wxGROW);
+    wxBoxSizer *fdescr = 
+      new wxStaticBoxSizer
+      ( new wxStaticBox(filters, wxID_ANY, _T("Description")), wxHORIZONTAL );
+    mDescriptionFilter = new wxTextCtrl(filters,id_f3,_T(""),
                                    wxDefaultPosition,
                                    wxDefaultSize,
                                    wxTE_PROCESS_ENTER);
-    fsizer->Add(mDescriptionFilter,1,wxGROW);
-    mCategoryFilter = new wxTextCtrl(this,id_f4,_T(""),
+    fdescr->Add(mDescriptionFilter,1,wxGROW);
+    fsizer->Add(fdescr,0,wxGROW);
+    wxBoxSizer *fcat = 
+      new wxStaticBoxSizer
+      ( new wxStaticBox(filters, wxID_ANY, _T("Category")), wxHORIZONTAL );    
+    mCategoryFilter = new wxTextCtrl(filters,id_f4,_T(""),
                                    wxDefaultPosition,
                                    wxDefaultSize,
                                    wxTE_PROCESS_ENTER);
-    fsizer->Add(mCategoryFilter,1,wxGROW);
-    mInputTypeFilter = new wxTextCtrl(this,id_f4,_T(""),
+    fcat->Add(mCategoryFilter,1,wxGROW);
+    fsizer->Add(fcat,0,wxGROW);
+    wxBoxSizer *fintype = 
+      new wxStaticBoxSizer
+      ( new wxStaticBox(filters, wxID_ANY, _T("Input type")), wxHORIZONTAL );    
+    mInputTypeFilter = new wxTextCtrl(filters,id_f4,_T(""),
                                    wxDefaultPosition,
                                    wxDefaultSize,
                                    wxTE_PROCESS_ENTER);
-    fsizer->Add(mInputTypeFilter,1,wxGROW);
-    mOutputTypeFilter = new wxTextCtrl(this,id_f4,_T(""),
+    fintype->Add(mInputTypeFilter,1,wxGROW);
+    fsizer->Add(fintype,0,wxGROW);
+    wxBoxSizer *fouttype = 
+      new wxStaticBoxSizer
+      ( new wxStaticBox(filters, wxID_ANY, _T("Output type")), wxHORIZONTAL );
+    mOutputTypeFilter = new wxTextCtrl(filters,id_f4,_T(""),
                                    wxDefaultPosition,
                                    wxDefaultSize,
                                    wxTE_PROCESS_ENTER);
-    fsizer->Add(mOutputTypeFilter,1,wxGROW);
+    fouttype->Add(mOutputTypeFilter,1,wxGROW);
+    fsizer->Add(fouttype,0,wxGROW);
+
+    filters->SetSizer(fsizer);
+
+    m_mgr.AddPane(filters,
+                 wxAuiPaneInfo().Name(wxT("Filter"))
+                 .Caption(wxT("Filter"))
+                 .MinimizeButton(true)
+                 .MaximizeButton(true)
+                 .Right()
+                 .MinSize(wxSize(100,100)) );
 
     
-    sizer->Add(fsizer,1,wxGROW);
 
-    SetSizer(sizer);
+    //    sizer->Add(fsizer,1,wxGROW);
+    m_mgr.Update();
+
+    //    SetSizer(sizer);
     SetAutoLayout(true);
     Layout();
     
@@ -824,9 +884,12 @@ namespace bbtk
 
   //================================================================
   // User callback when a box is selected in the list 
-  void WxGUIPackageBrowser2::WxGUIBlackBoxListUserOnSelected( BlackBoxDescriptor* d)
+  void WxGUIPackageBrowser2::WxGUIBlackBoxListUserOnSelected( BlackBoxDescriptor::Pointer d)
   {
     mBoxInfo->UpdateInfo(d);
+    std::string title = d->GetPackage()->GetName()+"::"+d->GetTypeName();
+    m_mgr.GetPane(mBoxInfo).Caption(std2wx(title));
+    m_mgr.Update();
   }
   
   //================================================================
@@ -834,26 +897,27 @@ namespace bbtk
   //================================================================
   WxGUIPackageBrowser2::~WxGUIPackageBrowser2()
   {
-    std::cout << "del interpreter" << std::endl;
-    if (mInterpreter) delete mInterpreter;
-    std::cout << "ok" << std::endl;
+
+    //    std::cout << "del interpreter" << std::endl;
+    //    if (mInterpreter) delete mInterpreter;
+    //    std::cout << "ok" << std::endl;
   }
   //================================================================
 
   //================================================================
   void WxGUIPackageBrowser2::IncludeAll()
   {
-    if (!mInterpreter) mInterpreter = new bbtk::Interpreter();
+    if (!mInterpreter) mInterpreter =bbtk::Interpreter::New();
     mInterpreter->SetCommandLine(true);
     mInterpreter->InterpretLine("include *");
 
-    Factory* F = mInterpreter->GetExecuter()->GetFactory();
+    Factory::Pointer F = mInterpreter->GetExecuter()->GetFactory();
     BuildFromFactory(F);
   }
   //================================================================
 
   //================================================================
-  void WxGUIPackageBrowser2::BuildFromFactory(Factory* F)
+  void WxGUIPackageBrowser2::BuildFromFactory(Factory::Pointer F)
   {
     mFactory = F;
     RebuildList();
@@ -870,7 +934,7 @@ namespace bbtk
     Factory::PackageMapType::const_iterator i;
     for (i=M.begin();i!=M.end();++i)
       {
-       Package* P = i->second.mPackage;
+       Package::Pointer P = i->second;
        if (P->GetName() == "user") continue;
        
        Package::BlackBoxMapType::iterator j;
@@ -888,7 +952,7 @@ namespace bbtk
   //================================================================
 
   //================================================================
-  bool WxGUIPackageBrowser2::IsVisible(BlackBoxDescriptor* d)
+  bool WxGUIPackageBrowser2::IsVisible(BlackBoxDescriptor::Pointer d)
   {
     //    std::cout << "   '" << wx2std(mPackageFilter->GetValue())<<"'"<<std::endl;
     //    std::cout << "vs '" << d->GetPackage()->GetName() << "'"<<std::endl;