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; }
//------------------------------------------------------------------------------ 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; } }