Audacity 3.2.0
Classes | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
ShuttleGuiBase Class Reference

Base class for shuttling data to and from a GUI. More...

#include <ShuttleGui.h>

Inheritance diagram for ShuttleGuiBase:
[legend]
Collaboration diagram for ShuttleGuiBase:
[legend]

Classes

struct  ListControlColumn
 

Public Member Functions

 ShuttleGuiBase (wxWindow *pParent, teShuttleMode ShuttleMode, bool vertical, wxSize minSize)
 
virtual ~ShuttleGuiBase ()
 
void Init (bool vertical, wxSize minSize)
 
void ResetId ()
 
void HandleOptionality (const TranslatableString &Prompt)
 
wxStaticText * AddPrompt (const TranslatableString &Prompt, int wrapWidth=0)
 Right aligned text string. More...
 
void AddUnits (const TranslatableString &Prompt, int wrapWidth=0)
 Left aligned text string. More...
 
void AddTitle (const TranslatableString &Prompt, int wrapWidth=0)
 Centred text string. More...
 
wxWindow * AddWindow (wxWindow *pWindow, int PositionFlags=wxALIGN_CENTRE)
 
wxSlider * AddSlider (const TranslatableString &Prompt, int pos, int Max, int Min=0)
 
wxSlider * AddVSlider (const TranslatableString &Prompt, int pos, int Max)
 
wxSpinCtrl * AddSpinCtrl (const TranslatableString &Prompt, int Value, int Max, int Min)
 
wxTreeCtrl * AddTree ()
 
wxRadioButton * AddRadioButton (const TranslatableString &Prompt, int selector=0, int initValue=0)
 
wxRadioButton * AddRadioButtonToGroup (const TranslatableString &Prompt, int selector=1, int initValue=0)
 
wxButton * AddButton (const TranslatableString &Text, int PositionFlags=wxALIGN_CENTRE, bool setDefault=false)
 
wxBitmapButton * AddBitmapButton (const wxBitmap &Bitmap, int PositionFlags=wxALIGN_CENTRE, bool setDefault=false)
 
wxStaticText * AddVariableText (const TranslatableString &Str, bool bCenter=false, int PositionFlags=0, int wrapWidth=0)
 
ReadOnlyTextAddReadOnlyText (const TranslatableString &Caption, const wxString &Value)
 
wxTextCtrl * AddTextBox (const TranslatableString &Caption, const wxString &Value, const int nChars)
 
wxTextCtrl * AddNumericTextBox (const TranslatableString &Caption, const wxString &Value, const int nChars, bool acceptEnter=false)
 
wxTextCtrl * AddTextWindow (const wxString &Value)
 Multiline text box that grows. More...
 
wxListBox * AddListBox (const wxArrayStringEx &choices)
 
wxListCtrl * AddListControl (std::initializer_list< const ListControlColumn > columns={}, long listControlStyles=0)
 
wxListCtrl * AddListControlReportMode (std::initializer_list< const ListControlColumn > columns={}, long listControlStyles=0)
 
wxGrid * AddGrid ()
 
wxCheckBox * AddCheckBox (const TranslatableString &Prompt, bool Selected)
 
wxCheckBox * AddCheckBoxOnRight (const TranslatableString &Prompt, bool Selected)
 
wxCheckBox * AddCheckBox (const TranslatableString &Prompt, const wxChar *)=delete
 
wxCheckBox * AddCheckBox (const TranslatableString &Prompt, const char *)=delete
 
wxCheckBox * AddCheckBoxOnRight (const TranslatableString &Prompt, const wxChar *)=delete
 
wxCheckBox * AddCheckBoxOnRight (const TranslatableString &Prompt, const char *)=delete
 
wxComboBox * AddCombo (const TranslatableString &Prompt, const wxString &Selected, const wxArrayStringEx &choices)
 
wxChoice * AddChoice (const TranslatableString &Prompt, const TranslatableStrings &choices, int Selected=-1)
 
wxChoice * AddChoice (const TranslatableString &Prompt, const TranslatableStrings &choices, const TranslatableString &selected)
 
void AddIcon (wxBitmap *pBmp)
 
void AddFixedText (const TranslatableString &Str, bool bCenter=false, int wrapWidth=0)
 
void AddConstTextBox (const TranslatableString &Caption, const TranslatableString &Value)
 Single line text box of fixed size. More...
 
void StartHorizontalLay (int PositionFlags=wxALIGN_CENTRE, int iProp=1)
 
void EndHorizontalLay ()
 
void StartVerticalLay (int iProp=1)
 
void StartVerticalLay (int PositionFlags, int iProp)
 
void EndVerticalLay ()
 
void StartWrapLay (int PositionFlags=wxEXPAND, int iProp=0)
 
void EndWrapLay ()
 
wxScrolledWindow * StartScroller (int iStyle=0)
 
void EndScroller ()
 
wxPanel * StartPanel (int iStyle=0)
 
void EndPanel ()
 
void StartMultiColumn (int nCols, int PositionFlags=wxALIGN_LEFT)
 
void EndMultiColumn ()
 
void StartTwoColumn ()
 
void EndTwoColumn ()
 
void StartThreeColumn ()
 
void EndThreeColumn ()
 
wxStaticBox * StartStatic (const TranslatableString &Str, int iProp=0)
 
void EndStatic ()
 
wxNotebook * StartNotebook ()
 
void EndNotebook ()
 
wxSimplebook * StartSimplebook ()
 
void EndSimplebook ()
 
wxNotebookPageStartNotebookPage (const TranslatableString &Name)
 
void EndNotebookPage ()
 
wxPanel * StartInvisiblePanel (int border=0)
 
void EndInvisiblePanel ()
 
void StartRadioButtonGroup (ChoiceSetting &Setting)
 Call this before any TieRadioButton calls. More...
 
void EndRadioButtonGroup ()
 
bool DoStep (int iStep)
 
int TranslateToIndex (const wxString &Value, const wxArrayStringEx &Choices)
 String-to-Index. More...
 
wxString TranslateFromIndex (const int nIn, const wxArrayStringEx &Choices)
 Index-to-String. More...
 
wxTextCtrl * TieTextBox (const TranslatableString &Caption, wxString &Value, const int nChars=0)
 
wxTextCtrl * TieTextBox (const TranslatableString &Prompt, int &Selected, const int nChars=0)
 
wxTextCtrl * TieTextBox (const TranslatableString &Prompt, double &Value, const int nChars=0)
 
wxTextCtrl * TieNumericTextBox (const TranslatableString &Prompt, int &Value, const int nChars=0, bool acceptEnter=false)
 
wxTextCtrl * TieNumericTextBox (const TranslatableString &Prompt, double &Value, const int nChars=0, bool acceptEnter=false)
 
wxCheckBox * TieCheckBox (const TranslatableString &Prompt, bool &Var)
 
wxCheckBox * TieCheckBoxOnRight (const TranslatableString &Prompt, bool &Var)
 
wxChoice * TieChoice (const TranslatableString &Prompt, TranslatableString &Selected, const TranslatableStrings &choices)
 
wxChoice * TieChoice (const TranslatableString &Prompt, int &Selected, const TranslatableStrings &choices)
 
wxSlider * TieSlider (const TranslatableString &Prompt, int &pos, const int max, const int min=0)
 
wxSlider * TieSlider (const TranslatableString &Prompt, double &pos, const double max, const double min=0.0)
 
wxSlider * TieSlider (const TranslatableString &Prompt, float &pos, const float fMin, const float fMax)
 
wxSlider * TieVSlider (const TranslatableString &Prompt, float &pos, const float fMin, const float fMax)
 
wxRadioButton * TieRadioButton ()
 This function must be within a StartRadioButtonGroup - EndRadioButtonGroup pair. More...
 
wxSpinCtrl * TieSpinCtrl (const TranslatableString &Prompt, int &Value, const int max, const int min=0)
 
virtual wxCheckBox * TieCheckBox (const TranslatableString &Prompt, const BoolSetting &Setting)
 
virtual wxCheckBox * TieCheckBoxOnRight (const TranslatableString &Prompt, const BoolSetting &Setting)
 
virtual wxChoice * TieChoice (const TranslatableString &Prompt, ChoiceSetting &choiceSetting)
 
virtual wxChoice * TieNumberAsChoice (const TranslatableString &Prompt, IntSetting &Setting, const TranslatableStrings &Choices, const std::vector< int > *pInternalChoices=nullptr, int iNoMatchSelector=0)
 
virtual wxTextCtrl * TieTextBox (const TranslatableString &Prompt, const StringSetting &Setting, const int nChars)
 
virtual wxTextCtrl * TieIntegerTextBox (const TranslatableString &Prompt, const IntSetting &Setting, const int nChars)
 
virtual wxTextCtrl * TieNumericTextBox (const TranslatableString &Prompt, const DoubleSetting &Setting, const int nChars, bool acceptEnter=false)
 
virtual wxSlider * TieSlider (const TranslatableString &Prompt, const IntSetting &Setting, const int max, const int min=0)
 
virtual wxSpinCtrl * TieSpinCtrl (const TranslatableString &Prompt, const IntSetting &Setting, const int max, const int min)
 
void SetBorder (int Border)
 
int GetBorder () const noexcept
 
void SetSizerProportion (int iProp)
 
void SetStretchyCol (int i)
 Used to modify an already placed FlexGridSizer to make a column stretchy. More...
 
void SetStretchyRow (int i)
 Used to modify an already placed FlexGridSizer to make a row stretchy. More...
 
wxWindow * GetParent ()
 
ShuttleGuiBaseProp (int iProp)
 
void UseUpId ()
 
wxSizer * GetSizer ()
 

Static Public Member Functions

static void ApplyItem (int step, const DialogDefinition::Item &item, wxWindow *pWind, wxWindow *pDlg)
 

Protected Member Functions

void SetProportions (int Default)
 
void PushSizer ()
 
void PopSizer ()
 
void UpdateSizersCore (bool bPrepend, int Flags, bool prompt=false)
 
void UpdateSizers ()
 
void UpdateSizersC ()
 
void UpdateSizersAtStart ()
 
long GetStyle (long Style)
 

Protected Attributes

wxWindow *const mpDlg
 
wxSizer * pSizerStack [nMaxNestedSizers]
 
std::unique_ptr< ShuttlePrefsmpShuttle
 
int miNoMatchSelector
 
teShuttleMode mShuttleMode
 Used in choices to determine which item to use on no match. More...
 
int miSizerProp
 
int mSizerDepth
 
int miBorder
 
int miProp
 
int miId
 
int miIdNext
 
int miIdSetByUser
 
int miPropSetByUser
 
bool * mpbOptionalFlag
 
std::unique_ptr< wxSizer > mpSubSizer
 
wxSizer * mpSizer
 
wxWindow * mpParent
 
wxWindow * mpWind
 
DialogDefinition::Item mItem
 

Private Member Functions

void DoInsertListColumns (wxListCtrl *pListCtrl, long listControlStyles, std::initializer_list< const ListControlColumn > columns)
 
void DoDataShuttle (const wxString &Name, WrappedType &WrappedRef)
 
wxCheckBox * DoTieCheckBoxOnRight (const TranslatableString &Prompt, WrappedType &WrappedRef)
 
wxTextCtrl * DoTieTextBox (const TranslatableString &Prompt, WrappedType &WrappedRef, const int nChars)
 
wxTextCtrl * DoTieNumericTextBox (const TranslatableString &Prompt, WrappedType &WrappedRef, const int nChars, bool acceptEnter=false)
 
wxCheckBox * DoTieCheckBox (const TranslatableString &Prompt, WrappedType &WrappedRef)
 
wxSlider * DoTieSlider (const TranslatableString &Prompt, WrappedType &WrappedRef, const int max, const int min=0)
 
wxSpinCtrl * DoTieSpinCtrl (const TranslatableString &Prompt, WrappedType &WrappedRef, const int max, const int min=0)
 
wxRadioButton * DoAddRadioButton (const TranslatableString &Prompt, int style, int selector, int initValue)
 Unwrapped string value. More...
 

Private Attributes

std::vector< EnumValueSymbolmRadioSymbols
 
wxString mRadioSettingName
 
std::optional< WrappedTypemRadioValue
 The setting controlled by a group. More...
 
int mRadioCount
 The wrapped value associated with the active radio button. More...
 
wxString mRadioValueString
 The index of this radio item. -1 for none. More...
 

Detailed Description

Base class for shuttling data to and from a GUI.

see also ShuttleGui

Use the:

The code in this file is fairly repetitive. We are dealing with

A technique used to reduce the size of the Tie functions is to have one generic Tie function that uses WrappedType for its data type. Type specific Tie functions themselves call the generic variant.

A second technique used to reduce the size of Tie functions only comes into play for two-step Tie functions. (A two step Tie function is one that transfers data between the registry and the GUI via an intermediate temporary variable). In the two step style, a function ShuttleGuiBase::DoStep() determines which transfers in the function are to be done, reducing repetitive if-then-else's.

Although unusual, these two techniques make the code easier to add to and much easier to check for correctness. The alternative 'more obvious' code that just repeats code as needed is considerably longer.

You would rarely use ShuttleGuiBase directly, instead you'd use ShuttleGui.

There is DOxygen documentation on how to use the ShuttleGui class in The Shuttle System .

Definition at line 239 of file ShuttleGui.h.

Constructor & Destructor Documentation

◆ ShuttleGuiBase()

ShuttleGuiBase::ShuttleGuiBase ( wxWindow *  pParent,
teShuttleMode  ShuttleMode,
bool  vertical,
wxSize  minSize 
)

Definition at line 127 of file ShuttleGui.cpp.

129 : mpDlg{ pParent }
130{
131 wxASSERT( (pParent != NULL ) || ( ShuttleMode != eIsCreating));
132 mpbOptionalFlag = nullptr;
133 mpParent = pParent;
134 mShuttleMode = ShuttleMode;
135 Init( vertical, minSize );
136}
@ eIsCreating
Definition: ShuttleGui.h:37
wxWindow *const mpDlg
Definition: ShuttleGui.h:529
void Init(bool vertical, wxSize minSize)
Definition: ShuttleGui.cpp:142
bool * mpbOptionalFlag
Definition: ShuttleGui.h:550
wxWindow * mpParent
Definition: ShuttleGui.h:554
teShuttleMode mShuttleMode
Used in choices to determine which item to use on no match.
Definition: ShuttleGui.h:536

References eIsCreating, Init(), mpbOptionalFlag, mpParent, and mShuttleMode.

Here is the call graph for this function:

◆ ~ShuttleGuiBase()

ShuttleGuiBase::~ShuttleGuiBase ( )
virtual

Definition at line 138 of file ShuttleGui.cpp.

139{
140}

Member Function Documentation

◆ AddBitmapButton()

wxBitmapButton * ShuttleGuiBase::AddBitmapButton ( const wxBitmap &  Bitmap,
int  PositionFlags = wxALIGN_CENTRE,
bool  setDefault = false 
)

Definition at line 380 of file ShuttleGui.cpp.

382{
383 UseUpId();
385 return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), wxBitmapButton);
386 wxBitmapButton * pBtn;
387 mpWind = pBtn = safenew wxBitmapButton(GetParent(), miId, Bitmap,
388 wxDefaultPosition, wxDefaultSize, GetStyle( wxBU_AUTODRAW ) );
389 pBtn->SetBackgroundColour(
390 wxColour( 246,246,243));
391// wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE));
392 miProp=0;
393 UpdateSizersCore(false, PositionFlags | wxALL);
394 if (setDefault)
395 pBtn->SetDefault();
396 return pBtn;
397}
#define safenew
Definition: MemoryX.h:9
long GetStyle(long Style)
wxWindow * GetParent()
Definition: ShuttleGui.h:495
void UpdateSizersCore(bool bPrepend, int Flags, bool prompt=false)
wxWindow * mpWind
Definition: ShuttleGui.h:555

References eIsCreating, GetParent(), GetStyle(), miId, miProp, mpDlg, mpWind, mShuttleMode, safenew, UpdateSizersCore(), and UseUpId().

Here is the call graph for this function:

◆ AddButton()

wxButton * ShuttleGuiBase::AddButton ( const TranslatableString Text,
int  PositionFlags = wxALIGN_CENTRE,
bool  setDefault = false 
)

Definition at line 361 of file ShuttleGui.cpp.

363{
364 UseUpId();
366 return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), wxButton);
367 wxButton * pBtn;
368 const auto translated = Text.Translation();
369 mpWind = pBtn = safenew wxButton(GetParent(), miId,
370 translated, wxDefaultPosition, wxDefaultSize,
371 GetStyle( 0 ) );
372 mpWind->SetName(wxStripMenuCodes(translated));
373 miProp=0;
374 UpdateSizersCore(false, PositionFlags | wxALL);
375 if (setDefault)
376 pBtn->SetDefault();
377 return pBtn;
378}
wxString Translation() const

References eIsCreating, GetParent(), GetStyle(), miId, miProp, mpDlg, mpWind, mShuttleMode, safenew, TranslatableString::Translation(), UpdateSizersCore(), and UseUpId().

