]> Creatis software - creaImageIO.git/blob - src2/creaImageIOWxGimmickView.cpp
*** empty log message ***
[creaImageIO.git] / src2 / creaImageIOWxGimmickView.cpp
1 #include <creaImageIOWxGimmickView.h>
2 #include <creaImageIOWxTreeView.h>
3 #include <creaImageIOSystem.h>
4
5 // Icons
6 #include "icons/accept.xpm"
7 #include "icons/add.xpm"
8 #include "icons/folder-down.xpm"
9 #include "icons/page-down.xpm"
10 #include "icons/remove.xpm"
11 #include "icons/help.xpm"
12
13 #include <wx/imaglist.h>
14
15 namespace creaImageIO
16 {
17   //======================================================================
18   // The ids of the different tools
19   enum
20     {
21       TOOL_ADDFILE_ID = 1,
22       TOOL_ADDDIR_ID = 2,
23       TOOL_REMOVE_ID = 3,
24       TOOL_HELP_ID = 4
25     };
26   //======================================================================
27
28   //================================================================
29   // 
30   const int icon_number = 6;
31   // Icon ids
32   typedef enum
33     {
34       Icon_accept,
35       Icon_add,
36       Icon_folder_down,
37       Icon_page_down,
38       Icon_remove,
39       Icon_help
40     }
41     icon_id;
42   //================================================================
43
44   //================================================================
45   /*
46   const icon_id Icon[5] = { Icon_Database,  
47                             Icon_Patient,
48                             Icon_Study,
49                             Icon_Series,
50                             Icon_Image };
51   */
52   //================================================================
53
54
55   //======================================================================
56   // CTor
57   WxGimmickView::WxGimmickView(Gimmick* gimmick,
58                                wxWindow *parent, 
59                                const wxWindowID id,
60                                const wxPoint& pos, const wxSize& size,
61                                int image_type,
62                                int number_of_threads)
63     : wxPanel(parent,id,pos,size),
64       GimmickView(gimmick)
65   {
66     GimmickDebugMessage(1,"WxGimmickView::WxGimmickView"
67                         <<std::endl);
68     // Create the list of icons (mIcon)
69     CreateIconList();
70
71     // Global sizer
72     wxBoxSizer  *sizer = new wxBoxSizer(wxVERTICAL);
73
74     // Create the tool bar
75     CreateToolBar(); 
76     sizer->Add( mToolBar ,0, wxGROW  ,0);
77
78     // Split part below toolbar into notebook for views and panel
79     // for preview, messages...
80     mSplitter = new wxSplitterWindow( this , -1);
81  
82    
83     // Notebook
84     mNotebook = new wxNotebook(mSplitter,
85                                -1,wxDefaultPosition, wxDefaultSize, 0);
86
87     // Create the views
88     CreateTreeViews();
89
90     // Bottom panel 
91     mBottomPanel = new wxPanel(mSplitter,-1);
92
93     // Splitting
94     int hsize = size.GetHeight();
95     int bottom_minsize = 200;
96
97     mSplitter->SetMinimumPaneSize( bottom_minsize );
98     mSplitter->SplitHorizontally( mNotebook, mBottomPanel, 
99                                    hsize - bottom_minsize);
100   
101     sizer->Add( mSplitter,1,wxGROW  ,0);
102
103
104     SetSizer( sizer );     
105     SetAutoLayout(true);
106     Layout();
107
108   }
109   //======================================================================
110
111   //======================================================================
112   /// Destructor
113   WxGimmickView::~WxGimmickView()
114   {
115     GimmickDebugMessage(1,"WxGimmickView::~WxGimmickView"
116                         <<std::endl);
117   }
118   //======================================================================
119   
120   //======================================================================
121   /// Creates the tool bar
122   void WxGimmickView::CreateToolBar()
123   {
124     long style = wxTB_HORIZONTAL | wxNO_BORDER;
125     mToolBar = new wxToolBar(this,-1,wxDefaultPosition,wxDefaultSize,
126                              style);
127
128     mToolAddFile = mToolBar->AddTool( TOOL_ADDFILE_ID, 
129                                       _T("Add file"),
130                                       mIcon->GetBitmap(Icon_page_down),
131                                       _T("Add file")
132                                       );
133     mToolAddDir = mToolBar->AddTool( TOOL_ADDDIR_ID, 
134                                       _T("Add folder"),
135                                       mIcon->GetBitmap(Icon_folder_down),
136                                       _T("Add folder")
137                                       );
138     mToolRemove = mToolBar->AddTool( TOOL_REMOVE_ID, 
139                                       _T("Remove selected"),
140                                       mIcon->GetBitmap(Icon_remove),
141                                       _T("Remove selected")
142                                       );
143     mToolHelp = mToolBar->AddTool( TOOL_HELP_ID, 
144                                       _T("Help"),
145                                       mIcon->GetBitmap(Icon_help),
146                                       _T("Help")
147                                       );
148     //const wxBitmap& bitmap1, const wxString& shortHelpString = "", wxItemKind kind = wxITEM_NORMAL)
149
150     mToolBar->Realize();
151   }
152   //======================================================================
153
154  
155   //======================================================================
156   /// Create the tree view for TreeHandler provided
157   void WxGimmickView::CreateTreeView( TreeHandler* h)
158   {
159     std::string name(h->GetTree().GetAttribute("Name"));
160     GimmickMessage(2,"Creating the tree view for '"<<
161                    name<<"'"<<std::endl);
162     // Create the WxTreeView
163     WxTreeView* view = new WxTreeView(h,mNotebook,-1);
164
165     // TO DO : TEST THAT A VIEW WITH SAME NAME IS NOT
166     // ALREADY IN THE MAP
167     GetTreeViewMap()[name] = view;
168
169     // Add Notebook page
170     mNotebook->AddPage( view, crea::std2wx(name) );
171
172   }
173   //======================================================================
174
175
176
177   //=================================================
178   void WxGimmickView::CreateIconList()
179   {
180     // Size of the icons;
181     int size = 48;
182
183     wxIcon icons[20];
184     // should correspond to Icon_xxx enum
185     icons[Icon_accept] = wxIcon(accept_xpm);
186     icons[Icon_add] = wxIcon(add_xpm);
187     icons[Icon_folder_down] = wxIcon(folder_down_xpm);
188     icons[Icon_page_down] = wxIcon(page_down_xpm);
189     icons[Icon_remove] = wxIcon(remove_xpm);
190     icons[Icon_help] = wxIcon(help_xpm);
191
192     //   unsigned int NbIcons = 8;
193     // Make an image list containing small icons
194     mIcon = new wxImageList(size,size,true);
195     
196     // Make all icons the same size = size of the first one
197     int sizeOrig = icons[0].GetWidth();
198     for ( size_t i = 0; i < icon_number; i++ )
199       {
200         if ( size == sizeOrig )
201           {
202             mIcon->Add(icons[i]);
203           }
204         else
205           {
206             mIcon->Add(wxBitmap(wxBitmap(icons[i]).ConvertToImage().Rescale(size, size)));
207           }
208       }
209   }
210   //=================================================
211
212
213
214 } // EO namespace creaImageIO
215
216