/*========================================================================= Program: bbtk Module: $RCSfile: bbtkWxGUIPackageBrowser.cxx,v $ Language: C++ Date: $Date: 2008/03/28 15:04:10 $ 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 */ /** * \file * \brief */ /** * \class bbtk:: * \brief */ #ifdef _USE_WXWIDGETS_ #define CHECKBOXVIEW 1 #include "bbtkWxGUIPackageBrowser.h" #include "ThirdParty/wx/treemultictrl/wxTreeMultiCtrl.h" #include "bbtkInterpreter.h" namespace bbtk { //================================================================ WxGUIPackageBrowserBlackBox::WxGUIPackageBrowserBlackBox(wxWindow* parent, WxGUIPackageBrowser* browser, BlackBoxDescriptor* descr) : wxPanel(parent, -1), mBrowser(browser), mDescriptor(descr) { wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL); wxStaticText* s = new wxStaticText(this,-1, std2wx(descr->GetDescription())); sizer->Add(s,1,wxGROW); s = new wxStaticText(this,-1, std2wx(descr->GetAuthor())); sizer->Add(s,1,wxGROW); s = new wxStaticText(this,-1, std2wx(descr->GetCategory())); sizer->Add(s,1,wxGROW); SetSizer(sizer); SetAutoLayout(true); Layout(); } //================================================================ //================================================================ WxGUIPackageBrowserBlackBox::~WxGUIPackageBrowserBlackBox() { } //================================================================ //================================================================ WxGUIPackageBrowser::WxGUIPackageBrowser( wxWindow *parent, WxGUIPackageBrowserUser* user ) : wxPanel(parent, -1), mUser(user), mInterpreter(0) { std::cout << "WxGUIPackageBrowser::WxGUIPackageBrowser"<SetBackgroundColour(*wxWHITE); sizer->Add(mTree,1,wxGROW); #ifndef LINUX wxTreeMultiWindowInfo wndinfo(wxTMC_BG_ADJUST_CNT, 8, 0); #else wxTreeMultiWindowInfo wndinfo(wxTMC_BG_ADJUST_ALL, 8, 0); #endif // make it a bit bigger wxFont somefont; somefont = mTree->GetCaptionFont(); somefont.SetFamily(wxMODERN); somefont.SetWeight(wxBOLD); somefont.SetPointSize(somefont.GetPointSize()+1); mTree->SetCaptionFont(somefont); mTree->SetSpacingY(1); // mTree->SetCheckboxView(true); SetSizer(sizer); SetAutoLayout(true); Layout(); } //================================================================ //================================================================ WxGUIPackageBrowser::~WxGUIPackageBrowser() { std::cout << "del interpreter" << std::endl; if (mInterpreter) delete mInterpreter; std::cout << "ok" << std::endl; } //================================================================ //================================================================ void WxGUIPackageBrowser::IncludeAll() { if (!mInterpreter) mInterpreter = new bbtk::Interpreter(); mInterpreter->SetCommandLine(true); mInterpreter->InterpretLine("include *"); Factory* F = mInterpreter->GetExecuter()->GetFactory(); BuildFromFactory(F); } //================================================================ //================================================================ void WxGUIPackageBrowser::BuildFromFactory(Factory* F) { #ifndef LINUX wxTreeMultiWindowInfo wndinfo(wxTMC_BG_ADJUST_CNT, 8, 0); #else wxTreeMultiWindowInfo wndinfo(wxTMC_BG_ADJUST_ALL, 8, 0); #endif mTree->DeleteAllItems(); const Factory::PackageMapType& M = F->GetPackageMap(); Factory::PackageMapType::const_iterator i; for (i=M.begin();i!=M.end();++i) { Package* P = i->second.mPackage; wxString packname = std2wx(P->GetName()); if (packname==_T("user")) continue; wxTreeMultiItem pack = mTree->AddRoot(packname,packname); wxString packinfo = std2wx(P->GetDescription()); packinfo += _T(" - by ")+ std2wx(P->GetAuthor()); packinfo += _T(" - v. ")+ std2wx(P->GetVersion()); mTree->AppendWindow(pack, new wxStaticText(mTree, -1,packinfo)); Package::BlackBoxMapType::iterator j; for (j=P->GetBlackBoxMap().begin(); j!=P->GetBlackBoxMap().end(); ++j) { wxString boxname = std2wx(j->second->GetTypeName()); wxTreeMultiItem box = mTree->AppendNode(pack,boxname,boxname); WxGUIPackageBrowserBlackBox* boxdescr = new WxGUIPackageBrowserBlackBox(mTree,this,j->second); mTree->AppendWindow(box, boxdescr, _T(""), wndinfo, wxTMC_SPAN_WIDTH); } } mTree->CollapseNodes(true); // Test exclude // wxTreeMultiItem item = mTree->FindItem(_T("Add")); // if(item.IsOk()) mTree->Exclude(item); } //================================================================ //================================================================ WxGUIPackageBrowserWindow::WxGUIPackageBrowserWindow( wxWindow *parent, wxString title, wxSize size) : wxFrame((wxFrame *)parent, -1, title, wxDefaultPosition, size) { wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL); mBrowser = new WxGUIPackageBrowser(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); SetAutoLayout(true); Layout(); } //================================================================ //================================================================ WxGUIPackageBrowserWindow::~WxGUIPackageBrowserWindow() { } //================================================================ } // namespace bbtk #endif //_USE_WXWIDGETS_