From d5e5adbad49f19fdf2aefa9e491c66dbeac2a86d Mon Sep 17 00:00:00 2001
From: Julien Malik <julien.malik@c-s.fr>
Date: Sun, 12 Jun 2011 09:08:45 +0200
Subject: [PATCH] ENH: add SetValue(std::string) for choice

---
 Code/Core/otbWrapperChoiceParameter.cxx | 22 ++++++++++++++++++++--
 Code/Core/otbWrapperChoiceParameter.h   |  5 ++++-
 2 files changed, 24 insertions(+), 3 deletions(-)

diff --git a/Code/Core/otbWrapperChoiceParameter.cxx b/Code/Core/otbWrapperChoiceParameter.cxx
index 3209325f9d..ad9c269ede 100644
--- a/Code/Core/otbWrapperChoiceParameter.cxx
+++ b/Code/Core/otbWrapperChoiceParameter.cxx
@@ -88,7 +88,6 @@ ChoiceParameter::GetNbChoices( void )
   return m_ChoiceList.size();
 }
 
-/** Set any value */
 void
 ChoiceParameter::SetValue(unsigned int v)
 {
@@ -98,7 +97,26 @@ ChoiceParameter::SetValue(unsigned int v)
   this->Modified();
 }
 
-/** Return any value */
+void
+ChoiceParameter::SetValue(std::string choiceKey)
+{
+  ChoiceList::iterator it = m_ChoiceList.begin();
+
+  unsigned int i = 0;
+  for (it = m_ChoiceList.begin(); it != m_ChoiceList.end(); ++it)
+    {
+    if ( it->m_Key == choiceKey )
+      {
+      m_CurrentChoice = i;
+      this->Modified();
+      return;
+      }
+    ++i;
+    }
+
+  itkExceptionMacro(<< "Cannot find " << choiceKey);
+}
+
 unsigned int
 ChoiceParameter::GetValue()
 {
diff --git a/Code/Core/otbWrapperChoiceParameter.h b/Code/Core/otbWrapperChoiceParameter.h
index e8ae2b2b9b..09daa29910 100644
--- a/Code/Core/otbWrapperChoiceParameter.h
+++ b/Code/Core/otbWrapperChoiceParameter.h
@@ -69,9 +69,12 @@ public:
   /** Get the number of available choice */
   unsigned int GetNbChoices( void );
 
-  /** Set any value */
+  /** Set choice value */
   virtual void SetValue(unsigned int v);
 
+  /** Set choice value by its key */
+  virtual void SetValue(std::string choiceKey);
+
   /** Return any value */
   virtual unsigned int GetValue();
 
-- 
GitLab