#include <creaImageIOSystem.h>
#include <wx/splitter.h>
#include <wx/gdicmn.h>
+#include <boost/date_time/gregorian/gregorian.hpp>
const std::string empty_string("");
//=====================================================================
// CTor
WxTreeView::WxTreeView(TreeHandler* handler,
+ TimestampDatabaseHandler* tdh,
GimmickView* gimmick,
wxWindow* parent,
const wxWindowID id)
: wxPanel(parent,id),
- TreeView(handler,gimmick)
+ TreeView(handler, tdh, gimmick)
{
GimmickDebugMessage(1,"WxTreeView::WxTreeView"
<<std::endl);
int col_style = wxLIST_FORMAT_LEFT;
// Creating the ListCtrl for the levels > 0 (not for Root level)
- for (int i = 1;
- i < handler->GetTree().GetNumberOfLevels();
+ for (int i = 0;
+ i < handler->GetTree().GetNumberOfLevels() -1;
++i)
{
// If the first level : parent = this
wxWindow* sparent = this;
// else parent = last splitter
- if (i>1) sparent = mLevelList[i-2].wxSplitter;
+ if (i>0)
+ sparent = mLevelList[i-1].wxSplitter;
level.wxSplitter = new wxSplitterWindow( sparent , -1);
- if(i!=1)
+ if(i!=0)
{
level.wxSplitter->Show(false);
}
ctrl_style);
level.wxCtrl = ctrl;
level.wxSplitter->Initialize(ctrl);
-
-
+
// Create the columns : one for each attribute of the level
int col = 0;
std::string title;
- tree::LevelDescriptor::AttributeDescriptorListType::const_iterator a;
- for (a = handler->GetTree().GetAttributeDescriptorList(i).begin();
- a != handler->GetTree().GetAttributeDescriptorList(i).end();
+
+ tree::LevelDescriptor::AttributeDescriptorListType::const_iterator a;
+ for (a = handler->GetTree().GetAttributeDescriptorList(i+1).begin();
+ a != handler->GetTree().GetAttributeDescriptorList(i+1).end();
++a)
- {
+
+{
GimmickDebugMessage(5,"Creating column "<<col<<" : "
<<a->GetName()
{
title=a->GetName();
}
+ std::string temp = a->GetKey();
+ if (temp.compare("ID") != 0)
+ {
ctrl->InsertColumn(col,
crea::std2wx(title),
col_style);
- level.key.push_back(a->GetKey());
-
- // ctrl->SetColumnWidth(col, wxLIST_AUTOSIZE );
-
col++;
+ }
+ level.key.push_back(a->GetKey());
}
}
}
if(erase)
{
+ GetGimmickView()->modifyValidationSignal(false);
bool needRefresh=false;
std::vector<tree::Node*>::const_iterator i;
for (i=sel.begin(); i!=sel.end(); ++i)
{
needRefresh=true;
}
+ GetTimestampDatabaseHandler()->RemoveNode("PATH",(*i));
GetTreeHandler()->Remove(*i);
}
}
- //=====================================================================
-
-
//=====================================================================
/// Updates a level of the view (adds or removes children, etc.)
void WxTreeView::UpdateLevel( int level )
GetCtrl(l)->InsertItem(item);
//Setting attributes
-
- for (int k=0; k<GetCtrl(l)->GetColumnCount(); k++)
+ for (int k=0; k<GetCtrl(l)->GetColumnCount(); ++k)
{
- std::string val = (*j)->GetAttribute(mLevelList[l].key[k]);
- if (val.size()==0) val = "?";
- item.SetText( crea::std2wx(val));
- item.SetColumn(k);
- GetCtrl(l)->SetItem(item);
+ std::string val;
+ // Temporary correction : it works but no explanation about the problem FCY
+ if(k==0 && level <3)
+ val = (*j)->GetAttribute("NumberOfChildren");
+ else
+ val = (*j)->GetAttribute(mLevelList[l].key[k]);
+ if(((*j)->GetAttributeDescriptor(mLevelList[l].key[k])).isDateEntry()) // Date
+ {
+ boost::gregorian::date d1(boost::gregorian::from_undelimited_string(val));
+ val = to_iso_extended_string(d1);
+ }
+ else if(((*j)->GetAttributeDescriptor(mLevelList[l].key[k])).isTimeEntry()) // Time
+ {
+ if (val != "" || val != " ")
+ val = val.substr(0,2) + " : " + val.substr(2,2) + " : " + val.substr(4,2);
+ }
+ else
+ {
+
+ }
+ if (val.size()==0) val = "?";
+ item.SetText( crea::std2wx(val));
+ item.SetColumn(k);
+ GetCtrl(l)->SetItem(item);
}
}
if ( GetCtrl(level) == obj ) break;
}
SetSelectedUpToDate(level,false);
+ // to allow a first selection in images TreeView
+ if (level==mLevelList.size()-1)
+ OnItemSelected(event);
}
//================================================================
{
mLevelList[level].SortAscending = false;
}
-
+
SortLevel(level);
}
//================================================================
}
}
+ }
+ //================================================================
+ //=================================================
+ void WxTreeView::OnKeyDown(wxListEvent &event)
+ {
+ if(event.GetKeyCode() == WXK_DELETE)
+ {
+ wxBusyCursor busy;
+
+ RemoveSelected();
+ GetGimmickView()->ClearSelection();
+ }
+
}
//================================================================
EVT_LIST_SET_INFO(LIST_CTRL, MyListCtrl::OnSetInfo)
#endif
*/
+ EVT_LIST_KEY_DOWN(-1, WxTreeView::OnKeyDown)
EVT_LIST_ITEM_SELECTED(-1, WxTreeView::OnItemSelected)
EVT_LIST_ITEM_DESELECTED(-1, WxTreeView::OnItemDeSelected)