]> Creatis software - bbtk.git/blob - kernel/src/bbtkWxGUIPackageBrowser.cxx
2a5d0f5561845480f41c34e01528bbf3450e1602
[bbtk.git] / kernel / src / bbtkWxGUIPackageBrowser.cxx
1 /*=========================================================================
2                                                                                 
3   Program:   bbtk
4   Module:    $RCSfile: bbtkWxGUIPackageBrowser.cxx,v $
5   Language:  C++
6   Date:      $Date: 2008/03/28 13:42:18 $
7   Version:   $Revision: 1.1 $
8                                                                                 
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.
12                                                                                 
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.
16                                                                                 
17 =========================================================================*//**
18  * \brief Short description in one line
19  * 
20  * Long description which 
21  * can span multiple lines
22  */
23 /**
24  * \file 
25  * \brief 
26  */
27 /**
28  * \class bbtk::
29  * \brief 
30  */
31
32
33 #ifdef _USE_WXWIDGETS_
34
35 #include "bbtkWxGUIPackageBrowser.h"
36 #include "ThirdParty/wx/treemultictrl/wxTreeMultiCtrl.h"
37 #include "bbtkInterpreter.h"
38
39 namespace bbtk
40 {
41   //================================================================
42   WxGUIPackageBrowserBlackBox::WxGUIPackageBrowserBlackBox(wxWindow* parent,
43                                                            WxGUIPackageBrowser* browser,
44                                                            BlackBoxDescriptor* descr) :
45     wxPanel(parent, -1),
46     mBrowser(browser),
47     mDescriptor(descr)
48   {
49     wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
50     
51     wxStaticText* s = new wxStaticText(this,-1,
52                                        std2wx(descr->GetTypeName()));
53
54     sizer->Add(s,1,wxGROW);
55  
56     SetSizer(sizer);
57     SetAutoLayout(true);
58     Layout();
59   }
60   //================================================================
61
62
63   //================================================================
64   WxGUIPackageBrowserBlackBox::~WxGUIPackageBrowserBlackBox()
65   {
66   }
67   //================================================================
68
69
70   //================================================================
71   WxGUIPackageBrowser::WxGUIPackageBrowser( wxWindow *parent,
72                                     WxGUIPackageBrowserUser* user )
73     : wxPanel(parent, -1),
74       mUser(user),
75       mInterpreter(0)
76   {
77     std::cout << "WxGUIPackageBrowser::WxGUIPackageBrowser"<<std::endl;
78     wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
79     mTree = new wxTreeMultiCtrl(this, -1);
80     
81     mTree->SetBackgroundColour(*wxWHITE);
82     sizer->Add(mTree,1,wxGROW);
83
84 #ifndef LINUX
85     wxTreeMultiWindowInfo wndinfo(wxTMC_BG_ADJUST_CNT, 8, 0);
86 #else
87     wxTreeMultiWindowInfo wndinfo(wxTMC_BG_ADJUST_ALL, 8, 0);
88 #endif
89     
90     // make it a bit bigger
91     wxFont somefont;
92     somefont = mTree->GetCaptionFont();
93     somefont.SetFamily(wxMODERN);
94     somefont.SetWeight(wxBOLD);
95     somefont.SetPointSize(somefont.GetPointSize()+1);
96     mTree->SetCaptionFont(somefont);
97
98     mTree->SetSpacingY(1);
99
100     SetSizer(sizer);
101     SetAutoLayout(true);
102     Layout();
103     
104   }
105   //================================================================
106
107   //================================================================
108   WxGUIPackageBrowser::~WxGUIPackageBrowser()
109   {
110     if (mInterpreter) delete mInterpreter;
111   }
112   //================================================================
113
114   //================================================================
115   void WxGUIPackageBrowser::IncludeAll()
116   {
117 #ifndef LINUX
118     wxTreeMultiWindowInfo wndinfo(wxTMC_BG_ADJUST_CNT, 8, 0);
119 #else
120     wxTreeMultiWindowInfo wndinfo(wxTMC_BG_ADJUST_ALL, 8, 0);
121 #endif
122     
123     if (!mInterpreter) mInterpreter = new bbtk::Interpreter();
124     mInterpreter->SetCommandLine(true);
125     mInterpreter->InterpretLine("include *");
126
127     Factory* F = mInterpreter->GetExecuter()->GetFactory();
128     
129     const Factory::PackageMapType& M = F->GetPackageMap();
130     Factory::PackageMapType::const_iterator i;
131     for (i=M.begin();i!=M.end();++i)
132       {
133         Package* P = i->second.mPackage;
134         wxString packname = std2wx(P->GetName());
135         if (packname==_T("user")) continue;
136         wxTreeMultiItem pack = mTree->AddRoot(packname,packname);
137
138         Package::BlackBoxMapType::iterator j;
139         for (j=P->GetBlackBoxMap().begin();
140              j!=P->GetBlackBoxMap().end();
141              ++j)
142           {
143             wxString boxname = std2wx(j->second->GetTypeName());
144             wxTreeMultiItem box = mTree->AppendNode(pack,boxname,boxname);
145             WxGUIPackageBrowserBlackBox* boxdescr 
146               = new WxGUIPackageBrowserBlackBox(mTree,this,j->second);
147             mTree->AppendWindow(box, boxdescr, _T(""), 
148                                 wndinfo, wxTMC_SPAN_WIDTH);
149
150           }
151       }
152     mTree->CollapseNodes(true);
153
154     // Test exclude 
155     //    wxTreeMultiItem item = mTree->FindItem(_T("Add"));
156     //    if(item.IsOk()) mTree->Exclude(item);
157   }
158   //================================================================
159
160   //================================================================
161   WxGUIPackageBrowserWindow::WxGUIPackageBrowserWindow( wxWindow *parent, 
162                                                     wxString title, 
163                                                     wxSize size)
164     : wxFrame((wxFrame *)parent, -1, title, wxDefaultPosition, size)
165   {     
166     
167     
168     wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
169
170     mBrowser = new WxGUIPackageBrowser(this);
171     mBrowser->IncludeAll();
172     sizer->Add(mBrowser,1,wxGROW);
173     
174     //    WxGUICommand* com = new WxGUICommand(this,this);
175     //    sizer->Add(com);
176     
177     SetSizer(sizer);
178
179     // Creates and sets the parent window of all bbtk windows
180     wxWindow* top = new wxPanel(this,-1);
181     top->Hide();
182     
183     Wx::SetTopWindow(top);
184    
185     SetAutoLayout(true);
186     Layout();
187   }
188   //================================================================
189
190   //================================================================
191   WxGUIPackageBrowserWindow::~WxGUIPackageBrowserWindow()
192   {
193   }
194   //================================================================
195
196 } // namespace bbtk
197
198
199 #endif //_USE_WXWIDGETS_