From c3aa732dfcdd65de1766d43844631906927c8b65 Mon Sep 17 00:00:00 2001 From: guigues Date: Mon, 23 Feb 2009 12:31:45 +0000 Subject: [PATCH] Adaptive panel splitting --- src2/creaImageIOWxTreeView.cpp | 49 +++++++++++++++++++++++++++++----- src2/creaImageIOWxTreeView.h | 13 +++++++-- 2 files changed, 54 insertions(+), 8 deletions(-) diff --git a/src2/creaImageIOWxTreeView.cpp b/src2/creaImageIOWxTreeView.cpp index 7f28260..0b223f0 100644 --- a/src2/creaImageIOWxTreeView.cpp +++ b/src2/creaImageIOWxTreeView.cpp @@ -32,15 +32,26 @@ namespace creaImageIO i < handler->GetTree().GetNumberOfLevels(); ++i) { - GimmickDebugMessage(5,"Creating ListCtrl for level "<1) sparent = mLevelList[i-2].wxSplitter; + + level.wxSplitter = new wxSplitterWindow( sparent , -1); + // level.wxSplitter->SetMinimumPaneSize(100); + + wxListCtrl* ctrl = new wxListCtrl(level.wxSplitter, i, wxDefaultPosition, wxDefaultSize, ctrl_style); level.wxCtrl = ctrl; + level.wxSplitter->Initialize(ctrl); // Create the columns : one for each attribute of the level int col = 0; @@ -74,9 +85,13 @@ namespace creaImageIO } mLevelList.push_back(level); - sizer->Add( ctrl ,1, wxGROW ,0); } + + /// Initialize the first level splitter + + sizer->Add( mLevelList[0].wxSplitter ,1, wxGROW ,0); + UpdateLevel(1); SetSizer( sizer ); @@ -164,17 +179,39 @@ namespace creaImageIO //===================================================================== + //===================================================================== - /// void WxTreeView::UpdateLevel( int level ) { - GimmickDebugMessage(1, + GimmickDebugMessage(1, GetTreeHandler()->GetTree().GetLabel() <<" view : updating level "<IsSplit()) + GetSplitter(i)->SplitVertically( GetCtrl(i), GetSplitter(i+1), + 100 ); + } + if (GetSplitter(i)->IsSplit()) GetSplitter(i)->Unsplit(); + + } + //===================================================================== + + /// + void WxTreeView::RecursiveUpdateLevel( int level ) + { + GimmickDebugMessage(2, + GetTreeHandler()->GetTree().GetLabel() + <<" view : updating level (recursive)"< sel=GetSelected(level); int l = level - 1; diff --git a/src2/creaImageIOWxTreeView.h b/src2/creaImageIOWxTreeView.h index 0f026e3..e0e46d7 100644 --- a/src2/creaImageIOWxTreeView.h +++ b/src2/creaImageIOWxTreeView.h @@ -7,6 +7,7 @@ #include #include +#include //#include namespace creaImageIO @@ -45,6 +46,7 @@ namespace creaImageIO { // The wxListCtrl* wxCtrl; + wxSplitterWindow* wxSplitter; std::vector key; }; /// The vector of levels : one for each level of the tree @@ -52,10 +54,17 @@ namespace creaImageIO /// return the wxListCtrl of one level wxListCtrl* GetCtrl(int l) { return mLevelList[l].wxCtrl; } + /// return the wxSplitter of one level + wxSplitterWindow* GetSplitter(int l) { return mLevelList[l].wxSplitter; } - std::vectorGetSelected(int level); + std::vector GetSelected(int level); - + + + // Updates the view of a level given the selected items of upper level + // Recursive method + virtual void RecursiveUpdateLevel( int ); + DECLARE_EVENT_TABLE() }; -- 2.45.1