diff --git a/src/ShuttleGui.cpp b/src/ShuttleGui.cpp index 9a210dab3..b002f0112 100644 --- a/src/ShuttleGui.cpp +++ b/src/ShuttleGui.cpp @@ -2392,170 +2392,3 @@ void ShuttleGuiBase::SetSizeHints( const wxArrayStringEx & items ) SetSizeHints( mpLastWind, items ); } - -/********************************* GetDefinition ******************************/ - -ShuttleGuiGetDefinition::ShuttleGuiGetDefinition( - wxWindow * pParent,CommandMessageTarget & target ) -: ShuttleGui( pParent, eIsGettingMetadata ), - CommandMessageTargetDecorator( target ) -{ - -} -ShuttleGuiGetDefinition::~ShuttleGuiGetDefinition(void) -{ -} - -wxCheckBox * ShuttleGuiGetDefinition::TieCheckBox( - const wxString &Prompt, - const wxString &SettingName, - const bool bDefault) -{ - StartStruct(); - AddItem( SettingName, "id" ); - AddItem( Prompt, "prompt" ); - AddItem( "bool", "type" ); - AddBool( bDefault, "default" ); - EndStruct(); - return ShuttleGui::TieCheckBox( Prompt, SettingName, bDefault ); -} -wxCheckBox * ShuttleGuiGetDefinition::TieCheckBoxOnRight( - const wxString &Prompt, - const wxString &SettingName, - const bool bDefault) -{ - StartStruct(); - AddItem( SettingName, "id" ); - AddItem( Prompt, "prompt" ); - AddItem( "bool", "type" ); - AddBool( bDefault, "default" ); - EndStruct(); - return ShuttleGui::TieCheckBoxOnRight( Prompt, SettingName, bDefault ); -} -wxChoice * ShuttleGuiGetDefinition::TieChoice( - const wxString &Prompt, - const wxString &SettingName, - const wxString &Default, - const wxArrayStringEx &Choices, - const wxArrayStringEx & InternalChoices ) -{ - StartStruct(); - AddItem( SettingName, "id" ); - AddItem( Prompt, "prompt" ); - AddItem( "enum", "type" ); - AddItem( Default, "default" ); - StartField( "enum" ); - StartArray(); - for( size_t i=0;i & InternalChoices) -{ - // Should no longer come here! - // Choice controls in Preferences that really are exhaustive choices among - // non-numerical options must now encode the internal choices as strings, - // not numbers. - wxASSERT(false); - - // But if we do get here anyway, proceed sub-optimally as before. - StartStruct(); - AddItem( SettingName, "id" ); - AddItem( Prompt, "prompt" ); - AddItem( "enum", "type" ); - AddItem( Default, "default" ); - StartField( "enum" ); - StartArray(); - for( size_t i=0;i & InternalChoices) -{ - // Come here for controls that present non-exhaustive choices among some - // numbers, with an associated control that allows arbitrary entry of an - // "Other..." - StartStruct(); - AddItem( SettingName, "id" ); - AddItem( Prompt, "prompt" ); - AddItem( "number", "type" ); // not "enum" ! - AddItem( Default, "default" ); - EndStruct(); - return ShuttleGui::TieNumberAsChoice( - Prompt, SettingName, Default, Choices, InternalChoices ); -} -wxTextCtrl * ShuttleGuiGetDefinition::TieTextBox( - const wxString &Prompt, - const wxString &SettingName, - const wxString &Default, - const int nChars) -{ - StartStruct(); - AddItem( SettingName, "id" ); - AddItem( Prompt, "prompt" ); - AddItem( "string", "type" ); - AddItem( Default, "default" ); - EndStruct(); - return ShuttleGui::TieTextBox( Prompt, SettingName, Default, nChars ); -} -wxTextCtrl * ShuttleGuiGetDefinition::TieNumericTextBox( - const wxString & Prompt, - const wxString & SettingName, - const double & Default, - const int nChars) -{ - StartStruct(); - AddItem( SettingName, "id" ); - AddItem( Prompt, "prompt" ); - AddItem( "number", "type" ); - AddItem( Default, "default" ); - EndStruct(); - return ShuttleGui::TieNumericTextBox( Prompt, SettingName, Default, nChars ); -} -wxSlider * ShuttleGuiGetDefinition::TieSlider( - const wxString & Prompt, - const wxString & SettingName, - const int iDefault, - const int max, - const int min) -{ - StartStruct(); - AddItem( SettingName, "id" ); - AddItem( Prompt, "prompt" ); - AddItem( "number", "type" ); - AddItem( iDefault, "default" ); - EndStruct(); - return ShuttleGui::TieSlider( Prompt, SettingName, iDefault, max, min ); -} -wxSpinCtrl * ShuttleGuiGetDefinition::TieSpinCtrl( - const wxString &Prompt, - const wxString &SettingName, - const int Value, - const int max, - const int min) -{ - StartStruct(); - AddItem( SettingName, "id" ); - AddItem( Prompt, "prompt" ); - AddItem( "number", "type" ); - AddItem( Value, "default" ); - EndStruct(); - return ShuttleGui::TieSpinCtrl( Prompt, SettingName, Value, max, min ); -} - diff --git a/src/ShuttleGui.h b/src/ShuttleGui.h index 76a5277b4..12390c957 100644 --- a/src/ShuttleGui.h +++ b/src/ShuttleGui.h @@ -22,9 +22,6 @@ #include "WrappedType.h" -// For ShuttleGuiGetDefinitions. -#include "commands/CommandTargets.h" - class ChoiceSetting; class wxArrayStringEx; @@ -443,68 +440,4 @@ public: teShuttleMode GetMode() { return mShuttleMode; }; }; - -/**************************************************************************//** -\brief Shuttle that retrieves a JSON format definition of a command's parameters. -********************************************************************************/ -class ShuttleGuiGetDefinition : public ShuttleGui, public CommandMessageTargetDecorator -{ -public: - ShuttleGuiGetDefinition(wxWindow * pParent,CommandMessageTarget & target ); - virtual ~ShuttleGuiGetDefinition(); - - wxCheckBox * TieCheckBox( - const wxString &Prompt, - const wxString &SettingName, - const bool bDefault) override; - wxCheckBox * TieCheckBoxOnRight( - const wxString &Prompt, - const wxString &SettingName, - const bool bDefault) override; - wxChoice * TieChoice( - const wxString &Prompt, - const wxString &SettingName, - const wxString &Default, - const wxArrayStringEx &Choices, - const wxArrayStringEx & InternalChoices ) override; - - // An assertion will be violated if this override is reached! - wxChoice * TieChoice( - const wxString &Prompt, - const wxString &SettingName, - const int Default, - const wxArrayStringEx & Choices, - const std::vector & InternalChoices) override; - - wxChoice * TieNumberAsChoice( - const wxString &Prompt, - const wxString &SettingName, - const int Default, - const wxArrayStringEx & Choices, - const std::vector & InternalChoices) override; - - wxTextCtrl * TieTextBox( - const wxString &Prompt, - const wxString &SettingName, - const wxString &Default, - const int nChars) override; - wxTextCtrl * TieNumericTextBox( - const wxString & Prompt, - const wxString & SettingName, - const double & Default, - const int nChars) override; - wxSlider * TieSlider( - const wxString & Prompt, - const wxString & SettingName, - const int iDefault, - const int max, - const int min = 0) override; - wxSpinCtrl * TieSpinCtrl( - const wxString &Prompt, - const wxString &SettingName, - const int Value, - const int max, - const int min) override; -}; - #endif diff --git a/src/commands/GetInfoCommand.cpp b/src/commands/GetInfoCommand.cpp index ad8b4bfd1..dbab20b7c 100644 --- a/src/commands/GetInfoCommand.cpp +++ b/src/commands/GetInfoCommand.cpp @@ -185,6 +185,237 @@ bool GetInfoCommand::SendMenus(const CommandContext &context) return true; } +namespace { + +/**************************************************************************//** +\brief Shuttle that retrieves a JSON format definition of a command's parameters. +********************************************************************************/ +class ShuttleGuiGetDefinition : public ShuttleGui, public CommandMessageTargetDecorator +{ +public: + ShuttleGuiGetDefinition(wxWindow * pParent,CommandMessageTarget & target ); + virtual ~ShuttleGuiGetDefinition(); + + wxCheckBox * TieCheckBox( + const wxString &Prompt, + const wxString &SettingName, + const bool bDefault) override; + wxCheckBox * TieCheckBoxOnRight( + const wxString &Prompt, + const wxString &SettingName, + const bool bDefault) override; + wxChoice * TieChoice( + const wxString &Prompt, + const wxString &SettingName, + const wxString &Default, + const wxArrayStringEx &Choices, + const wxArrayStringEx & InternalChoices ) override; + + // An assertion will be violated if this override is reached! + wxChoice * TieChoice( + const wxString &Prompt, + const wxString &SettingName, + const int Default, + const wxArrayStringEx & Choices, + const std::vector & InternalChoices) override; + + wxChoice * TieNumberAsChoice( + const wxString &Prompt, + const wxString &SettingName, + const int Default, + const wxArrayStringEx & Choices, + const std::vector & InternalChoices) override; + + wxTextCtrl * TieTextBox( + const wxString &Prompt, + const wxString &SettingName, + const wxString &Default, + const int nChars) override; + wxTextCtrl * TieNumericTextBox( + const wxString & Prompt, + const wxString & SettingName, + const double & Default, + const int nChars) override; + wxSlider * TieSlider( + const wxString & Prompt, + const wxString & SettingName, + const int iDefault, + const int max, + const int min = 0) override; + wxSpinCtrl * TieSpinCtrl( + const wxString &Prompt, + const wxString &SettingName, + const int Value, + const int max, + const int min) override; +}; + +ShuttleGuiGetDefinition::ShuttleGuiGetDefinition( + wxWindow * pParent,CommandMessageTarget & target ) +: ShuttleGui( pParent, eIsGettingMetadata ), + CommandMessageTargetDecorator( target ) +{ + +} +ShuttleGuiGetDefinition::~ShuttleGuiGetDefinition(void) +{ +} + +wxCheckBox * ShuttleGuiGetDefinition::TieCheckBox( + const wxString &Prompt, + const wxString &SettingName, + const bool bDefault) +{ + StartStruct(); + AddItem( SettingName, "id" ); + AddItem( Prompt, "prompt" ); + AddItem( "bool", "type" ); + AddBool( bDefault, "default" ); + EndStruct(); + return ShuttleGui::TieCheckBox( Prompt, SettingName, bDefault ); +} +wxCheckBox * ShuttleGuiGetDefinition::TieCheckBoxOnRight( + const wxString &Prompt, + const wxString &SettingName, + const bool bDefault) +{ + StartStruct(); + AddItem( SettingName, "id" ); + AddItem( Prompt, "prompt" ); + AddItem( "bool", "type" ); + AddBool( bDefault, "default" ); + EndStruct(); + return ShuttleGui::TieCheckBoxOnRight( Prompt, SettingName, bDefault ); +} +wxChoice * ShuttleGuiGetDefinition::TieChoice( + const wxString &Prompt, + const wxString &SettingName, + const wxString &Default, + const wxArrayStringEx &Choices, + const wxArrayStringEx & InternalChoices ) +{ + StartStruct(); + AddItem( SettingName, "id" ); + AddItem( Prompt, "prompt" ); + AddItem( "enum", "type" ); + AddItem( Default, "default" ); + StartField( "enum" ); + StartArray(); + for( size_t i=0;i & InternalChoices) +{ + // Should no longer come here! + // Choice controls in Preferences that really are exhaustive choices among + // non-numerical options must now encode the internal choices as strings, + // not numbers. + wxASSERT(false); + + // But if we do get here anyway, proceed sub-optimally as before. + StartStruct(); + AddItem( SettingName, "id" ); + AddItem( Prompt, "prompt" ); + AddItem( "enum", "type" ); + AddItem( Default, "default" ); + StartField( "enum" ); + StartArray(); + for( size_t i=0;i & InternalChoices) +{ + // Come here for controls that present non-exhaustive choices among some + // numbers, with an associated control that allows arbitrary entry of an + // "Other..." + StartStruct(); + AddItem( SettingName, "id" ); + AddItem( Prompt, "prompt" ); + AddItem( "number", "type" ); // not "enum" ! + AddItem( Default, "default" ); + EndStruct(); + return ShuttleGui::TieNumberAsChoice( + Prompt, SettingName, Default, Choices, InternalChoices ); +} +wxTextCtrl * ShuttleGuiGetDefinition::TieTextBox( + const wxString &Prompt, + const wxString &SettingName, + const wxString &Default, + const int nChars) +{ + StartStruct(); + AddItem( SettingName, "id" ); + AddItem( Prompt, "prompt" ); + AddItem( "string", "type" ); + AddItem( Default, "default" ); + EndStruct(); + return ShuttleGui::TieTextBox( Prompt, SettingName, Default, nChars ); +} +wxTextCtrl * ShuttleGuiGetDefinition::TieNumericTextBox( + const wxString & Prompt, + const wxString & SettingName, + const double & Default, + const int nChars) +{ + StartStruct(); + AddItem( SettingName, "id" ); + AddItem( Prompt, "prompt" ); + AddItem( "number", "type" ); + AddItem( Default, "default" ); + EndStruct(); + return ShuttleGui::TieNumericTextBox( Prompt, SettingName, Default, nChars ); +} +wxSlider * ShuttleGuiGetDefinition::TieSlider( + const wxString & Prompt, + const wxString & SettingName, + const int iDefault, + const int max, + const int min) +{ + StartStruct(); + AddItem( SettingName, "id" ); + AddItem( Prompt, "prompt" ); + AddItem( "number", "type" ); + AddItem( iDefault, "default" ); + EndStruct(); + return ShuttleGui::TieSlider( Prompt, SettingName, iDefault, max, min ); +} +wxSpinCtrl * ShuttleGuiGetDefinition::TieSpinCtrl( + const wxString &Prompt, + const wxString &SettingName, + const int Value, + const int max, + const int min) +{ + StartStruct(); + AddItem( SettingName, "id" ); + AddItem( Prompt, "prompt" ); + AddItem( "number", "type" ); + AddItem( Value, "default" ); + EndStruct(); + return ShuttleGui::TieSpinCtrl( Prompt, SettingName, Value, max, min ); +} + +} + bool GetInfoCommand::SendPreferences(const CommandContext &context) { context.StartArray();