bbSetInputOrientation("VERTICAL");
bbSetInputProportion(50);
bbSetInputWidget1(NULL);
- bbSetInputWidget2(NULL);
+ bbSetInputWidget2(NULL);
+ w=NULL;
}
//-----------------------------------------------------------------
void LayoutSplit::CreateWidget(wxWindow* parent)
{
- wxSplitterWindow* w = new wxSplitterWindow(parent, //bbGetWxParent(),
- -1,
- wxDefaultPosition,
- wxDefaultSize,
- //wxSize(400,200),
- wxSP_3DSASH |
- wxSP_LIVE_UPDATE );
- w->SetName( bbtk::std2wx( bbGetInputWinTitle() ) );
+ wxPanel *splitterWindowPanel = new wxPanel(parent, -1, wxDefaultPosition, wxSize(40,40) );
+
+ // wxSplitterWindow *w
+ w = new wxSplitterWindow( splitterWindowPanel, //bbGetWxParent(),
+ -1,
+ wxDefaultPosition,
+ wxDefaultSize,
+// wxSize(400,200),
+ wxSP_3DSASH |
+ wxSP_LIVE_UPDATE );
+ w->SetName( bbtk::std2wx( bbGetInputWinTitle() ) );
w->SetMinimumPaneSize(15);
//RaC Nov2012 Correctly resize internal panels with the window resize event
w->SetSashGravity(0.5);
wxWindow* w1 = bbCreateWidgetOfInput("Widget1",w);
wxWindow* w2 = bbCreateWidgetOfInput("Widget2",w);
- if (w1==NULL) { w1=new wxPanel(parent); }
- if (w2==NULL) { w2=new wxPanel(parent); }
+ if (w1==NULL) { w1=new wxPanel(splitterWindowPanel); }
+ if (w2==NULL) { w2=new wxPanel(splitterWindowPanel); }
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 (bbtk::Utilities::loosematch(bbGetInputOrientation(),"0|H|h|horizontal|Horizontal|HORIZONTAL")==true) { orientation=0; }
+ if (bbtk::Utilities::loosematch(bbGetInputOrientation(),"1|V|v|vertical|Vertical|VERTICAL")==true) { orientation=1; }
if (orientation==1) { w->SplitHorizontally( w1, w2, 100); }
else { w->SplitVertically( w1, w2, 100); }
-
- bbSetOutputWidget( w );
+
+//EED 2024-03-30
+ wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
+ sizer->Add( w , 1, wxGROW, 0 );
+ splitterWindowPanel->SetSizer( sizer );
+ splitterWindowPanel->SetAutoLayout(true);
+ splitterWindowPanel->Layout();
+ bbSetOutputWidget( splitterWindowPanel );
+// bbSetOutputWidget( w );
+
}
void LayoutSplit::OnShowWidget()
{
// std::cout << "LayoutSplit::OnShowWidget()" << std::endl;
- if (bbGetOutputWidget()==0)
+ if (bbGetOutputWidget()==NULL)
{
return;
//bbtkError("LayoutSplit::OnShowWidget() : Output Widget == 0 !");
}
- wxSplitterWindow* win = (wxSplitterWindow*)bbGetOutputWidget();
- int w,h;
- if (win==0)
+// wxSplitterWindow* win = (wxSplitterWindow*)bbGetOutputWidget();
+ int width,height;
+ if (w==NULL)
{
return;
// bbtkError("LayoutSplit::OnShowWidget() : win == 0 !");
}
- win->GetClientSize(&w,&h);
- int pos = 100;
+ w->GetParent()->GetParent()->GetClientSize(&width,&height);
+ int pos = 100;
+ double ww = width;
+ double hh = height;
+ double proportion = bbGetInputProportion();
if (bbtk::Utilities::loosematch(bbGetInputOrientation(),
- "0|H|HORIZONTAL")==true)
+ "0|H|h|horizontal|Horizontal|HORIZONTAL")==true)
{
- pos = (int)(w * bbGetInputProportion() * 0.01);
- }
- else
- {
- pos = (int)(h * bbGetInputProportion() * 0.01);
+ pos = (int)(ww * proportion * 0.01);
+ } else {
+ pos = (int)(hh * proportion * 0.01);
}
- // std::cout << "pos = "<<pos<<std::endl;
- win->SetSashPosition(pos,true);
+ printf("EED LayoutSplit::OnShowWidget width=%d height=%d proportion=%d pos=%d box=%s\n", width,height,bbGetInputProportion(),pos, bbGetFullName().c_str() );
+ w->SetSashPosition(pos,true);
//RaC Nov2012 Correctly resize internal panels with the window resize event
- win->SetSashGravity(0.5);
+ w->SetSashGravity(0.5);
}