1 /*=========================================================================
4 Module: $RCSfile: bbtkWxGUIPackageBrowser.cxx,v $
6 Date: $Date: 2008/03/28 15:04:10 $
7 Version: $Revision: 1.2 $
9 Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
10 l'Image). All rights reserved. See Doc/License.txt or
11 http://www.creatis.insa-lyon.fr/Public/bbtk/License.html for details.
13 This software is distributed WITHOUT ANY WARRANTY; without even
14 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 PURPOSE. See the above copyright notices for more information.
17 =========================================================================*//**
18 * \brief Short description in one line
20 * Long description which
21 * can span multiple lines
33 #ifdef _USE_WXWIDGETS_
35 #define CHECKBOXVIEW 1
37 #include "bbtkWxGUIPackageBrowser.h"
38 #include "ThirdParty/wx/treemultictrl/wxTreeMultiCtrl.h"
39 #include "bbtkInterpreter.h"
43 //================================================================
44 WxGUIPackageBrowserBlackBox::WxGUIPackageBrowserBlackBox(wxWindow* parent,
45 WxGUIPackageBrowser* browser,
46 BlackBoxDescriptor* descr) :
51 wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
53 wxStaticText* s = new wxStaticText(this,-1,
54 std2wx(descr->GetDescription()));
55 sizer->Add(s,1,wxGROW);
56 s = new wxStaticText(this,-1,
57 std2wx(descr->GetAuthor()));
58 sizer->Add(s,1,wxGROW);
59 s = new wxStaticText(this,-1,
60 std2wx(descr->GetCategory()));
62 sizer->Add(s,1,wxGROW);
68 //================================================================
71 //================================================================
72 WxGUIPackageBrowserBlackBox::~WxGUIPackageBrowserBlackBox()
75 //================================================================
78 //================================================================
79 WxGUIPackageBrowser::WxGUIPackageBrowser( wxWindow *parent,
80 WxGUIPackageBrowserUser* user )
81 : wxPanel(parent, -1),
85 std::cout << "WxGUIPackageBrowser::WxGUIPackageBrowser"<<std::endl;
86 wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
87 mTree = new wxTreeMultiCtrl(this, -1);
89 mTree->SetBackgroundColour(*wxWHITE);
90 sizer->Add(mTree,1,wxGROW);
93 wxTreeMultiWindowInfo wndinfo(wxTMC_BG_ADJUST_CNT, 8, 0);
95 wxTreeMultiWindowInfo wndinfo(wxTMC_BG_ADJUST_ALL, 8, 0);
98 // make it a bit bigger
100 somefont = mTree->GetCaptionFont();
101 somefont.SetFamily(wxMODERN);
102 somefont.SetWeight(wxBOLD);
103 somefont.SetPointSize(somefont.GetPointSize()+1);
104 mTree->SetCaptionFont(somefont);
106 mTree->SetSpacingY(1);
107 // mTree->SetCheckboxView(true);
114 //================================================================
116 //================================================================
117 WxGUIPackageBrowser::~WxGUIPackageBrowser()
119 std::cout << "del interpreter" << std::endl;
120 if (mInterpreter) delete mInterpreter;
121 std::cout << "ok" << std::endl;
123 //================================================================
125 //================================================================
126 void WxGUIPackageBrowser::IncludeAll()
128 if (!mInterpreter) mInterpreter = new bbtk::Interpreter();
129 mInterpreter->SetCommandLine(true);
130 mInterpreter->InterpretLine("include *");
132 Factory* F = mInterpreter->GetExecuter()->GetFactory();
135 //================================================================
136 //================================================================
138 void WxGUIPackageBrowser::BuildFromFactory(Factory* F)
141 wxTreeMultiWindowInfo wndinfo(wxTMC_BG_ADJUST_CNT, 8, 0);
143 wxTreeMultiWindowInfo wndinfo(wxTMC_BG_ADJUST_ALL, 8, 0);
145 mTree->DeleteAllItems();
146 const Factory::PackageMapType& M = F->GetPackageMap();
147 Factory::PackageMapType::const_iterator i;
148 for (i=M.begin();i!=M.end();++i)
150 Package* P = i->second.mPackage;
151 wxString packname = std2wx(P->GetName());
152 if (packname==_T("user")) continue;
153 wxTreeMultiItem pack = mTree->AddRoot(packname,packname);
155 wxString packinfo = std2wx(P->GetDescription());
156 packinfo += _T(" - by ")+ std2wx(P->GetAuthor());
157 packinfo += _T(" - v. ")+ std2wx(P->GetVersion());
158 mTree->AppendWindow(pack,
159 new wxStaticText(mTree,
161 Package::BlackBoxMapType::iterator j;
162 for (j=P->GetBlackBoxMap().begin();
163 j!=P->GetBlackBoxMap().end();
166 wxString boxname = std2wx(j->second->GetTypeName());
167 wxTreeMultiItem box = mTree->AppendNode(pack,boxname,boxname);
168 WxGUIPackageBrowserBlackBox* boxdescr
169 = new WxGUIPackageBrowserBlackBox(mTree,this,j->second);
170 mTree->AppendWindow(box, boxdescr, _T(""),
171 wndinfo, wxTMC_SPAN_WIDTH);
175 mTree->CollapseNodes(true);
178 // wxTreeMultiItem item = mTree->FindItem(_T("Add"));
179 // if(item.IsOk()) mTree->Exclude(item);
181 //================================================================
183 //================================================================
184 WxGUIPackageBrowserWindow::WxGUIPackageBrowserWindow( wxWindow *parent,
187 : wxFrame((wxFrame *)parent, -1, title, wxDefaultPosition, size)
191 wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
193 mBrowser = new WxGUIPackageBrowser(this);
194 mBrowser->IncludeAll();
195 sizer->Add(mBrowser,1,wxGROW);
197 // WxGUICommand* com = new WxGUICommand(this,this);
202 // Creates and sets the parent window of all bbtk windows
203 wxWindow* top = new wxPanel(this,-1);
206 Wx::SetTopWindow(top);
211 //================================================================
213 //================================================================
214 WxGUIPackageBrowserWindow::~WxGUIPackageBrowserWindow()
217 //================================================================
222 #endif //_USE_WXWIDGETS_