/*****************************************************************************
* Copyright (c) 1990-98 Digi International Inc., All Rights Reserved
* 
* This software contains proprietary and confidential information of Digi
* International Inc.  By accepting transfer of this copy, Recipient agrees
* to retain this software in confidence, to prevent disclosure to others,
* and to make no use of this software other than that for which it was
* delivered.  This is an unpublished copyrighted work of Digi International
* Inc.  Except as permitted by federal law, 17 USC 117, copying is strictly
* prohibited.
* 
* Restricted Rights Legend
*
* Use, duplication, or disclosure by the Government is subject to
* restrictions set forth in sub-paragraph (c)(1)(ii) of The Rights in
* Technical Data and Computer Software clause at DFARS 252.227-7031 or
* subparagraphs (c)(1) and (2) of the Commercial Computer Software -
* Restricted Rights at 48 CFR 52.227-19, as applicable.
*
* Digi International Inc. 11001 Bren Road East, Minnetonka, MN 55343
*
*****************************************************************************/


#include "stdafx.h"

void FillComboBox(CComboBox & ctrlCombo, CStringArray const & astrValues, int const iCurSel /* = 0 */)
{
   try
   {
      ctrlCombo.ResetContent();
      for (int i = 0; i < astrValues.GetSize(); i++) ctrlCombo.AddString(astrValues[i]);

      AffirmThrow(iCurSel >= -1);                     // allow -1 for no selection
      AffirmThrow(iCurSel < astrValues.GetSize());
      ctrlCombo.SetCurSel(iCurSel);
   }
   catch (CAffirmException ae)
   {
   }
}

int FindIndex(DWORD const dwValue, DWORD const * const pdwMap, int const cMapItems)
{
   int iValue = -1;

   try
   {
      AffirmThrow(pdwMap != NULL);
      AffirmThrow(cMapItems > 0);

      for (int i = 0; i < cMapItems; i++)
      {
         if (dwValue == pdwMap[i])
         {
            iValue = i;
            break;
         }
      }

      if (iValue == -1) TRACE("Value %d not found in map!\n", dwValue);
   }
   catch (CAffirmException ae)
   {
   }

   return iValue;
}

void SetCurSelFromValue(CComboBox & ctrlCombo, DWORD const dwValue, DWORD const * const pdwMap, int const cMapItems)
{
   try
   {
      AffirmThrow(pdwMap != NULL);
      AffirmThrow(cMapItems > 0);

      BOOL fFoundValue = FALSE;

      int iValue = FindIndex(dwValue, pdwMap, cMapItems);
      if (iValue != -1) ctrlCombo.SetCurSel(iValue);
   }
   catch (CAffirmException ae)
   {
   }
}

CString StripUnderscores(CString const & strToStrip)
{
   CString strStripped = strToStrip;

   try
   {
      static TCHAR const chAmpersand = TEXT('&');

      TCHAR * psz = strStripped.GetBuffer(1);
      AffirmThrow(psz != NULL);

      try
      {
         while ((psz = _tcschr(psz, chAmpersand)) != NULL)
         {
            if (psz[1] == chAmpersand) psz += 2;
            else strcpy(psz, &psz[1]);
         }
      }
      catch (CAffirmException ae)
      {
      }

      strStripped.ReleaseBuffer();
   }
   catch (CAffirmException ae)
   {
   }

   return strStripped;
}
