Audacity  2.3.1
ShuttleGui.h
Go to the documentation of this file.
1 /**********************************************************************
2 
3  Audacity: A Digital Audio Editor
4 
5  ShuttleGui.h
6 
7  James Crook
8 
9  Audacity is free software.
10  This file is licensed under the wxWidgets license, see License.txt
11 
12 **********************************************************************/
13 
14 #ifndef SHUTTLE_GUI
15 #define SHUTTLE_GUI
16 
17 #include "Audacity.h"
18 
19 #include <vector>
20 #include "MemoryX.h"
21 #include <wx/grid.h>
22 #include <wx/sizer.h>
23 #include <wx/string.h>
24 
25 #include "WrappedType.h"
26 
27 // For ShuttleGuiGetDefinitions.
29 
30 class EnumSetting;
31 
32 
33 const int nMaxNestedSizers = 20;
34 
36 {
43 
44  // Next two are only ever seen in constructor.
45  // After that they revert to one of the modes above.
46  // They are used to achieve 'two step' operation,
47  // where we transfer between two shuttles in one go.
50 };
51 
52 class wxListCtrl;
53 class wxCheckBox;
54 class wxChoice;
55 class wxComboBox;
56 class wxScrolledWindow;
57 class wxStaticText;
58 class wxTreeCtrl;
59 class wxTextCtrl;
60 class wxSlider;
61 class wxTreeListCtrl;
62 class wxNotebook;
63 typedef wxWindow wxNotebookPage; // so far, any window can be a page
64 class wxButton;
65 class wxBitmapButton;
66 class wxRadioButton;
67 class wxBitmap;
68 class wxPanel;
69 class wxSizer;
70 class wxStaticBox;
71 class wxMenuBar;
72 class wxMenu;
73 class wxSpinCtrl;
74 class wxListBox;
75 class wxGrid;
76 class Shuttle;
77 
78 class WrappedType;
79 
80 class AUDACITY_DLL_API ShuttleGuiBase /* not final */
81 {
82 public:
83  ShuttleGuiBase(wxWindow * pParent,teShuttleMode ShuttleMode);
84  virtual ~ShuttleGuiBase();
85  void Init();
86  void ResetId();
87 
88 //-- Add functions. These only add a widget or 2.
89  void HandleOptionality(const wxString &Prompt);
90  void AddPrompt(const wxString &Prompt);
91  void AddUnits(const wxString &Prompt);
92  void AddTitle(const wxString &Prompt);
93  wxWindow * AddWindow(wxWindow * pWindow, int Flags = wxALIGN_CENTRE | wxALL );
94  wxSlider * AddSlider(const wxString &Prompt, int pos, int Max, int Min = 0);
95  wxSlider * AddVSlider(const wxString &Prompt, int pos, int Max);
96  wxSpinCtrl * AddSpinCtrl(const wxString &Prompt, int Value, int Max, int Min);
97  wxTreeCtrl * AddTree();
98  wxRadioButton * AddRadioButton( const wxString & Prompt );
99  wxRadioButton * AddRadioButtonToGroup( const wxString & Prompt);
100  wxButton * AddButton( const wxString & Text, int PositionFlags = wxALIGN_CENTRE );
101  wxBitmapButton * AddBitmapButton(const wxBitmap &Bitmap, int PositionFlags = wxALIGN_CENTRE);
102  wxStaticText * AddVariableText(const wxString &Str, bool bCenter = false, int PositionFlags = 0);
103  wxTextCtrl * AddTextBox(const wxString &Caption, const wxString &Value, const int nChars);
104  wxTextCtrl * AddNumericTextBox(const wxString &Caption, const wxString &Value, const int nChars);
105  wxTextCtrl * AddTextWindow(const wxString &Value);
106  wxListBox * AddListBox(const wxArrayString * pChoices, long style = 0);
107  wxListCtrl * AddListControl();
108  wxListCtrl * AddListControlReportMode();
109  wxGrid * AddGrid();
110  wxCheckBox * AddCheckBox( const wxString &Prompt, const wxString &Selected);
111  wxCheckBox * AddCheckBoxOnRight( const wxString &Prompt, const wxString &Selected);
112  wxComboBox * AddCombo( const wxString &Prompt, const wxString &Selected,const wxArrayString * pChoices, long style = 0 );
113  wxChoice * AddChoice( const wxString &Prompt, const wxString &Selected, const wxArrayString * pChoices );
114  wxMenuBar * AddMenuBar( );
115  wxMenu * AddMenu( const wxString & Title );
116  void AddIcon( wxBitmap * pBmp);
117  void AddIconButton( const wxString & Command, const wxString & Params,wxBitmap * pBmp );
118  void AddFixedText( const wxString & Str, bool bCenter = false );
119  void AddConstTextBox( const wxString &Caption, const wxString & Value );
120 
121 //-- Start and end functions. These are used for sizer, or other window containers
122 // and create the appropriate widget.
123  void StartHorizontalLay(int PositionFlags=wxALIGN_CENTRE, int iProp=1);
124  void EndHorizontalLay();
125  void StartVerticalLay(int iProp=1);
126  void StartVerticalLay(int PositionFlags, int iProp);
127 
128  void EndVerticalLay();
129  wxScrolledWindow * StartScroller(int iStyle=0);
130  void EndScroller();
131  wxPanel * StartPanel(int iStyle=0);
132  void EndPanel();
133  void StartMultiColumn(int nCols, int PositionFlags=wxALIGN_LEFT);
134  void EndMultiColumn();
135 
136  void StartTwoColumn() {StartMultiColumn(2);};
137  void EndTwoColumn() {EndMultiColumn();};
138  void StartThreeColumn(){StartMultiColumn(3);};
139  void EndThreeColumn(){EndMultiColumn();};
140 
141  wxStaticBox * StartStatic( const wxString & Str, int iProp=0 );
142  void EndStatic();
143 
144  wxNotebook * StartNotebook();
145  void EndNotebook();
146  wxNotebookPage * StartNotebookPage( const wxString & Name );
147  void StartNotebookPage( const wxString & Name, wxNotebookPage * pPage );
148  void EndNotebookPage();
149  wxPanel * StartInvisiblePanel();
150  void EndInvisiblePanel();
151 
152  void StartRadioButtonGroup( const wxString & SettingName );
153  void EndRadioButtonGroup();
154 
155  void StartRadioButtonGroup( const wxString & SettingName, const int iDefaultValue );
156  void StartRadioButtonGroup( const wxString & SettingName, const wxString &DefaultValue );
157 
158  void DoDataShuttle( const wxString &Name, WrappedType & WrappedRef );
159 
160  bool DoStep( int iStep );
161  int TranslateToIndex( const wxString &Value, const wxArrayString &Choices );
162  wxString TranslateFromIndex( const int nIn, const wxArrayString &Choices );
163  int TranslateToIndex( const int Value, const std::vector<int> &Choices );
164  int TranslateFromIndex( const int nIn, const std::vector<int> &Choices );
165 
166 //-- Tie functions both add controls and also read/write to them.
167 // The ones taking a 'WrappedType' are type-generic and are used by the type specific ones.
168 
169  wxTextCtrl * TieTextBox( const wxString &Prompt, WrappedType & WrappedRef, const int nChars);
170  wxTextCtrl * TieTextBox( const wxString &Caption, wxString & Value, const int nChars=0);
171  wxTextCtrl * TieTextBox( const wxString &Prompt, int &Selected, const int nChars=0);
172  wxTextCtrl * TieTextBox( const wxString &Prompt, double &Value, const int nChars=0);
173 
174  wxTextCtrl * TieNumericTextBox( const wxString &Prompt, WrappedType & WrappedRef, const int nChars);
175  wxTextCtrl * TieNumericTextBox( const wxString &Caption, wxString & Value, const int nChars=0);
176  wxTextCtrl * TieNumericTextBox( const wxString &Prompt, int &Selected, const int nChars=0);
177  wxTextCtrl * TieNumericTextBox( const wxString &Prompt, double &Value, const int nChars=0);
178 
179  wxCheckBox * TieCheckBox( const wxString &Prompt, WrappedType & WrappedRef );
180  wxCheckBox * TieCheckBox( const wxString &Prompt, const wxString &Selected );
181  wxCheckBox * TieCheckBox( const wxString &Prompt, bool & Var );
182  wxCheckBox * TieCheckBoxOnRight( const wxString & Prompt, WrappedType & WrappedRef );
183  wxCheckBox * TieCheckBoxOnRight( const wxString & Prompt, bool & Var );
184 
185  wxChoice * TieChoice( const wxString &Prompt, WrappedType & WrappedRef, const wxArrayString * pChoices );
186  wxChoice * TieChoice( const wxString &Prompt, wxString &Selected, const wxArrayString * pChoices );
187  wxChoice * TieChoice( const wxString &Prompt, int &Selected, const wxArrayString * pChoices );
188 
189  wxSlider * TieSlider( const wxString &Prompt, WrappedType & WrappedRef, const int max, const int min = 0 );
190  wxSlider * TieSlider( const wxString &Prompt, int &pos, const int max, const int min = 0);
191  wxSlider * TieSlider( const wxString &Prompt, double &pos, const double max, const double min = 0.0);
192  wxSlider * TieSlider( const wxString &Prompt, float &pos, const float fMin, const float fMax);
193  wxSlider * TieVSlider( const wxString &Prompt, float &pos, const float fMin, const float fMax);
194 
195  wxRadioButton * TieRadioButton( const wxString & Prompt, WrappedType &WrappedRef);
196  wxRadioButton * TieRadioButton( const wxString &Prompt, const int iValue);
197  wxRadioButton * TieRadioButton( const wxString &Prompt, const wxString &Value);
198 
199  wxSpinCtrl * TieSpinCtrl( const wxString &Prompt, WrappedType & WrappedRef, const int max, const int min = 0 );
200  wxSpinCtrl * TieSpinCtrl( const wxString &Prompt, int &Value, const int max, const int min = 0 );
201 
202 
203 //-- Variants of the standard Tie functions which do two step exchange in one go
204 // Note that unlike the other Tie functions, ALL the arguments are const.
205 // That's because the data is being exchanged between the dialog and mpShuttle
206 // so it doesn't need an argument that is writeable.
207  virtual wxCheckBox * TieCheckBox(
208  const wxString &Prompt,
209  const wxString &SettingName,
210  const bool bDefault);
211  virtual wxCheckBox * TieCheckBoxOnRight(
212  const wxString &Prompt,
213  const wxString &SettingName,
214  const bool bDefault);
215 
216  // This one is defined in terms of the next and not virtual
217  virtual wxChoice *TieChoice(
218  const wxString &Prompt,
219  EnumSetting &enumSetting );
220 
221  virtual wxChoice * TieChoice(
222  const wxString &Prompt,
223  const wxString &SettingName,
224  const wxString &Default,
225  const wxArrayString &Choices,
226  const wxArrayString & InternalChoices );
227 
228  // This overload of TieChoice should no longer be used in Preferences!
229  // Some uses do remain in export settings dialogs.
230  virtual wxChoice * TieChoice(
231  const wxString &Prompt,
232  const wxString &SettingName,
233  const int Default,
234  const wxArrayString & Choices,
235  const std::vector<int> & InternalChoices );
236 
237  // This overload presents what is really a numerical setting as a choice among
238  // commonly used values, but the choice is not exhaustive because there is
239  // also an associated control that allows entry of a user-specified value
240  // that is arbitrary (within some bounds).
241  // This behaves just like the previous for building dialogs, but the
242  // behavior is different when the call is intercepted for purposes of
243  // emitting scripting information about Preferences.
244  virtual wxChoice * TieNumberAsChoice(
245  const wxString &Prompt,
246  const wxString &SettingName,
247  const int Default,
248  const wxArrayString & Choices,
249  const std::vector<int> & InternalChoices );
250 
251  virtual wxTextCtrl * TieTextBox(
252  const wxString &Prompt,
253  const wxString &SettingName,
254  const wxString &Default,
255  const int nChars);
256  virtual wxTextCtrl * TieTextBox(
257  const wxString & Prompt,
258  const wxString & SettingName,
259  const double & Default,
260  const int nChars);
261  virtual wxTextCtrl * TieNumericTextBox(
262  const wxString &Prompt,
263  const wxString &SettingName,
264  const wxString &Default,
265  const int nChars);
266  virtual wxTextCtrl * TieNumericTextBox(
267  const wxString & Prompt,
268  const wxString & SettingName,
269  const double & Default,
270  const int nChars);
271  virtual wxSlider * TieSlider(
272  const wxString & Prompt,
273  const wxString & SettingName,
274  const int iDefault,
275  const int max,
276  const int min = 0);
277  virtual wxSpinCtrl * TieSpinCtrl(
278  const wxString &Prompt,
279  const wxString &SettingName,
280  const int Value,
281  const int max,
282  const int min);
283 //-- End of variants.
284  void EnableCtrl( bool bEnable );
285  void SetSizeHints( int minX, int minY );
286  void SetBorder( int Border ) {miBorder = Border;};
287  void SetStyle( int Style ) {miStyle = Style;};
288  void SetNoMatchSelector( int iSelector ) {miNoMatchSelector = iSelector;};
289  void SetSizerProportion( int iProp ) {miSizerProp = iProp;};
290  void SetStretchyCol( int i );
291  void SetStretchyRow( int i );
292 
293 //--Some Additions since June 2007 that don't fit in elsewhere...
294  wxWindow * GetParent()
295  {
296  // This assertion justifies the use of safenew in many places where GetParent()
297  // is used to construct a window
298  wxASSERT(mpParent != NULL);
299  return mpParent;
300  }
301  ShuttleGuiBase & Prop( int iProp );
302  void UseUpId();
303 
304  wxSizer * GetSizer() {return mpSizer;}
305 
306 protected:
307  void SetProportions( int Default );
308  void PushSizer();
309  void PopSizer();
310 
311  void UpdateSizersCore( bool bPrepend, int Flags );
312  void UpdateSizers();
313  void UpdateSizersC();
314  void UpdateSizersAtStart();
315 
316  long Style( long Style );
317 
318 private:
319  void SetSizeHints( const wxArrayString & items );
320 public:
321  static void SetSizeHints( wxWindow *window, const wxArrayString & items );
322 
323 protected:
324  wxWindow * mpLastWind;
325  wxWindow * mpDlg;
326  wxSizer * pSizerStack[ nMaxNestedSizers ];
327 
328  std::unique_ptr<Shuttle> mpShuttle;
331 
333 
334  // These five are needed to handle radio button groups.
335  wxString mSettingName;
337 
339  wxString mRadioValueString;
341 
344  int miBorder;
345  long miStyle;
346  int miProp;
347 
348  // See UseUpId() for explanation of these three.
349  int miId;
350  int miIdNext;
352  // Proportion set by user rather than default.
354 
356 
357  std::unique_ptr<wxSizer> mpSubSizer;
358  wxSizer * mpSizer;
359  wxWindow * mpParent;
360  wxWindow * mpWind;
361  wxMenuBar * mpMenuBar;
362  wxMenu * mpMenu;
363 };
364 
365 // A rarely used helper function that sets a pointer
366 // ONLY if the value it is to be set to is non NULL.
367 extern void SetIfCreated( wxChoice *&Var, wxChoice * Val );
368 extern void SetIfCreated( wxTextCtrl *&Var, wxTextCtrl * Val );
369 extern void SetIfCreated( wxStaticText *&Var, wxStaticText * Val );
370 
371 class GuiWaveTrack;
372 class AttachableScrollBar;
373 class ViewInfo;
374 #include <wx/scrolbar.h> // to get wxSB_HORIZONTAL
375 
376 // CreateStdButtonSizer defs...should probably move to widgets subdir
377 enum
378 {
379  eOkButton = 0x0001,
380  eCancelButton = 0x0002,
381  eYesButton = 0x0004,
382  eNoButton = 0x0008,
383  eHelpButton = 0x0010,
384  ePreviewButton = 0x0020,
385  eDebugButton = 0x0040,
388  eApplyButton = 0x0200,
389  eCloseButton = 0x0400,
390 };
391 
392 enum
393 {
394  // ePreviewID = wxID_LOWEST - 1,
395  // But there is a wxID_PREVIEW
396  ePreviewID = wxID_PREVIEW,
397 
398  eDebugID = wxID_LOWEST - 2,
399  eSettingsID = wxID_LOWEST - 3,
400  ePreviewDryID = wxID_LOWEST - 4,
401  eCloseID = wxID_CANCEL
402 };
403 
404 AUDACITY_DLL_API std::unique_ptr<wxSizer> CreateStdButtonSizer( wxWindow *parent,
405  long buttons = eOkButton | eCancelButton,
406  wxWindow *extra = NULL );
407 
408 // ShuttleGui extends ShuttleGuiBase with Audacity specific extensions.
409 class AUDACITY_DLL_API ShuttleGui /* not final */ : public ShuttleGuiBase
410 {
411 public:
412  ShuttleGui(wxWindow * pParent,teShuttleMode ShuttleMode);
413  ~ShuttleGui(void);
414 public:
415  ShuttleGui & Optional( bool & bVar );
416  ShuttleGui & Id(int id );
417  // Prop() sets the proportion value, defined as in wxSizer::Add().
418  ShuttleGui & Prop( int iProp ){ ShuttleGuiBase::Prop(iProp); return *this;}; // Has to be here too, to return a ShuttleGui and not a ShuttleGuiBase.
419  GuiWaveTrack * AddGuiWaveTrack( const wxString & Name);
420  AttachableScrollBar * AddAttachableScrollBar( long style = wxSB_HORIZONTAL );
421  void AddStandardButtons( long buttons = eOkButton | eCancelButton, wxButton *extra = NULL );
422  wxSizerItem * AddSpace( int width, int height );
423  wxSizerItem * AddSpace( int size ) { return AddSpace( size, size ); };
424 
426 };
427 
428 
429 /**************************************************************************/
433 {
434 public:
435  ShuttleGuiGetDefinition(wxWindow * pParent,CommandMessageTarget & target );
436  virtual ~ShuttleGuiGetDefinition();
437 
438  wxCheckBox * TieCheckBox(
439  const wxString &Prompt,
440  const wxString &SettingName,
441  const bool bDefault) override;
442  wxCheckBox * TieCheckBoxOnRight(
443  const wxString &Prompt,
444  const wxString &SettingName,
445  const bool bDefault) override;
446  wxChoice * TieChoice(
447  const wxString &Prompt,
448  const wxString &SettingName,
449  const wxString &Default,
450  const wxArrayString &Choices,
451  const wxArrayString & InternalChoices ) override;
452 
453  // An assertion will be violated if this override is reached!
454  wxChoice * TieChoice(
455  const wxString &Prompt,
456  const wxString &SettingName,
457  const int Default,
458  const wxArrayString & Choices,
459  const std::vector<int> & InternalChoices) override;
460 
461  wxChoice * TieNumberAsChoice(
462  const wxString &Prompt,
463  const wxString &SettingName,
464  const int Default,
465  const wxArrayString & Choices,
466  const std::vector<int> & InternalChoices) override;
467 
468  wxTextCtrl * TieTextBox(
469  const wxString &Prompt,
470  const wxString &SettingName,
471  const wxString &Default,
472  const int nChars) override;
473  wxTextCtrl * TieTextBox(
474  const wxString & Prompt,
475  const wxString & SettingName,
476  const double & Default,
477  const int nChars) override;
478  wxTextCtrl * TieNumericTextBox(
479  const wxString &Prompt,
480  const wxString &SettingName,
481  const wxString &Default,
482  const int nChars) override;
483  wxTextCtrl * TieNumericTextBox(
484  const wxString & Prompt,
485  const wxString & SettingName,
486  const double & Default,
487  const int nChars) override;
488  wxSlider * TieSlider(
489  const wxString & Prompt,
490  const wxString & SettingName,
491  const int iDefault,
492  const int max,
493  const int min = 0) override;
494  wxSpinCtrl * TieSpinCtrl(
495  const wxString &Prompt,
496  const wxString &SettingName,
497  const int Value,
498  const int max,
499  const int min) override;
500 };
501 
502 #endif
ShuttleGuiGetDefinition(wxWindow *pParent, CommandMessageTarget &target)
void EndThreeColumn()
Definition: ShuttleGui.h:139
WrappedType mRadioValue
The index of this radio item. -1 for none.
Definition: ShuttleGui.h:338
void SetNoMatchSelector(int iSelector)
Definition: ShuttleGui.h:288
An AttachableScrollBar is a scroll bar that can be attached to multiple items and so control their sc...
ViewInfo is used mainly to hold the zooming, selection and scroll information. It also has some statu...
Definition: ViewInfo.h:143
virtual ~ShuttleGuiGetDefinition()
Derived from ShuttleGuiBase, an Audacity specific class for shuttling data to and from GUI...
Definition: ShuttleGui.h:409
wxCheckBox * TieCheckBoxOnRight(const wxString &Prompt, const wxString &SettingName, const bool bDefault) override
wxSizerItem * AddSpace(int size)
Definition: ShuttleGui.h:423
std::unique_ptr< Shuttle > mpShuttle
Definition: ShuttleGui.h:328
Moves data from one place to another, converting it as required.
Definition: Shuttle.h:20
wxString mRadioValueString
The wrapped value associated with the active radio button.
Definition: ShuttleGui.h:339
CommandMessageTargetDecorator is a CommandOutputTarget that forwards its work on to another one...
wxWindow * mpDlg
Definition: ShuttleGui.h:325
Shuttle that retrieves a JSON format definition of a command's parameters.
Definition: ShuttleGui.h:432
int miSizerProp
Unwrapped integer value.
Definition: ShuttleGui.h:342
int mRadioValueInt
Unwrapped string value.
Definition: ShuttleGui.h:340
std::unique_ptr< CommandItem > Command(const wxString &name, const wxString &label_in, bool hasDialog, CommandHandlerFinder finder, CommandFunctorPointer callback, CommandFlag flags, const CommandManager::Options &options={})
wxChoice * TieNumberAsChoice(const wxString &Prompt, const wxString &SettingName, const int Default, const wxArrayString &Choices, const std::vector< int > &InternalChoices) override
const int nMaxNestedSizers
Definition: ShuttleGui.h:33
void SetSizerProportion(int iProp)
Definition: ShuttleGui.h:289
wxMenu * mpMenu
Definition: ShuttleGui.h:362
wxTextCtrl * TieTextBox(const wxString &Prompt, const wxString &SettingName, const wxString &Default, const int nChars) override
ShuttleGuiBase & Prop(int iProp)
Definition: ShuttleGui.cpp:739
wxSizer * mpSizer
Definition: ShuttleGui.h:358
void StartTwoColumn()
Definition: ShuttleGui.h:136
wxWindow * GetParent()
Definition: ShuttleGui.h:294
bool * mpbOptionalFlag
Definition: ShuttleGui.h:355
wxSlider * TieSlider(const wxString &Prompt, const wxString &SettingName, const int iDefault, const int max, const int min=0) override
void SetStyle(int Style)
Definition: ShuttleGui.h:287
wxWindow * mpParent
Definition: ShuttleGui.h:359
teShuttleMode
Definition: ShuttleGui.h:35
int min(int a, int b)
Interface for objects that can receive (string) messages from a command.
Base class for shuttling data to and from a GUI.
Definition: ShuttleGui.h:80
void StartThreeColumn()
Definition: ShuttleGui.h:138
teShuttleMode mShuttleMode
Used in choices to determine which item to use on no match.
Definition: ShuttleGui.h:332
wxTextCtrl * TieNumericTextBox(const wxString &Prompt, const wxString &SettingName, const wxString &Default, const int nChars) override
wxSizer * GetSizer()
Definition: ShuttleGui.h:304
wxWindow * mpWind
Definition: ShuttleGui.h:360
teShuttleMode GetMode()
Definition: ShuttleGui.h:425
AUDACITY_DLL_API std::unique_ptr< wxSizer > CreateStdButtonSizer(wxWindow *parent, long buttons=eOkButton|eCancelButton, wxWindow *extra=NULL)
void SetIfCreated(wxChoice *&Var, wxChoice *Val)
int mRadioCount
The setting controlled by a group.
Definition: ShuttleGui.h:336
wxChoice * TieChoice(const wxString &Prompt, const wxString &SettingName, const wxString &Default, const wxArrayString &Choices, const wxArrayString &InternalChoices) override
int miNoMatchSelector
Definition: ShuttleGui.h:330
wxMenuBar * mpMenuBar
Definition: ShuttleGui.h:361
wxWindow wxNotebookPage
Definition: ShuttleGui.h:62
wxSpinCtrl * TieSpinCtrl(const wxString &Prompt, const wxString &SettingName, const int Value, const int max, const int min) override
wxString mSettingName
Definition: ShuttleGui.h:335
wxWindow * mpLastWind
Definition: ShuttleGui.h:324
ShuttleGui & Prop(int iProp)
Definition: ShuttleGui.h:418
std::unique_ptr< wxSizer > mpSubSizer
Definition: ShuttleGui.h:357
wxCheckBox * TieCheckBox(const wxString &Prompt, const wxString &SettingName, const bool bDefault) override
void SetBorder(int Border)
Definition: ShuttleGui.h:286
void EndTwoColumn()
Definition: ShuttleGui.h:137
Used in type conversions, this wrapper for ints, strings, doubles and enums provides conversions betw...
Definition: WrappedType.h:31