void StripCanvas::Realize( Inspect::Canvas* canvas ) { HELIUM_ASSERT( canvas == this || canvas == NULL ); StrongPtr< StripCanvasWidget > widget = new StripCanvasWidget( this, m_Orientation ); widget->SetPanel( m_Panel ); SetWidget( widget ); int spacing = GetBorder(); wxSizer* sizer = new wxBoxSizer( m_Orientation ); m_Panel->SetSizer( sizer ); sizer->AddSpacer( spacing ); Inspect::V_Control::const_iterator itr = m_Children.begin(); Inspect::V_Control::const_iterator end = m_Children.end(); for( ; itr != end; ++itr ) { Inspect::Control* c = *itr; c->Realize( this ); sizer->Add( Reflect::AssertCast< Widget >( c->GetWidget() )->GetWindow(), 0, wxALIGN_CENTER ); sizer->AddSpacer( spacing ); } m_Panel->Freeze(); { Populate(); Read(); m_Panel->Layout(); } m_Panel->Thaw(); }
void StripCanvasWidget::CreateWindow( wxWindow* parent ) { SetWindow( m_ContainerWindow = new wxPanel( parent, wxID_ANY ) ); int spacing = m_ContainerControl->GetCanvas()->GetBorder(); wxSizer* sizer = NULL; if ( !m_ContainerControl->a_Name.Get().empty() ) { sizer = new wxStaticBoxSizer( m_Orientation, m_ContainerWindow, m_ContainerControl->a_Name.Get() ); } else { sizer = new wxBoxSizer( m_Orientation ); m_StaticText = new wxStaticText( m_ContainerWindow, wxID_ANY, m_ContainerControl->a_Name.Get() ); sizer->Add( m_StaticText, 0, wxALIGN_CENTER, 0); sizer->AddSpacer( spacing ); } // Add all of the child controls to the container m_ContainerWindow->SetSizer( sizer ); m_ContainerWindow->Freeze(); std::vector< Inspect::ControlPtr >::const_iterator itr = m_ContainerControl->GetChildren().begin(); std::vector< Inspect::ControlPtr >::const_iterator end = m_ContainerControl->GetChildren().end(); for( ; itr != end; ++itr ) { Inspect::Control* control = *itr; Inspect::Label* label = Reflect::SafeCast< Inspect::Label >( control ); if ( label ) { label->a_Ellipsize.Set( false ); } control->Realize( m_ContainerControl->GetCanvas() ); sizer->Add( Reflect::AssertCast< Widget >( control->GetWidget() )->GetWindow(), 0, wxALIGN_CENTER ); sizer->AddSpacer( spacing ); } m_ContainerControl->a_Name.Changed().AddMethod( this, &StripCanvasWidget::NameChanged ); m_ContainerControl->a_Icon.Changed().AddMethod( this, &StripCanvasWidget::IconChanged ); m_ContainerWindow->SetHelpText( m_ContainerControl->a_HelpText.Get() ); m_ContainerWindow->Thaw(); m_ContainerWindow->Layout(); }