diff options
Diffstat (limited to 'Source/MFCDialog/PropertyList.cpp')
-rw-r--r-- | Source/MFCDialog/PropertyList.cpp | 847 |
1 files changed, 0 insertions, 847 deletions
diff --git a/Source/MFCDialog/PropertyList.cpp b/Source/MFCDialog/PropertyList.cpp deleted file mode 100644 index e316451..0000000 --- a/Source/MFCDialog/PropertyList.cpp +++ /dev/null @@ -1,847 +0,0 @@ -// PropertyList.cpp : implementation file -// - -#include "stdafx.h" -#include "shellapi.h" -#include "CMakeSetup.h" -#include "CMakeSetupDialog.h" -#include "PathDialog.h" -#include "../cmCacheManager.h" -#include "../cmSystemTools.h" -#include "../cmake.h" -#define IDC_PROPCMBBOX 712 -#define IDC_PROPEDITBOX 713 -#define IDC_PROPBTNCTRL 714 -#define IDC_PROPCHECKBOXCTRL 715 - -///////////////////////////////////////////////////////////////////////////// -// CPropertyList - -CPropertyList::CPropertyList() -{ - m_Dirty = false; - m_ShowAdvanced = false; - m_curSel = -1; -} - -CPropertyList::~CPropertyList() -{ - for(std::set<CPropertyItem*>::iterator i = m_PropertyItems.begin(); - i != m_PropertyItems.end(); ++i) - { - delete *i; - } -} - - -BEGIN_MESSAGE_MAP(CPropertyList, CListBox) - //{{AFX_MSG_MAP(CPropertyList) - ON_WM_CREATE() - ON_WM_VSCROLL() - ON_CONTROL_REFLECT(LBN_SELCHANGE, OnSelchange) - ON_WM_LBUTTONUP() - ON_WM_KILLFOCUS() - ON_WM_LBUTTONDOWN() - ON_WM_RBUTTONUP() - ON_WM_MOUSEMOVE() - //}}AFX_MSG_MAP - ON_CBN_KILLFOCUS(IDC_PROPCMBBOX, OnKillfocusCmbBox) - ON_CBN_SELCHANGE(IDC_PROPCMBBOX, OnSelchangeCmbBox) - ON_EN_KILLFOCUS(IDC_PROPEDITBOX, OnKillfocusEditBox) - ON_EN_CHANGE(IDC_PROPEDITBOX, OnChangeEditBox) - ON_BN_CLICKED(IDC_PROPBTNCTRL, OnButton) - ON_BN_CLICKED(IDC_PROPCHECKBOXCTRL, OnCheckBox) - ON_COMMAND(42, OnDelete) - ON_COMMAND(43, OnHelp) - ON_COMMAND(44, OnIgnore) -END_MESSAGE_MAP() - -///////////////////////////////////////////////////////////////////////////// -// CPropertyList message handlers - -BOOL CPropertyList::PreCreateWindow(CREATESTRUCT& cs) -{ - if (!CListBox::PreCreateWindow(cs)) - return FALSE; - - cs.style &= ~(LBS_OWNERDRAWVARIABLE | LBS_SORT); - cs.style |= LBS_OWNERDRAWFIXED; - - m_bTracking = FALSE; - m_nDivider = 0; - m_bDivIsSet = FALSE; - - return TRUE; -} - -void CPropertyList::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct) -{ - lpMeasureItemStruct->itemHeight = 20; //pixels -} - - -void CPropertyList::DrawItem(LPDRAWITEMSTRUCT lpDIS) -{ - CDC dc; - dc.Attach(lpDIS->hDC); - CRect rectFull = lpDIS->rcItem; - CRect rect = rectFull; - if (m_nDivider==0) - m_nDivider = rect.Width() / 2; - rect.left = m_nDivider; - CRect rect2 = rectFull; - rect2.right = rect.left - 1; - UINT nIndex = lpDIS->itemID; - - if (nIndex != (UINT) -1) - { - //get the CPropertyItem for the current row - CPropertyItem* pItem = (CPropertyItem*) GetItemDataPtr(nIndex); - //draw two rectangles, one for each row column - if(pItem->m_NewValue) - { - dc.FillSolidRect(rect2,RGB(255,100, 100)); - } - else - { - dc.FillSolidRect(rect2,RGB(192,192,192)); - } - - dc.DrawEdge(rect2,EDGE_SUNKEN,BF_BOTTOMRIGHT); - dc.DrawEdge(rect,EDGE_SUNKEN,BF_BOTTOM); - - - //write the property name in the first rectangle - dc.SetBkMode(TRANSPARENT); - dc.DrawText(pItem->m_propName,CRect(rect2.left+3,rect2.top+3, - rect2.right-3,rect2.bottom+3), - DT_LEFT | DT_SINGLELINE); - - //write the initial property value in the second rectangle - dc.DrawText(pItem->m_curValue,CRect(rect.left+3,rect.top+3, - rect.right+3,rect.bottom+3), - DT_LEFT | DT_SINGLELINE); - } - dc.Detach(); -} - -int CPropertyList::AddItem(CString txt) -{ - int nIndex = AddString(txt); - return nIndex; -} -// order = 0 sorted -// order = 1 add to top -// order = 2 add to bottom -int CPropertyList::AddPropItem(CPropertyItem* pItem, int order) -{ - if(pItem->m_Advanced && ! m_ShowAdvanced) - { - m_PropertyItems.insert(pItem); - return 0; - } - this->HideControls(); - int nIndex; - if(order) - { - if(order == 1) - { - order = 0; - } - if(order == 2) - { - order = -1; - } - nIndex = InsertString(order, _T("")); - } - else - { - nIndex = AddString(pItem->m_propName); - } - SetItemDataPtr(nIndex,pItem); - m_PropertyItems.insert(pItem); - return nIndex; -} - -void CPropertyList::AddProperty(const char* name, - const char* value, - const char* helpString, - int type, - const char* comboItems, - bool reverseOrder, - bool advanced) -{ - CPropertyItem* pItem = 0; - for(std::set<CPropertyItem*>::iterator i = m_PropertyItems.begin(); - i != m_PropertyItems.end(); ++i) - { - CPropertyItem* item = *i; - if(item->m_propName == name) - { - pItem = item; - if(pItem->m_curValue != value) - { - pItem->m_curValue = value; - pItem->m_HelpString = helpString; - InvalidateList(); - } - pItem->m_Advanced = advanced; - return; - } - } - // if it is not found, then create a new one - if(!pItem) - { - pItem = new CPropertyItem(name, value, helpString, type, comboItems); - pItem->m_NewValue = true; - } - pItem->m_Advanced = advanced; - int order = 0; - if(reverseOrder) - { - order = 1; - } - this->AddPropItem(pItem, order); - return; -} - -int CPropertyList::OnCreate(LPCREATESTRUCT lpCreateStruct) -{ - if (CListBox::OnCreate(lpCreateStruct) == -1) - return -1; - - m_bDivIsSet = FALSE; - m_nDivider = 0; - m_bTracking = FALSE; - - m_hCursorSize = AfxGetApp()->LoadStandardCursor(IDC_SIZEWE); - m_hCursorArrow = AfxGetApp()->LoadStandardCursor(IDC_ARROW); - - m_SSerif8Font.CreatePointFont(80,_T("MS Sans Serif")); - - return 0; -} - -void CPropertyList::OnSelchange() -{ - CRect rect; - CString lBoxSelText; - - GetItemRect(m_curSel,rect); - rect.left = m_nDivider; - - CPropertyItem* pItem = (CPropertyItem*) GetItemDataPtr(m_curSel); - - if (m_btnCtrl) - m_btnCtrl.ShowWindow(SW_HIDE); - if (m_CheckBoxControl) - m_CheckBoxControl.ShowWindow(SW_HIDE); - - if (pItem->m_nItemType==CPropertyList::COMBO) - { - //display the combo box. If the combo box has already been - //created then simply move it to the new location, else create it - m_nLastBox = 0; - if (m_cmbBox) - m_cmbBox.MoveWindow(rect); - else - { - rect.bottom += 100; - m_cmbBox.Create(CBS_DROPDOWNLIST - | CBS_NOINTEGRALHEIGHT | WS_VISIBLE - | WS_CHILD | WS_BORDER, - rect,this,IDC_PROPCMBBOX); - m_cmbBox.SetFont(&m_SSerif8Font); - } - - //add the choices for this particular property - CString cmbItems = pItem->m_cmbItems; - lBoxSelText = pItem->m_curValue; - - m_cmbBox.ResetContent(); - int i,i2; - i=0; - while ((i2=cmbItems.Find('|',i)) != -1) - { - m_cmbBox.AddString(cmbItems.Mid(i,i2-i)); - i=i2+1; - } - if(i != 0) - m_cmbBox.AddString(cmbItems.Mid(i)); - - m_cmbBox.ShowWindow(SW_SHOW); - m_cmbBox.SetFocus(); - - //jump to the property's current value in the combo box - int j = m_cmbBox.FindStringExact(0,lBoxSelText); - if (j != CB_ERR) - m_cmbBox.SetCurSel(j); - else - m_cmbBox.SetCurSel(0); - } - else if (pItem->m_nItemType==CPropertyList::EDIT) - { - //display edit box - m_nLastBox = 1; - m_prevSel = m_curSel; - rect.bottom -= 3; - if (m_editBox) - m_editBox.MoveWindow(rect); - else - { - m_editBox.Create(ES_LEFT | ES_AUTOHSCROLL | WS_VISIBLE - | WS_CHILD | WS_BORDER, - rect,this,IDC_PROPEDITBOX); - m_editBox.SetFont(&m_SSerif8Font); - } - - lBoxSelText = pItem->m_curValue; - - m_editBox.ShowWindow(SW_SHOW); - m_editBox.SetFocus(); - //set the text in the edit box to the property's current value - m_editBox.SetWindowText(lBoxSelText); - } - else if (pItem->m_nItemType == CPropertyList::CHECKBOX) - { - rect.bottom -= 3; - if (m_CheckBoxControl) - m_CheckBoxControl.MoveWindow(rect); - else - { - m_CheckBoxControl.Create("check",BS_CHECKBOX - | BM_SETCHECK |BS_LEFTTEXT - | WS_VISIBLE | WS_CHILD, - rect,this,IDC_PROPCHECKBOXCTRL); - m_CheckBoxControl.SetFont(&m_SSerif8Font); - } - - lBoxSelText = pItem->m_curValue; - - m_CheckBoxControl.ShowWindow(SW_SHOW); - m_CheckBoxControl.SetFocus(); - //set the text in the edit box to the property's current value - if(lBoxSelText == "ON") - { - m_CheckBoxControl.SetCheck(1); - } - else - { - m_CheckBoxControl.SetCheck(0); - } - } - - else - { - DisplayButton(rect); - m_nLastBox = 1; - m_prevSel = m_curSel; - rect.bottom -= 3; - rect.right -= 25; - if (m_editBox) - { - m_editBox.MoveWindow(rect); - } - else - { - m_editBox.Create(ES_LEFT | ES_AUTOHSCROLL | WS_VISIBLE - | WS_CHILD | WS_BORDER, - rect,this,IDC_PROPEDITBOX); - m_editBox.SetFont(&m_SSerif8Font); - } - - lBoxSelText = pItem->m_curValue; - - m_editBox.ShowWindow(SW_SHOW); - m_editBox.SetFocus(); - //set the text in the edit box to the property's current value - m_editBox.SetWindowText(lBoxSelText); - } -} - -void CPropertyList::DisplayButton(CRect region) -{ - //displays a button if the property is a file/color/font chooser - m_nLastBox = 2; - m_prevSel = m_curSel; - - if (region.Width() > 25) - region.left = region.right - 25; - region.bottom -= 3; - - if (m_btnCtrl) - m_btnCtrl.MoveWindow(region); - else - { - m_btnCtrl.Create("...",BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD, - region,this,IDC_PROPBTNCTRL); - m_btnCtrl.SetFont(&m_SSerif8Font); - } - - m_btnCtrl.ShowWindow(SW_SHOW); - m_btnCtrl.SetFocus(); -} - -void CPropertyList::OnKillFocus(CWnd* pNewWnd) -{ - //m_btnCtrl.ShowWindow(SW_HIDE); - - CListBox::OnKillFocus(pNewWnd); -} - -void CPropertyList::OnKillfocusCmbBox() -{ - m_cmbBox.ShowWindow(SW_HIDE); - - Invalidate(); -} - -void CPropertyList::OnKillfocusEditBox() -{ - CString newStr; - m_editBox.ShowWindow(SW_HIDE); - - Invalidate(); -} - -void CPropertyList::OnSelchangeCmbBox() -{ - CString selStr; - if (m_cmbBox) - { - m_cmbBox.GetLBText(m_cmbBox.GetCurSel(),selStr); - CPropertyItem* pItem = (CPropertyItem*) GetItemDataPtr(m_curSel); - pItem->m_curValue = selStr; - m_Dirty = true; - } -} - -void CPropertyList::OnChangeEditBox() -{ - CString newStr; - m_editBox.GetWindowText(newStr); - - CPropertyItem* pItem = (CPropertyItem*) GetItemDataPtr(m_curSel); - if(pItem->m_curValue != newStr) - { - pItem->m_curValue = newStr; - m_Dirty = true; - } -} - -void CPropertyList::HideControls() -{ - if(m_editBox) - { - m_editBox.ShowWindow(SW_HIDE); - } - if(m_cmbBox) - { - m_cmbBox.ShowWindow(SW_HIDE); - } - if(m_CheckBoxControl) - { - m_CheckBoxControl.ShowWindow(SW_HIDE); - } - if(m_btnCtrl) - { - m_btnCtrl.ShowWindow(SW_HIDE); - } -} - -void CPropertyList::OnVScroll( UINT nSBCode, UINT nPos, CScrollBar* pScrollBar ) -{ - this->HideControls(); - CListBox::OnVScroll(nSBCode, nPos, pScrollBar); -} - -void CPropertyList::OnCheckBox() -{ - CPropertyItem* pItem = (CPropertyItem*) GetItemDataPtr(m_curSel); - if(m_CheckBoxControl.GetCheck()) - { - pItem->m_curValue = "ON"; - } - else - { - pItem->m_curValue = "OFF"; - } - m_Dirty = true; -} - - -void CPropertyList::OnButton() -{ - if(m_PropertyItems.size() == 0) - { - return; - } - - CPropertyItem* pItem = (CPropertyItem*) GetItemDataPtr(m_curSel); - - // The dialogs might change the working directory. Save it. - std::string cwd = cmSystemTools::GetCurrentWorkingDirectory(); - - //display the appropriate common dialog depending on what type - //of chooser is associated with the property - - if (pItem->m_nItemType == CPropertyList::FILE) - { - CString SelectedFile; - CString Filter("All Files (*.*)||"); - - CFileDialog FileDlg(TRUE, NULL, NULL, NULL, - Filter); - CString initialDir; - CString currPath = pItem->m_curValue; - if (currPath.Right(9) == "-NOTFOUND" || currPath == "NOTFOUND") - { - currPath = ""; - } - if (currPath.GetLength() > 0) - { - int endSlash = currPath.ReverseFind('\\'); - if(endSlash == -1) - { - endSlash = currPath.ReverseFind('/'); - } - initialDir = currPath.Left(endSlash); - } - initialDir.Replace("/", "\\"); - FileDlg.m_ofn.lpstrTitle = "Select file"; - if (currPath.GetLength() > 0) - FileDlg.m_ofn.lpstrInitialDir = initialDir; - - if(IDOK == FileDlg.DoModal()) - { - SelectedFile = FileDlg.GetPathName(); - - m_btnCtrl.ShowWindow(SW_HIDE); - std::string path = SelectedFile; - cmSystemTools::ConvertToUnixSlashes(path); - pItem->m_curValue = path.c_str(); - m_Dirty = true; - InvalidateList(); - } - } - else if (pItem->m_nItemType == CPropertyList::PATH) - { - CString initialDir = pItem->m_curValue; - // convert back to windos style path - initialDir.Replace("/", "\\"); - CString title = "Setting Cache Value: "; - title += pItem->m_propName; - CPathDialog dlg("Select Path", title, initialDir); - if(dlg.DoModal()==IDOK) - { - CString SelectedFile = dlg.GetPathName(); - m_btnCtrl.ShowWindow(SW_HIDE); - std::string path = SelectedFile; - cmSystemTools::ConvertToUnixSlashes(path); - pItem->m_curValue = path.c_str(); - m_Dirty = true; - InvalidateList(); - } - } - - cmSystemTools::ChangeDirectory(cwd.c_str()); -} - -void CPropertyList::OnLButtonUp(UINT nFlags, CPoint point) -{ - if (m_bTracking) - { - //if columns were being resized then this indicates - //that mouse is up so resizing is done. Need to redraw - //columns to reflect their new widths. - - m_bTracking = FALSE; - //if mouse was captured then release it - if (GetCapture()==this) - ::ReleaseCapture(); - - ::ClipCursor(NULL); - - CClientDC dc(this); - InvertLine(&dc,CPoint(point.x,m_nDivTop),CPoint(point.x,m_nDivBtm)); - //set the divider position to the new value - m_nDivider = point.x; - - //redraw - Invalidate(); - } - else - { - BOOL loc; - int i = ItemFromPoint(point,loc); - m_curSel = i; - CListBox::OnLButtonUp(nFlags, point); - } -} - -void CPropertyList::OnLButtonDown(UINT nFlags, CPoint point) -{ - if ((point.x>=m_nDivider-5) && (point.x<=m_nDivider+5)) - { - //if mouse clicked on divider line, then start resizing - - ::SetCursor(m_hCursorSize); - - CRect windowRect; - GetWindowRect(windowRect); - windowRect.left += 10; windowRect.right -= 10; - //do not let mouse leave the list box boundary - ::ClipCursor(windowRect); - - if (m_cmbBox) - m_cmbBox.ShowWindow(SW_HIDE); - if (m_editBox) - m_editBox.ShowWindow(SW_HIDE); - - CRect clientRect; - GetClientRect(clientRect); - - m_bTracking = TRUE; - m_nDivTop = clientRect.top; - m_nDivBtm = clientRect.bottom; - m_nOldDivX = point.x; - - CClientDC dc(this); - InvertLine(&dc,CPoint(m_nOldDivX,m_nDivTop),CPoint(m_nOldDivX,m_nDivBtm)); - - //capture the mouse - SetCapture(); - } - else - { - m_bTracking = FALSE; - CListBox::OnLButtonDown(nFlags, point); - } -} - -void CPropertyList::OnMouseMove(UINT nFlags, CPoint point) -{ - if (m_bTracking) - { - //move divider line to the mouse pos. if columns are - //currently being resized - CClientDC dc(this); - //remove old divider line - InvertLine(&dc,CPoint(m_nOldDivX,m_nDivTop),CPoint(m_nOldDivX,m_nDivBtm)); - //draw new divider line - InvertLine(&dc,CPoint(point.x,m_nDivTop),CPoint(point.x,m_nDivBtm)); - m_nOldDivX = point.x; - } - else if ((point.x >= m_nDivider-5) && (point.x <= m_nDivider+5)) - //set the cursor to a sizing cursor if the cursor is over the row divider - ::SetCursor(m_hCursorSize); - else - { - BOOL loc; - int curSel = ItemFromPoint(point,loc); - if(!loc && curSel < 65535) - { - CPropertyItem* pItem = (CPropertyItem*) GetItemDataPtr(curSel); - m_CMakeSetupDialog->SetDlgItemText(IDC_PROGRESS, pItem->m_HelpString); - } - CListBox::OnMouseMove(nFlags, point); - } - -} - -void CPropertyList::InvertLine(CDC* pDC,CPoint ptFrom,CPoint ptTo) -{ - int nOldMode = pDC->SetROP2(R2_NOT); - - pDC->MoveTo(ptFrom); - pDC->LineTo(ptTo); - - pDC->SetROP2(nOldMode); -} - -void CPropertyList::PreSubclassWindow() -{ - m_bDivIsSet = FALSE; - m_nDivider = 0; - m_bTracking = FALSE; - m_curSel = 1; - - m_hCursorSize = AfxGetApp()->LoadStandardCursor(IDC_SIZEWE); - m_hCursorArrow = AfxGetApp()->LoadStandardCursor(IDC_ARROW); - - m_SSerif8Font.CreatePointFont(80,_T("MS Sans Serif")); -} - -CPropertyItem* CPropertyList::GetItem(int index) -{ - return (CPropertyItem*)GetItemDataPtr(index); -} - -void CPropertyList::OnRButtonUp( UINT /* nFlags */, CPoint point ) -{ - CMenu menu; - CRect rect; - this->GetWindowRect(&rect); - BOOL loc; - m_curSel = ItemFromPoint(point,loc); - menu.CreatePopupMenu(); - menu.AppendMenu(MF_STRING | MF_ENABLED, 44, "Ignore Cache Entry"); - menu.AppendMenu(MF_STRING | MF_ENABLED, 42, "Delete Cache Entry"); - menu.AppendMenu(MF_STRING | MF_ENABLED, 43, "Help For Cache Entry"); - menu.TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, - rect.TopLeft().x + point.x, - rect.TopLeft().y + point.y, this, NULL); -} - -void CPropertyList::RemoveProperty(const char* name) -{ - this->HideControls(); - for(int i =0; i < this->GetCount(); ++i) - { - CPropertyItem* pItem = (CPropertyItem*) GetItemDataPtr(i); - if(pItem->m_propName == name) - { - m_PropertyItems.erase(pItem); - delete pItem; - this->DeleteString(i); - return; - } - } -} - -void CPropertyList::OnIgnore() -{ - if(m_curSel == -1 || this->GetCount() <= 0) - { - return; - } - CPropertyItem* pItem = (CPropertyItem*) GetItemDataPtr(m_curSel); - pItem->m_curValue = "IGNORE"; - InvalidateList(); -} - - - -void CPropertyList::OnDelete() -{ - if(m_curSel == -1 || this->GetCount() <= 0) - { - return; - } - CPropertyItem* pItem = (CPropertyItem*) GetItemDataPtr(m_curSel); - m_CMakeSetupDialog->GetCMakeInstance()->GetCacheManager()->RemoveCacheEntry(pItem->m_propName); - m_PropertyItems.erase(pItem); - delete pItem; - this->DeleteString(m_curSel); - this->HideControls(); - this->SetTopIndex(0); - InvalidateList(); - m_curSel += 1; - if(m_curSel > this->GetCount()) - { - m_curSel = this->GetCount(); - } - this->SetCurSel(m_curSel); -} - -void CPropertyList::OnHelp() -{ - if(m_curSel == -1 || this->GetCount() <= 0) - { - return; - } - CPropertyItem* pItem = (CPropertyItem*) GetItemDataPtr(m_curSel); - MessageBox(pItem->m_HelpString, pItem->m_propName, MB_OK|MB_ICONINFORMATION); -} - -void CPropertyList::RemoveAll() -{ - int c = this->GetCount(); - for(int i =0; i < c; ++i) - { - this->DeleteString(0); - } - for(std::set<CPropertyItem*>::iterator ii = m_PropertyItems.begin(); - ii != m_PropertyItems.end(); ++ii) - { - delete *ii; - } - m_PropertyItems.clear(); - m_Dirty = false; - this->HideControls(); - InvalidateList(); -} - -void CPropertyList::InvalidateList() -{ - Invalidate(); - m_Dirty = true; -} - -void CPropertyList::ShowAdvanced() -{ - this->SetRedraw(FALSE); - this->ResetContent(); - m_ShowAdvanced = true; - std::map<std::string, CPropertyItem*> sortProps; - for(std::set<CPropertyItem*>::iterator i = m_PropertyItems.begin(); - i != m_PropertyItems.end(); ++i) - { - sortProps[(const char*)(*i)->m_propName] = *i; - } - for(std::map<std::string, CPropertyItem*>::iterator i = sortProps.begin(); - i != sortProps.end(); ++i) - { - CPropertyItem* item = i->second; - if(item->m_NewValue) - { - this->AddPropItem(item, 2); - } - } - for(std::map<std::string, CPropertyItem*>::iterator i = sortProps.begin(); - i != sortProps.end(); ++i) - { - CPropertyItem* item = i->second; - if(!item->m_NewValue) - { - this->AddPropItem(item, 2); - } - } - this->SetRedraw(TRUE); - this->InvalidateList(); -} - - -void CPropertyList::HideAdvanced() -{ - this->SetRedraw(FALSE); - this->ResetContent(); - m_ShowAdvanced = false; - std::map<std::string, CPropertyItem*> sortProps; - for(std::set<CPropertyItem*>::iterator i = m_PropertyItems.begin(); - i != m_PropertyItems.end(); ++i) - { - sortProps[(const char*)(*i)->m_propName] = *i; - } - for(std::map<std::string, CPropertyItem*>::iterator i = sortProps.begin(); - i != sortProps.end(); ++i) - { - CPropertyItem* item = i->second; - if(item->m_NewValue && !item->m_Advanced) - { - this->AddPropItem(item, 2); - } - } - for(std::map<std::string, CPropertyItem*>::iterator i = sortProps.begin(); - i != sortProps.end(); ++i) - { - CPropertyItem* item = i->second; - if(!item->m_Advanced && !item->m_NewValue) - { - this->AddPropItem(item, 2); - } - } - this->SetRedraw(TRUE); - this->InvalidateList(); -} - |