-/*=========================================================================
-
+/*=========================================================================
Program: bbtk
Module: $RCSfile: bbwxLayoutSplit.cxx,v $
Language: C++
- Date: $Date: 2008/02/15 12:24:43 $
- Version: $Revision: 1.1 $
-
- 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.
-
+ Date: $Date: 2010/04/08 14:38:00 $
+ Version: $Revision: 1.13 $
=========================================================================*/
+
+/* ---------------------------------------------------------------------
+
+* Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
+* Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
+*
+* This software is governed by the CeCILL-B license under French law and
+* abiding by the rules of distribution of free software. You can use,
+* modify and/ or redistribute the software under the terms of the CeCILL-B
+* license as circulated by CEA, CNRS and INRIA at the following URL
+* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+* or in the file LICENSE.txt.
+*
+* As a counterpart to the access to the source code and rights to copy,
+* modify and redistribute granted by the license, users are provided only
+* with a limited warranty and the software's author, the holder of the
+* economic rights, and the successive licensors have only limited
+* liability.
+*
+* The fact that you are presently reading this means that you have had
+* knowledge of the CeCILL-B license and that you accept its terms.
+* ------------------------------------------------------------------------ */
+
/**
* \file
* \brief
namespace bbwx
{
BBTK_ADD_BLACK_BOX_TO_PACKAGE(wx,LayoutSplit);
- BBTK_USER_BLACK_BOX_IMPLEMENTATION(LayoutSplit,bbtk::WxBlackBox);
-
- void LayoutSplit::bbUserConstructor()
- {
- bbSetInputOrientation("VERTICAL");
- bbSetInputProportion(50);
- bbSetInputWidget1(NULL);
- bbSetInputWidget2(NULL);
- }
+ BBTK_BLACK_BOX_IMPLEMENTATION(LayoutSplit,bbtk::WxBlackBox);
+ //-----------------------------------------------------------------
+ void LayoutSplit::bbUserSetDefaultValues()
+ {
+ bbSetInputOrientation("VERTICAL");
+ bbSetInputProportion(50);
+ bbSetInputWidget1(NULL);
+ bbSetInputWidget2(NULL);
+ }
+
+ //-----------------------------------------------------------------
+ void LayoutSplit::bbUserInitializeProcessing()
+ {
+ }
+
+ //-----------------------------------------------------------------
+ void LayoutSplit::bbUserFinalizeProcessing()
+ {
+ }
+
void LayoutSplit::Process()
{
}
- void LayoutSplit::CreateWidget()
+ void LayoutSplit::CreateWidget(wxWindow* parent)
{
- wxSplitterWindow* w = new wxSplitterWindow(bbGetWxParent(),
+ wxSplitterWindow* w = new wxSplitterWindow(parent, //bbGetWxParent(),
-1,
wxDefaultPosition,
wxDefaultSize,
//wxSize(400,200),
wxSP_3D |
wxSP_LIVE_UPDATE );
- w->SetName( bbtk::std2wx( bbGetInputWinTitle() ) );
- wxWindow* w1 = bbGetInputWidget1();
+ w->SetName( bbtk::std2wx( bbGetInputWinTitle() ) );
+ w->SetMinimumPaneSize(2);
+/*
+ wxWindow* w1 = bbGetInputWidget1();
wxWindow* w2 = bbGetInputWidget2();
if (w1==NULL) { w1=new wxPanel(bbGetWxParent()); }
if (w2==NULL) { w2=new wxPanel(bbGetWxParent()); }
w1->Reparent(w);
w2->Reparent(w);
- int orientation=0;
- if (bbtk::Utilities::loosematch(bbGetInputOrientation(),"0|H|HORIZONTAL")==true) { orientation=0; }
- if (bbtk::Utilities::loosematch(bbGetInputOrientation(),"1|V|VERTICAL")==true) { orientation=1; }
+ */
- if (orientation==1) { w->SplitHorizontally( w1, w2, 100); }
- else { w->SplitVertically( w1, w2, 100); }
+ wxWindow* w1 = bbCreateWidgetOfInput("Widget1",w);
+ wxWindow* w2 = bbCreateWidgetOfInput("Widget2",w);
+ if (w1==NULL) { w1=new wxPanel(parent); }
+ if (w2==NULL) { w2=new wxPanel(parent); }
+
+ int orientation=0;
+ if (bbtk::Utilities::loosematch(bbGetInputOrientation(),"0|H|HORIZONTAL")==true) { orientation=0; }
+ if (bbtk::Utilities::loosematch(bbGetInputOrientation(),"1|V|VERTICAL")==true) { orientation=1; }
+
+ if (orientation==1) { w->SplitHorizontally( w1, w2, 100); }
+ else { w->SplitVertically( w1, w2, 100); }
+
bbSetOutputWidget( w );
}
+
+ // This callback is necessary to get actual processing of the view
+ // when window is shown
+ void LayoutSplit::OnShowWidget()
+ {
+ // std::cout << "LayoutSplit::OnShowWidget()" << std::endl;
+ if (bbGetOutputWidget()==0)
+ {
+ return;
+ //bbtkError("LayoutSplit::OnShowWidget() : Output Widget == 0 !");
+ }
+ wxSplitterWindow* win = (wxSplitterWindow*)bbGetOutputWidget();
+ int w,h;
+ if (win==0)
+ {
+ return;
+ // bbtkError("LayoutSplit::OnShowWidget() : win == 0 !");
+ }
+ win->GetClientSize(&w,&h);
+ int pos = 100;
+ if (bbtk::Utilities::loosematch(bbGetInputOrientation(),
+ "0|H|HORIZONTAL")==true)
+ {
+ pos = (int)(w * bbGetInputProportion() * 0.01);
+ }
+ else
+ {
+ pos = (int)(h * bbGetInputProportion() * 0.01);
+ }
+ // std::cout << "pos = "<<pos<<std::endl;
+
+ win->SetSashPosition(pos,true);
+
+ }
+
+
+
}//namespace bbwx
#endif // _USE_WXWIDGETS_