Example #1
0
STDMETHODIMP CMixerControl::Save(VARIANT v)
{
    XMLDoc* pDoc = 0;
    XMLEl* pLibrary = 0;
    XMLEl* pParent = 0;
    HRESULT hr;

    if(FAILED(hr = XMLOpen(v, &pDoc, &pLibrary)))
    {
        return hr;
    }

    // Get the parent node.  This is going to depend on whether it's a dest
    // or a line.
    if(m_pLine)
    {
        if(FAILED(hr = m_pLine->GetNode(pDoc, pLibrary, &pParent, TRUE)))
        {
            SAFE_RELEASE(pLibrary);
            XMLClose(&pDoc);
            return hr;
        }
    }
    else
    {
        if(FAILED(hr = m_pDest->GetNode(pDoc, pLibrary, &pParent, TRUE)))
        {
            SAFE_RELEASE(pLibrary);
            XMLClose(&pDoc);
            return hr;
        }
    }

    if(FAILED(hr = SaveControl(pDoc, pParent)))
    {
        SAFE_RELEASE(pParent);
        XMLClose(&pDoc);
        return hr;
    }

    SAFE_RELEASE(pParent);
    SAFE_RELEASE(pLibrary);

    hr = XMLCommit(pDoc, v);
    XMLClose(&pDoc);

    return hr;
}
Example #2
0
//------------------------------------------------------------------------------
void SubscriberSetupPanel::SaveData()
{
   canClose = true;

   try
   {
      for (std::map<wxString, Integer>::iterator i = controlMap.begin();
            i != controlMap.end(); ++i)
      {
         SaveControl(i->first);
         if (!canClose)
            return;
      }
   }
   catch (BaseException &e)
   {
      MessageInterface::PopupMessage(Gmat::ERROR_, e.GetFullMessage());
      canClose = false;
      return;
   }
}