-/*=========================================================================
-
-Program: bbtk
-Module: $RCSfile: bbtkWxGUIPackageBrowser2.cxx,v $
-Language: C++
-Date: $Date: 2008/04/04 09:45:04 $
-Version: $Revision: 1.2 $
-
-Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
-l'Image). All rights reserved. See Doc/License.txt or
-http://www.creatis.insa-lyon.fr/Public/bbtk/License.html for details.
-
-This software is distributed WITHOUT ANY WARRANTY; without even
-the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-PURPOSE. See the above copyright notices for more information.
-
-=========================================================================*//**
- * \brief Short description in one line
- *
- * Long description which
- * can span multiple lines
- */
+/*=========================================================================
+ Program: bbtk
+ Module: $RCSfile: bbtkWxGUIPackageBrowser2.cxx,v $
+ Language: C++
+ Date: $Date: 2009/06/08 14:50:04 $
+ Version: $Revision: 1.13 $
+=========================================================================*/
+
+/* ---------------------------------------------------------------------
+
+* 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
+ *
+ * Long description which
+ * can span multiple lines
+ */
+
/**
* \file
* \brief
#endif
}
- void WxGUIBlackBoxList::Insert(BlackBoxDescriptor* d)
+ void WxGUIBlackBoxList::Insert(BlackBoxDescriptor::Pointer d)
{
if (GetColumnCount()!=3)
{
InsertColumn( 0, _("Package"),
- wxLIST_FORMAT_LEFT, 40 );
+ wxLIST_FORMAT_LEFT, 60 );
InsertColumn( 1, _("Box"),
wxLIST_FORMAT_LEFT, 200 );
InsertColumn( 2, _("Description"),
int nID = this->GetItemCount();
kNewItem.SetId(nID);
kNewItem.SetMask(wxLIST_MASK_DATA);
- kNewItem.SetData(d);
- // BlackBoxDescriptor* d2 = (BlackBoxDescriptor*)kNewItem.GetData();
+ // TO DO : STORE SMART 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()) );
void WxGUIBlackBoxList::LogColEvent(const wxListEvent& event, const wxChar *name)
{
- const int col = event.GetColumn();
+ // const int col = event.GetColumn();
/*
wxLogMessage(wxT("%s: column %d (width = %d or %d)."),
void WxGUIBlackBoxList::OnBeginDrag(wxListEvent& event)
{
- const wxPoint& pt = event.m_pointDrag;
+ // const wxPoint& pt = event.m_pointDrag;
- int flags;
//wxLogMessage( wxT("OnBeginDrag at (%d, %d), item %ld."),
// pt.x, pt.y, HitTest(pt, flags) );
}
info.m_mask = wxLIST_MASK_DATA;
if ( GetItem(info) )
{
+ // TO DO : STORE SMART PTR ?
BlackBoxDescriptor* d = (BlackBoxDescriptor*)(info.GetData());
if (d!=0) mUser->WxGUIBlackBoxListUserOnSelected(d);
}
int flags;
long subitem;
- long item = HitTest(event.GetPosition(), flags, &subitem);
+ // long item =
+ HitTest(event.GetPosition(), flags, &subitem);
wxString where;
switch ( flags )
WxGUIBlackBoxInfo::WxGUIBlackBoxInfo(wxWindow* parent)
:
wxPanel(parent, -1),
- mDescriptor(0)
+ mDescriptor()
{
wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
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();
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 );
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()) );
}
//================================================================
id_f3,
id_f4,
id_f5,
- id_f6
-
+ id_f6,
+ id_f7,
+ id_f8,
+ id_fc1,
+ id_fc2,
+ id_fc3
};
WxGUIPackageBrowser2User* user )
: wxPanel(parent, -1),
mUser(user),
- mInterpreter(0)
+ mInterpreter()
{
m_mgr.SetManagedWindow(this);
.MinimizeButton(true)
.MaximizeButton(true)
.Bottom()
- .MinSize(wxSize(100,100))
+ .MinSize(wxSize(100,300))
);
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(""),
+ ( new wxStaticBox(filters, wxID_ANY, _T("Input type")), wxHORIZONTAL );
+ mInputTypeFilter = new wxTextCtrl(filters,id_f5,_T(""),
wxDefaultPosition,
wxDefaultSize,
wxTE_PROCESS_ENTER);
wxBoxSizer *fouttype =
new wxStaticBoxSizer
( new wxStaticBox(filters, wxID_ANY, _T("Output type")), wxHORIZONTAL );
- mOutputTypeFilter = new wxTextCtrl(filters,id_f4,_T(""),
+ mOutputTypeFilter = new wxTextCtrl(filters,id_f6,_T(""),
wxDefaultPosition,
wxDefaultSize,
wxTE_PROCESS_ENTER);
fouttype->Add(mOutputTypeFilter,1,wxGROW);
fsizer->Add(fouttype,0,wxGROW);
+ wxBoxSizer *finnat =
+ new wxStaticBoxSizer
+ ( new wxStaticBox(filters, wxID_ANY, _T("Input nature")),wxHORIZONTAL );
+ mInputNatureFilter = new wxTextCtrl(filters,id_f7,_T(""),
+ wxDefaultPosition,
+ wxDefaultSize,
+ wxTE_PROCESS_ENTER);
+ finnat->Add(mInputNatureFilter,1,wxGROW);
+ fsizer->Add(finnat,0,wxGROW);
+ wxBoxSizer *foutnat =
+ new wxStaticBoxSizer
+ ( new wxStaticBox(filters, wxID_ANY,_T("Output nature")),wxHORIZONTAL );
+ mOutputNatureFilter = new wxTextCtrl(filters,id_f8,_T(""),
+ wxDefaultPosition,
+ wxDefaultSize,
+ wxTE_PROCESS_ENTER);
+ foutnat->Add(mOutputNatureFilter,1,wxGROW);
+ fsizer->Add(foutnat,0,wxGROW);
+
+
+ mShowWidgetsFilter = new wxCheckBox(filters,id_fc1,_T("Show widgets"));
+ mShowWidgetsFilter->SetValue(true);
+ fsizer->Add(mShowWidgetsFilter,0,wxGROW);
+
+ mShowAdaptorsFilter = new wxCheckBox(filters,id_fc2,_T("Show adaptors"));
+ mShowAdaptorsFilter->SetValue(false);
+ fsizer->Add(mShowAdaptorsFilter,0,wxGROW);
+
+ mShowGUIsFilter = new wxCheckBox(filters,id_fc3,_T("Show GUIs"));
+ mShowGUIsFilter->SetValue(false);
+ fsizer->Add(mShowGUIsFilter,0,wxGROW);
filters->SetSizer(fsizer);
//================================================================
// User callback when a box is selected in the list
- void WxGUIPackageBrowser2::WxGUIBlackBoxListUserOnSelected( BlackBoxDescriptor* d)
+ void WxGUIPackageBrowser2::WxGUIBlackBoxListUserOnSelected
+ ( BlackBoxDescriptor* d)
{
mBoxInfo->UpdateInfo(d);
std::string title = d->GetPackage()->GetName()+"::"+d->GetTypeName();
//================================================================
WxGUIPackageBrowser2::~WxGUIPackageBrowser2()
{
- std::cout << "del interpreter" << std::endl;
- if (mInterpreter) delete mInterpreter;
- std::cout << "ok" << std::endl;
+ mFactory.reset();
+ mInterpreter.reset();
+ // Object::PrintObjectListInfo("");
+ m_mgr.UnInit();
}
//================================================================
//================================================================
void WxGUIPackageBrowser2::IncludeAll()
{
- if (!mInterpreter) mInterpreter = new bbtk::Interpreter();
+ if (!mInterpreter) mInterpreter =bbtk::Interpreter::New();
mInterpreter->SetCommandLine(true);
- mInterpreter->InterpretLine("include *");
+ std::stringstream* buf = new std::stringstream;
+ *buf << "exec freeze_no_error" << std::endl;
+ *buf << "message max 0" << std::endl;
+ *buf << "include *" << std::endl;
+ mInterpreter->InterpretBuffer(buf);
- 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();
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;
- for (j=P->GetBlackBoxMap().begin();
- j!=P->GetBlackBoxMap().end();
+ Package::DescriptorMapType::iterator j;
+ for (j=P->GetDescriptorMap().begin();
+ j!=P->GetDescriptorMap().end();
++j)
{
// std::cout << "Insert "<<j->second->GetTypeName()<<std::endl;
//================================================================
//================================================================
- 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;
+ if ((!mShowAdaptorsFilter->IsChecked())&&
+ ((d->GetKind()==BlackBoxDescriptor::ADAPTOR)||
+ (d->GetKind()==BlackBoxDescriptor::DEFAULT_ADAPTOR)))
+ 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->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());
}
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 (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;
+ }
return true;
}
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 )
+ EVT_CHECKBOX( id_fc1, WxGUIPackageBrowser2::OnFilter )
+ EVT_CHECKBOX( id_fc2, WxGUIPackageBrowser2::OnFilter )
+ EVT_CHECKBOX( id_fc3, WxGUIPackageBrowser2::OnFilter )
END_EVENT_TABLE()
//========================================================================
SetSizer(sizer);
- // Creates and sets the parent window of all bbtk windows
- wxWindow* top = new wxPanel(this,-1);
- top->Hide();
-
- Wx::SetTopWindow(top);
-
+ // Creates the parent window of all bbtk windows as a child of this
+// Wx::CreateTopWindow(this);
+ // Add the method OnWxSignal as a Wx::Signal observer
+ //bbtkAddWxSignalObserver(WxGUIPackageBrowser2Window::OnWxSignal);
+
SetAutoLayout(true);
Layout();
}