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);
}
namespace bbwx
{
-
-
-
//=================================================================
class bbwx_EXPORT LayoutSplit : public bbtk::WxBlackBox
{
void OnShowWidget();
protected:
+ wxSplitterWindow *w;
};
//=================================================================
// Already inserted for any WxBlackBox BBTK_CATEGORY("widget");
BBTK_INPUT(LayoutSplit,Widget1,"Upper or left widget",wxWindow*,"");
BBTK_INPUT(LayoutSplit,Widget2,"Lower or right widget",wxWindow*,"");
- BBTK_INPUT(LayoutSplit,Orientation,"Orientation (default H), 0=H=HORIZONTAL , 1=V=VERTICAL",std::string,"");
- BBTK_INPUT(LayoutSplit,Proportion,"Proportion (in percent) of the first children in the window",int,"");
+ BBTK_INPUT(LayoutSplit,Orientation,"(default VERTICAL) Orientation 0=H=HORIZONTAL , 1=V=VERTICAL",std::string,"");
+ BBTK_INPUT(LayoutSplit,Proportion,"(default 50) Proportion (in percent) of the first children in the window",int,"");
BBTK_END_DESCRIBE_BLACK_BOX(LayoutSplit);
//=================================================================
}
};
- TabWidget::TabWidget(LayoutTab* box,
- wxWindow *parent,long style )
+ TabWidget::TabWidget(LayoutTab* box, wxWindow *parent,long style )
: wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL),
mBox(box)
{
-1,
wxDefaultPosition,
// wxDefaultSize,
- wxSize(50,50),
+ wxSize(20,20),
style );
Connect( mwxNotebook->GetId(), wxEVT_NOTEBOOK_PAGE_CHANGED ,
(wxObjectEventFunction)
(void (wxPanel::*)(wxEvent&))
&TabWidget::OnTabChange );
wxBoxSizer *sizer = new wxBoxSizer(wxHORIZONTAL);
- sizer -> Add( mwxNotebook,1,wxGROW,0 );
+ sizer -> Add( mwxNotebook,1,wxGROW,0 );
panel -> SetSizer(sizer);
panel -> SetAutoLayout(true);
panel -> Layout();