Referenced by cloud::audiocom::ShareAudioDialog::Populate(), and cloud::audiocom::ShareAudioDialog::InitialStatePanel::PopulateInitialStatePanel().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AddCheckBox() [1/3]

wxCheckBox * ShuttleGuiBase::AddCheckBox ( const TranslatableString Prompt,
bool  Selected 
)

Definition at line 310 of file ShuttleGui.cpp.

311{
312 HandleOptionality( Prompt );
313 auto realPrompt = Prompt.Translation();
314 if( mpbOptionalFlag )
315 {
316 AddPrompt( {} );
317 //realPrompt = wxT("");
318 }
319
320 UseUpId();
322 return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), wxCheckBox);
323 wxCheckBox * pCheckBox;
324 miProp=0;
325 mpWind = pCheckBox = safenew wxCheckBox(GetParent(), miId, realPrompt, wxDefaultPosition, wxDefaultSize,
326 GetStyle( 0 ));
327 pCheckBox->SetValue(Selected);
328 if (realPrompt.empty()) {
329 // NVDA 2018.3 does not read controls which are buttons, check boxes or radio buttons which have
330 // an accessibility name which is empty. Bug 1980.
331#if wxUSE_ACCESSIBILITY
332 // so that name can be set on a standard control
333 pCheckBox->SetAccessible(safenew WindowAccessible(pCheckBox));
334#endif
335 pCheckBox->SetName(wxT("\a")); // non-empty string which screen readers do not read
336 }
337 UpdateSizers();
338 return pCheckBox;
339}
wxT("CloseDown"))
wxStaticText * AddPrompt(const TranslatableString &Prompt, int wrapWidth=0)
Right aligned text string.
Definition: ShuttleGui.cpp:237
void HandleOptionality(const TranslatableString &Prompt)
Definition: ShuttleGui.cpp:223
An alternative to using wxWindowAccessible, which in wxWidgets 3.1.1 contained GetParent() which was ...

References AddPrompt(), eIsCreating, GetParent(), GetStyle(), HandleOptionality(), miId, miProp, mpbOptionalFlag, mpDlg, mpWind, mShuttleMode, safenew, TranslatableString::Translation(), UpdateSizers(), UseUpId(), and wxT().

Referenced by DoTieCheckBox().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AddCheckBox() [2/3]

wxCheckBox * ShuttleGuiBase::AddCheckBox ( const TranslatableString Prompt,
const char *   
)
delete

◆ AddCheckBox() [3/3]

wxCheckBox * ShuttleGuiBase::AddCheckBox ( const TranslatableString Prompt,
const wxChar *   
)
delete

◆ AddCheckBoxOnRight() [1/3]

wxCheckBox * ShuttleGuiBase::AddCheckBoxOnRight ( const TranslatableString Prompt,
bool  Selected 
)

For a consistent two-column layout we want labels on the left and controls on the right. CheckBoxes break that rule, so we fake it by placing a static text label and then a tick box with an empty label.

Definition at line 344 of file ShuttleGui.cpp.

345{
346 HandleOptionality( Prompt );
347 AddPrompt( Prompt );
348 UseUpId();
350 return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), wxCheckBox);
351 wxCheckBox * pCheckBox;
352 miProp=0;
353 mpWind = pCheckBox = safenew wxCheckBox(GetParent(), miId, wxT(""), wxDefaultPosition, wxDefaultSize,
354 GetStyle( 0 ));
355 pCheckBox->SetValue(Selected);
356 pCheckBox->SetName(Prompt.Stripped().Translation());
357 UpdateSizers();
358 return pCheckBox;
359}
TranslatableString Stripped(unsigned options=MenuCodes) const
non-mutating, constructs another TranslatableString object

References AddPrompt(), eIsCreating, GetParent(), GetStyle(), HandleOptionality(), miId, miProp, mpDlg, mpWind, mShuttleMode, safenew, TranslatableString::Stripped(), TranslatableString::Translation(), UpdateSizers(), UseUpId(), and wxT().

Referenced by DoTieCheckBoxOnRight(), and TieCheckBoxOnRight().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AddCheckBoxOnRight() [2/3]

wxCheckBox * ShuttleGuiBase::AddCheckBoxOnRight ( const TranslatableString Prompt,
const char *   
)
delete

◆ AddCheckBoxOnRight() [3/3]

wxCheckBox * ShuttleGuiBase::AddCheckBoxOnRight ( const TranslatableString Prompt,
const wxChar *   
)
delete

◆ AddChoice() [1/2]

wxChoice * ShuttleGuiBase::AddChoice ( const TranslatableString Prompt,
const TranslatableStrings choices,
const TranslatableString selected 
)

Definition at line 434 of file ShuttleGui.cpp.

436{
437 return AddChoice(
438 Prompt, choices, make_iterator_range( choices ).index( Selected ) );
439}
IteratorRange< Iterator > make_iterator_range(const Iterator &i1, const Iterator &i2)
Definition: IteratorX.h:210
wxChoice * AddChoice(const TranslatableString &Prompt, const TranslatableStrings &choices, int Selected=-1)
Definition: ShuttleGui.cpp:399

References AddChoice(), and make_iterator_range().

Here is the call graph for this function:

◆ AddChoice() [2/2]

wxChoice * ShuttleGuiBase::AddChoice ( const TranslatableString Prompt,
const TranslatableStrings choices,
int  Selected = -1 
)

Definition at line 399 of file ShuttleGui.cpp.

401{
402 HandleOptionality( Prompt );
403 AddPrompt( Prompt );
404 UseUpId();
406 return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), wxChoice);
407 wxChoice * pChoice;
408 miProp=0;
409
410 mpWind = pChoice = safenew wxChoice(
411 GetParent(),
412 miId,
413 wxDefaultPosition,
414 wxDefaultSize,
415 transform_container<wxArrayString>(
416 choices, std::mem_fn( &TranslatableString::StrippedTranslation ) ),
417 GetStyle( 0 ) );
418
419 pChoice->SetMinSize( { 180, -1 } );// Use -1 for 'default size' - Platform specific.
420#ifdef __WXMAC__
421#if wxUSE_ACCESSIBILITY
422 // so that name can be set on a standard control
423 mpWind->SetAccessible(safenew WindowAccessible(mpWind));
424#endif
425#endif
426 pChoice->SetName(Prompt.Stripped().Translation());
427 if ( Selected >= 0 && Selected < (int)choices.size() )
428 pChoice->SetSelection( Selected );
429
430 UpdateSizers();
431 return pChoice;
432}
wxString StrippedTranslation() const

References AddPrompt(), eIsCreating, GetParent(), GetStyle(), HandleOptionality(), miId, miProp, mpDlg, mpWind, mShuttleMode, safenew, TranslatableString::Stripped(), TranslatableString::StrippedTranslation(), TranslatableString::Translation(), UpdateSizers(), and UseUpId().

Referenced by AddChoice(), and TieChoice().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AddCombo()

wxComboBox * ShuttleGuiBase::AddCombo ( const TranslatableString Prompt,
const wxString &  Selected,
const wxArrayStringEx choices 
)

Definition at line 518 of file ShuttleGui.cpp.

521{
522 const auto translated = Prompt.Translation();
523 HandleOptionality( Prompt );
524 AddPrompt( Prompt );
525 UseUpId();
527 return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), wxComboBox);
528 wxComboBox * pCombo;
529 miProp=0;
530
531 int n = choices.size();
532 if( n>50 ) n=50;
533 int i;
534 wxString Choices[50];
535 for(i=0;i<n;i++)
536 {
537 Choices[i] = choices[i];
538 }
539
540 mpWind = pCombo = safenew wxComboBox(GetParent(), miId, Selected, wxDefaultPosition, wxDefaultSize,
541 n, Choices, GetStyle( 0 ));
542 mpWind->SetName(wxStripMenuCodes(translated));
543
544 UpdateSizers();
545 return pCombo;
546}

References AddPrompt(), eIsCreating, GetParent(), GetStyle(), HandleOptionality(), miId, miProp, mpDlg, mpWind, mShuttleMode, safenew, TranslatableString::Translation(), UpdateSizers(), and UseUpId().

Here is the call graph for this function:

◆ AddConstTextBox()

void ShuttleGuiBase::AddConstTextBox ( const TranslatableString Caption,
const TranslatableString Value 
)

Single line text box of fixed size.

Definition at line 738 of file ShuttleGui.cpp.

740{
741 HandleOptionality( Prompt );
742 AddPrompt( Prompt );
743 UseUpId();
745 return;
746// return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), wx);
747 miProp=0;
748 UpdateSizers();
749 miProp=0;
750 const auto translatedValue = Value.Translation();
751 mpWind = safenew wxStaticText(GetParent(), miId,
752 translatedValue, wxDefaultPosition, wxDefaultSize,
753 GetStyle( 0 ));
754 mpWind->SetName(translatedValue); // fix for bug 577 (NVDA/Narrator screen readers do not read static text in dialogs)
755 UpdateSizers();
756}

References AddPrompt(), eIsCreating, GetParent(), GetStyle(), HandleOptionality(), miId, miProp, mpWind, mShuttleMode, safenew, TranslatableString::Translation(), UpdateSizers(), and UseUpId().

Here is the call graph for this function:

◆ AddFixedText()

void ShuttleGuiBase::AddFixedText ( const TranslatableString Str,
bool  bCenter = false,
int  wrapWidth = 0 
)

Definition at line 441 of file ShuttleGui.cpp.

443{
444 const auto translated = Str.Translation();
445 UseUpId();
447 return;
448 auto text = safenew wxStaticText(GetParent(),
449 miId, translated, wxDefaultPosition, wxDefaultSize,
450 GetStyle( wxALIGN_LEFT ));
451 mpWind = text;
452 if ( wrapWidth > 0 )
453 text->Wrap( wrapWidth );
454 mpWind->SetName(wxStripMenuCodes(translated)); // fix for bug 577 (NVDA/Narrator screen readers do not read static text in dialogs)
455 if( bCenter )
456 {
457 miProp=1;
459 }
460 else
461 UpdateSizers();
462}
void UpdateSizersC()

References eIsCreating, GetParent(), GetStyle(), miId, miProp, mpWind, mShuttleMode, safenew, TranslatableString::Translation(), UpdateSizers(), UpdateSizersC(), and UseUpId().

Referenced by cloud::audiocom::ShareAudioDialog::InitialStatePanel::PopulateInitialStatePanel(), PitchAndSpeedDialog::PopulateOrExchange(), and cloud::audiocom::ShareAudioDialog::ProgressPanel::PopulateProgressPanel().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AddGrid()

wxGrid * ShuttleGuiBase::AddGrid ( )

Definition at line 773 of file ShuttleGui.cpp.

774{
775 UseUpId();
777 return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), wxGrid);
778 wxGrid * pGrid;
779 SetProportions( 1 );
780 mpWind = pGrid = safenew wxGrid(GetParent(), miId, wxDefaultPosition,
781 wxDefaultSize, GetStyle( wxWANTS_CHARS ));
782 pGrid->SetMinSize( wxSize( 120, 150 ));
783 UpdateSizers();
784 return pGrid;
785}
void SetProportions(int Default)

References eIsCreating, GetParent(), GetStyle(), miId, mpDlg, mpWind, mShuttleMode, safenew, SetProportions(), UpdateSizers(), and UseUpId().

Here is the call graph for this function:

◆ AddIcon()

void ShuttleGuiBase::AddIcon ( wxBitmap *  pBmp)

Definition at line 873 of file ShuttleGui.cpp.

874{
875 UseUpId();
877// return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), wx);
878 return;
879 wxBitmapButton * pBtn;
880 mpWind = pBtn = safenew wxBitmapButton(GetParent(), miId, *pBmp,
881 wxDefaultPosition, wxDefaultSize, GetStyle( wxBU_AUTODRAW ) );
882 pBtn->SetWindowStyle( wxBORDER_NONE );
883 pBtn->SetCanFocus(false);
885}

References eIsCreating, GetParent(), GetStyle(), miId, mpWind, mShuttleMode, safenew, UpdateSizersC(), and UseUpId().

Here is the call graph for this function:

◆ AddListBox()

wxListBox * ShuttleGuiBase::AddListBox ( const wxArrayStringEx choices)

Definition at line 758 of file ShuttleGui.cpp.

759{
760 UseUpId();
762 return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), wxListBox);
763 wxListBox * pListBox;
764 SetProportions( 1 );
765 mpWind = pListBox = safenew wxListBox(GetParent(), miId,
766 wxDefaultPosition, wxDefaultSize, choices, GetStyle(0));
767 pListBox->SetMinSize( wxSize( 120,150 ));
768 UpdateSizers();
769 return pListBox;
770}

References eIsCreating, GetParent(), GetStyle(), miId, mpDlg, mpWind, mShuttleMode, safenew, SetProportions(), UpdateSizers(), and UseUpId().

Here is the call graph for this function:

◆ AddListControl()

wxListCtrl * ShuttleGuiBase::AddListControl ( std::initializer_list< const ListControlColumn columns = {},
long  listControlStyles = 0 
)

Definition at line 787 of file ShuttleGui.cpp.

791{
792 UseUpId();
794 return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), wxListCtrl);
795 wxListCtrl * pListCtrl;
796 SetProportions( 1 );
797 mpWind = pListCtrl = safenew wxListCtrl(GetParent(), miId,
798 wxDefaultPosition, wxDefaultSize, GetStyle( wxLC_ICON ));
799 pListCtrl->SetMinSize( wxSize( 120,150 ));
800 UpdateSizers();
801
802 DoInsertListColumns( pListCtrl, listControlStyles, columns );
803
804 return pListCtrl;
805}
void DoInsertListColumns(wxListCtrl *pListCtrl, long listControlStyles, std::initializer_list< const ListControlColumn > columns)
Definition: ShuttleGui.cpp:828

References DoInsertListColumns(), eIsCreating, GetParent(), GetStyle(), miId, mpDlg, mpWind, mShuttleMode, safenew, SetProportions(), UpdateSizers(), and UseUpId().

Here is the call graph for this function:

◆ AddListControlReportMode()

wxListCtrl * ShuttleGuiBase::AddListControlReportMode ( std::initializer_list< const ListControlColumn columns = {},
long  listControlStyles = 0 
)

Definition at line 807 of file ShuttleGui.cpp.

811{
812 UseUpId();
814 return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), wxListCtrl);
815 wxListCtrl * pListCtrl;
816 SetProportions( 1 );
817 mpWind = pListCtrl = safenew wxListCtrl(GetParent(), miId,
818 wxDefaultPosition, wxSize(230,120),//wxDefaultSize,
819 GetStyle( wxLC_REPORT | wxLC_HRULES | wxLC_VRULES | wxSUNKEN_BORDER ));
820// pListCtrl->SetMinSize( wxSize( 120,150 ));
821 UpdateSizers();
822
823 DoInsertListColumns( pListCtrl, listControlStyles, columns );
824
825 return pListCtrl;
826}

References DoInsertListColumns(), eIsCreating, GetParent(), GetStyle(), miId, mpDlg, mpWind, mShuttleMode, safenew, SetProportions(), UpdateSizers(), and UseUpId().

Here is the call graph for this function:

◆ AddNumericTextBox()

wxTextCtrl * ShuttleGuiBase::AddNumericTextBox ( const TranslatableString Caption,
const wxString &  Value,
const int  nChars,
bool  acceptEnter = false 
)

Definition at line 675 of file ShuttleGui.cpp.

678{
679 const auto translated = Caption.Translation();
680 HandleOptionality( Caption );
681 AddPrompt( Caption );
682 UseUpId();
684 return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), wxTextCtrl);
685 wxTextCtrl * pTextCtrl;
686 wxSize Size(wxDefaultSize);
687 if( nChars > 0 )
688 {
689 Size.SetWidth( nChars *5 );
690 }
691 miProp=0;
692
693#ifdef EXPERIMENTAL_RIGHT_ALIGNED_TEXTBOXES
694 long flags = wxTE_RIGHT;
695#else
696 long flags = wxTE_LEFT;
697#endif
698
699 if (acceptEnter)
700 flags = wxTE_PROCESS_ENTER;
701
702 wxTextValidator Validator(wxFILTER_NUMERIC);
703 mpWind = pTextCtrl = safenew wxTextCtrl(GetParent(), miId, Value,
704 wxDefaultPosition, Size, GetStyle( flags ),
705 Validator // It's OK to pass this. It will be cloned.
706 );
707#if wxUSE_ACCESSIBILITY
708 // so that name can be set on a standard control
709 mpWind->SetAccessible(safenew WindowAccessible(mpWind));
710#endif
711 mpWind->SetName(wxStripMenuCodes(translated));
712 UpdateSizers();
713 return pTextCtrl;
714}
A Validator is an object which checks whether a wxVariant satisfies a certain criterion....
Definition: Validators.h:54

References AddPrompt(), eIsCreating, GetParent(), GetStyle(), HandleOptionality(), miId, miProp, mpDlg, mpWind, mShuttleMode, safenew, TranslatableString::Translation(), UpdateSizers(), and UseUpId().

Referenced by DoTieNumericTextBox().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AddPrompt()

wxStaticText * ShuttleGuiBase::AddPrompt ( const TranslatableString Prompt,
int  wrapWidth = 0 
)

