+/*
+ # ---------------------------------------------------------------------
+ #
+ # 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: 2008/04/08 06:59:30 $
-Version: $Revision: 1.3 $
-
-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: 2012/11/16 08:49:01 $
+ Version: $Revision: 1.27 $
+=========================================================================*/
+
+
+
+/* \brief Short description in one line
+ *
+ * Long description which
+ * can span multiple lines
+ */
+
/**
- * \file
- * \brief
+ * \file
+ * \brief
*/
/**
* \class bbtk::
- * \brief
+ * \brief
*/
//#include "wx/grid.h"
//#include <wx/statline.h>
+#include "creaWx.h"
+
#define LIST_CTRL 1000
namespace bbtk
{
-
BEGIN_EVENT_TABLE(WxGUIBlackBoxList, wxListCtrl)
EVT_LIST_BEGIN_DRAG(LIST_CTRL, WxGUIBlackBoxList::OnBeginDrag)
EVT_LIST_BEGIN_RDRAG(LIST_CTRL, WxGUIBlackBoxList::OnBeginRDrag)
EVT_LIST_KEY_DOWN(LIST_CTRL, WxGUIBlackBoxList::OnListKeyDown)
EVT_LIST_ITEM_ACTIVATED(LIST_CTRL, WxGUIBlackBoxList::OnActivated)
EVT_LIST_ITEM_FOCUSED(LIST_CTRL, WxGUIBlackBoxList::OnFocused)
-
+
EVT_LIST_COL_CLICK(LIST_CTRL, WxGUIBlackBoxList::OnColClick)
EVT_LIST_COL_RIGHT_CLICK(LIST_CTRL, WxGUIBlackBoxList::OnColRightClick)
EVT_LIST_COL_BEGIN_DRAG(LIST_CTRL, WxGUIBlackBoxList::OnColBeginDrag)
EVT_LIST_COL_DRAGGING(LIST_CTRL, WxGUIBlackBoxList::OnColDragging)
EVT_LIST_COL_END_DRAG(LIST_CTRL, WxGUIBlackBoxList::OnColEndDrag)
-
+
EVT_LIST_CACHE_HINT(LIST_CTRL, WxGUIBlackBoxList::OnCacheHint)
-
+
#if USE_CONTEXT_MENU
EVT_CONTEXT_MENU(WxGUIBlackBoxList::OnContextMenu)
#endif
EVT_CHAR(WxGUIBlackBoxList::OnChar)
-
+
EVT_RIGHT_DOWN(WxGUIBlackBoxList::OnRightClick)
END_EVENT_TABLE()
-
- int wxCALLBACK MyCompareFunction(long item1, long item2, long WXUNUSED(sortData))
+
+ int wxCALLBACK MyCompareFunction(long item1, long item2, long WXUNUSED(sortData))
{
// inverse the order
if (item1 < item2)
return -1;
if (item1 > item2)
return 1;
-
+
return 0;
}
-
+
// WxGUIBlackBoxList
WxGUIBlackBoxList::WxGUIBlackBoxList(wxWindow *parent,
const wxWindowID id,
EnableContextMenu();
#endif
}
-
- void WxGUIBlackBoxList::Insert(BlackBoxDescriptor* d)
+
+ void WxGUIBlackBoxList::Insert(BlackBoxDescriptor::Pointer d)
{
if (GetColumnCount()!=3)
{
- InsertColumn( 0, _("Package"),
- wxLIST_FORMAT_LEFT, 40 );
- InsertColumn( 1, _("Box"),
- wxLIST_FORMAT_LEFT, 200 );
- InsertColumn( 2, _("Description"),
- wxLIST_FORMAT_LEFT, 500 );
+ InsertColumn( 0, _("Package"),
+ wxLIST_FORMAT_LEFT, 90 );
+ InsertColumn( 1, _("Box"),
+ wxLIST_FORMAT_LEFT, 150 );
+ InsertColumn( 2, _("Description"),
+ wxLIST_FORMAT_LEFT, 500 );
}
-
+
wxListItem kNewItem;
kNewItem.SetAlign(wxLIST_FORMAT_LEFT);
-
+
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()) );
this->SetItem(nID, 1, std2wx(d->GetTypeName()) );
this->SetItem(nID, 2, std2wx(d->GetDescription()) );
-
+
/*
if (nID % 2)
{
this->SetItem(kNewItem);
}
*/
-
}
-
-
+
+
void WxGUIBlackBoxList::OnCacheHint(wxListEvent& event)
{
//wxLogMessage( wxT("OnCacheHint: cache items %ld..%ld"),
// event.GetCacheFrom(), event.GetCacheTo() );
}
-
+
void WxGUIBlackBoxList::SetColumnImage(int col, int image)
{
/*
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;
+ std::cout<<"RaC DRAG TABLE"<<std::endl;
+
+ wxString text(this->GetItemText(event.GetIndex()));
+ wxListItem info;
+ info.m_itemId = event.m_itemIndex;
+ info.m_col = 0;
+ info.m_mask = wxLIST_MASK_DATA;
+ wxString sendtext(_T(""));
+ if ( GetItem(info) )
+ {
+ // TO DO : STORE SMART PTR ?
+ BlackBoxDescriptor* d = (BlackBoxDescriptor*)(info.GetData());
+ if (d!=0)
+ {
+ //DFGO -> To identify it is a box
+ sendtext += crea::std2wx("box:");
+ sendtext += crea::std2wx(d->GetFullTypeName());
+ }
+ }
+ else
+ {
+ wxFAIL_MSG(wxT("wxListCtrl::GetItem() failed"));
+ }
+
+ wxTextDataObject tdo(sendtext);
+ wxDropSource tds(tdo, this);
+ tds.DoDragDrop();
+
+ // 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 )
{
- case wxLIST_HITTEST_ABOVE: where = _T("above"); break;
- case wxLIST_HITTEST_BELOW: where = _T("below"); break;
- case wxLIST_HITTEST_NOWHERE: where = _T("nowhere near"); break;
- case wxLIST_HITTEST_ONITEMICON: where = _T("on icon of"); break;
- case wxLIST_HITTEST_ONITEMLABEL: where = _T("on label of"); break;
- case wxLIST_HITTEST_ONITEMRIGHT: where = _T("right on"); break;
- case wxLIST_HITTEST_TOLEFT: where = _T("to the left of"); break;
- case wxLIST_HITTEST_TORIGHT: where = _T("to the right of"); break;
- default: where = _T("not clear exactly where on"); break;
+ case wxLIST_HITTEST_ABOVE: where = _T("above"); break;
+ case wxLIST_HITTEST_BELOW: where = _T("below"); break;
+ case wxLIST_HITTEST_NOWHERE: where = _T("nowhere near"); break;
+ case wxLIST_HITTEST_ONITEMICON: where = _T("on icon of"); break;
+ case wxLIST_HITTEST_ONITEMLABEL: where = _T("on label of"); break;
+ case wxLIST_HITTEST_ONITEMRIGHT: where = _T("right on"); break;
+ case wxLIST_HITTEST_TOLEFT: where = _T("to the left of"); break;
+ case wxLIST_HITTEST_TORIGHT: where = _T("to the right of"); break;
+ default: where = _T("not clear exactly where on"); break;
}
//wxLogMessage(_T("Right double click %s item %ld, subitem %ld"),
void WxGUIBlackBoxList::ShowContextMenu(const wxPoint& pos)
{
wxMenu menu;
-
+
menu.Append(wxID_ABOUT, _T("&About"));
menu.AppendSeparator();
menu.Append(wxID_EXIT, _T("E&xit"));
-
+
PopupMenu(&menu, pos.x, pos.y);
}
//================================================================
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);
mDescription = new wxStaticText(this,-1,_T(""));
mCategory = new wxStaticText(this,-1,_T(""));
sizer->Add(mCategory,0,wxGROW);
-
- wxBoxSizer *inputs =
+ wxBoxSizer *inputs =
new wxStaticBoxSizer
- ( new wxStaticBox(this, wxID_ANY, _T("Inputs")), wxVERTICAL );
+ ( new wxStaticBox(this, wxID_ANY, _T("Inputs")), wxVERTICAL );
mInputList = new wxListCtrl(this, -1,
wxDefaultPosition,
wxDefaultSize,
wxLC_REPORT //wxLC_LIST
| wxSUNKEN_BORDER);
-
-
+
inputs->Add(mInputList,1,wxGROW);
sizer->Add(inputs,1,wxGROW);
- wxBoxSizer *outputs =
+ wxBoxSizer *outputs =
new wxStaticBoxSizer
- ( new wxStaticBox(this, wxID_ANY, _T("Outputs")), wxVERTICAL );
+ ( new wxStaticBox(this, wxID_ANY, _T("Outputs")), wxVERTICAL );
mOutputList = new wxListCtrl(this, -1,
wxDefaultPosition,
wxDefaultSize,
wxLC_REPORT //wxLC_LIST
| wxSUNKEN_BORDER);
-
+
outputs->Add(mOutputList,1,wxGROW);
sizer->Add(outputs,1,wxGROW);
-
-
+
SetSizer(sizer);
SetAutoLayout(true);
Layout();
}
//================================================================
-
+
//================================================================
void WxGUIBlackBoxInfo::UpdateInfo(BlackBoxDescriptor* descr)
{
mDescription->SetLabel(std2wx(descr->GetDescription()));
mAuthor->SetLabel(std2wx(descr->GetAuthor()));
mCategory->SetLabel(std2wx(descr->GetCategory()));
-
+
mInputList->ClearAll();
- mInputList->InsertColumn( 0, _("Name"),
- wxLIST_FORMAT_LEFT, 80 );
- mInputList->InsertColumn( 1, _("Type"),
- wxLIST_FORMAT_LEFT, 100 );
- mInputList->InsertColumn( 2, _("Nature"),
- wxLIST_FORMAT_LEFT, 100 );
- mInputList->InsertColumn( 3, _("Description"),
- wxLIST_FORMAT_LEFT, 500 );
+ mInputList->InsertColumn( 0, _("Name"),
+ wxLIST_FORMAT_LEFT, 80 );
+ mInputList->InsertColumn( 1, _("Type"),
+ wxLIST_FORMAT_LEFT, 100 );
+ mInputList->InsertColumn( 2, _("Nature"),
+ wxLIST_FORMAT_LEFT, 100 );
+ mInputList->InsertColumn( 3, _("Description"),
+ wxLIST_FORMAT_LEFT, 500 );
mOutputList->ClearAll();
- mOutputList->InsertColumn( 0, _("Name"),
- wxLIST_FORMAT_LEFT, 80 );
- mOutputList->InsertColumn( 1, _("Type"),
- wxLIST_FORMAT_LEFT, 100 );
- mOutputList->InsertColumn( 2, _("Nature"),
- wxLIST_FORMAT_LEFT, 100 );
- mOutputList->InsertColumn( 3, _("Description"),
- wxLIST_FORMAT_LEFT, 500 );
-
+ mOutputList->InsertColumn( 0, _("Name"),
+ wxLIST_FORMAT_LEFT, 80 );
+ mOutputList->InsertColumn( 1, _("Type"),
+ wxLIST_FORMAT_LEFT, 100 );
+ mOutputList->InsertColumn( 2, _("Nature"),
+ wxLIST_FORMAT_LEFT, 100 );
+ mOutputList->InsertColumn( 3, _("Description"),
+ wxLIST_FORMAT_LEFT, 500 );
+
std::vector<BlackBoxInputOutputDescriptor*> user_defined;
std::vector<BlackBoxInputOutputDescriptor*> ubb_defined;
std::vector<BlackBoxInputOutputDescriptor*> wxbb_defined;
-
- const BlackBoxDescriptor::InputDescriptorMapType& imap =
+
+ const BlackBoxDescriptor::InputDescriptorMapType& imap =
descr->GetInputDescriptorMap();
BlackBoxDescriptor::InputDescriptorMapType::const_iterator in;
- for ( in = imap.begin(); in != imap.end(); ++in )
+ for ( in = imap.begin(); in != imap.end(); ++in )
{
int iotype = 0;
- if (in->second->GetCreatorTypeInfo() ==
+ if (in->second->GetCreatorTypeInfo() ==
typeid(AtomicBlackBoxDescriptor))
{
iotype = 1;
}
- else if (in->second->GetCreatorTypeInfo() ==
+ else if (in->second->GetCreatorTypeInfo() ==
typeid(WxBlackBoxDescriptor))
{
iotype = 2;
if (iotype==0) user_defined.push_back(in->second);
else if (iotype==1) ubb_defined.push_back(in->second);
else if (iotype==2) wxbb_defined.push_back(in->second);
-
+
}
std::vector<BlackBoxInputOutputDescriptor*>::iterator hi;
- for (hi=user_defined.begin();hi!=user_defined.end();++hi)
+ for (hi=user_defined.begin();hi!=user_defined.end();++hi)
{
InsertInputOutput(mInputList,*hi);
}
- for (hi=wxbb_defined.begin();hi!=wxbb_defined.end();++hi)
+ for (hi=wxbb_defined.begin();hi!=wxbb_defined.end();++hi)
{
InsertInputOutput(mInputList,*hi);
}
- for (hi=ubb_defined.begin();hi!=ubb_defined.end();++hi)
+ for (hi=ubb_defined.begin();hi!=ubb_defined.end();++hi)
{
InsertInputOutput(mInputList,*hi);
}
-
+
// Outputs
user_defined.clear();
ubb_defined.clear();
wxbb_defined.clear();
- const BlackBoxDescriptor::OutputDescriptorMapType& omap =
+ const BlackBoxDescriptor::OutputDescriptorMapType& omap =
descr->GetOutputDescriptorMap();
BlackBoxDescriptor::OutputDescriptorMapType::const_iterator out;
- for ( out = omap.begin(); out != omap.end(); ++out )
+ for ( out = omap.begin(); out != omap.end(); ++out )
{
int iotype = 0;
- if (out->second->GetCreatorTypeInfo() ==
+ if (out->second->GetCreatorTypeInfo() ==
typeid(AtomicBlackBoxDescriptor))
{
iotype = 1;
}
- else if (out->second->GetCreatorTypeInfo() ==
+ else if (out->second->GetCreatorTypeInfo() ==
typeid(WxBlackBoxDescriptor))
{
iotype = 2;
}
-
+
if (iotype==0) user_defined.push_back(out->second);
else if (iotype==1) ubb_defined.push_back(out->second);
else if (iotype==2) wxbb_defined.push_back(out->second);
}
- for (hi=user_defined.begin();hi!=user_defined.end();++hi)
+ for (hi=user_defined.begin();hi!=user_defined.end();++hi)
{
InsertInputOutput(mOutputList,*hi);
}
- for (hi=wxbb_defined.begin();hi!=wxbb_defined.end();++hi)
+ for (hi=wxbb_defined.begin();hi!=wxbb_defined.end();++hi)
{
InsertInputOutput(mOutputList,*hi);
}
- for (hi=ubb_defined.begin();hi!=ubb_defined.end();++hi)
+ for (hi=ubb_defined.begin();hi!=ubb_defined.end();++hi)
{
InsertInputOutput(mOutputList,*hi);
}
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);
+ // kNewItem.SetData(d);
l->InsertItem(kNewItem);
l->SetItem(nID, 0, std2wx(d->GetName()) );
l->SetItem(nID, 1, std2wx(d->GetTypeName()) );
//================================================================
- enum
+ enum
{
id_f1,
id_f2,
id_f3,
id_f4,
id_f5,
- id_f6
-
+ id_f6,
+ id_f7,
+ id_f8,
+ id_fc1,
+ id_fc2,
+ id_fc3
};
-
//================================================================
WxGUIPackageBrowser2::WxGUIPackageBrowser2( wxWindow *parent,
WxGUIPackageBrowser2User* user )
: wxPanel(parent, -1),
mUser(user),
- mInterpreter(0)
+ mInterpreter()
{
+ _actualSelected=NULL;
m_mgr.SetManagedWindow(this);
// wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
mBoxList->SetUser(this);
mBoxList->SetBackgroundColour(*wxWHITE);
+
+// JGRR & CM DISABLED CLOSE BUTTON
m_mgr.AddPane(mBoxList,
wxAuiPaneInfo().Name(wxT("BoxList"))
.Caption(wxT("Black Boxes"))
.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,100))
- );
-
+ .MinSize(wxSize(100,200))
+ .CloseButton(false)
+ );
wxPanel* filters = new wxPanel(this,-1);
- wxBoxSizer *fsizer = new wxBoxSizer(wxVERTICAL );
- wxBoxSizer *fpack =
+ wxBoxSizer *fsizer = new wxBoxSizer(wxVERTICAL );
+ wxBoxSizer *fpack =
new wxStaticBoxSizer
- ( new wxStaticBox(filters, wxID_ANY, _T("Package")), wxHORIZONTAL );
+ ( new wxStaticBox(filters, wxID_ANY, _T("Package")), wxHORIZONTAL );
mPackageFilter = new wxTextCtrl(filters,id_f1,_T(""),
wxDefaultPosition,
wxDefaultSize,
wxTE_PROCESS_ENTER);
fpack->Add(mPackageFilter,1,wxGROW);
fsizer->Add(fpack,0,wxGROW);
- wxBoxSizer *fname =
+ wxBoxSizer *fname =
new wxStaticBoxSizer
- ( new wxStaticBox(filters, wxID_ANY, _T("Name")), wxHORIZONTAL );
+ ( new wxStaticBox(filters, wxID_ANY, _T("Name")), wxHORIZONTAL );
mNameFilter = new wxTextCtrl(filters,id_f2,_T(""),
wxDefaultPosition,
wxDefaultSize,
wxTE_PROCESS_ENTER);
fname->Add(mNameFilter,1,wxGROW);
fsizer->Add(fname,0,wxGROW);
- wxBoxSizer *fdescr =
+ wxBoxSizer *fdescr =
new wxStaticBoxSizer
( new wxStaticBox(filters, wxID_ANY, _T("Description")), wxHORIZONTAL );
mDescriptionFilter = new wxTextCtrl(filters,id_f3,_T(""),
wxTE_PROCESS_ENTER);
fdescr->Add(mDescriptionFilter,1,wxGROW);
fsizer->Add(fdescr,0,wxGROW);
- wxBoxSizer *fcat =
+ wxBoxSizer *fcat =
new wxStaticBoxSizer
- ( new wxStaticBox(filters, wxID_ANY, _T("Category")), wxHORIZONTAL );
+ ( new wxStaticBox(filters, wxID_ANY, _T("Category")), wxHORIZONTAL );
mCategoryFilter = new wxTextCtrl(filters,id_f4,_T(""),
wxDefaultPosition,
wxDefaultSize,
wxTE_PROCESS_ENTER);
fcat->Add(mCategoryFilter,1,wxGROW);
fsizer->Add(fcat,0,wxGROW);
- wxBoxSizer *fintype =
+ 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);
fintype->Add(mInputTypeFilter,1,wxGROW);
fsizer->Add(fintype,0,wxGROW);
- wxBoxSizer *fouttype =
+ 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);
+// 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();
// SetSizer(sizer);
SetAutoLayout(true);
Layout();
-
+
+ }
+ //================================================================
+
+ Factory::Pointer WxGUIPackageBrowser2::GetFactory()
+ {
+ return mFactory;
}
+
//================================================================
+
//================================================================
void WxGUIPackageBrowser2::OnFilter(wxCommandEvent&)
{
//================================================================
//================================================================
- // User callback when a box is selected in the list
- void WxGUIPackageBrowser2::WxGUIBlackBoxListUserOnSelected( BlackBoxDescriptor* d)
+ // User callback when a box is selected in the list
+ void WxGUIPackageBrowser2::WxGUIBlackBoxListUserOnSelected
+ ( BlackBoxDescriptor* d)
{
+ //RaC
+ _actualSelected=d;
+
mBoxInfo->UpdateInfo(d);
std::string title = d->GetPackage()->GetName()+"::"+d->GetTypeName();
m_mgr.GetPane(mBoxInfo).Caption(std2wx(title));
m_mgr.Update();
}
-
+
+ //================================================================
+
+ //================================================================
+ BlackBoxDescriptor* WxGUIPackageBrowser2::GetActualSelected()
+ {
+ return _actualSelected;
+ }
+
//================================================================
//================================================================
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();
- }
+ }
+
//================================================================
//================================================================
void WxGUIPackageBrowser2::RebuildList()
{
mBoxList->Hide();
- mBoxList->ClearAll();
-
+ mBoxList->ClearAll();
+
const Factory::PackageMapType& M = mFactory->GetPackageMap();
Factory::PackageMapType::const_iterator i;
for (i=M.begin();i!=M.end();++i)
- {
- Package* P = i->second.mPackage;
- if (P->GetName() == "user") continue;
-
- Package::BlackBoxMapType::iterator j;
- for (j=P->GetBlackBoxMap().begin();
- j!=P->GetBlackBoxMap().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* d)
+ bool WxGUIPackageBrowser2::IsVisible(BlackBoxDescriptor::Pointer d)
{
// std::cout << " '" << wx2std(mPackageFilter->GetValue())<<"'"<<std::endl;
// std::cout << "vs '" << d->GetPackage()->GetName() << "'"<<std::endl;
- 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 (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;
+ 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;
+ }
+
+//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 )
+ {
+//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 )
+ {
+//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 )
+//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 )
END_EVENT_TABLE()
//========================================================================
//================================================================
- WxGUIPackageBrowser2Window::WxGUIPackageBrowser2Window( wxWindow *parent,
- wxString title,
- wxSize size)
+ WxGUIPackageBrowser2Window::WxGUIPackageBrowser2Window( wxWindow *parent,
+ wxString title,
+ wxSize size)
: wxFrame((wxFrame *)parent, -1, title, wxDefaultPosition, size)
- {
-
-
+ {
wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
mBrowser = new WxGUIPackageBrowser2(this);
mBrowser->IncludeAll();
sizer->Add(mBrowser,1,wxGROW);
-
+
// WxGUICommand* com = new WxGUICommand(this,this);
// sizer->Add(com);
-
+
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();
}