// DevToolJavacPage.cpp : implementation file
//
#include "stdafx.h"
#include "VisualJava.h"
#include "DevToolJavacPage.h"
#include "ToolManager.h"
#include "WorkSpace.h"
#include "xmlsupport.h"
#include "JOptionsArgDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define CPropertyPage CSAPrefsSubDlg
/////////////////////////////////////////////////////////////////////////////
// CDevToolJavacPage property page
static BOOL m_bInit = TRUE;
#define PANEL_DIR_LIST_RECT CRect(0,25,210,195)
#define PANEL_DIR_LISTHEADER_RECT CRect(0,0,210,25)
#define DIR_PANEL_SIZE CSize(220,220)
#define ID_HEADER_SRC 0x2
#define ID_HEADER_ARG 0x3
LPCTSTR CDevToolJavacPage::m_pOptions[] =
{
_T("-classpath"),
_T("-d"),
_T("-deprecation"),
_T("-encoding"),
_T("-g"),
_T("-g:none"),
_T("-g:{keyword list}"),
_T("-help"),
_T("-nowarn"),
_T("-source"),
_T("-sourcepath"),
_T("-verbose"),
_T("-target"),
_T("-bootclasspath"),
_T("-extdirs"),
_T("-Xstdout"),
_T("-Xswitchcheck"),
_T("-J"),
NULL
};
IMPLEMENT_DYNCREATE(CDevToolJavacPage, CPropertyPage)
CDevToolJavacPage::CDevToolJavacPage() : CPropertyPage(CDevToolJavacPage::IDD)
{
//{{AFX_DATA_INIT(CDevToolJavacPage)
//}}AFX_DATA_INIT
}
CDevToolJavacPage::~CDevToolJavacPage()
{
}
void CDevToolJavacPage::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDevToolJavacPage)
DDX_Control(pDX, IDC_ENC_COMBO, m_wndComboSel);
DDX_Control(pDX, IDC_COMBO_OPTIONS_OPTIONS, m_wndOptOpt);
DDX_Control(pDX, IDC_ARGFILE_LIST, m_wndArgList);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDevToolJavacPage, CPropertyPage)
//{{AFX_MSG_MAP(CDevToolJavacPage)
ON_CBN_SELCHANGE(IDC_COMBO_OPTIONS_OPTIONS, OnSelchangeComboOptionsOptions)
ON_BN_CLICKED(IDC_CHECK_APPLY_TO_ALL, OnCheckApplyToAll)
//}}AFX_MSG_MAP
ON_CBN_SELCHANGE(IDC_SRC_LIST,OnSetCurSelSrcList)
ON_LBN_SETCURSEL(IDC_SRC_LIST,OnSetCurSelSrcList)
ON_HD_ITEMCLICKED(IDC_STATIC_SRCHEADER,OnSrcHeaderItemClicked)
ON_BL_ITEMBROWSE(IDC_SRC_LIST,OnBrowseSrcList)
ON_BL_ITEMBROWSE(IDC_ARGFILE_LIST,OnBrowseArgList)
ON_LBN_ITEMADDED(IDC_SRC_LIST,OnAddItemSourceList)
ON_LBN_ITEMDEL(IDC_SRC_LIST,OnDelItemSourceList)
//relational listbox
ON_RL_CHECKCHANGED(IDC_LIST_JAVAC_OPTIONS,OnOptionCheckChanged)
ON_RL_PULLDOWN(IDC_LIST_JAVAC_OPTIONS,OnOptionPullDown)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDevToolJavacPage message handlers
// DDX_Control(pDX, IDC_LIST_JAVAC_OPTIONS, m_wndOptions);
BOOL CDevToolJavacPage::OnInitDialog()
{
CPropertyPage::OnInitDialog();
m_imglist.Create(IDB_HEADERCTRL,16,2,RGB(255,0,255));
m_wndOptions.SubclassDlgItem(IDC_LIST_JAVAC_OPTIONS,this);
CRect rt;
GetClientRect(&rt);
//add options and thier associated data windows
m_wndOptions.AddRelationalString(m_pOptions[0]);
m_wndOptions.AddRelationalString(m_pOptions[1]);
m_wndOptions.AddString(m_pOptions[2]);
m_wndOptions.AddRelationalString(m_pOptions[3]);
m_wndOptions.AddString(m_pOptions[4]);
m_wndOptions.AddString(m_pOptions[5]);
m_wndOptions.AddRelationalString(m_pOptions[6]);
m_wndOptions.AddString(m_pOptions[7]);
m_wndOptions.AddString(m_pOptions[8]);
m_wndOptions.AddRelationalString(m_pOptions[9]);
m_wndOptions.AddRelationalString(m_pOptions[10]);
m_wndOptions.AddString(m_pOptions[11]);
m_wndOptions.AddRelationalString(m_pOptions[12]);
m_wndOptions.AddRelationalString(m_pOptions[13]);
m_wndOptions.AddRelationalString(m_pOptions[14]);
m_wndOptions.AddRelationalString(m_pOptions[15]);
m_wndOptions.AddString(m_pOptions[16]);
m_wndOptions.AddString(m_pOptions[17]);
/******************************for manual**********************************/
{
CRect rc(rt.left+8,rt.top+57,rt.left+290,rt.top+82);
m_wndSrcHeader.SubclassDlgItem(IDC_STATIC_SRCHEADER,this);
m_wndSrcHeader.m_pMsgWnd = this;
m_wndSrcHeader.MoveWindow(&rc);
{
m_wndSrcHeader.SetImgList(&m_imglist);
m_wndSrcHeader.AddItem(0,25,16,"New");
m_wndSrcHeader.AddItem(1,25,16,"Delete");
m_wndSrcHeader.AddItem(2,25,16,"Move up");
m_wndSrcHeader.AddItem(3,25,16,"Move down");
}
}
//source static
{
CRect rc(rt.left+6,rt.top+50,rt.left+290,rt.bottom-10);
rc.InflateRect(2,4,4,4);
GetDlgItem(IDC_STATIC_SRC)->MoveWindow(&rc);
}
//source list
{
m_wndSources.SubclassDlgItem(IDC_SRC_LIST,this);
CRect rc(rt.left+8,rt.top+83,rt.left+290,rt.bottom-10);
m_wndSources.MoveWindow(&rc);
//pacth
m_wndSources.SetItemData(0,0);
}
//options static
{
CRect rc(rt.left+305,rt.top+50,rt.right-5,rt.bottom-10);
rc.InflateRect(4,4,4,4);
GetDlgItem(IDC_STATIC_OPTIONS)->MoveWindow(&rc);
}
//options list
{
CRect rc(rt.left+305,rt.top+62,rt.right-5,rt.bottom-30);
m_wndOptions.MoveWindow(&rc);
}
//apply check
{
CRect rc(rt.left+305,rt.bottom-25,rt.right-10,rt.bottom-10);
GetDlgItem(IDC_CHECK_APPLY_TO_ALL)->MoveWindow(&rc);
}
/***********************arg*************************************/
{
CRect rc(rt.left+8,rt.top+60,rt.right-5,rt.top+87);
m_wndArgHeader.SubclassDlgItem(IDC_STATIC_ARGHEADER,this);
m_wndArgHeader.MoveWindow(&rc);
m_wndArgHeader.SetImgList(&m_imglist);
m_wndArgHeader.AddItem(0,25,16,"New");
m_wndArgHeader.AddItem(1,25,16,"Delete");
m_wndArgHeader.AddItem(2,25,16,"Move up");
m_wndArgHeader.AddItem(3,25,16,"Move down");
}
//argument list
{
CRect rc(rt.left+8,rt.top+87,rt.right-5,rt.bottom-10);
m_wndArgList.MoveWindow(&rc);
m_wndArgList.ShowWindow(SW_HIDE);
}
//arg static
{
CRect rc(rt.left+8,rt.top+50,rt.right-5,rt.bottom-10);
rc.InflateRect(4,0,4,4);
GetDlgItem(IDC_STATIC_ARG)->MoveWindow(&rc);
}
m_wndOptOpt.SetCurSel(0);
//load settings
if(CVisualJavaApp::m_pCurWorkSpace != NULL &&
CVisualJavaApp::m_pCurWorkSpace->GetActiveProject() != NULL)
{
//CVisualJavaApp::m_pCurWorkSpace->LoadJavacsetting(this);
XMLSerialize(0);
if(m_wndSources.GetCount()==0)
{
for(int i=0; i<m_wndOptions.GetCount(); i++)
m_wndOptions.Enable(i,FALSE);
}
}
else
{
//disable lists
m_wndSources.EnableWindow(FALSE);
m_wndArgList.EnableWindow(FALSE);
m_wndArgHeader.EnableWindow(FALSE);
m_wndSrcHeader.EnableWindow(FALSE);
GetDlgItem(IDC_CHECK_APPLY_TO_ALL)->EnableWindow(FALSE);
for(int i=0; i<m_wndOptions.GetCount(); i++)
m_wndOptions.Enable(i,FALSE);
}
return TRUE;
}
void CDevToolJavacPage::OnSelchangeComboOptionsOptions()
{
CString szpSel;
m_wndOptOpt.GetLBText(m_wndOptOpt.GetCurSel(),szpSel);
CRect rt;
GetClientRect(&rt);
if(szpSel.Compare("Use Options from file") == 0)
{
GetDlgItem(IDC_LIST_JAVAC_OPTIONS)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_OPTIONS)->ShowWindow(SW_HIDE);
m_wndSources.ShowWindow(SW_HIDE);
m_wndSrcHeader.ShowWindow(SW_HIDE);
GetDlgItem(IDC_CHECK_APPLY_TO_ALL)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_SRC)->ShowWindow(SW_HIDE);
m_wndArgList.ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC_ARG)->ShowWindow(SW_SHOW);
m_wndArgHeader.ShowWindow(SW_SHOW);
}
else
{
m_wndArgList.ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_ARG)->ShowWindow(SW_HIDE);
m_wndArgHeader.ShowWindow(SW_HIDE);
GetDlgItem(IDC_LIST_JAVAC_OPTIONS)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC_OPTIONS)->ShowWindow(SW_SHOW);
m_wndSources.ShowWindow(SW_SHOW);
m_wndSrcHeader.ShowWindow(SW_SHOW);
GetDlgItem(IDC_CHECK_APPLY_TO_ALL)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC_SRC)->ShowWindow(SW_SHOW);
}
}
#define ACTION_ADDITEM 0
#define ACTION_DELETE 1
#define ACTION_MOVEUP 2
#define ACTION_MOVEDOWN 3
void CDevToolJavacPage::OnArgHeaderItemClicked()
{
switch(m_wndArgHeader.GetClicked())
{
case ACTION_ADDITEM:
{
m_wndArgList.EditNew();
break;
}
case ACTION_DELETE:
{
m_wndArgList.DeleteSelected();
break;
}
case ACTION_MOVEUP:
{
if(m_wndArgList.GetCurSel() != LB_ERR)
m_wndArgList.MoveItemUp(m_wndArgList.GetCurSel());
break;
}
case ACTION_MOVEDOWN:
{
if(m_wndArgList.GetCurSel() != LB_ERR)
m_wndArgList.MoveItemDown(m_wndArgList.GetCurSel());
break;
}
}
}
void CDevToolJavacPage::OnSrcHeaderItemClicked()
{
switch(m_wndSrcHeader.GetClicked())
{
case ACTION_ADDITEM:
{
m_wndSources.EditNew();
break;
}
case ACTION_DELETE:
{
m_wndSources.DeleteSelected();
break;
}
case ACTION_MOVEUP:
{
if(m_wndSources.GetCurSel() != LB_ERR)
m_wndSources.MoveItemUp(m_wndSources.GetCurSel());
break;
}
case ACTION_MOVEDOWN:
{
if(m_wndSources.GetCurSel() != LB_ERR)
m_wndSources.MoveItemDown(m_wndSources.GetCurSel());
break;
}
}
}
void CDevToolJavacPage::OnBrowseSrcList()
{
int iItem = m_wndSources.GetSelected();
static char BASED_CODE szFilter[]="Java Source Files (*.java)|*.java|";
DWORD flags = OFN_CREATEPROMPT|OFN_ALLOWMULTISELECT;
CFileDialog dlg(TRUE,NULL,NULL,flags,szFilter);
if(dlg.DoModal() == IDOK)
{
POSITION nPos = dlg.GetStartPosition();
m_wndSources.EndEditing(TRUE);
for(nPos; nPos != NULL;)
{
CString szpPathName = dlg.GetNextPathName(nPos);
//extract name
int nDot = szpPathName.Find('.');
for(int i=nDot;i--;)//reverse
{
if(szpPathName.GetAt(i) == '\\')
{
++i;
CString szpName = szpPathName.Right(szpPathName.GetLength()-i);
CString szpPath = szpPathName.Left(i-1);
//add source name to list
szpName.TrimLeft();szpName.TrimRight();
int nIndex = m_wndSources.AddString(szpName);
//add source path for src
szpPath.TrimLeft();szpPath.TrimRight();
CArray<__option*,__option*>*parray = (CArray<__option*,__option*>*)m_wndSources.GetItemData(nIndex);
(*parray)[10]->m_szpData = szpPath;//sourcepath
(*parray)[10]->m_bChecked = TRUE;
break;
}
}
}
}
}
void CDevToolJavacPage::OnBrowseArgList()
{
int iItem = m_wndArgList.GetCurSel();;
static char BASED_CODE szFilter[]="Java Source Files (*.java)|*.java|";
DWORD flags = OFN_CREATEPROMPT|OFN_ALLOWMULTISELECT;
CFileDialog dlg(TRUE,NULL,NULL,flags,szFilter);
if(dlg.DoModal() == IDOK)
{
POSITION nPos = dlg.GetStartPosition();
CString szpPath;
m_wndArgList.EndEditing(TRUE);
for(nPos; nPos != NULL;)
{
szpPath = dlg.GetNextPathName(nPos);
m_wndArgList.AddString(szpPath);
}
}
}
//#define STRICT
#include <windows.h>
#include <shlobj.h>
INT CALLBACK BrowseCallbackProc_1(HWND hwnd,UINT uMsg,LPARAM lp,LPARAM pData)
{
TCHAR szDir[MAX_PATH];
switch(uMsg)
{
case BFFM_INITIALIZED:
if(GetCurrentDirectory(sizeof(szDir)/sizeof(TCHAR), szDir))
{
// WParam is TRUE since you are passing a path.
// It would be FALSE if you were passing a pidl.
SendMessage(hwnd, BFFM_SETSELECTION, TRUE, (LPARAM)szDir);
}
break;
case BFFM_SELCHANGED:
// Set the status window to the currently selected path.
if (SHGetPathFromIDList((LPITEMIDLIST) lp ,szDir))
{
SendMessage(hwnd,BFFM_SETSTATUSTEXT,0,(LPARAM)szDir);
}
break;
}return 0;
}
void CDevToolJavacPage::OnCheckApplyToAll()
{
int nSel = m_wndSources.GetCurSel();
if(nSel != -1)
{
CArray<__option*,__option*>*pSellist =(CArray<__option*,__option*>*)
m_wndSources.GetItemData(nSel);
int nCount = m_wndSources.GetCount();
for(int I=0; I<nCount; I++)
{
CArray<__option*,__option*>*plist =(CArray<__option*,__option*>*)
m_wndSources.GetItemData(I);
if(plist != pSellist)
{
int nOptionCount = plist->GetSize();
for(int I=0; I<nOptionCount; I++)
{
(*plist)[I]->m_bChecked = (*pSellist)[I]->m_bChecked;
(*plist)[I]->m_nIndex = (*pSellist)[I]->m_nIndex;
(*plist)[I]->m_szpData = (*pSellist)[I]->m_szpData;
(*plist)[I]->m_szpOption = (*pSellist)[I]->m_szpOption;
}
}
}
}
}
void CDevToolJavacPage::OnSetCurSelSrcList()
{
int item = m_wndSources.GetCurSel();
if(item>=0)
{
for(int i=0; i<m_wndOptions.GetCount(); i++)
m_wndOptions.SetCheck(i,0);
//load current option selections
CArray<__option*,__option*>*plist = (CArray<__option*,__option*>*)
m_wndSources.GetItemData(item);
int count = plist->GetSize();
for(i =0; i<count; i++)
{
__option* pOpt = (*plist)[i];
m_wndOptions.SetCheck(i,pOpt->m_bChecked);
m_wndOptions.SetItemData(i,(DWORD)pOpt);
}
}
else
{
for(int i=0; i<m_wndOptions.GetCount(); i++)
m_wndOptions.Enable(i,FALSE);
}
}
void CDevToolJavacPage::OnSetCurSelArgList()
{
}
void CDevToolJavacPage::OnAddItemSourceList()
{
CArray<__option*,__option*>*plist = new CArray<__option*,__option*>;
m_wndSources.SetItemData(m_wndSources.GetNewlyAdded(),(DWORD)plist);
int nCount = m_wndOptions.GetCount();
for(int i =0; i<nCount; i++)
{
m_wndOptions.Enable(i);
__option* pOpt = new __option;
pOpt->m_nIndex = i;
pOpt->m_szpOption = m_pOptions[i];plist->Add(pOpt);
}m_wndSources.SetCurSel(m_wndSources.GetNewlyAdded());
}
void CDevToolJavacPage::OnDelItemSourceList()
{
int nIndex = m_wndSources.GetNewlyDeleted();
if(nIndex != -1)
{
CArray<__option*,__option*>*plist = (CArray<__option*,__option*>*)
m_wndSources.GetItemData(nIndex);
{
int count = plist->GetSize();
for(int i =0; i<count; i++)
delete (*plist)[i];
delete plist;
}
}
if(m_wndSources.GetCount()==1||nIndex == -1)
{
for(int i=0; i<m_wndOptions.GetCount(); i++)
m_wndOptions.Enable(i,FALSE);
}
}
void CDevToolJavacPage::OnOptionCheckChanged()
{
int sel = m_wndOptions.GetCurSel();
__option* option = (__option*)m_wndOptions.GetItemData(sel);
option->m_bChecked = m_wndOptions.GetCheck(sel);
}
void CDevToolJavacPage::OnOptionPullDown()
{
CJOptionsArgDlg dlg(this);;
dlg.m_nIndex = m_wndOptions.GetCurSel();
dlg.m_nContext = JAVAC_CONTEXT;
if(dlg.DoModal() == IDOK)
{
}
}
void CDevToolJavacPage::OnOK()
{
UpdateData();
if(CVisualJavaApp::m_pCurWorkSpace != NULL && CVisualJavaApp::m_pCurWorkSpace->GetActiveProject() != NULL)
XMLSerialize(1);
int nCount = m_wndSources.GetCount();
for(int i=0; i<nCount;i++)
{
CArray<__option*,__option*>*plist = (CArray<__option*,__option*>*)
m_wndSources.GetItemData(i);
int nOptionCount = plist->GetSize();
for(int nIndex = 0; nIndex<nOptionCount; nIndex++)
delete (*plist)[nIndex];
delete plist;
}CPropertyPage::OnOK();
}
void CDevToolJavacPage::OnCancel()
{
int nCount = m_wndSources.GetCount();
for(int i=0; i<nCount;i++)
{
CArray<__option*,__option*>*plist = (CArray<__option*,__option*>*)
m_wndSources.GetItemData(i);
int nOptionCount = plist->GetSize();
for(int nIndex = 0; nIndex<nOptionCount; nIndex++)
delete (*plist)[nIndex];
}CPropertyPage::OnCancel();
}
void CDevToolJavacPage::XMLSerialize(int type)
{
#define LOADING 0
#define STORING 1
if(type == LOADING)
{
//get settings in xml objects
if(CVisualJavaApp::m_pCurWorkSpace->GetActiveProject())
{
XMLelement* pXMLJavac = CVisualJavaApp::m_pCurWorkSpace->GetActiveProject()
->GetToolMgr()->GetXMLObject("javac");
if(!pXMLJavac)return;
m_wndOptOpt.SetCurSel(atoi(pXMLJavac->m_lAttributes.GetHead()->m_strValue));
OnSelchangeComboOptionsOptions();
XMLelement* pXMLClsFiles = pXMLJavac->m_lNestedElements.GetHead();//<srcFiles>
//match settings
for(POSITION pos = pXMLClsFiles->m_lNestedElements.GetHeadPosition(); pos != NULL;)
{
XMLelement* pXMLFile = pXMLClsFiles->m_lNestedElements.GetNext(pos);
int index = m_wndSources.AddString(pXMLFile->m_lAttributes.GetHead()->m_strValue);
if(index != -1)
{
CArray<__option*,__option*>*plOptions = (CArray<__option*,__option*>*)m_wndSources.GetItemData(index);
int i = 0;
XMLelement* pXMLOpts = pXMLFile->m_lNestedElements.GetHead();//<options>
for(POSITION pos = pXMLOpts->m_lNestedElements.GetHeadPosition(); pos !=NULL;)
{
XMLelement* pXMLOption = pXMLOpts->m_lNestedElements.GetNext(pos);
__option* option = (*plOptions)[i];
{
POSITION apos = pXMLOption->m_lAttributes.GetHeadPosition();pXMLOption->m_lAttributes.GetNext(apos);
option->m_bChecked = atoi(pXMLOption->m_lAttributes.GetNext(apos)->m_strValue);
m_wndOptions.SetCheck(i,option->m_bChecked);
if(apos)//there's associated arguments
option->m_szpData = pXMLOption->m_lAttributes.GetNext(apos)->m_strValue;
}++i;
}
}
}
}
}
else
{
CVisualJavaApp::m_pCurWorkSpace->GetActiveProject()
->GetToolMgr()->m_bModified = TRUE;
XMLelement* pXMLJavac = CVisualJavaApp::m_pCurWorkSpace->GetActiveProject()
->GetToolMgr()->GetXMLObject("javac");
if(!pXMLJavac)
{
pXMLJavac = new XMLelement;pXMLJavac->m_strElementName = "javac";
XMLattribute* pAttr = new XMLattribute;pAttr->m_strName = "configsrc";
pAttr->m_strValue = "0";
pXMLJavac->m_lAttributes.AddTail(pAttr);
XMLelement* pXMLSrcFiles = new XMLelement;
pXMLSrcFiles->m_strElementName = "srcFiles";
pXMLJavac->m_lNestedElements.AddTail(pXMLSrcFiles);
CVisualJavaApp::m_pCurWorkSpace->GetActiveProject()
->GetToolMgr()->m_lxmlSettings.GetHead()
->m_lNestedElements.AddTail(pXMLJavac);
}
int sel = m_wndOptOpt.GetCurSel();(sel == -1)?sel = 0:sel = sel;
CString strConfig;strConfig.Format("%d",sel);
pXMLJavac->m_lAttributes.GetHead()->m_strValue = strConfig;
XMLelement* pXMLSrcFiles = pXMLJavac->m_lNestedElements.GetHead();//<srcFiles>
//decard previous setting
for(POSITION pos = pXMLSrcFiles->m_lNestedElements.GetHeadPosition(); pos != NULL;)
delete pXMLSrcFiles->m_lNestedElements.GetNext(pos);
pXMLSrcFiles->m_lNestedElements.RemoveAll();
int count =m_wndSources.GetCount();
for(int i = 0; i<count; i++)
{
XMLelement* pXMLSrc = new XMLelement;pXMLSrc->m_strElementName = "file";
XMLattribute* pNameAttr = new XMLattribute;
pNameAttr->m_strName = "name";
m_wndSources.GetText(i,pNameAttr->m_strValue);
pXMLSrc->m_lAttributes.AddTail(pNameAttr);
CArray<__option*,__option*>*plOptions = (CArray<__option*,__option*>*)m_wndSources.GetItemData(i);
int count =plOptions->GetSize();
XMLelement* pXMLOpts = new XMLelement;pXMLOpts->m_strElementName = "options";
for(int oi = 0; oi<count; oi++)
{
__option* option = (*plOptions)[oi];
XMLelement* pXMLOpt = new XMLelement;
pXMLOpt->m_strElementName = "option";
CString strCheck;strCheck.Format("%d",option->m_bChecked);
XMLattribute* pAttrb = new XMLattribute;
pAttrb->m_strName = "name";
pAttrb->m_strValue = option->m_szpOption;
pXMLOpt->m_lAttributes.AddTail(pAttrb);
pAttrb = new XMLattribute;
pAttrb->m_strName = "check";
pAttrb->m_strValue = strCheck;
pXMLOpt->m_lAttributes.AddTail(pAttrb);
if(!option->m_szpData.IsEmpty())
{
pAttrb = new XMLattribute;pAttrb->m_strName = "args";
pAttrb->m_strValue = option->m_szpData;
pXMLOpt->m_lAttributes.AddTail(pAttrb);
}
pXMLOpts->m_lNestedElements.AddTail(pXMLOpt);
}
pXMLSrc->m_lNestedElements.AddTail(pXMLOpts);
pXMLSrcFiles->m_lNestedElements.AddTail(pXMLSrc);
}
}
}