Right aligned text string.

Definition at line 237 of file ShuttleGui.cpp.

238{
240 return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), wxStaticText);
241 //wxLogDebug( "Prompt: [%s] Id:%i (%i)", Prompt.c_str(), miId, miIdSetByUser ) ;
242 if( mpbOptionalFlag ){
243 bool * pVar = mpbOptionalFlag;
244 mpbOptionalFlag = nullptr;
245 TieCheckBox( {}, *pVar);
246 //return;
247 }
248 if( Prompt.empty() )
249 return nullptr;
250 miProp=1;
251 const auto translated = Prompt.Translation();
252 auto text = safenew wxStaticText(GetParent(), -1, translated, wxDefaultPosition, wxDefaultSize,
253 GetStyle( wxALIGN_RIGHT ));
254 mpWind = text;
255 if (wrapWidth > 0)
256 text->Wrap(wrapWidth);
257 mpWind->SetName(wxStripMenuCodes(translated)); // fix for bug 577 (NVDA/Narrator screen readers do not read static text in dialogs)
258 UpdateSizersCore( false, wxALL | wxALIGN_CENTRE_VERTICAL, true );
259
260 return text;
261}
wxCheckBox * TieCheckBox(const TranslatableString &Prompt, bool &Var)

References eIsCreating, TranslatableString::empty(), GetParent(), GetStyle(), miId, miProp, mpbOptionalFlag, mpDlg, mpWind, mShuttleMode, safenew, TieCheckBox(), TranslatableString::Translation(), and UpdateSizersCore().

Referenced by AddCheckBox(), AddCheckBoxOnRight(), AddChoice(), AddCombo(), AddConstTextBox(), AddNumericTextBox(), AddReadOnlyText(), AddSlider(), AddSpinCtrl(), and AddTextBox().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AddRadioButton()

wxRadioButton * ShuttleGuiBase::AddRadioButton ( const TranslatableString Prompt,
int  selector = 0,
int  initValue = 0 
)

Definition at line 569 of file ShuttleGui.cpp.

571{
572 return DoAddRadioButton( Prompt, wxRB_GROUP, selector, initValue );
573}
wxRadioButton * DoAddRadioButton(const TranslatableString &Prompt, int style, int selector, int initValue)
Unwrapped string value.
Definition: ShuttleGui.cpp:549

References DoAddRadioButton().

Here is the call graph for this function:

◆ AddRadioButtonToGroup()

wxRadioButton * ShuttleGuiBase::AddRadioButtonToGroup ( const TranslatableString Prompt,
int  selector = 1,
int  initValue = 0 
)

Definition at line 575 of file ShuttleGui.cpp.

577{
578 return DoAddRadioButton( Prompt, 0, selector, initValue );
579}

References DoAddRadioButton().

Here is the call graph for this function:

◆ AddReadOnlyText()

ReadOnlyText * ShuttleGuiBase::AddReadOnlyText ( const TranslatableString Caption,
const wxString &  Value 
)

Definition at line 497 of file ShuttleGui.cpp.

499{
500 const auto translated = Caption.Translation();
501 auto style = GetStyle( wxBORDER_NONE );
502 HandleOptionality( Caption );
503 mItem.miStyle = wxALIGN_CENTER_VERTICAL;
504 AddPrompt( Caption );
505 UseUpId();
507 return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), ReadOnlyText);
508 ReadOnlyText * pReadOnlyText;
509 miProp=0;
510
511 mpWind = pReadOnlyText = safenew ReadOnlyText(GetParent(), miId, Value,
512 wxDefaultPosition, wxDefaultSize, GetStyle( style ));
513 mpWind->SetName(wxStripMenuCodes(translated));
514 UpdateSizers();
515 return pReadOnlyText;
516}
DialogDefinition::Item mItem
Definition: ShuttleGui.h:582

References AddPrompt(), eIsCreating, GetParent(), GetStyle(), HandleOptionality(), miId, miProp, DialogDefinition::Item::miStyle, mItem, mpDlg, mpWind, mShuttleMode, safenew, anonymous_namespace{AudacityDontAskAgainMessageDialog.cpp}::style, TranslatableString::Translation(), UpdateSizers(), and UseUpId().

Here is the call graph for this function:

◆ AddSlider()

wxSlider * ShuttleGuiBase::AddSlider ( const TranslatableString Prompt,
int  pos,
int  Max,
int  Min = 0 
)

Definition at line 590 of file ShuttleGui.cpp.

592{
593 HandleOptionality( Prompt );
594 AddPrompt( Prompt );
595 UseUpId();
597 return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), wxSlider);
598 wxSlider * pSlider;
600 pos, Min, Max,
601 wxDefaultPosition,
602 // Bug2289: On Linux at least, sliders like to be constructed with the
603 // proper size, not reassigned size later
604 ( ( mItem.mWindowSize == wxSize{} ) ? wxDefaultSize : mItem.mWindowSize ),
605 GetStyle( wxSL_HORIZONTAL | wxSL_LABELS | wxSL_AUTOTICKS )
606 );
607#if wxUSE_ACCESSIBILITY
608 // so that name can be set on a standard control
609 mpWind->SetAccessible(safenew WindowAccessible(mpWind));
610#endif
611 mpWind->SetName(wxStripMenuCodes(Prompt.Translation()));
612 miProp=1;
613 UpdateSizers();
614 return pSlider;
615}

References AddPrompt(), eIsCreating, GetParent(), GetStyle(), HandleOptionality(), miId, miProp, mItem, mpDlg, mpWind, mShuttleMode, DialogDefinition::Item::mWindowSize, safenew, TranslatableString::Translation(), UpdateSizers(), and UseUpId().

Referenced by DoTieSlider().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AddSpinCtrl()

wxSpinCtrl * ShuttleGuiBase::AddSpinCtrl ( const TranslatableString Prompt,
int  Value,
int  Max,
int  Min 
)

Definition at line 617 of file ShuttleGui.cpp.

619{
620 const auto translated = Prompt.Translation();
621 HandleOptionality( Prompt );
622 AddPrompt( Prompt );
623 UseUpId();
625 return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), wxSpinCtrl);
626 wxSpinCtrl * pSpinCtrl;
627 mpWind = pSpinCtrl = safenew wxSpinCtrl(GetParent(), miId,
628 wxEmptyString,
629 wxDefaultPosition, wxDefaultSize,
630 GetStyle( wxSP_VERTICAL | wxSP_ARROW_KEYS ),
631 Min, Max, Value
632 );
633 mpWind->SetName(wxStripMenuCodes(translated));
634 miProp=1;
635 UpdateSizers();
636 return pSpinCtrl;
637}

References AddPrompt(), eIsCreating, GetParent(), GetStyle(), HandleOptionality(), miId, miProp, mpDlg, mpWind, mShuttleMode, safenew, TranslatableString::Translation(), UpdateSizers(), and UseUpId().

Referenced by DoTieSpinCtrl().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AddTextBox()

wxTextCtrl * ShuttleGuiBase::AddTextBox ( const TranslatableString Caption,
const wxString &  Value,
const int  nChars 
)

Definition at line 639 of file ShuttleGui.cpp.

641{
642 const auto translated = Caption.Translation();
643 HandleOptionality( Caption );
644 AddPrompt( Caption );
645 UseUpId();
647 return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), wxTextCtrl);
648 wxTextCtrl * pTextCtrl;
649 wxSize Size(wxDefaultSize);
650 if( nChars > 0 )
651 {
652 int width;
653 mpDlg->GetTextExtent( wxT("9"), &width, nullptr );
654 Size.SetWidth( nChars * width );
655 }
656 miProp=0;
657
658#ifdef EXPERIMENTAL_RIGHT_ALIGNED_TEXTBOXES
659 long flags = wxTE_RIGHT;
660#else
661 long flags = wxTE_LEFT;
662#endif
663
664 mpWind = pTextCtrl = safenew wxTextCtrlWrapper(GetParent(), miId, Value,
665 wxDefaultPosition, Size, GetStyle( flags ));
666#if wxUSE_ACCESSIBILITY
667 // so that name can be set on a standard control
668 mpWind->SetAccessible(safenew WindowAccessible(mpWind));
669#endif
670 mpWind->SetName(wxStripMenuCodes(translated));
671 UpdateSizers();
672 return pTextCtrl;
673}

References AddPrompt(), eIsCreating, GetParent(), GetStyle(), HandleOptionality(), miId, miProp, mpDlg, mpWind, mShuttleMode, safenew, TranslatableString::Translation(), UpdateSizers(), UseUpId(), and wxT().

Referenced by DoTieTextBox(), ErrorReportDialog::ErrorReportDialog(), and cloud::audiocom::ShareAudioDialog::InitialStatePanel::PopulateInitialStatePanel().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AddTextWindow()

wxTextCtrl * ShuttleGuiBase::AddTextWindow ( const wxString &  Value)

Multiline text box that grows.

Definition at line 717 of file ShuttleGui.cpp.

718{
719 UseUpId();
721 return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), wxTextCtrl);
722 wxTextCtrl * pTextCtrl;
723 SetProportions( 1 );
724 mpWind = pTextCtrl = safenew wxTextCtrl(GetParent(), miId, Value,
725 wxDefaultPosition, wxDefaultSize, GetStyle( wxTE_MULTILINE ));
726#if wxUSE_ACCESSIBILITY
727 // so that name can be set on a standard control
728 mpWind->SetAccessible(safenew WindowAccessible(mpWind));
729#endif
730 UpdateSizers();
731 // Start off at start of window...
732 pTextCtrl->SetInsertionPoint( 0 );
733 pTextCtrl->ShowPosition( 0 );
734 return pTextCtrl;
735}

References eIsCreating, GetParent(), GetStyle(), miId, mpDlg, mpWind, mShuttleMode, safenew, SetProportions(), UpdateSizers(), and UseUpId().

Referenced by ErrorDialog::ErrorDialog().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AddTitle()

void ShuttleGuiBase::AddTitle ( const TranslatableString Prompt,
int  wrapWidth = 0 
)

Centred text string.

Definition at line 282 of file ShuttleGui.cpp.

283{
284 if( Prompt.empty() )
285 return;
287 return;
288 const auto translated = Prompt.Translation();
289 auto text = safenew wxStaticText(GetParent(), -1, translated, wxDefaultPosition, wxDefaultSize,
290 GetStyle( wxALIGN_CENTRE ));
291 mpWind = text;
292 if (wrapWidth > 0)
293 text->Wrap(wrapWidth);
294 mpWind->SetName(translated); // fix for bug 577 (NVDA/Narrator screen readers do not read static text in dialogs)
295 UpdateSizers();
296}

References eIsCreating, TranslatableString::empty(), GetParent(), GetStyle(), mpWind, mShuttleMode, safenew, TranslatableString::Translation(), and UpdateSizers().

Here is the call graph for this function:

◆ AddTree()

wxTreeCtrl * ShuttleGuiBase::AddTree ( )

Definition at line 859 of file ShuttleGui.cpp.

860{
861 UseUpId();
863 return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), wxTreeCtrl);
864 wxTreeCtrl * pTreeCtrl;
865 SetProportions( 1 );
866 mpWind = pTreeCtrl = safenew wxTreeCtrl(GetParent(), miId, wxDefaultPosition, wxDefaultSize,
867 GetStyle( wxTR_HAS_BUTTONS ));
868 pTreeCtrl->SetMinSize( wxSize( 120,650 ));
869 UpdateSizers();
870 return pTreeCtrl;
871}

References eIsCreating, GetParent(), GetStyle(), miId, mpDlg, mpWind, mShuttleMode, safenew, SetProportions(), UpdateSizers(), and UseUpId().

Here is the call graph for this function:

◆ AddUnits()

void ShuttleGuiBase::AddUnits ( const TranslatableString Prompt,
int  wrapWidth = 0 
)

Left aligned text string.

Definition at line 264 of file ShuttleGui.cpp.

265{
266 if( Prompt.empty() )
267 return;
269 return;
270 miProp = 1;
271 const auto translated = Prompt.Translation();
272 auto text = safenew wxStaticText(GetParent(), -1, translated, wxDefaultPosition, wxDefaultSize,
273 GetStyle( wxALIGN_LEFT ));
274 mpWind = text;
275 if (wrapWidth > 0)
276 text->Wrap(wrapWidth);
277 mpWind->SetName(translated); // fix for bug 577 (NVDA/Narrator screen readers do not read static text in dialogs)
278 UpdateSizersCore( false, wxALL | wxALIGN_CENTRE_VERTICAL );
279}

References eIsCreating, TranslatableString::empty(), GetParent(), GetStyle(), miProp, mpWind, mShuttleMode, safenew, TranslatableString::Translation(), and UpdateSizersCore().

Here is the call graph for this function:

◆ AddVariableText()

wxStaticText * ShuttleGuiBase::AddVariableText ( const TranslatableString Str,
bool  bCenter = false,
int  PositionFlags = 0,
int  wrapWidth = 0 
)

Definition at line 464 of file ShuttleGui.cpp.

467{
468 const auto translated = Str.Translation();
469 UseUpId();
471 return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), wxStaticText);
472
473 wxStaticText *pStatic;
474 auto text = pStatic = safenew wxStaticText(GetParent(), miId, translated,
475 wxDefaultPosition, wxDefaultSize,
476 GetStyle( wxALIGN_LEFT ));
477 mpWind = text;
478 if ( wrapWidth > 0 )
479 text->Wrap( wrapWidth );
480 mpWind->SetName(wxStripMenuCodes(translated)); // fix for bug 577 (NVDA/Narrator screen readers do not read static text in dialogs)
481 if( bCenter )
482 {
483 miProp=1;
484 if( PositionFlags )
485 UpdateSizersCore( false, PositionFlags );
486 else
488 }
489 else
490 if( PositionFlags )
491 UpdateSizersCore( false, PositionFlags );
492 else
493 UpdateSizers();
494 return pStatic;
495}

References eIsCreating, GetParent(), GetStyle(), miId, miProp, mpDlg, mpWind, mShuttleMode, safenew, TranslatableString::Translation(), UpdateSizers(), UpdateSizersC(), UpdateSizersCore(), and UseUpId().

Referenced by ErrorReportDialog::ErrorReportDialog(), cloud::audiocom::ShareAudioDialog::InitialStatePanel::PopulateInitialStatePanel(), and cloud::audiocom::ShareAudioDialog::ProgressPanel::PopulateProgressPanel().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AddVSlider()

wxSlider * ShuttleGuiBase::AddVSlider ( const TranslatableString Prompt,
int  pos,
int  Max 
)

◆ AddWindow()

wxWindow * ShuttleGuiBase::AddWindow ( wxWindow *  pWindow,
int  PositionFlags = wxALIGN_CENTRE 
)

Very generic 'Add' function. We can add anything we like. Useful for unique controls

Definition at line 300 of file ShuttleGui.cpp.

301{
303 return pWindow;
304 mpWind = pWindow;
305 SetProportions( 0 );
306 UpdateSizersCore(false, PositionFlags | wxALL);
307 return pWindow;
308}

References eIsCreating, mpWind, mShuttleMode, SetProportions(), and UpdateSizersCore().

Referenced by cloud::audiocom::ShareAudioDialog::InitialStatePanel::PopulateInitialStatePanel(), and cloud::audiocom::ShareAudioDialog::ProgressPanel::PopulateProgressPanel().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ApplyItem()

void ShuttleGuiBase::ApplyItem ( int  step,
const DialogDefinition::Item item,
wxWindow *  pWind,
wxWindow *  pDlg 
)
static

Definition at line 2092 of file ShuttleGui.cpp.

2094{
2095 if ( step == 0 ) {
2096 // Do these steps before adding the window to the sizer
2097 if( item.mUseBestSize )
2098 pWind->SetMinSize( pWind->GetBestSize() );
2099 else if( item.mHasMinSize )
2100 pWind->SetMinSize( item.mMinSize );
2101
2102 if ( item.mWindowSize != wxSize{} )
2103 pWind->SetSize( item.mWindowSize );
2104 }
2105 else if ( step == 1) {
2106 // Apply certain other optional window attributes here
2107
2108 if ( item.mValidatorSetter )
2109 item.mValidatorSetter( pWind );
2110
2111 if ( !item.mToolTip.empty() )
2112 pWind->SetToolTip( item.mToolTip.Translation() );
2113
2114 if ( !item.mName.empty() ) {
2115 pWind->SetName( item.mName.Stripped().Translation() );
2116#ifndef __WXMAC__
2117 if (auto pButton = dynamic_cast< wxBitmapButton* >( pWind ))
2118 pButton->SetLabel( item.mName.Translation() );
2119#endif
2120 }
2121
2122 if ( !item.mNameSuffix.empty() )
2123 pWind->SetName(
2124 pWind->GetName() + " " + item.mNameSuffix.Translation() );
2125
2126 if (item.mFocused)
2127 pWind->SetFocus();
2128
2129 if (item.mDisabled)
2130 pWind->Enable( false );
2131
2132 for (auto &pair : item.mRootConnections)
2133 pWind->Connect( pair.first, pair.second, nullptr, pDlg );
2134 }
2135}
std::function< void(wxWindow *) > mValidatorSetter
Definition: ShuttleGui.h:214
std::vector< std::pair< wxEventType, wxObjectEventFunction > > mRootConnections
Definition: ShuttleGui.h:219
TranslatableString mToolTip
Definition: ShuttleGui.h:215
TranslatableString mName
Definition: ShuttleGui.h:216
TranslatableString mNameSuffix
Definition: ShuttleGui.h:217

