]> Creatis software - bbtk.git/blobdiff - kernel/src/bbtkWxGUIPackageBrowser2.cxx
Package Browser on Drag change:
[bbtk.git] / kernel / src / bbtkWxGUIPackageBrowser2.cxx
index cd511f725b2e2f8b8e69648d213925057bd51d14..bc5b5253bffcbc0d811f8e824bcaedc755544c4b 100644 (file)
@@ -1,32 +1,39 @@
+/*
+ # ---------------------------------------------------------------------
+ #
+ # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
+ #                        pour la SantÈ)
+ # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+ # Previous Authors : Laurent Guigues, Jean-Pierre Roux
+ # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
+ #
+ #  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: bbtkWxGUIPackageBrowser2.cxx,v $
   Language:  C++
-  Date:      $Date: 2010/10/03 11:40:48 $
-  Version:   $Revision: 1.23 $
+  Date:      $Date: 2012/11/16 08:49:01 $
+  Version:   $Revision: 1.27 $
 =========================================================================*/
 
-/* ---------------------------------------------------------------------
-
-* 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
-*  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.
-* ------------------------------------------------------------------------ */
+
 
 /* \brief Short description in one line
  *
@@ -129,9 +136,9 @@ namespace bbtk
     if (GetColumnCount()!=3)
       {
        InsertColumn( 0, _("Package"),
-                     wxLIST_FORMAT_LEFT, 60  );
+                     wxLIST_FORMAT_LEFT, 90  );
        InsertColumn( 1, _("Box"),
-                     wxLIST_FORMAT_LEFT, 200 );
+                     wxLIST_FORMAT_LEFT, 150 );
        InsertColumn( 2, _("Description"),
                      wxLIST_FORMAT_LEFT, 500  );
       }
@@ -257,7 +264,9 @@ namespace bbtk
                  BlackBoxDescriptor* d = (BlackBoxDescriptor*)(info.GetData());
                  if (d!=0)
                  {
-                         sendtext += crea::std2wx(d->GetFullTypeName());
+                     //DFGO -> To identify it is a box
+                     sendtext += crea::std2wx("box:");
+                     sendtext += crea::std2wx(d->GetFullTypeName());
                  }
          }
          else
@@ -814,6 +823,8 @@ namespace bbtk
     mBoxList->SetUser(this);
     mBoxList->SetBackgroundColour(*wxWHITE);
 
+
+// JGRR & CM DISABLED CLOSE BUTTON
     m_mgr.AddPane(mBoxList,
                  wxAuiPaneInfo().Name(wxT("BoxList"))
                  .Caption(wxT("Black Boxes"))
@@ -821,19 +832,22 @@ namespace bbtk
                  .MaximizeButton(true)
                  .Center()
                  .MinSize(wxSize(100,100))
+                 .CloseButton(false)
                  );
     //    sizer->Add(mBoxList,5,wxGROW);
 
     mBoxInfo = new WxGUIBlackBoxInfo(this);
     //    sizer->Add(mBoxInfo,3,wxGROW);
 
+// JGRR & CM DISABLED CLOSE BUTTON
     m_mgr.AddPane(mBoxInfo,
                  wxAuiPaneInfo().Name(wxT("Box"))
                  .Caption(wxT(""))
                  .MinimizeButton(true)
                  .MaximizeButton(true)
                  .Bottom()
-                 .MinSize(wxSize(100,300))
+                 .MinSize(wxSize(100,200))
+                 .CloseButton(false)
                  );
 
     wxPanel* filters = new wxPanel(this,-1);
@@ -925,13 +939,16 @@ namespace bbtk
 
     filters->SetSizer(fsizer);
 
+// JGRR & CM DISABLED CLOSE BUTTON
     m_mgr.AddPane(filters,
                  wxAuiPaneInfo().Name(wxT("Filter"))
                  .Caption(wxT("Filter"))
                  .MinimizeButton(true)
                  .MaximizeButton(true)
-                 .Right()
-                 .MinSize(wxSize(100,100)) );
+                 .Left()
+                 .MinSize(wxSize(100,100)) 
+                 .CloseButton(false)
+);
 
     //    sizer->Add(fsizer,1,wxGROW);
     m_mgr.Update();
@@ -1026,24 +1043,64 @@ namespace bbtk
     const Factory::PackageMapType& M = mFactory->GetPackageMap();
     Factory::PackageMapType::const_iterator i;
     for (i=M.begin();i!=M.end();++i)
-      {
-       Package::Pointer P = i->second;
-       if (P->GetName() == "user") continue;
-
-       Package::DescriptorMapType::iterator j;
-       for (j=P->GetDescriptorMap().begin();
-            j!=P->GetDescriptorMap().end();
-            ++j)
-         {
-           //      std::cout << "Insert "<<j->second->GetTypeName()<<std::endl;
-           if (IsVisible(j->second))
-             mBoxList->Insert(j->second);
-         }
-      }
+    {
+        Package::Pointer P = i->second;
+        if (P->GetName() == "user") continue;
+
+        Package::DescriptorMapType::iterator j;
+        for (j=P->GetDescriptorMap().begin();
+             j!=P->GetDescriptorMap().end();
+             ++j)
+        {
+            //     std::cout << "Insert "<<j->second->GetTypeName()<<std::endl;
+            if (IsVisible(j->second))
+              mBoxList->Insert(j->second);
+        }// for Descriptor
+    }// for package
     mBoxList->Show();
   }
   //================================================================
 
+ bool WxGUIPackageBrowser2::findnpos(const std::string &strA, const std::string &strB )
+ {
+    if ((strB=="") || (strA=="") )
+    {
+        return false;
+    }
+
+    bool ok=false;
+    int i,size;
+    std::string strAA=strA;
+    std::string strBB=strB;
+
+
+    size=strAA.length();
+    for (i=0;i<size;i++)
+    {
+        if ((strAA[i]>='A')&&(strAA[i]<='Z'))
+        {
+            strAA[i]=strAA[i]+32;
+        }
+    }
+
+    size=strBB.length();
+    for (i=0;i<size;i++)
+    {
+        if ((strBB[i]>='A')&&(strBB[i]<='Z'))
+        {
+            strBB[i]=strBB[i]+32;
+        }
+    }
+
+
+     if ( strAA.find(strBB) == std::string::npos )
+     {
+         ok=true;
+     }
+
+     return ok;
+ }
+
   //================================================================
   bool WxGUIPackageBrowser2::IsVisible(BlackBoxDescriptor::Pointer d)
   {
@@ -1052,117 +1109,169 @@ namespace bbtk
     if ((!mShowAdaptorsFilter->IsChecked())&&
        ((d->GetKind()==BlackBoxDescriptor::ADAPTOR)||
         (d->GetKind()==BlackBoxDescriptor::DEFAULT_ADAPTOR)))
-      return false;
+    {
+        return false;
+    }
+
     if ((!mShowGUIsFilter->IsChecked())&&
        ((d->GetKind()==BlackBoxDescriptor::GUI)||
         (d->GetKind()==BlackBoxDescriptor::DEFAULT_GUI)))
-      return false;
-    if (d->GetPackage()->GetName().find( wx2std(mPackageFilter->GetValue()) )
-       == std::string::npos ) return false;
-   if (d->GetTypeName().find( wx2std(mNameFilter->GetValue()) )
-       == std::string::npos ) return false;
-   if (d->GetDescription().find( wx2std(mDescriptionFilter->GetValue()) )
-       == std::string::npos ) return false;
-   if (d->GetCategory().find( wx2std(mCategoryFilter->GetValue()) )
-       == std::string::npos ) return false;
-   if (!mShowWidgetsFilter->IsChecked())
-     {
-       bool found = false;
-       const BlackBoxDescriptor::OutputDescriptorMapType& imap =
-        d->GetOutputDescriptorMap();
-       BlackBoxDescriptor::OutputDescriptorMapType::const_iterator in;
-       for ( in = imap.begin();  in != imap.end(); ++in )
-        {
-          if (in->second->GetName() == "Widget" )
-            {
-              found = true;
-              break;
-            }
-        }
-       if (found) return false;
-     }
-   if (mInputTypeFilter->GetValue().size()>0)
-     {
-       std::string s = wx2std(mInputTypeFilter->GetValue());
-       bool found = false;
-       const BlackBoxDescriptor::InputDescriptorMapType& imap =
-        d->GetInputDescriptorMap();
-       BlackBoxDescriptor::InputDescriptorMapType::const_iterator in;
-       for ( in = imap.begin();  in != imap.end(); ++in )
-        {
-          if (in->second->GetTypeName().find(s)!=std::string::npos)
-            {
-              found = true;
-              break;
-            }
-        }
-       if (!found) return false;
+    {
+        return false;
+    }
+
+//EED    if (d->GetPackage()->GetName().find( wx2std(mPackageFilter->GetValue()) ) == std::string::npos )
+    if ( findnpos(d->GetPackage()->GetName(),wx2std(mPackageFilter->GetValue())) == true )
+    {
+        return false;
+    }
+
+//EED    if (d->GetTypeName().find( wx2std(mNameFilter->GetValue()) ) == std::string::npos )
+    if ( findnpos(d->GetTypeName(),wx2std(mNameFilter->GetValue())) == true )
+    {
+        return false;
+    }
+
+//EED    if (d->GetDescription().find( wx2std(mDescriptionFilter->GetValue()) ) == std::string::npos )
+    if ( findnpos(d->GetDescription(),wx2std(mDescriptionFilter->GetValue())) == true )
+    {
+        return false;
+    }
+
+//EED    if (d->GetCategory().find( wx2std(mCategoryFilter->GetValue()) ) == std::string::npos )
+    if ( findnpos(d->GetCategory(),wx2std(mCategoryFilter->GetValue())) == true )
+    {
+        return false;
+    }
+
+    if (!mShowWidgetsFilter->IsChecked())
+    {
+        bool found = false;
+        const BlackBoxDescriptor::OutputDescriptorMapType& imap = d->GetOutputDescriptorMap();
+        BlackBoxDescriptor::OutputDescriptorMapType::const_iterator in;
+        for ( in = imap.begin();  in != imap.end(); ++in )
+        {
+            if (in->second->GetName() == "Widget" )
+            {
+                found = true;
+                break;
+            }
+        }
+        if (found)
+        {
+            return false;
+        }
+    }
+
+    if (mInputTypeFilter->GetValue().size()>0)
+    {
+        std::string s = wx2std(mInputTypeFilter->GetValue());
+        bool found = false;
+        const BlackBoxDescriptor::InputDescriptorMapType& imap = d->GetInputDescriptorMap();
+        BlackBoxDescriptor::InputDescriptorMapType::const_iterator in;
+        for ( in = imap.begin();  in != imap.end(); ++in )
+        {
+//EED           if (in->second->GetTypeName().find(s)!=std::string::npos)
+                if ( findnpos( in->second->GetTypeName() , s ) == true )
+            {
+                found = true;
+                break;
+            }
+        }
+        if (!found)
+        {
+            return false;
+        }
      }
-   if (mOutputTypeFilter->GetValue().size()>0)
-     {
-       std::string s = wx2std(mOutputTypeFilter->GetValue());
-       bool found = false;
-       const BlackBoxDescriptor::OutputDescriptorMapType& imap =
-        d->GetOutputDescriptorMap();
-       BlackBoxDescriptor::OutputDescriptorMapType::const_iterator in;
-       for ( in = imap.begin();  in != imap.end(); ++in )
-        {
-          if (in->second->GetTypeName().find(s)!=std::string::npos)
-            {
-              found = true;
-              break;
-            }
-        }
-       if (!found) return false;
+
+    if (mOutputTypeFilter->GetValue().size()>0)
+    {
+        std::string s = wx2std(mOutputTypeFilter->GetValue());
+        bool found = false;
+        const BlackBoxDescriptor::OutputDescriptorMapType& imap = d->GetOutputDescriptorMap();
+        BlackBoxDescriptor::OutputDescriptorMapType::const_iterator in;
+        for ( in = imap.begin();  in != imap.end(); ++in )
+        {
+ //EED      if (in->second->GetTypeName().find(s)!=std::string::npos)
+            if ( findnpos( in->second->GetTypeName() , s ) == true )
+            {
+                found = true;
+                break;
+            }
+        }
+        if (!found)
+        {
+            return false;
+        }
      }
-   if (mInputNatureFilter->GetValue().size()>0)
-     {
-       std::string s = wx2std(mInputNatureFilter->GetValue());
-       bool found = false;
-       const BlackBoxDescriptor::InputDescriptorMapType& imap =
-        d->GetInputDescriptorMap();
-       BlackBoxDescriptor::InputDescriptorMapType::const_iterator in;
-       for ( in = imap.begin();  in != imap.end(); ++in )
-        {
-          if (in->second->GetNature().find(s)!=std::string::npos)
-            {
-              found = true;
-              break;
-            }
-        }
-       if (!found) return false;
+
+    if (mInputNatureFilter->GetValue().size()>0)
+    {
+        std::string s = wx2std(mInputNatureFilter->GetValue());
+        bool found = false;
+        const BlackBoxDescriptor::InputDescriptorMapType& imap = d->GetInputDescriptorMap();
+        BlackBoxDescriptor::InputDescriptorMapType::const_iterator in;
+        for ( in = imap.begin();  in != imap.end(); ++in )
+        {
+//EED            if (in->second->GetNature().find(s)!=std::string::npos)
+            if ( findnpos( in->second->GetNature() , s ) == true )
+            {
+                found = true;
+                break;
+            }
+        }
+        if (!found)
+        {
+            return false;
+        }
      }
-   if (mOutputNatureFilter->GetValue().size()>0)
-     {
-       std::string s = wx2std(mOutputNatureFilter->GetValue());
-       bool found = false;
-       const BlackBoxDescriptor::OutputDescriptorMapType& imap =
-        d->GetOutputDescriptorMap();
-       BlackBoxDescriptor::OutputDescriptorMapType::const_iterator in;
-       for ( in = imap.begin();  in != imap.end(); ++in )
-        {
-          if (in->second->GetNature().find(s)!=std::string::npos)
-            {
-              found = true;
-              break;
-            }
-        }
-       if (!found) return false;
+
+    if (mOutputNatureFilter->GetValue().size()>0)
+    {
+        std::string s = wx2std(mOutputNatureFilter->GetValue());
+        bool found = false;
+        const BlackBoxDescriptor::OutputDescriptorMapType& imap = d->GetOutputDescriptorMap();
+        BlackBoxDescriptor::OutputDescriptorMapType::const_iterator in;
+        for ( in = imap.begin();  in != imap.end(); ++in )
+        {
+//EED            if (in->second->GetNature().find(s)!=std::string::npos)
+            if ( findnpos( in->second->GetNature() , s ) == true )
+            {
+                found = true;
+                break;
+            }
+        }
+        if (!found)
+        {
+            return false;
+        }
      }
+
     return true;
+
   }
   //========================================================================
 
   //========================================================================
   BEGIN_EVENT_TABLE(WxGUIPackageBrowser2, wxPanel)
-    EVT_TEXT_ENTER(id_f1, WxGUIPackageBrowser2::OnFilter )
-    EVT_TEXT_ENTER(id_f2, WxGUIPackageBrowser2::OnFilter )
-    EVT_TEXT_ENTER(id_f3, WxGUIPackageBrowser2::OnFilter )
-    EVT_TEXT_ENTER(id_f4, WxGUIPackageBrowser2::OnFilter )
-    EVT_TEXT_ENTER(id_f5, WxGUIPackageBrowser2::OnFilter )
-    EVT_TEXT_ENTER(id_f6, WxGUIPackageBrowser2::OnFilter )
-    EVT_TEXT_ENTER(id_f7, WxGUIPackageBrowser2::OnFilter )
-    EVT_TEXT_ENTER(id_f8, WxGUIPackageBrowser2::OnFilter )
+//EED    EVT_TEXT_ENTER(id_f1, WxGUIPackageBrowser2::OnFilter )
+//EED    EVT_TEXT_ENTER(id_f2, WxGUIPackageBrowser2::OnFilter )
+//EED    EVT_TEXT_ENTER(id_f3, WxGUIPackageBrowser2::OnFilter )
+//EED    EVT_TEXT_ENTER(id_f4, WxGUIPackageBrowser2::OnFilter )
+//EED    EVT_TEXT_ENTER(id_f5, WxGUIPackageBrowser2::OnFilter )
+//EED    EVT_TEXT_ENTER(id_f6, WxGUIPackageBrowser2::OnFilter )
+//EED    EVT_TEXT_ENTER(id_f7, WxGUIPackageBrowser2::OnFilter )
+//EED    EVT_TEXT_ENTER(id_f8, WxGUIPackageBrowser2::OnFilter )
+
+    EVT_TEXT(id_f1, WxGUIPackageBrowser2::OnFilter )
+    EVT_TEXT(id_f2, WxGUIPackageBrowser2::OnFilter )
+    EVT_TEXT(id_f3, WxGUIPackageBrowser2::OnFilter )
+    EVT_TEXT(id_f4, WxGUIPackageBrowser2::OnFilter )
+    EVT_TEXT(id_f5, WxGUIPackageBrowser2::OnFilter )
+    EVT_TEXT(id_f6, WxGUIPackageBrowser2::OnFilter )
+    EVT_TEXT(id_f7, WxGUIPackageBrowser2::OnFilter )
+    EVT_TEXT(id_f8, WxGUIPackageBrowser2::OnFilter )
+
     EVT_CHECKBOX( id_fc1, WxGUIPackageBrowser2::OnFilter )
     EVT_CHECKBOX( id_fc2, WxGUIPackageBrowser2::OnFilter )
     EVT_CHECKBOX( id_fc3, WxGUIPackageBrowser2::OnFilter )