1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-09-15 07:50:22 +02:00

EffectUIHost::Initialize uses ShuttleGui

This commit is contained in:
Paul Licameli 2017-10-27 14:42:04 -04:00
parent eb3e5d8f6f
commit c28c170cc0

View File

@ -1009,62 +1009,65 @@ wxPanel *EffectUIHost::BuildButtonBar(wxWindow *parent)
bool EffectUIHost::Initialize() bool EffectUIHost::Initialize()
{ {
EffectPanel *w {};
{ {
auto vs = std::make_unique<wxBoxSizer>(wxVERTICAL); auto gAudioIO = AudioIO::Get();
{ mDisableTransport = !gAudioIO->IsAvailable(mProject);
auto hs = std::make_unique<wxBoxSizer>(wxHORIZONTAL); mPlaying = gAudioIO->IsStreamActive(); // not exactly right, but will suffice
mCapturing = gAudioIO->IsStreamActive() && gAudioIO->GetNumCaptureChannels() > 0;
}
Destroy_ptr<EffectPanel> uw{ safenew EffectPanel(this) }; EffectPanel *w {};
ShuttleGui S{ this, eIsCreating };
{
S.StartHorizontalLay( wxEXPAND );
{
Destroy_ptr<EffectPanel> uw{ safenew EffectPanel( S.GetParent() ) };
RTL_WORKAROUND(uw.get()); RTL_WORKAROUND(uw.get());
// Try to give the window a sensible default/minimum size // Try to give the window a sensible default/minimum size
uw->SetMinSize(wxSize(wxMax(600, mParent->GetSize().GetWidth() * 2 / 3), uw->SetMinSize(wxSize(wxMax(600, mParent->GetSize().GetWidth() * 2 / 3),
mParent->GetSize().GetHeight() / 2)); mParent->GetSize().GetHeight() / 2));
auto gAudioIO = AudioIO::Get();
mDisableTransport = !gAudioIO->IsAvailable(mProject);
mPlaying = gAudioIO->IsStreamActive(); // not exactly right, but will suffice
mCapturing = gAudioIO->IsStreamActive() && gAudioIO->GetNumCaptureChannels() > 0;
ShuttleGui S1{ uw.get(), eIsCreating }; ShuttleGui S1{ uw.get(), eIsCreating };
if (!mClient->PopulateUI(S1)) if (!mClient->PopulateUI(S1))
{ {
return false; return false;
} }
hs->Add((w = uw.release()), 1, wxEXPAND); S.Prop( 1 )
vs->Add(hs.release(), 1, wxEXPAND); .Position(wxEXPAND)
.AddWindow((w = uw.release()));
} }
S.EndHorizontalLay();
wxPanel *buttonPanel = safenew wxPanelWrapper(this, wxID_ANY); S.StartPanel();
const auto bar = BuildButtonBar( buttonPanel ); {
const auto bar = BuildButtonBar( S.GetParent() );
long buttons; long buttons;
if ( mEffect && mEffect->ManualPage().empty() && mEffect->HelpPage().empty()) { if ( mEffect && mEffect->ManualPage().empty() && mEffect->HelpPage().empty()) {
buttons = eApplyButton + eCloseButton; buttons = eApplyButton | eCloseButton;
this->SetAcceleratorTable(wxNullAcceleratorTable); this->SetAcceleratorTable(wxNullAcceleratorTable);
} }
else { else {
buttons = eApplyButton + eCloseButton + eHelpButton; buttons = eApplyButton | eCloseButton | eHelpButton;
wxAcceleratorEntry entries[1]; wxAcceleratorEntry entries[1];
#if defined(__WXMAC__) #if defined(__WXMAC__)
// Is there a standard shortcut on Mac? // Is there a standard shortcut on Mac?
#else #else
entries[0].Set(wxACCEL_NORMAL, (int) WXK_F1, wxID_HELP); entries[0].Set(wxACCEL_NORMAL, (int) WXK_F1, wxID_HELP);
#endif #endif
wxAcceleratorTable accel(1, entries); wxAcceleratorTable accel(1, entries);
this->SetAcceleratorTable(accel); this->SetAcceleratorTable(accel);
}
if (mEffect && mEffect->mUIDebug) {
buttons |= eDebugButton;
}
S.AddStandardButtons(buttons, bar);
} }
S.EndPanel();
if (mEffect && mEffect->mUIDebug) {
buttons += eDebugButton;
}
buttonPanel->SetSizer(CreateStdButtonSizer(buttonPanel, buttons, bar).release());
vs->Add(buttonPanel, 0, wxEXPAND);
SetSizer(vs.release());
} }
Layout(); Layout();