References TranslatableString::empty(), DialogDefinition::Item::mDisabled, DialogDefinition::Item::mFocused, DialogDefinition::Item::mHasMinSize, DialogDefinition::Item::mMinSize, DialogDefinition::Item::mName, DialogDefinition::Item::mNameSuffix, DialogDefinition::Item::mRootConnections, DialogDefinition::Item::mToolTip, DialogDefinition::Item::mUseBestSize, DialogDefinition::Item::mValidatorSetter, DialogDefinition::Item::mWindowSize, TranslatableString::Stripped(), and TranslatableString::Translation().

Referenced by UpdateSizersCore().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DoAddRadioButton()

wxRadioButton * ShuttleGuiBase::DoAddRadioButton ( const TranslatableString Prompt,
int  style,
int  selector,
int  initValue 
)
private

Unwrapped string value.

Todo:
This function and the next two, suitably adapted, could be used by TieRadioButton.

Definition at line 549 of file ShuttleGui.cpp.

551{
552 const auto translated = Prompt.Translation();
555 UseUpId();
557 return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), wxRadioButton);
558 wxRadioButton * pRad;
559 mpWind = pRad = safenew wxRadioButton(GetParent(), miId, translated,
560 wxDefaultPosition, wxDefaultSize, GetStyle( style ) );
561 mpWind->SetName(wxStripMenuCodes(translated));
562 if ( style )
563 pRad->SetValue( true );
564 UpdateSizers();
565 pRad->SetValue( selector == initValue );
566 return pRad;
567}

References eIsCreating, GetParent(), GetStyle(), miId, mpDlg, mpWind, mShuttleMode, safenew, anonymous_namespace{AudacityDontAskAgainMessageDialog.cpp}::style, TranslatableString::Translation(), UpdateSizers(), and UseUpId().

Referenced by AddRadioButton(), and AddRadioButtonToGroup().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DoDataShuttle()

void ShuttleGuiBase::DoDataShuttle ( const wxString &  Name,
WrappedType WrappedRef 
)
private

When we're exchanging with the configured shuttle rather than with the GUI We use this function.

Definition at line 1252 of file ShuttleGui.cpp.

1253{
1254 wxASSERT( mpShuttle );
1255 mpShuttle->TransferWrappedType( Name, WrappedRef );
1256}
std::unique_ptr< ShuttlePrefs > mpShuttle
Definition: ShuttleGui.h:532

References mpShuttle.

Referenced by EndRadioButtonGroup(), StartRadioButtonGroup(), TieCheckBox(), TieCheckBoxOnRight(), TieChoice(), TieIntegerTextBox(), TieNumericTextBox(), TieSlider(), TieSpinCtrl(), and TieTextBox().

Here is the caller graph for this function:

◆ DoInsertListColumns()

void ShuttleGuiBase::DoInsertListColumns ( wxListCtrl *  pListCtrl,
long  listControlStyles,
std::initializer_list< const ListControlColumn columns 
)
private

Definition at line 828 of file ShuttleGui.cpp.

832{
833 // Old comment from HistoryWindow.cpp follows
834 // -- is it still correct for wxWidgets 3?
835
836 // Do this BEFORE inserting the columns. On the Mac at least, the
837 // columns are deleted and later InsertItem()s will cause Audacity to crash.
838 for ( auto style = 1l; style <= listControlStyles; style <<= 1 )
839 if ( (style & listControlStyles) )
840 pListCtrl->SetSingleStyle(style, true);
841
842 long iCol = 0;
843 bool dummyColumn =
844 columns.size() > 0 && begin(columns)->format == wxLIST_FORMAT_RIGHT;
845
846 //A dummy first column, which is then deleted, is a workaround -
847 // under Windows the first column can't be right aligned.
848 if (dummyColumn)
849 pListCtrl->InsertColumn( iCol++, wxString{} );
850
851 for (auto &column : columns)
852 pListCtrl->InsertColumn(
853 iCol++, column.heading.Translation(), column.format, column.width );
854
855 if (dummyColumn)
856 pListCtrl->DeleteColumn( 0 );
857}
auto begin(const Ptr< Type, BaseDeleter > &p)
Enables range-for.
Definition: PackedArray.h:150

References PackedArray::begin(), and anonymous_namespace{AudacityDontAskAgainMessageDialog.cpp}::style.

Referenced by AddListControl(), and AddListControlReportMode().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DoStep()

bool ShuttleGuiBase::DoStep ( int  iStep)

Code-Condenser function.

We have functions which need to do:

// Either: Values are coming in:
DoDataShuttle( SettingName, WrappedRef );
TieMyControl( Prompt, WrappedRef );
// Or: Values are going out:
TieMyControl( Prompt, WrappedRef );
DoDataShuttle( SettingName, WrappedRef );
void DoDataShuttle(const wxString &Name, WrappedType &WrappedRef)

So we make a list of all the possible steps, and have DoStep choose which ones are actually done, like this:

if( DoStep(1) ) DoFirstThing();
if( DoStep(2) ) DoSecondThing();
if( DoStep(3) ) DoThirdThing();
bool DoStep(int iStep)

The repeated choice logic can then be taken out of those functions.

JKC: This paves the way for doing data validation too, though when we add that we will need to renumber the steps.

Definition at line 1825 of file ShuttleGui.cpp.

1826{
1827 // Get value and create
1828 if( mShuttleMode == eIsCreating )
1829 {
1830 return (iStep==1) || (iStep==2);
1831 }
1832 // Like creating, get the value and set.
1834 {
1835 return (iStep==1) || (iStep==2);
1836 }
1838 {
1839 return (iStep==2) || (iStep==3);
1840 }
1842 return iStep ==2;
1843 wxASSERT( false );
1844 return false;
1845}
@ eIsSettingToDialog
Definition: ShuttleGui.h:39
@ eIsGettingFromDialog
Definition: ShuttleGui.h:38
@ eIsGettingMetadata
Definition: ShuttleGui.h:40

References eIsCreating, eIsGettingFromDialog, eIsGettingMetadata, eIsSettingToDialog, and mShuttleMode.

Referenced by TieCheckBox(), TieCheckBoxOnRight(), TieChoice(), TieIntegerTextBox(), TieNumericTextBox(), TieSlider(), TieSpinCtrl(), and TieTextBox().

Here is the caller graph for this function:

◆ DoTieCheckBox()

wxCheckBox * ShuttleGuiBase::DoTieCheckBox ( const TranslatableString Prompt,
WrappedType WrappedRef 
)
private

Definition at line 1264 of file ShuttleGui.cpp.

1265{
1266 HandleOptionality( Prompt );
1267 // The Add function does a UseUpId(), so don't do it here in that case.
1268 if( mShuttleMode == eIsCreating )
1269 return AddCheckBox( Prompt, WrappedRef.ReadAsString() == wxT("true"));
1270
1271 UseUpId();
1272
1273 wxWindow * pWnd = wxWindow::FindWindowById( miId, mpDlg);
1274 wxCheckBox * pCheckBox = wxDynamicCast(pWnd, wxCheckBox);
1275
1276 switch( mShuttleMode )
1277 {
1278 // IF setting internal storage from the controls.
1279 case eIsGettingMetadata:
1280 break;
1282 {
1283 wxASSERT( pCheckBox );
1284 WrappedRef.WriteToAsBool( pCheckBox->GetValue() );
1285 }
1286 break;
1287 case eIsSettingToDialog:
1288 {
1289 wxASSERT( pCheckBox );
1290 pCheckBox->SetValue( WrappedRef.ReadAsBool() );
1291 }
1292 break;
1293 default:
1294 wxASSERT( false );
1295 break;
1296 }
1297 return pCheckBox;
1298}
wxCheckBox * AddCheckBox(const TranslatableString &Prompt, bool Selected)
Definition: ShuttleGui.cpp:310
bool ReadAsBool()
void WriteToAsBool(const bool InBool)
wxString ReadAsString()
Definition: WrappedType.cpp:41

References AddCheckBox(), eIsCreating, eIsGettingFromDialog, eIsGettingMetadata, eIsSettingToDialog, HandleOptionality(), miId, mpDlg, mShuttleMode, WrappedType::ReadAsBool(), WrappedType::ReadAsString(), UseUpId(), WrappedType::WriteToAsBool(), and wxT().

Referenced by TieCheckBox(), and TieCheckBoxOnRight().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DoTieCheckBoxOnRight()

wxCheckBox * ShuttleGuiBase::DoTieCheckBoxOnRight ( const TranslatableString Prompt,
WrappedType WrappedRef 
)
private

Definition at line 1300 of file ShuttleGui.cpp.

1301{
1302 HandleOptionality( Prompt );
1303 // The Add function does a UseUpId(), so don't do it here in that case.
1304 if( mShuttleMode == eIsCreating )
1305 return AddCheckBoxOnRight( Prompt, WrappedRef.ReadAsString() == wxT("true"));
1306
1307 UseUpId();
1308
1309 wxWindow * pWnd = wxWindow::FindWindowById( miId, mpDlg);
1310 wxCheckBox * pCheckBox = wxDynamicCast(pWnd, wxCheckBox);
1311
1312 switch( mShuttleMode )
1313 {
1314 // IF setting internal storage from the controls.
1315 case eIsGettingMetadata:
1316 break;
1318 {
1319 wxASSERT( pCheckBox );
1320 WrappedRef.WriteToAsBool( pCheckBox->GetValue() );
1321 }
1322 break;
1323 case eIsSettingToDialog:
1324 {
1325 wxASSERT( pCheckBox );
1326 pCheckBox->SetValue( WrappedRef.ReadAsBool() );
1327 }
1328 break;
1329 default:
1330 wxASSERT( false );
1331 break;
1332 }
1333 return pCheckBox;
1334}
wxCheckBox * AddCheckBoxOnRight(const TranslatableString &Prompt, bool Selected)
Definition: ShuttleGui.cpp:344

References AddCheckBoxOnRight(), eIsCreating, eIsGettingFromDialog, eIsGettingMetadata, eIsSettingToDialog, HandleOptionality(), miId, mpDlg, mShuttleMode, WrappedType::ReadAsBool(), WrappedType::ReadAsString(), UseUpId(), WrappedType::WriteToAsBool(), and wxT().

Referenced by TieCheckBoxOnRight().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DoTieNumericTextBox()

wxTextCtrl * ShuttleGuiBase::DoTieNumericTextBox ( const TranslatableString Prompt,
WrappedType WrappedRef,
const int  nChars,
bool  acceptEnter = false 
)
private

Definition at line 1413 of file ShuttleGui.cpp.

1416{
1417 HandleOptionality( Prompt );
1418 // The Add function does a UseUpId(), so don't do it here in that case.
1419 if( mShuttleMode == eIsCreating )
1420 return AddNumericTextBox( Prompt, WrappedRef.ReadAsString(), nChars, acceptEnter );
1421
1422 UseUpId();
1423 wxTextCtrl * pTextBox=NULL;
1424
1425 wxWindow * pWnd = wxWindow::FindWindowById( miId, mpDlg);
1426 pTextBox = wxDynamicCast(pWnd, wxTextCtrl);
1427
1428 switch( mShuttleMode )
1429 {
1430 // IF setting internal storage from the controls.
1431 case eIsGettingMetadata:
1432 break;
1434 {
1435 wxASSERT( pTextBox );
1436 WrappedRef.WriteToAsString( pTextBox->GetValue() );
1437 }
1438 break;
1439 case eIsSettingToDialog:
1440 {
1441 wxASSERT( pTextBox );
1442 pTextBox->SetValue( WrappedRef.ReadAsString() );
1443 }
1444 break;
1445 default:
1446 wxASSERT( false );
1447 break;
1448 }
1449 return pTextBox;
1450}
wxTextCtrl * AddNumericTextBox(const TranslatableString &Caption, const wxString &Value, const int nChars, bool acceptEnter=false)
Definition: ShuttleGui.cpp:675
void WriteToAsString(const wxString &InStr)

References AddNumericTextBox(), eIsCreating, eIsGettingFromDialog, eIsGettingMetadata, eIsSettingToDialog, HandleOptionality(), miId, mpDlg, mShuttleMode, WrappedType::ReadAsString(), UseUpId(), and WrappedType::WriteToAsString().

Referenced by TieIntegerTextBox(), and TieNumericTextBox().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DoTieSlider()

wxSlider * ShuttleGuiBase::DoTieSlider ( const TranslatableString Prompt,
WrappedType WrappedRef,
const int  max,
const int  min = 0 
)
private

Definition at line 1452 of file ShuttleGui.cpp.

1455{
1456 HandleOptionality( Prompt );
1457 // The Add function does a UseUpId(), so don't do it here in that case.
1458 if( mShuttleMode != eIsCreating )
1459 UseUpId();
1460 wxSlider * pSlider=NULL;
1461 switch( mShuttleMode )
1462 {
1463 case eIsCreating:
1464 {
1465 pSlider = AddSlider( Prompt, WrappedRef.ReadAsInt(), max, min );
1466 }
1467 break;
1468 // IF setting internal storage from the controls.
1469 case eIsGettingMetadata:
1470 break;
1472 {
1473 wxWindow * pWnd = wxWindow::FindWindowById( miId, mpDlg);
1474 pSlider = wxDynamicCast(pWnd, wxSlider);
1475 wxASSERT( pSlider );
1476 WrappedRef.WriteToAsInt( pSlider->GetValue() );
1477 }
1478 break;
1479 case eIsSettingToDialog:
1480 {
1481 wxWindow * pWnd = wxWindow::FindWindowById( miId, mpDlg);
1482 pSlider = wxDynamicCast(pWnd, wxSlider);
1483 wxASSERT( pSlider );
1484 pSlider->SetValue( WrappedRef.ReadAsInt() );
1485 }
1486 break;
1487 default:
1488 wxASSERT( false );
1489 break;
1490 }
1491 return pSlider;
1492}
int min(int a, int b)
wxSlider * AddSlider(const TranslatableString &Prompt, int pos, int Max, int Min=0)
Definition: ShuttleGui.cpp:590
void WriteToAsInt(const int InInt)
int ReadAsInt()
Definition: WrappedType.cpp:67

References AddSlider(), eIsCreating, eIsGettingFromDialog, eIsGettingMetadata, eIsSettingToDialog, HandleOptionality(), miId, min(), mpDlg, mShuttleMode, WrappedType::ReadAsInt(), UseUpId(), and WrappedType::WriteToAsInt().

Referenced by TieSlider().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DoTieSpinCtrl()

wxSpinCtrl * ShuttleGuiBase::DoTieSpinCtrl ( const TranslatableString Prompt,
WrappedType WrappedRef,
const int  max,
const int  min = 0 
)
private

Definition at line 1336 of file ShuttleGui.cpp.

1339{
1340 HandleOptionality( Prompt );
1341 // The Add function does a UseUpId(), so don't do it here in that case.
1342 if( mShuttleMode == eIsCreating )
1343 return AddSpinCtrl( Prompt, WrappedRef.ReadAsInt(), max, min );
1344
1345 UseUpId();
1346 wxSpinCtrl * pSpinCtrl=NULL;
1347
1348 wxWindow * pWnd = wxWindow::FindWindowById( miId, mpDlg);
1349 pSpinCtrl = wxDynamicCast(pWnd, wxSpinCtrl);
1350
1351 switch( mShuttleMode )
1352 {
1353 // IF setting internal storage from the controls.
1354 case eIsGettingMetadata:
1355 break;
1357 {
1358 wxASSERT( pSpinCtrl );
1359 WrappedRef.WriteToAsInt( pSpinCtrl->GetValue() );
1360 }
1361 break;
1362 case eIsSettingToDialog:
1363 {
1364 wxASSERT( pSpinCtrl );
1365 pSpinCtrl->SetValue( WrappedRef.ReadAsInt() );
1366 }
1367 break;
1368 default:
1369 wxASSERT( false );
1370 break;
1371 }
1372 return pSpinCtrl;
1373}
wxSpinCtrl * AddSpinCtrl(const TranslatableString &Prompt, int Value, int Max, int Min)
Definition: ShuttleGui.cpp:617

References AddSpinCtrl(), eIsCreating, eIsGettingFromDialog, eIsGettingMetadata, eIsSettingToDialog, HandleOptionality(), miId, min(), mpDlg, mShuttleMode, WrappedType::ReadAsInt(), UseUpId(), and WrappedType::WriteToAsInt().

Referenced by TieSpinCtrl().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DoTieTextBox()

wxTextCtrl * ShuttleGuiBase::DoTieTextBox ( const TranslatableString Prompt,
WrappedType WrappedRef,
const int  nChars 
)
private

Definition at line 1375 of file ShuttleGui.cpp.

1377{
1378 HandleOptionality( Prompt );
1379 // The Add function does a UseUpId(), so don't do it here in that case.
1380 if( mShuttleMode == eIsCreating )
1381 return AddTextBox( Prompt, WrappedRef.ReadAsString(), nChars );
1382
1383 UseUpId();
1384 wxTextCtrl * pTextBox=NULL;
1385
1386 wxWindow * pWnd = wxWindow::FindWindowById( miId, mpDlg);
1387 pTextBox = wxDynamicCast(pWnd, wxTextCtrl);
1388
1389 switch( mShuttleMode )
1390 {
1391 // IF setting internal storage from the controls.
1392 case eIsGettingMetadata:
1393 break;
1395 {
1396 wxASSERT( pTextBox );
1397 WrappedRef.WriteToAsString( pTextBox->GetValue() );
1398 }
1399 break;
1400 case eIsSettingToDialog:
1401 {
1402 wxASSERT( pTextBox );
1403 pTextBox->SetValue( WrappedRef.ReadAsString() );
1404 }
1405 break;
1406 default:
1407 wxASSERT( false );
1408 break;
1409 }
1410 return pTextBox;
1411}
wxTextCtrl * AddTextBox(const TranslatableString &Caption, const wxString &Value, const int nChars)
Definition: ShuttleGui.cpp:639

References AddTextBox(), eIsCreating, eIsGettingFromDialog, eIsGettingMetadata, eIsSettingToDialog, HandleOptionality(), miId, mpDlg, mShuttleMode, WrappedType::ReadAsString(), UseUpId(), and WrappedType::WriteToAsString().

Referenced by TieTextBox().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ EndHorizontalLay()

void ShuttleGuiBase::EndHorizontalLay ( )

Definition at line 1182 of file ShuttleGui.cpp.

1183{
1184 if( mShuttleMode != eIsCreating )
1185 return;
1186 PopSizer();
1187}

References eIsCreating, mShuttleMode, and PopSizer().

Referenced by cloud::audiocom::ShareAudioDialog::Populate(), and cloud::audiocom::ShareAudioDialog::InitialStatePanel::PopulateInitialStatePanel().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ EndInvisiblePanel()

void ShuttleGuiBase::EndInvisiblePanel ( )

Definition at line 1160 of file ShuttleGui.cpp.

1161{
1162 EndPanel();
1163}

References EndPanel().

Referenced by cloud::audiocom::ShareAudioDialog::Populate(), cloud::audiocom::ShareAudioDialog::InitialStatePanel::PopulateInitialStatePanel(), and cloud::audiocom::ShareAudioDialog::ProgressPanel::PopulateProgressPanel().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ EndMultiColumn()

void ShuttleGuiBase::EndMultiColumn ( )

Definition at line 1243 of file ShuttleGui.cpp.

1244{
1245 if( mShuttleMode != eIsCreating )
1246 return;
1247 PopSizer();
1248}

References eIsCreating, mShuttleMode, and PopSizer().

Here is the call graph for this function:

◆ EndNotebook()

void ShuttleGuiBase::EndNotebook ( )

Definition at line 1045 of file ShuttleGui.cpp.

1046{
1047 //PopSizer();
1048 mpParent = mpParent->GetParent();
1049}

References mpParent.

◆ EndNotebookPage()

void ShuttleGuiBase::EndNotebookPage ( )

Definition at line 1096 of file ShuttleGui.cpp.

1097{
1098 if( mShuttleMode != eIsCreating )
1099 return;
1100 PopSizer();
1101 mpParent = mpParent->GetParent();
1102}

References eIsCreating, mpParent, mShuttleMode, and PopSizer().

Here is the call graph for this function:

◆ EndPanel()

void ShuttleGuiBase::EndPanel ( )

Definition at line 1023 of file ShuttleGui.cpp.

1024{
1025 if( mShuttleMode != eIsCreating )
1026 return;
1027 PopSizer();
1028 mpParent = mpParent->GetParent();
1029}

References eIsCreating, mpParent, mShuttleMode, and PopSizer().

Referenced by EndInvisiblePanel().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ EndRadioButtonGroup()

void ShuttleGuiBase::EndRadioButtonGroup ( )

Call this after any TieRadioButton calls. It's generic too. We don't need type-specific ones.

Definition at line 1618 of file ShuttleGui.cpp.

1619{
1620 // too few buttons?
1621 wxASSERT( mRadioCount == mRadioSymbols.size() );
1622
1625 mRadioValue.reset();// Clear it out...
1626 mRadioSettingName = wxT("");
1627 mRadioCount = -1; // So we detect a problem.
1628 mRadioSymbols = {};
1629}
std::vector< EnumValueSymbol > mRadioSymbols
Definition: ShuttleGui.h:573
std::optional< WrappedType > mRadioValue
The setting controlled by a group.
Definition: ShuttleGui.h:575
wxString mRadioSettingName
Definition: ShuttleGui.h:574
int mRadioCount
The wrapped value associated with the active radio button.
Definition: ShuttleGui.h:576

References DoDataShuttle(), eIsGettingFromDialog, mRadioCount, mRadioSettingName, mRadioSymbols, mRadioValue, mShuttleMode, and wxT().

Here is the call graph for this function:

◆ EndScroller()

void ShuttleGuiBase::EndScroller ( )

Definition at line 976 of file ShuttleGui.cpp.

977{
979 return;
980 wxSize ScrollSize = mpSizer->GetMinSize();
981 int yMin = ScrollSize.y+4;
982 int xMin = ScrollSize.x+4;
983 if( yMin > 400)
984 {
985 yMin = 400;
986 xMin+=50;// extra space for vertical scrollbar.
987 }
988
989 mpParent->SetMinSize( wxSize(xMin, yMin) );
990
991 PopSizer();
992 mpParent = mpParent->GetParent();
993}
wxSizer * mpSizer
Definition: ShuttleGui.h:553

References eIsCreating, mpParent, mpSizer, mShuttleMode, and PopSizer().

Here is the call graph for this function:

◆ EndSimplebook()

void ShuttleGuiBase::EndSimplebook ( )

Definition at line 1066 of file ShuttleGui.cpp.

1067{
1068 //PopSizer();
1069 mpParent = mpParent->GetParent();
1070}

References mpParent.

◆ EndStatic()

void ShuttleGuiBase::EndStatic ( )

Definition at line 927 of file ShuttleGui.cpp.

928{
930 return;
931 PopSizer();
932 mpParent = mpParent->GetParent();
933}

References eIsCreating, mpParent, mShuttleMode, and PopSizer().

Here is the call graph for this function:

◆ EndThreeColumn()

void ShuttleGuiBase::EndThreeColumn ( )
inline

Definition at line 367 of file ShuttleGui.h.

367{EndMultiColumn();};
void EndMultiColumn()

◆ EndTwoColumn()

void ShuttleGuiBase::EndTwoColumn ( )
inline

Definition at line 365 of file ShuttleGui.h.

365{EndMultiColumn();};

◆ EndVerticalLay()

void ShuttleGuiBase::EndVerticalLay ( )

Definition at line 1208 of file ShuttleGui.cpp.

1209{
1210 if( mShuttleMode != eIsCreating )
1211 return;
1212 PopSizer();
1213}

References eIsCreating, mShuttleMode, and PopSizer().

Referenced by ShuttleGui::AddStandardButtons(), ErrorReportDialog::ErrorReportDialog(), cloud::audiocom::ShareAudioDialog::InitialStatePanel::PopulateInitialStatePanel(), and cloud::audiocom::ShareAudioDialog::ProgressPanel::PopulateProgressPanel().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ EndWrapLay()

void ShuttleGuiBase::EndWrapLay ( )

Definition at line 1226 of file ShuttleGui.cpp.

1227{
1229 return;
1230
1231 PopSizer();
1232}

References eIsCreating, mShuttleMode, and PopSizer().

Referenced by cloud::audiocom::ShareAudioDialog::ProgressPanel::PopulateProgressPanel().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetBorder()

int ShuttleGuiBase::GetBorder ( ) const
noexcept

Definition at line 195 of file ShuttleGui.cpp.

196{
197 return miBorder;
198}

References miBorder.

◆ GetParent()

wxWindow * ShuttleGuiBase::GetParent ( )
inline

◆ GetSizer()

wxSizer * ShuttleGuiBase::GetSizer ( )
inline

Definition at line 505 of file ShuttleGui.h.

505{return mpSizer;}

◆ GetStyle()

long ShuttleGuiBase::GetStyle ( long  Style)
protected

◆ HandleOptionality()

void ShuttleGuiBase::HandleOptionality ( const TranslatableString Prompt)

Definition at line 223 of file ShuttleGui.cpp.

224{
225 // If creating, will be handled by an AddPrompt.
227 return;
228 //wxLogDebug( "Optionality: [%s] Id:%i (%i)", Prompt.c_str(), miId, miIdSetByUser ) ;
229 if( mpbOptionalFlag ){
230 bool * pVar = mpbOptionalFlag;
231 mpbOptionalFlag = nullptr;
232 TieCheckBox( Prompt, *pVar);
233 }
234}

References eIsCreating, mpbOptionalFlag, mShuttleMode, and TieCheckBox().

Referenced by AddCheckBox(), AddCheckBoxOnRight(), AddChoice(), AddCombo(), AddConstTextBox(), AddNumericTextBox(), AddReadOnlyText(), AddSlider(), AddSpinCtrl(), AddTextBox(), DoTieCheckBox(), DoTieCheckBoxOnRight(), DoTieNumericTextBox(), DoTieSlider(), DoTieSpinCtrl(), DoTieTextBox(), and TieChoice().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Init()

void ShuttleGuiBase::Init ( bool  vertical,
wxSize  minSize 
)

Definition at line 142 of file ShuttleGui.cpp.

143{
144 mpShuttle = NULL;
145 mpSizer = NULL;
146 mpWind = NULL;
147 mpSubSizer = NULL;
148
150 mRadioCount = -1;
151
152 miBorder = 5;
153 miProp=0;
155 miSizerProp=0;
156 mSizerDepth=-1;
157
158 ResetId();
159
161
163 return;
164
165 mpSizer = mpParent->GetSizer();
166
167#if 0
168 if( mpSizer == NULL )
169 {
170 wxWindow * pGrandParent = mpParent->GetParent();
171 if( pGrandParent )
172 {
173 mpSizer = pGrandParent->GetSizer();
174 }
175 }
176#endif
177
178 if( !mpSizer )
179 {
180 mpParent->SetSizer(
181 mpSizer = safenew wxBoxSizer(vertical ? wxVERTICAL : wxHORIZONTAL));
182 }
183 PushSizer();
184 mpSizer->SetMinSize(minSize);
185}
int miNoMatchSelector
Definition: ShuttleGui.h:534
std::unique_ptr< wxSizer > mpSubSizer
Definition: ShuttleGui.h:552

References eIsCreating, miBorder, miNoMatchSelector, miProp, miPropSetByUser, miSizerProp, mpParent, mpShuttle, mpSizer, mpSubSizer, mpWind, mRadioCount, mRadioSettingName, mShuttleMode, mSizerDepth, PushSizer(), ResetId(), safenew, and wxT().

Referenced by ShuttleGui::ShuttleGui(), and ShuttleGuiBase().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ PopSizer()

void ShuttleGuiBase::PopSizer ( )
protected

Definition at line 2204 of file ShuttleGui.cpp.

2205{
2206 mSizerDepth--;
2207 wxASSERT( mSizerDepth >=0 );
2209}
wxSizer * pSizerStack[nMaxNestedSizers]
Definition: ShuttleGui.h:530

References mpSizer, mSizerDepth, and pSizerStack.

Referenced by ShuttleGui::AddStandardButtons(), EndHorizontalLay(), EndMultiColumn(), EndNotebookPage(), EndPanel(), EndScroller(), EndStatic(), EndVerticalLay(), and EndWrapLay().

Here is the caller graph for this function:

◆ Prop()

ShuttleGuiBase & ShuttleGuiBase::Prop ( int  iProp)

Definition at line 887 of file ShuttleGui.cpp.

888{
889 miPropSetByUser = iProp;
890 return *this;
891}

References miPropSetByUser.

Referenced by ShuttleGui::Prop().

Here is the caller graph for this function:

◆ PushSizer()

void ShuttleGuiBase::PushSizer ( )
protected

Definition at line 2211 of file ShuttleGui.cpp.

2212{
2213 mSizerDepth++;
2214 wxASSERT( mSizerDepth < nMaxNestedSizers );
2216}
const int nMaxNestedSizers
Definition: ShuttleGui.h:33

References mpSizer, mSizerDepth, nMaxNestedSizers, and pSizerStack.

Referenced by Init(), StartInvisiblePanel(), StartNotebookPage(), StartPanel(), StartScroller(), and UpdateSizersCore().

Here is the caller graph for this function:

◆ ResetId()

void ShuttleGuiBase::ResetId ( )

Definition at line 187 of file ShuttleGui.cpp.

188{
189 miIdSetByUser = -1;
190 miId = -1;
191 miIdNext = 3000;
192}

References miId, miIdNext, and miIdSetByUser.

Referenced by Init().

Here is the caller graph for this function:

◆ SetBorder()

void ShuttleGuiBase::SetBorder ( int  Border)
inline

Definition at line 488 of file ShuttleGui.h.

488{miBorder = Border;};

Referenced by cloud::audiocom::ShareAudioDialog::Populate(), cloud::audiocom::ShareAudioDialog::InitialStatePanel::PopulateInitialStatePanel(), PitchAndSpeedDialog::PopulateOrExchange(), and cloud::audiocom::ShareAudioDialog::ProgressPanel::PopulateProgressPanel().

Here is the caller graph for this function:

◆ SetProportions()

void ShuttleGuiBase::SetProportions ( int  Default)
protected

Definition at line 2080 of file ShuttleGui.cpp.

2081{
2082 if( miPropSetByUser >=0 )
2083 {
2085 miPropSetByUser =-1;
2086 return;
2087 }
2088 miProp = Default;
2089}
NumericFormatSymbol Default(const NumericConverterType &type)
Returns the default format for the type or empty symbol, if no default symbol is registered.

References NumericConverterFormats::Default(), miProp, and miPropSetByUser.

Referenced by AddGrid(), AddListBox(), AddListControl(), AddListControlReportMode(), AddTextWindow(), AddTree(), AddWindow(), StartInvisiblePanel(), StartNotebook(), StartNotebookPage(), StartPanel(), StartScroller(), and StartSimplebook().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetSizerProportion()

void ShuttleGuiBase::SetSizerProportion ( int  iProp)
inline

Definition at line 490 of file ShuttleGui.h.

490{miSizerProp = iProp;};

◆ SetStretchyCol()

void ShuttleGuiBase::SetStretchyCol ( int  i)

Used to modify an already placed FlexGridSizer to make a column stretchy.

Definition at line 201 of file ShuttleGui.cpp.

202{
204 return;
205 wxFlexGridSizer *pSizer = wxDynamicCast(mpSizer, wxFlexGridSizer);
206 wxASSERT( pSizer );
207 pSizer->AddGrowableCol( i, 1 );
208}

References eIsCreating, mpSizer, and mShuttleMode.

◆ SetStretchyRow()

void ShuttleGuiBase::SetStretchyRow ( int  i)

Used to modify an already placed FlexGridSizer to make a row stretchy.

Definition at line 211 of file ShuttleGui.cpp.

212{
214 return;
215 wxFlexGridSizer *pSizer = wxDynamicCast(mpSizer, wxFlexGridSizer);
216 wxASSERT( pSizer );
217 pSizer->AddGrowableRow( i, 1 );
218}

References eIsCreating, mpSizer, and mShuttleMode.

◆ StartHorizontalLay()

void ShuttleGuiBase::StartHorizontalLay ( int  PositionFlags = wxALIGN_CENTRE,
int  iProp = 1 
)

Starts a Horizontal Layout.

  • Use wxEXPAND and 0 to expand horizontally but not vertically.
  • Use wxEXPAND and 1 to expand horizontally and vertically.
  • Use wxCENTRE and 1 for no expansion.
    Parameters
    PositionFlagTypically wxEXPAND or wxALIGN_CENTER.
    iPropProportionality for resizing.

Definition at line 1172 of file ShuttleGui.cpp.

1173{
1174 if( mShuttleMode != eIsCreating )
1175 return;
1176 miSizerProp=iProp;
1177 mpSubSizer = std::make_unique<wxBoxSizer>( wxHORIZONTAL );
1178 // PRL: wxALL has no effect because UpdateSizersCore ignores border
1179 UpdateSizersCore( false, PositionFlags | wxALL );
1180}

References eIsCreating, miSizerProp, mpSubSizer, mShuttleMode, and UpdateSizersCore().

Referenced by cloud::audiocom::ShareAudioDialog::Populate(), and cloud::audiocom::ShareAudioDialog::InitialStatePanel::PopulateInitialStatePanel().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ StartInvisiblePanel()

wxPanel * ShuttleGuiBase::StartInvisiblePanel ( int  border = 0)

Definition at line 1137 of file ShuttleGui.cpp.

1138{
1139 UseUpId();
1140 if( mShuttleMode != eIsCreating )
1141 return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), wxPanel);
1142 wxPanel * pPanel;
1143 mpWind = pPanel = safenew wxPanelWrapper(GetParent(), miId, wxDefaultPosition, wxDefaultSize,
1144 wxNO_BORDER);
1145
1146 mpWind->SetBackgroundColour(
1147 wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE)
1148 );
1149 SetProportions( 1 );
1150 miBorder = border;
1151 UpdateSizers(); // adds window in to current sizer.
1152
1153 // create a sizer within the window...
1154 mpParent = pPanel;
1155 pPanel->SetSizer(mpSizer = safenew wxBoxSizer(wxVERTICAL));
1156 PushSizer();
1157 return pPanel;
1158}

References eIsCreating, GetParent(), miBorder, miId, mpDlg, mpParent, mpSizer, mpWind, mShuttleMode, PushSizer(), safenew, SetProportions(), UpdateSizers(), and UseUpId().

Referenced by cloud::audiocom::ShareAudioDialog::Populate(), cloud::audiocom::ShareAudioDialog::InitialStatePanel::PopulateInitialStatePanel(), and cloud::audiocom::ShareAudioDialog::ProgressPanel::PopulateProgressPanel().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ StartMultiColumn()

void ShuttleGuiBase::StartMultiColumn ( int  nCols,
int  PositionFlags = wxALIGN_LEFT 
)

Definition at line 1234 of file ShuttleGui.cpp.

1235{
1236 if( mShuttleMode != eIsCreating )
1237 return;
1238 mpSubSizer = std::make_unique<wxFlexGridSizer>( nCols );
1239 // PRL: wxALL has no effect because UpdateSizersCore ignores border
1240 UpdateSizersCore( false, PositionFlags | wxALL );
1241}

References eIsCreating, mpSubSizer, mShuttleMode, and UpdateSizersCore().

Here is the call graph for this function:

◆ StartNotebook()

wxNotebook * ShuttleGuiBase::StartNotebook ( )

Definition at line 1031 of file ShuttleGui.cpp.

1032{
1033 UseUpId();
1034 if( mShuttleMode != eIsCreating )
1035 return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), wxNotebook);
1036 wxNotebook * pNotebook;
1037 mpWind = pNotebook = safenew wxNotebook(GetParent(),
1038 miId, wxDefaultPosition, wxDefaultSize, GetStyle( 0 ));
1039 SetProportions( 1 );
1040 UpdateSizers();
1041 mpParent = pNotebook;
1042 return pNotebook;
1043}

References eIsCreating, GetParent(), GetStyle(), miId, mpDlg, mpParent, mpWind, mShuttleMode, safenew, SetProportions(), UpdateSizers(), and UseUpId().

Here is the call graph for this function:

◆ StartNotebookPage()

wxNotebookPage * ShuttleGuiBase::StartNotebookPage ( const TranslatableString Name)

Definition at line 1073 of file ShuttleGui.cpp.

1075{
1076 if( mShuttleMode != eIsCreating )
1077 return NULL;
1078// return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), wx);
1079 auto pNotebook = static_cast< wxBookCtrlBase* >( mpParent );
1081 const auto translated = Name.Translation();
1082 pPage->SetName(translated);
1083
1084 pNotebook->AddPage(
1085 pPage,
1086 translated);
1087
1088 SetProportions( 1 );
1089 mpParent = pPage;
1090 pPage->SetSizer(mpSizer = safenew wxBoxSizer(wxVERTICAL));
1091 PushSizer();
1092 // UpdateSizers();
1093 return pPage;
1094}
wxWindow wxNotebookPage
Definition: ShuttleGui.h:60

References eIsCreating, GetParent(), mpParent, mpSizer, mShuttleMode, PushSizer(), safenew, and SetProportions().

Here is the call graph for this function:

◆ StartPanel()

wxPanel * ShuttleGuiBase::StartPanel ( int  iStyle = 0)

Definition at line 995 of file ShuttleGui.cpp.

996{
997 UseUpId();
999 return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), wxPanel);
1000 wxPanel * pPanel;
1001 mpWind = pPanel = safenew wxPanelWrapper( GetParent(), miId, wxDefaultPosition, wxDefaultSize,
1002 GetStyle( wxNO_BORDER ));
1003
1004 if( iStyle != 0 )
1005 {
1006 mpWind->SetBackgroundColour(
1007 iStyle==1
1008 ? wxColour( 190,200,230) :
1009 wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)
1010 );
1011 }
1012 SetProportions(0);
1013 miBorder=2;
1014 UpdateSizers(); // adds window in to current sizer.
1015
1016 // create a sizer within the window...
1017 mpParent = pPanel;
1018 pPanel->SetSizer(mpSizer = safenew wxBoxSizer(wxVERTICAL));
1019 PushSizer();
1020 return pPanel;
1021}

References eIsCreating, GetParent(), GetStyle(), miBorder, miId, mpDlg, mpParent, mpSizer, mpWind, mShuttleMode, PushSizer(), safenew, SetProportions(), UpdateSizers(), and UseUpId().

Here is the call graph for this function:

◆ StartRadioButtonGroup()

void ShuttleGuiBase::StartRadioButtonGroup ( ChoiceSetting Setting)

Call this before any TieRadioButton calls.

Definition at line 1601 of file ShuttleGui.cpp.

1602{
1603 mRadioSymbols = Setting.GetSymbols();
1604
1605 // Configure the generic type mechanism to use OUR string.
1606 mRadioValueString = Setting.Default().Internal();
1607 mRadioValue.emplace( mRadioValueString );
1608
1609 // Now actually start the radio button group.
1610 mRadioSettingName = Setting.Key();
1611 mRadioCount = 0;
1612 if( mShuttleMode == eIsCreating )
1614}
Definition: Prefs.h:178
wxString mRadioValueString
The index of this radio item. -1 for none.
Definition: ShuttleGui.h:577

References DoDataShuttle(), eIsCreating, mRadioCount, mRadioSettingName, mRadioSymbols, mRadioValue, mRadioValueString, and mShuttleMode.

Here is the call graph for this function:

◆ StartScroller()

wxScrolledWindow * ShuttleGuiBase::StartScroller ( int  iStyle = 0)

This allows subsequent controls and static boxes to be in a scrolled panel. Very handy if you are running out of space on a dialog.

The iStyle parameter is used in some very hacky code that dynamically repopulates a dialog. It also controls the background colour. Look at the code for details.

Parameters
istyledeprecated parameter, but has been used for hacking.

Definition at line 943 of file ShuttleGui.cpp.

944{
945 UseUpId();
947 return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), wxScrolledWindow);
948
949 wxScrolledWindow * pScroller;
950 mpWind = pScroller = safenew wxScrolledWindow(GetParent(), miId, wxDefaultPosition, wxDefaultSize,
951 GetStyle( wxSUNKEN_BORDER ) );
952 pScroller->SetScrollRate( 20,20 );
953
954 // This fools NVDA into not saying "Panel" when the dialog gets focus
955 pScroller->SetName(wxT("\a"));
956 pScroller->SetLabel(wxT("\a"));
957
958 SetProportions( 1 );
959 if( iStyle==2 )
960 {
962 }
963 else
964 {
965 // mpWind->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_MENUBAR));
966 UpdateSizers(); // adds window in to current sizer.
967 }
968
969 // create a sizer within the window...
970 mpParent = pScroller;
971 pScroller->SetSizer(mpSizer = safenew wxBoxSizer(wxVERTICAL));
972 PushSizer();
973 return pScroller;
974}
void UpdateSizersAtStart()

References eIsCreating, GetParent(), GetStyle(), miId, mpDlg, mpParent, mpSizer, mpWind, mShuttleMode, PushSizer(), safenew, SetProportions(), UpdateSizers(), UpdateSizersAtStart(), UseUpId(), and wxT().

Here is the call graph for this function:

◆ StartSimplebook()

wxSimplebook * ShuttleGuiBase::StartSimplebook ( )

Definition at line 1052 of file ShuttleGui.cpp.

1053{
1054 UseUpId();
1055 if( mShuttleMode != eIsCreating )
1056 return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), wxSimplebook);
1057 wxSimplebook * pNotebook;
1058 mpWind = pNotebook = safenew wxSimplebook(GetParent(),
1059 miId, wxDefaultPosition, wxDefaultSize, GetStyle( 0 ));
1060 SetProportions( 1 );
1061 UpdateSizers();
1062 mpParent = pNotebook;
1063 return pNotebook;
1064}

References eIsCreating, GetParent(), GetStyle(), miId, mpDlg, mpParent, mpWind, mShuttleMode, safenew, SetProportions(), UpdateSizers(), and UseUpId().

Here is the call graph for this function:

◆ StartStatic()

wxStaticBox * ShuttleGuiBase::StartStatic ( const TranslatableString Str,
int  iProp = 0 
)

Starts a static box around a number of controls.

Parameters
StrThe text of the title for the box.
iPropThe resizing proportion value. Use iProp == 0 for a minimum sized static box. Use iProp == 1 for a box that grows if there is space to spare.

Definition at line 898 of file ShuttleGui.cpp.

899{
900 UseUpId();
902 return NULL;
903 auto translated = Str.Translation();
904 wxStaticBox * pBox = safenew wxStaticBoxWrapper(
905 GetParent(), miId, translated );
906 pBox->SetLabel( translated );
907 if (Str.empty()) {
908 // NVDA 2018.3 or later does not read the controls in a group box which has
909 // an accessibility name which is empty. Bug 2169.
910#if wxUSE_ACCESSIBILITY
911 // so that name can be set on a standard control
912 pBox->SetAccessible(safenew WindowAccessible(pBox));
913#endif
914 pBox->SetName(wxT("\a")); // non-empty string which screen readers do not read
915 }
916 else
917 pBox->SetName( wxStripMenuCodes( translated ) );
918 mpSubSizer = std::make_unique<wxStaticBoxSizer>(
919 pBox,
920 wxVERTICAL );
921 miSizerProp = iProp;
922 UpdateSizers();
923 mpParent = pBox;
924 return pBox;
925}

References eIsCreating, TranslatableString::empty(), GetParent(), miId, miSizerProp, mpParent, mpSubSizer, mShuttleMode, safenew, TranslatableString::Translation(), UpdateSizers(), UseUpId(), and wxT().

Here is the call graph for this function:

◆ StartThreeColumn()

void ShuttleGuiBase::StartThreeColumn ( )
inline

Definition at line 366 of file ShuttleGui.h.

366{StartMultiColumn(3);};
void StartMultiColumn(int nCols, int PositionFlags=wxALIGN_LEFT)

◆ StartTwoColumn()

void ShuttleGuiBase::StartTwoColumn ( )
inline

Definition at line 364 of file ShuttleGui.h.

364{StartMultiColumn(2);};

◆ StartVerticalLay() [1/2]

void ShuttleGuiBase::StartVerticalLay ( int  iProp = 1)

Definition at line 1189 of file ShuttleGui.cpp.

1190{
1191 if( mShuttleMode != eIsCreating )
1192 return;
1193 miSizerProp=iProp;
1194 mpSubSizer = std::make_unique<wxBoxSizer>( wxVERTICAL );
1195 UpdateSizers();
1196}

References eIsCreating, miSizerProp, mpSubSizer, mShuttleMode, and UpdateSizers().

Referenced by ShuttleGui::AddStandardButtons(), ErrorReportDialog::ErrorReportDialog(), cloud::audiocom::ShareAudioDialog::InitialStatePanel::PopulateInitialStatePanel(), and cloud::audiocom::ShareAudioDialog::ProgressPanel::PopulateProgressPanel().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ StartVerticalLay() [2/2]

void ShuttleGuiBase::StartVerticalLay ( int  PositionFlags,
int  iProp 
)

Definition at line 1198 of file ShuttleGui.cpp.

1199{
1200 if( mShuttleMode != eIsCreating )
1201 return;
1202 miSizerProp=iProp;
1203 mpSubSizer = std::make_unique<wxBoxSizer>( wxVERTICAL );
1204 // PRL: wxALL has no effect because UpdateSizersCore ignores border
1205 UpdateSizersCore( false, PositionFlags | wxALL );
1206}

References eIsCreating, miSizerProp, mpSubSizer, mShuttleMode, and UpdateSizersCore().

Here is the call graph for this function:

◆ StartWrapLay()

void ShuttleGuiBase::StartWrapLay ( int  PositionFlags = wxEXPAND,
int  iProp = 0 
)

Definition at line 1215 of file ShuttleGui.cpp.

1216{
1218 return;
1219
1220 miSizerProp = iProp;
1221 mpSubSizer = std::make_unique<wxWrapSizer>(wxHORIZONTAL, 0);
1222
1223 UpdateSizersCore(false, PositionFlags | wxALL);
1224}

References eIsCreating, miSizerProp, mpSubSizer, mShuttleMode, and UpdateSizersCore().

Referenced by cloud::audiocom::ShareAudioDialog::ProgressPanel::PopulateProgressPanel().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ TieCheckBox() [1/2]

wxCheckBox * ShuttleGuiBase::TieCheckBox ( const TranslatableString Prompt,
bool &  Var 
)

Definition at line 1635 of file ShuttleGui.cpp.

1636{
1637 WrappedType WrappedRef( Var );
1638 return DoTieCheckBox( Prompt, WrappedRef );
1639}
wxCheckBox * DoTieCheckBox(const TranslatableString &Prompt, WrappedType &WrappedRef)
Used in type conversions, this wrapper for ints, strings, doubles and enums provides conversions betw...
Definition: WrappedType.h:28

References DoTieCheckBox().

Referenced by AddPrompt(), HandleOptionality(), and anonymous_namespace{GetInfoCommand.cpp}::ShuttleGuiGetDefinition::TieCheckBox().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ TieCheckBox() [2/2]

wxCheckBox * ShuttleGuiBase::TieCheckBox ( const TranslatableString Prompt,
const BoolSetting Setting 
)
virtual

Variant of the standard TieCheckBox which does the two step exchange between gui and stack variable and stack variable and shuttle.

Reimplemented in anonymous_namespace{GetInfoCommand.cpp}::ShuttleGuiGetDefinition.

Definition at line 1850 of file ShuttleGui.cpp.

1853{
1854 wxCheckBox * pCheck=NULL;
1855
1856 auto Value = Setting.GetDefault();
1857 WrappedType WrappedRef( Value );
1858 if( DoStep(1) ) DoDataShuttle( Setting.GetPath(), WrappedRef );
1859 if( DoStep(2) ) pCheck = DoTieCheckBox( Prompt, WrappedRef );
1860 if( DoStep(3) ) DoDataShuttle( Setting.GetPath(), WrappedRef );
1861
1862 return pCheck;
1863}
const SettingPath & GetPath() const
Definition: Prefs.h:88
const T & GetDefault() const
Definition: Prefs.h:199

References DoDataShuttle(), DoStep(), DoTieCheckBox(), Setting< T >::GetDefault(), and SettingBase::GetPath().

Here is the call graph for this function:

◆ TieCheckBoxOnRight() [1/2]

wxCheckBox * ShuttleGuiBase::TieCheckBoxOnRight ( const TranslatableString Prompt,
bool &  Var 
)

Definition at line 1642 of file ShuttleGui.cpp.

1643{
1644 // Only does anything different if it's creating.
1645 WrappedType WrappedRef( Var );
1646 if( mShuttleMode == eIsCreating )
1647 return AddCheckBoxOnRight( Prompt, WrappedRef.ReadAsString() == wxT("true") );
1648 return DoTieCheckBox( Prompt, WrappedRef );
1649}

References AddCheckBoxOnRight(), DoTieCheckBox(), eIsCreating, mShuttleMode, WrappedType::ReadAsString(), and wxT().

Referenced by anonymous_namespace{GetInfoCommand.cpp}::ShuttleGuiGetDefinition::TieCheckBoxOnRight().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ TieCheckBoxOnRight() [2/2]

wxCheckBox * ShuttleGuiBase::TieCheckBoxOnRight ( const TranslatableString Prompt,
const BoolSetting Setting 
)
virtual

Variant of the standard TieCheckBox which does the two step exchange between gui and stack variable and stack variable and shuttle.

Reimplemented in anonymous_namespace{GetInfoCommand.cpp}::ShuttleGuiGetDefinition.

Definition at line 1867 of file ShuttleGui.cpp.

1870{
1871 wxCheckBox * pCheck=NULL;
1872
1873 auto Value = Setting.GetDefault();
1874 WrappedType WrappedRef( Value );
1875 if( DoStep(1) ) DoDataShuttle( Setting.GetPath(), WrappedRef );
1876 if( DoStep(2) ) pCheck = DoTieCheckBoxOnRight( Prompt, WrappedRef );
1877 if( DoStep(3) ) DoDataShuttle( Setting.GetPath(), WrappedRef );
1878
1879 return pCheck;
1880}
wxCheckBox * DoTieCheckBoxOnRight(const TranslatableString &Prompt, WrappedType &WrappedRef)

References DoDataShuttle(), DoStep(), DoTieCheckBoxOnRight(), Setting< T >::GetDefault(), and SettingBase::GetPath().

Here is the call graph for this function:

◆ TieChoice() [1/3]

wxChoice * ShuttleGuiBase::TieChoice ( const TranslatableString Prompt,
ChoiceSetting choiceSetting 
)
virtual

Variant of the standard TieChoice which does the two step exchange between gui and stack variable and stack variable and shuttle.

Parameters
PromptThe prompt shown beside the control.
SettingEncapsulates setting name, internal and visible choice strings, and a designation of one of those as default.

Reimplemented in anonymous_namespace{GetInfoCommand.cpp}::ShuttleGuiGetDefinition.

Definition at line 1979 of file ShuttleGui.cpp.

1981{
1982 // Do this to force any needed migrations first
1983 choiceSetting.Read();
1984
1985 const auto &symbols = choiceSetting.GetSymbols();
1986 const auto &SettingName = choiceSetting.Key();
1987 const auto &Default = choiceSetting.Default().Internal();
1988 const auto &Choices = symbols.GetMsgids();
1989 const auto &InternalChoices = symbols.GetInternals();
1990
1991 wxChoice * pChoice=(wxChoice*)NULL;
1992
1993 int TempIndex=0;
1994// int TempIndex = TranslateToIndex( Default, InternalChoices );
1995 wxString TempStr = Default;
1996 WrappedType WrappedRef( TempStr );
1997 // Get from prefs does 1 and 2.
1998 // Put to prefs does 2 and 3.
1999 if( DoStep(1) ) DoDataShuttle( SettingName, WrappedRef ); // Get Index from Prefs.
2000 if( DoStep(1) ) TempIndex = TranslateToIndex( TempStr, InternalChoices ); // To an index
2001 if( DoStep(2) ) pChoice = TieChoice( Prompt, TempIndex, Choices );
2002 if( DoStep(3) ) TempStr = TranslateFromIndex( TempIndex, InternalChoices ); // To a string
2003 if( DoStep(3) ) choiceSetting.Write(TempStr); // Put into Prefs.
2004 return pChoice;
2005}
bool Write(const wxString &value)
Definition: Prefs.cpp:424
const wxString & Key() const
Definition: Prefs.h:439
wxString Read() const
Definition: Prefs.cpp:388
const EnumValueSymbols & GetSymbols() const
Definition: Prefs.h:441
const EnumValueSymbol & Default() const
Definition: Prefs.cpp:380
const wxString & Internal() const
wxChoice * TieChoice(const TranslatableString &Prompt, TranslatableString &Selected, const TranslatableStrings &choices)
int TranslateToIndex(const wxString &Value, const wxArrayStringEx &Choices)
String-to-Index.
wxString TranslateFromIndex(const int nIn, const wxArrayStringEx &Choices)
Index-to-String.

References ChoiceSetting::Default(), NumericConverterFormats::Default(), DoDataShuttle(), DoStep(), ChoiceSetting::GetSymbols(), ComponentInterfaceSymbol::Internal(), ChoiceSetting::Key(), ChoiceSetting::Read(), TieChoice(), TranslateFromIndex(), TranslateToIndex(), and ChoiceSetting::Write().

Here is the call graph for this function:

◆ TieChoice() [2/3]

wxChoice * ShuttleGuiBase::TieChoice ( const TranslatableString Prompt,
int &  Selected,
const TranslatableStrings choices 
)

Definition at line 1495 of file ShuttleGui.cpp.

1499{
1500 HandleOptionality( Prompt );
1501
1502 // The Add function does a UseUpId(), so don't do it here in that case.
1503 if( mShuttleMode != eIsCreating )
1504 UseUpId();
1505
1506 wxChoice * pChoice=NULL;
1507 switch( mShuttleMode )
1508 {
1509 case eIsCreating:
1510 {
1511 pChoice = AddChoice( Prompt, choices, Selected );
1512 ShuttleGui::SetMinSize(pChoice, choices);
1513 }
1514 break;
1515 // IF setting internal storage from the controls.
1516 case eIsGettingMetadata:
1517 break;
1519 {
1520 wxWindow * pWnd = wxWindow::FindWindowById( miId, mpDlg);
1521 pChoice = wxDynamicCast(pWnd, wxChoice);
1522 wxASSERT( pChoice );
1523 Selected = pChoice->GetSelection();
1524 }
1525 break;
1526 case eIsSettingToDialog:
1527 {
1528 wxWindow * pWnd = wxWindow::FindWindowById( miId, mpDlg);
1529 pChoice = wxDynamicCast(pWnd, wxChoice);
1530 wxASSERT( pChoice );
1531 pChoice->SetSelection( Selected );
1532 }
1533 break;
1534 default:
1535 wxASSERT( false );
1536 break;
1537 }
1538 return pChoice;
1539}
static void SetMinSize(wxWindow *window, const TranslatableStrings &items)

References AddChoice(), eIsCreating, eIsGettingFromDialog, eIsGettingMetadata, eIsSettingToDialog, HandleOptionality(), miId, mpDlg, mShuttleMode, ShuttleGui::SetMinSize(), and UseUpId().

Here is the call graph for this function:

◆ TieChoice() [3/3]

wxChoice * ShuttleGuiBase::TieChoice ( const TranslatableString Prompt,
TranslatableString Selected,
const TranslatableStrings choices 
)

Definition at line 1735 of file ShuttleGui.cpp.

1739{
1740 int Index = make_iterator_range( choices ).index( Selected );
1741 auto result = TieChoice( Prompt, Index, choices );
1742 if ( Index >= 0 && Index < choices.size() )
1743 Selected = choices[ Index ];
1744 else
1745 Selected = {};
1746 return result;
1747}

References make_iterator_range(), and TieChoice().

Referenced by anonymous_namespace{GetInfoCommand.cpp}::ShuttleGuiGetDefinition::TieChoice(), TieChoice(), and TieNumberAsChoice().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ TieIntegerTextBox()

wxTextCtrl * ShuttleGuiBase::TieIntegerTextBox ( const TranslatableString Prompt,
const IntSetting Setting,
const int  nChars 
)
virtual

Variant of the standard TieTextBox which does the two step exchange between gui and stack variable and stack variable and shuttle. This one does it for integer values...

Reimplemented in anonymous_namespace{GetInfoCommand.cpp}::ShuttleGuiGetDefinition.

Definition at line 1940 of file ShuttleGui.cpp.

1944{
1945 wxTextCtrl * pText=(wxTextCtrl*)NULL;
1946
1947 auto Value = Setting.GetDefault();
1948 WrappedType WrappedRef( Value );
1949 if( DoStep(1) ) DoDataShuttle( Setting.GetPath(), WrappedRef );
1950 if( DoStep(2) ) pText = DoTieNumericTextBox( Prompt, WrappedRef, nChars );
1951 if( DoStep(3) ) DoDataShuttle( Setting.GetPath(), WrappedRef );
1952 return pText;
1953}
wxTextCtrl * DoTieNumericTextBox(const TranslatableString &Prompt, WrappedType &WrappedRef, const int nChars, bool acceptEnter=false)

References DoDataShuttle(), DoStep(), DoTieNumericTextBox(), Setting< T >::GetDefault(), and SettingBase::GetPath().

Referenced by anonymous_namespace{GetInfoCommand.cpp}::ShuttleGuiGetDefinition::TieIntegerTextBox().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ TieNumberAsChoice()

wxChoice * ShuttleGuiBase::TieNumberAsChoice ( const TranslatableString Prompt,
IntSetting Setting,
const TranslatableStrings Choices,
const std::vector< int > *  pInternalChoices = nullptr,
int  iNoMatchSelector = 0 
)
virtual

Variant of the standard TieChoice which does the two step exchange between gui and stack variable and stack variable and shuttle. The Translated choices and default are integers, not Strings. Behaves identically to the previous, but is meant for use when the choices are non-exhaustive and there is a companion control for arbitrary entry.

Parameters
PromptThe prompt shown beside the control.
SettingNameThe setting name as stored in gPrefs
DefaultThe default integer value for this control
ChoicesAn array of choices that appear on screen.
pInternalChoicesThe corresponding values (as an integer array) if null, then use 0, 1, 2, ...

Reimplemented in anonymous_namespace{GetInfoCommand.cpp}::ShuttleGuiGetDefinition.

Definition at line 2018 of file ShuttleGui.cpp.

2023{
2024 auto fn = [](int arg){ return wxString::Format( "%d", arg ); };
2025
2026 wxArrayStringEx InternalChoices;
2027 if ( pInternalChoices )
2028 InternalChoices =
2029 transform_container<wxArrayStringEx>(*pInternalChoices, fn);
2030 else
2031 for ( int ii = 0; ii < (int)Choices.size(); ++ii )
2032 InternalChoices.push_back( fn( ii ) );
2033
2034 const auto Default = Setting.GetDefault();
2035
2036 miNoMatchSelector = iNoMatchSelector;
2037
2038 long defaultIndex;
2039 if ( pInternalChoices )
2040 defaultIndex = make_iterator_range( *pInternalChoices ).index( Default );
2041 else
2042 defaultIndex = Default;
2043 if ( defaultIndex < 0 || defaultIndex >= (int)Choices.size() )
2044 defaultIndex = -1;
2045
2046 ChoiceSetting choiceSetting{
2047 Setting,
2048 {
2049 ByColumns,
2050 Choices,
2051 InternalChoices,
2052 },
2053 defaultIndex
2054 };
2055
2056 return ShuttleGuiBase::TieChoice(Prompt, choiceSetting);
2057}
ByColumns_t ByColumns
Definition: Prefs.cpp:515
static const auto fn
Extend wxArrayString with move operations and construction and insertion fromstd::initializer_list.

References ByColumns, NumericConverterFormats::Default(), fn, Setting< T >::GetDefault(), make_iterator_range(), miNoMatchSelector, and TieChoice().

Referenced by anonymous_namespace{GetInfoCommand.cpp}::ShuttleGuiGetDefinition::TieNumberAsChoice().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ TieNumericTextBox() [1/3]

wxTextCtrl * ShuttleGuiBase::TieNumericTextBox ( const TranslatableString Prompt,
const DoubleSetting Setting,
const int  nChars,
bool  acceptEnter = false 
)
virtual

Variant of the standard TieTextBox which does the two step exchange between gui and stack variable and stack variable and shuttle. This one does it for double values...

Reimplemented in anonymous_namespace{GetInfoCommand.cpp}::ShuttleGuiGetDefinition.

Definition at line 1958 of file ShuttleGui.cpp.

1962{
1963 wxTextCtrl * pText=(wxTextCtrl*)NULL;
1964
1965 auto Value = Setting.GetDefault();
1966 WrappedType WrappedRef( Value );
1967 if( DoStep(1) ) DoDataShuttle( Setting.GetPath(), WrappedRef );
1968 if( DoStep(2) ) pText = DoTieNumericTextBox( Prompt, WrappedRef, nChars, acceptEnter );
1969 if( DoStep(3) ) DoDataShuttle( Setting.GetPath(), WrappedRef );
1970 return pText;
1971}

References DoDataShuttle(), DoStep(), DoTieNumericTextBox(), Setting< T >::GetDefault(), and SettingBase::GetPath().

Here is the call graph for this function:

◆ TieNumericTextBox() [2/3]

wxTextCtrl * ShuttleGuiBase::TieNumericTextBox ( const TranslatableString Prompt,
double &  Value,
const int  nChars = 0,
bool  acceptEnter = false 
)

Definition at line 1687 of file ShuttleGui.cpp.

1690{
1691 WrappedType WrappedRef( Value );
1692 return DoTieNumericTextBox( Prompt, WrappedRef, nChars, acceptEnter );
1693}

References DoTieNumericTextBox().

Here is the call graph for this function:

◆ TieNumericTextBox() [3/3]

wxTextCtrl * ShuttleGuiBase::TieNumericTextBox ( const TranslatableString Prompt,
int &  Value,
const int  nChars = 0,
bool  acceptEnter = false 
)

Definition at line 1679 of file ShuttleGui.cpp.

1682{
1683 WrappedType WrappedRef(Value);
1684 return DoTieNumericTextBox(Prompt, WrappedRef, nChars, acceptEnter);
1685}

References DoTieNumericTextBox().

Referenced by PitchAndSpeedDialog::PopulateOrExchange(), and anonymous_namespace{GetInfoCommand.cpp}::ShuttleGuiGetDefinition::TieNumericTextBox().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ TieRadioButton()

wxRadioButton * ShuttleGuiBase::TieRadioButton ( )

This function must be within a StartRadioButtonGroup - EndRadioButtonGroup pair.

Definition at line 1542 of file ShuttleGui.cpp.

1543{
1544 wxASSERT( mRadioCount >= 0); // Did you remember to use StartRadioButtonGroup() ?
1545
1546 EnumValueSymbol symbol;
1547 if (mRadioCount >= 0 && mRadioCount < (int)mRadioSymbols.size() )
1548 symbol = mRadioSymbols[ mRadioCount ];
1549
1550 // In what follows, WrappedRef is used in read only mode, but we
1551 // don't have a 'read-only' version, so we copy to deal with the constness.
1552 auto Temp = symbol.Internal();
1553 wxASSERT( !Temp.empty() ); // More buttons than values?
1554
1555 WrappedType WrappedRef( Temp );
1556
1557 mRadioCount++;
1558
1559 UseUpId();
1560 wxRadioButton * pRadioButton = NULL;
1561
1562 switch( mShuttleMode )
1563 {
1564 case eIsCreating:
1565 {
1566 const auto &Prompt = symbol.Translation();
1567
1568 mpWind = pRadioButton = safenew wxRadioButton(GetParent(), miId, Prompt,
1569 wxDefaultPosition, wxDefaultSize,
1570 (mRadioCount==1)?wxRB_GROUP:0);
1571
1572 wxASSERT( WrappedRef.IsString() );
1573 wxASSERT( mRadioValue->IsString() );
1574 const bool value =
1575 (WrappedRef.ReadAsString() == mRadioValue->ReadAsString() );
1576 pRadioButton->SetValue( value );
1577
1578 pRadioButton->SetName(wxStripMenuCodes(Prompt));
1579 UpdateSizers();
1580 }
1581 break;
1582 case eIsGettingMetadata:
1583 break;
1585 {
1586 wxWindow * pWnd = wxWindow::FindWindowById( miId, mpDlg);
1587 pRadioButton = wxDynamicCast(pWnd, wxRadioButton);
1588 wxASSERT( pRadioButton );
1589 if( pRadioButton->GetValue() )
1590 mRadioValue->WriteToAsString( WrappedRef.ReadAsString() );
1591 }
1592 break;
1593 default:
1594 wxASSERT( false );
1595 break;
1596 }
1597 return pRadioButton;
1598}
ComponentInterfaceSymbol pairs a persistent string identifier used internally with an optional,...
const wxString Translation() const

References eIsCreating, eIsGettingFromDialog, eIsGettingMetadata, GetParent(), ComponentInterfaceSymbol::Internal(), WrappedType::IsString(), miId, mpDlg, mpWind, mRadioCount, mRadioSymbols, mRadioValue, mShuttleMode, WrappedType::ReadAsString(), safenew, ComponentInterfaceSymbol::Translation(), UpdateSizers(), and UseUpId().

Here is the call graph for this function:

◆ TieSlider() [1/4]

wxSlider * ShuttleGuiBase::TieSlider ( const TranslatableString Prompt,
const IntSetting Setting,
const int  max,
const int  min = 0 
)
virtual

Variant of the standard TieSlider which does the two step exchange between gui and stack variable and stack variable and shuttle.

Reimplemented in anonymous_namespace{GetInfoCommand.cpp}::ShuttleGuiGetDefinition.

Definition at line 1884 of file ShuttleGui.cpp.

1889{
1890 wxSlider * pSlider=NULL;
1891
1892 auto Value = Setting.GetDefault();
1893 WrappedType WrappedRef( Value );
1894 if( DoStep(1) ) DoDataShuttle( Setting.GetPath(), WrappedRef );
1895 if( DoStep(2) ) pSlider = DoTieSlider( Prompt, WrappedRef, max, min );
1896 if( DoStep(3) ) DoDataShuttle( Setting.GetPath(), WrappedRef );
1897
1898 return pSlider;
1899}
wxSlider * DoTieSlider(const TranslatableString &Prompt, WrappedType &WrappedRef, const int max, const int min=0)

References DoDataShuttle(), DoStep(), DoTieSlider(), Setting< T >::GetDefault(), SettingBase::GetPath(), and min().

Here is the call graph for this function:

◆ TieSlider() [2/4]

wxSlider * ShuttleGuiBase::TieSlider ( const TranslatableString Prompt,
double &  pos,
const double  max,
const double  min = 0.0 
)

Definition at line 1702 of file ShuttleGui.cpp.

1705{
1706 WrappedType WrappedRef( pos );
1707 return DoTieSlider( Prompt, WrappedRef, max, min );
1708}

References DoTieSlider(), and min().

Here is the call graph for this function:

◆ TieSlider() [3/4]

wxSlider * ShuttleGuiBase::TieSlider ( const TranslatableString Prompt,
float &  pos,
const float  fMin,
const float  fMax 
)

Definition at line 1710 of file ShuttleGui.cpp.

1713{
1714 const float RoundFix=0.0000001f;
1715 int iVal=(pos-fMin+RoundFix)*100.0/(fMax-fMin);
1716 wxSlider * pWnd = TieSlider( Prompt, iVal, 100 );
1717 pos = iVal*(fMax-fMin)*0.01+fMin;
1718 return pWnd;
1719}
wxSlider * TieSlider(const TranslatableString &Prompt, int &pos, const int max, const int min=0)

References TieSlider().

Here is the call graph for this function:

◆ TieSlider() [4/4]

wxSlider * ShuttleGuiBase::TieSlider ( const TranslatableString Prompt,
int &  pos,
const int  max,
const int  min = 0 
)

Definition at line 1695 of file ShuttleGui.cpp.

1697{
1698 WrappedType WrappedRef( pos );
1699 return DoTieSlider( Prompt, WrappedRef, max, min );
1700}

References DoTieSlider(), and min().

Referenced by anonymous_namespace{GetInfoCommand.cpp}::ShuttleGuiGetDefinition::TieSlider(), TieSlider(), and TieVSlider().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ TieSpinCtrl() [1/2]

wxSpinCtrl * ShuttleGuiBase::TieSpinCtrl ( const TranslatableString Prompt,
const IntSetting Setting,
const int  max,
const int  min 
)
virtual

Variant of the standard TieSpinCtrl which does the two step exchange between gui and stack variable and stack variable and shuttle.

Reimplemented in anonymous_namespace{GetInfoCommand.cpp}::ShuttleGuiGetDefinition.

Definition at line 1903 of file ShuttleGui.cpp.

1908{
1909 wxSpinCtrl * pSpinCtrl=NULL;
1910
1911 auto Value = Setting.GetDefault();
1912 WrappedType WrappedRef( Value );
1913 if( DoStep(1) ) DoDataShuttle( Setting.GetPath(), WrappedRef );
1914 if( DoStep(2) ) pSpinCtrl = DoTieSpinCtrl( Prompt, WrappedRef, max, min );
1915 if( DoStep(3) ) DoDataShuttle( Setting.GetPath(), WrappedRef );
1916
1917 return pSpinCtrl;
1918}
wxSpinCtrl * DoTieSpinCtrl(const TranslatableString &Prompt, WrappedType &WrappedRef, const int max, const int min=0)

References DoDataShuttle(), DoStep(), DoTieSpinCtrl(), Setting< T >::GetDefault(), SettingBase::GetPath(), and min().

Here is the call graph for this function:

◆ TieSpinCtrl() [2/2]

wxSpinCtrl * ShuttleGuiBase::TieSpinCtrl ( const TranslatableString Prompt,
int &  Value,
const int  max,
const int  min = 0 
)

Definition at line 1651 of file ShuttleGui.cpp.

1653{
1654 WrappedType WrappedRef(Value);
1655 return DoTieSpinCtrl( Prompt, WrappedRef, max, min );
1656}

References DoTieSpinCtrl(), and min().

Referenced by PitchAndSpeedDialog::PopulateOrExchange(), and anonymous_namespace{GetInfoCommand.cpp}::ShuttleGuiGetDefinition::TieSpinCtrl().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ TieTextBox() [1/4]

wxTextCtrl * ShuttleGuiBase::TieTextBox ( const TranslatableString Caption,
wxString &  Value,
const int  nChars = 0 
)

Definition at line 1658 of file ShuttleGui.cpp.

1660{
1661 WrappedType WrappedRef(Selected);
1662 return DoTieTextBox( Prompt, WrappedRef, nChars );
1663}
wxTextCtrl * DoTieTextBox(const TranslatableString &Prompt, WrappedType &WrappedRef, const int nChars)

References DoTieTextBox().

Referenced by anonymous_namespace{GetInfoCommand.cpp}::ShuttleGuiGetDefinition::TieTextBox().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ TieTextBox() [2/4]

wxTextCtrl * ShuttleGuiBase::TieTextBox ( const TranslatableString Prompt,
const StringSetting Setting,
const int  nChars 
)
virtual

Variant of the standard TieTextBox which does the two step exchange between gui and stack variable and stack variable and shuttle.

Reimplemented in anonymous_namespace{GetInfoCommand.cpp}::ShuttleGuiGetDefinition.

Definition at line 1922 of file ShuttleGui.cpp.

1926{
1927 wxTextCtrl * pText=(wxTextCtrl*)NULL;
1928
1929 auto Value = Setting.GetDefault();
1930 WrappedType WrappedRef( Value );
1931 if( DoStep(1) ) DoDataShuttle( Setting.GetPath(), WrappedRef );
1932 if( DoStep(2) ) pText = DoTieTextBox( Prompt, WrappedRef, nChars );
1933 if( DoStep(3) ) DoDataShuttle( Setting.GetPath(), WrappedRef );
1934 return pText;
1935}

References DoDataShuttle(), DoStep(), DoTieTextBox(), Setting< T >::GetDefault(), and SettingBase::GetPath().

Here is the call graph for this function:

◆ TieTextBox() [3/4]

wxTextCtrl * ShuttleGuiBase::TieTextBox ( const TranslatableString Prompt,
double &  Value,
const int  nChars = 0 
)

Definition at line 1672 of file ShuttleGui.cpp.

1674{
1675 WrappedType WrappedRef( Value );
1676 return DoTieTextBox( Prompt, WrappedRef, nChars );
1677}

References DoTieTextBox().

Here is the call graph for this function:

◆ TieTextBox() [4/4]

wxTextCtrl * ShuttleGuiBase::TieTextBox ( const TranslatableString Prompt,
int &  Selected,
const int  nChars = 0 
)

Definition at line 1665 of file ShuttleGui.cpp.

1667{
1668 WrappedType WrappedRef( Selected );
1669 return DoTieTextBox( Prompt, WrappedRef, nChars );
1670}

References DoTieTextBox().

Here is the call graph for this function:

◆ TieVSlider()

wxSlider * ShuttleGuiBase::TieVSlider ( const TranslatableString Prompt,
float &  pos,
const float  fMin,
const float  fMax 
)

Definition at line 1721 of file ShuttleGui.cpp.

1724{
1725 int iVal=(pos-fMin)*100.0/(fMax-fMin);
1726// if( mShuttleMode == eIsCreating )
1727// {
1728// return AddVSlider( Prompt, iVal, 100 );
1729// }
1730 wxSlider * pWnd = TieSlider( Prompt, iVal, 100 );
1731 pos = iVal*(fMax-fMin)*0.01+fMin;
1732 return pWnd;
1733}

References TieSlider().

Here is the call graph for this function:

◆ TranslateFromIndex()

wxString ShuttleGuiBase::TranslateFromIndex ( const int  nIn,
const wxArrayStringEx Choices 
)

Index-to-String.

Definition at line 1767 of file ShuttleGui.cpp.

1768{
1769 int n = nIn;
1770 if( n== wxNOT_FOUND )
1773 if( n < (int)Choices.size() )
1774 {
1775 return Choices[n];
1776 }
1777 return wxT("");
1778}

References miNoMatchSelector, and wxT().

Referenced by TieChoice().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ TranslateToIndex()

int ShuttleGuiBase::TranslateToIndex ( const wxString &  Value,
const wxArrayStringEx Choices 
)

String-to-Index.

Definition at line 1757 of file ShuttleGui.cpp.

1758{
1759 int n = make_iterator_range( Choices ).index( Value );
1760 if( n == wxNOT_FOUND )
1763 return n;
1764}

References make_iterator_range(), and miNoMatchSelector.

Referenced by TieChoice().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ UpdateSizers()

void ShuttleGuiBase::UpdateSizers ( )
protected

Definition at line 2192 of file ShuttleGui.cpp.

2193{ UpdateSizersCore( false, wxEXPAND | wxALL );}

References UpdateSizersCore().

Referenced by AddCheckBox(), AddCheckBoxOnRight(), AddChoice(), AddCombo(), AddConstTextBox(), AddFixedText(), AddGrid(), AddListBox(), AddListControl(), AddListControlReportMode(), AddNumericTextBox(), AddReadOnlyText(), AddSlider(), AddSpinCtrl(), ShuttleGui::AddStandardButtons(), AddTextBox(), AddTextWindow(), AddTitle(), AddTree(), AddVariableText(), DoAddRadioButton(), StartInvisiblePanel(), StartNotebook(), StartPanel(), StartScroller(), StartSimplebook(), StartStatic(), StartVerticalLay(), and TieRadioButton().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ UpdateSizersAtStart()

void ShuttleGuiBase::UpdateSizersAtStart ( )
protected

Definition at line 2201 of file ShuttleGui.cpp.

2202{ UpdateSizersCore( true, wxEXPAND | wxALL );}

References UpdateSizersCore().

Referenced by StartScroller().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ UpdateSizersC()

void ShuttleGuiBase::UpdateSizersC ( )
protected

Definition at line 2196 of file ShuttleGui.cpp.

2197{ UpdateSizersCore( false, wxALIGN_CENTRE | wxALL );}

References UpdateSizersCore().

Referenced by AddFixedText(), AddIcon(), and AddVariableText().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ UpdateSizersCore()

void ShuttleGuiBase::UpdateSizersCore ( bool  bPrepend,
int  Flags,
bool  prompt = false 
)
protected

Definition at line 2138 of file ShuttleGui.cpp.

2139{
2140 if( mpWind && mpParent )
2141 {
2142 int useFlags = Flags;
2143
2144 if ( !prompt && mItem.mWindowPositionFlags )
2145 // override the given Flags
2146 useFlags = mItem.mWindowPositionFlags;
2147
2148 if (!prompt)
2149 ApplyItem( 0, mItem, mpWind, mpDlg );
2150
2151 if( mpSizer){
2152 if( bPrepend )
2153 {
2154 mpSizer->Prepend(mpWind, miProp, useFlags, miBorder);
2155 }
2156 else
2157 {
2158 mpSizer->Add(mpWind, miProp, useFlags, miBorder);
2159 }
2160 }
2161
2162 if (!prompt) {
2163 ApplyItem( 1, mItem, mpWind, mpDlg );
2164 // Reset to defaults
2165 mItem = {};
2166 }
2167 }
2168
2169 if( mpSubSizer && mpSizer )
2170 {
2171 // When adding sizers into sizers, don't add a border.
2172 // unless it's a static box sizer.
2173 wxSizer *const pSubSizer = mpSubSizer.get();
2174 if (wxDynamicCast(pSubSizer, wxStaticBoxSizer))
2175 {
2176 mpSizer->Add( mpSubSizer.release(), miSizerProp, Flags , miBorder);
2177 }
2178 else
2179 {
2180 mpSizer->Add( mpSubSizer.release(), miSizerProp, Flags ,0);//miBorder);
2181 }
2182 mpSizer = pSubSizer;
2183 PushSizer();
2184 }
2185
2186 mpWind = NULL;
2187 miProp = 0;
2188 miSizerProp =0;
2189}
static void ApplyItem(int step, const DialogDefinition::Item &item, wxWindow *pWind, wxWindow *pDlg)

References ApplyItem(), miBorder, miProp, miSizerProp, mItem, mpDlg, mpParent, mpSizer, mpSubSizer, mpWind, DialogDefinition::Item::mWindowPositionFlags, and PushSizer().

Referenced by AddBitmapButton(), AddButton(), AddPrompt(), AddUnits(), AddVariableText(), AddWindow(), StartHorizontalLay(), StartMultiColumn(), StartVerticalLay(), StartWrapLay(), UpdateSizers(), UpdateSizersAtStart(), and UpdateSizersC().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ UseUpId()

void ShuttleGuiBase::UseUpId ( )

The Ids increment as we add NEW controls. However, the user can force the id manually, for example if they need a specific Id for a button, and then let it resume normal numbering later. UseUpId() sets miId to the next Id, either using the user specicfied one, or resuming the sequence.

Definition at line 2069 of file ShuttleGui.cpp.

2070{
2071 if( miIdSetByUser > 0)
2072 {
2074 miIdSetByUser = -1;
2075 return;
2076 }
2077 miId = miIdNext++;
2078}

References miId, miIdNext, and miIdSetByUser.

Referenced by AddBitmapButton(), AddButton(), AddCheckBox(), AddCheckBoxOnRight(), AddChoice(), AddCombo(), AddConstTextBox(), AddFixedText(), AddGrid(), AddIcon(), AddListBox(), AddListControl(), AddListControlReportMode(), AddNumericTextBox(), AddReadOnlyText(), AddSlider(), AddSpinCtrl(), AddTextBox(), AddTextWindow(), AddTree(), AddVariableText(), DoAddRadioButton(), DoTieCheckBox(), DoTieCheckBoxOnRight(), DoTieNumericTextBox(), DoTieSlider(), DoTieSpinCtrl(), DoTieTextBox(), StartInvisiblePanel(), StartNotebook(), StartPanel(), StartScroller(), StartSimplebook(), StartStatic(), TieChoice(), and TieRadioButton().

Here is the caller graph for this function:

Member Data Documentation

◆ miBorder

int ShuttleGuiBase::miBorder
protected

Definition at line 540 of file ShuttleGui.h.

Referenced by GetBorder(), Init(), StartInvisiblePanel(), StartPanel(), and UpdateSizersCore().

◆ miId

int ShuttleGuiBase::miId
protected

◆ miIdNext

int ShuttleGuiBase::miIdNext
protected

Definition at line 545 of file ShuttleGui.h.

Referenced by ResetId(), and UseUpId().

◆ miIdSetByUser

int ShuttleGuiBase::miIdSetByUser
protected

Definition at line 546 of file ShuttleGui.h.

Referenced by ShuttleGui::Id(), ResetId(), and UseUpId().

◆ miNoMatchSelector

int ShuttleGuiBase::miNoMatchSelector
protected

Controls source/destination of shuttled data. You can leave this NULL if you are shuttling to variables

Definition at line 534 of file ShuttleGui.h.

Referenced by Init(), TieNumberAsChoice(), TranslateFromIndex(), and TranslateToIndex().

◆ miProp

int ShuttleGuiBase::miProp
protected

◆ miPropSetByUser

int ShuttleGuiBase::miPropSetByUser
protected

Definition at line 548 of file ShuttleGui.h.

Referenced by Init(), Prop(), and SetProportions().

◆ miSizerProp

int ShuttleGuiBase::miSizerProp
protected

◆ mItem

DialogDefinition::Item ShuttleGuiBase::mItem
protected

Definition at line 582 of file ShuttleGui.h.

Referenced by AddReadOnlyText(), AddSlider(), GetStyle(), and UpdateSizersCore().

◆ mpbOptionalFlag

bool* ShuttleGuiBase::mpbOptionalFlag
protected

◆ mpDlg

wxWindow* const ShuttleGuiBase::mpDlg
protected

◆ mpParent

wxWindow* ShuttleGuiBase::mpParent
protected

◆ mpShuttle

std::unique_ptr<ShuttlePrefs> ShuttleGuiBase::mpShuttle
protected

Definition at line 532 of file ShuttleGui.h.

Referenced by DoDataShuttle(), Init(), and ShuttleGui::ShuttleGui().

◆ mpSizer

wxSizer* ShuttleGuiBase::mpSizer
protected

◆ mpSubSizer

std::unique_ptr<wxSizer> ShuttleGuiBase::mpSubSizer
protected

◆ mpWind

wxWindow* ShuttleGuiBase::mpWind
protected

◆ mRadioCount

int ShuttleGuiBase::mRadioCount
private

The wrapped value associated with the active radio button.

Definition at line 576 of file ShuttleGui.h.

Referenced by EndRadioButtonGroup(), Init(), StartRadioButtonGroup(), and TieRadioButton().

◆ mRadioSettingName

wxString ShuttleGuiBase::mRadioSettingName
private

Definition at line 574 of file ShuttleGui.h.

Referenced by EndRadioButtonGroup(), Init(), and StartRadioButtonGroup().

◆ mRadioSymbols

std::vector<EnumValueSymbol> ShuttleGuiBase::mRadioSymbols
private

Definition at line 573 of file ShuttleGui.h.

Referenced by EndRadioButtonGroup(), StartRadioButtonGroup(), and TieRadioButton().

◆ mRadioValue

std::optional<WrappedType> ShuttleGuiBase::mRadioValue
private

The setting controlled by a group.

Definition at line 575 of file ShuttleGui.h.

Referenced by EndRadioButtonGroup(), StartRadioButtonGroup(), and TieRadioButton().

◆ mRadioValueString

wxString ShuttleGuiBase::mRadioValueString
private

The index of this radio item. -1 for none.

Definition at line 577 of file ShuttleGui.h.

Referenced by StartRadioButtonGroup().

◆ mShuttleMode

teShuttleMode ShuttleGuiBase::mShuttleMode
protected

◆ mSizerDepth

int ShuttleGuiBase::mSizerDepth
protected

Definition at line 539 of file ShuttleGui.h.

Referenced by Init(), PopSizer(), and PushSizer().

◆ pSizerStack

wxSizer* ShuttleGuiBase::pSizerStack[nMaxNestedSizers]
protected

Definition at line 530 of file ShuttleGui.h.

Referenced by PopSizer(), and PushSizer().


The documentation for this class was generated from the following files: