ENH: rework GUI with configure/OK/Cancel
This commit is contained in:
parent
4ab2650802
commit
a5eac44d18
|
@ -1,73 +0,0 @@
|
|||
// CMakeSetupDialogDlg.h : header file
|
||||
//
|
||||
|
||||
#if !defined(AFX_CMakeSetupDialogDLG_H__AC17A6F6_4634_11D4_8F21_00A0CC33FCD3__INCLUDED_)
|
||||
#define AFX_CMakeSetupDialogDLG_H__AC17A6F6_4634_11D4_8F21_00A0CC33FCD3__INCLUDED_
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER > 1000
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CMakeSetupDialog dialog
|
||||
|
||||
class CMakeSetupDialog : public CDialog
|
||||
{
|
||||
// Construction
|
||||
public:
|
||||
CMakeSetupDialog(CWnd* pParent = NULL); // standard constructor
|
||||
protected:
|
||||
bool Browse(CString&, const char* title);
|
||||
void SaveToRegistry();
|
||||
void LoadFromRegistry();
|
||||
void ReadRegistryValue(HKEY hKey,
|
||||
CString *val,
|
||||
char *key,
|
||||
char *adefault);
|
||||
// Dialog Data
|
||||
//{{AFX_DATA(CMakeSetupDialog)
|
||||
enum { IDD = IDD_CMakeSetupDialog_DIALOG };
|
||||
CButton m_CancelButton;
|
||||
CStatic m_MouseHelp;
|
||||
CStatic m_VersionDisplay;
|
||||
CButton m_BuildProjects;
|
||||
CButton m_ListFrame;
|
||||
CComboBox m_WhereSourceControl;
|
||||
CComboBox m_WhereBuildControl;
|
||||
CListBox m_CacheEntriesList;
|
||||
CString m_WhereITK;
|
||||
CString m_WhereBuildITK;
|
||||
CString m_WhereBuild;
|
||||
CString m_WhereSource;
|
||||
//}}AFX_DATA
|
||||
|
||||
// ClassWizard generated virtual function overrides
|
||||
//{{AFX_VIRTUAL(CMakeSetupDialog)
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||||
//}}AFX_VIRTUAL
|
||||
|
||||
// Implementation
|
||||
protected:
|
||||
HICON m_hIcon;
|
||||
|
||||
// Generated message map functions
|
||||
//{{AFX_MSG(CMakeSetupDialog)
|
||||
virtual BOOL OnInitDialog();
|
||||
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
|
||||
afx_msg void OnPaint();
|
||||
afx_msg HCURSOR OnQueryDragIcon();
|
||||
virtual void OnOK();
|
||||
afx_msg void OnBuildProjects();
|
||||
afx_msg void OnChangeWhereBuild();
|
||||
afx_msg void OnChangeWhereSource();
|
||||
afx_msg void OnSelendokWhereBuild();
|
||||
afx_msg void OnSize(UINT nType, int cx, int cy);
|
||||
//}}AFX_MSG
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
|
||||
//{{AFX_INSERT_LOCATION}}
|
||||
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
|
||||
|
||||
#endif // !defined(AFX_CMakeSetupDialogDLG_H__AC17A6F6_4634_11D4_8F21_00A0CC33FCD3__INCLUDED_)
|
|
@ -98,8 +98,8 @@ BEGIN
|
|||
COMBOBOX IDC_WhereBuild,148,26,133,68,CBS_DROPDOWN |
|
||||
CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
|
||||
PUSHBUTTON "Browse...",IDC_BUTTON3,286,25,43,13
|
||||
DEFPUSHBUTTON "Build Project Files",IDC_BuildProjects,112,206,67,15
|
||||
PUSHBUTTON "Close",IDOK,190,206,67,15
|
||||
DEFPUSHBUTTON "Configure",IDC_BuildProjects,88,202,67,15
|
||||
PUSHBUTTON "Cancel",IDCANCEL,220,201,67,15
|
||||
LISTBOX IDC_LIST2,15,55,344,122,LBS_OWNERDRAWVARIABLE |
|
||||
LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | WS_VSCROLL |
|
||||
WS_HSCROLL
|
||||
|
@ -110,6 +110,7 @@ BEGIN
|
|||
CTEXT "Right click on cache entries for additional options",
|
||||
IDC_MouseHelpCaption,106,189,156,8
|
||||
LTEXT "Static",IDC_CMAKE_VERSION,3,211,58,13,SS_CENTERIMAGE
|
||||
PUSHBUTTON "OK",IDC_OK,160,202,56,14
|
||||
END
|
||||
|
||||
|
||||
|
|
|
@ -68,8 +68,8 @@ CMakeSetupDialog::CMakeSetupDialog(CWnd* pParent /*=NULL*/)
|
|||
m_RegistryKey = "Software\\Kitware\\CMakeSetup\\Settings\\StartPath";
|
||||
|
||||
//{{AFX_DATA_INIT(CMakeSetupDialog)
|
||||
m_WhereBuild = _T("");
|
||||
m_WhereSource = _T("");
|
||||
m_WhereBuild = _T("");
|
||||
//}}AFX_DATA_INIT
|
||||
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
|
||||
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
|
||||
|
@ -90,16 +90,17 @@ void CMakeSetupDialog::DoDataExchange(CDataExchange* pDX)
|
|||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
//{{AFX_DATA_MAP(CMakeSetupDialog)
|
||||
DDX_Control(pDX, IDOK, m_CancelButton);
|
||||
DDX_Control(pDX, IDC_MouseHelpCaption, m_MouseHelp);
|
||||
DDX_Control(pDX, IDC_CMAKE_VERSION, m_VersionDisplay);
|
||||
DDX_Control(pDX, IDC_BuildProjects, m_BuildProjects);
|
||||
DDX_Control(pDX, IDC_OK, m_OKButton);
|
||||
DDX_Control(pDX, IDCANCEL, m_CancelButton);
|
||||
DDX_CBStringExact(pDX, IDC_WhereSource, m_WhereSource);
|
||||
DDX_CBStringExact(pDX, IDC_WhereBuild, m_WhereBuild);
|
||||
DDX_Control(pDX, IDC_FRAME, m_ListFrame);
|
||||
DDX_Control(pDX, IDC_WhereSource, m_WhereSourceControl);
|
||||
DDX_Control(pDX, IDC_WhereBuild, m_WhereBuildControl);
|
||||
DDX_Control(pDX, IDC_LIST2, m_CacheEntriesList);
|
||||
DDX_CBStringExact(pDX, IDC_WhereBuild, m_WhereBuild);
|
||||
DDX_CBStringExact(pDX, IDC_WhereSource, m_WhereSource);
|
||||
DDX_Control(pDX, IDC_MouseHelpCaption, m_MouseHelp);
|
||||
DDX_Control(pDX, IDC_CMAKE_VERSION, m_VersionDisplay);
|
||||
DDX_Control(pDX, IDC_BuildProjects, m_Configure);
|
||||
//}}AFX_DATA_MAP
|
||||
}
|
||||
|
||||
|
@ -108,16 +109,17 @@ BEGIN_MESSAGE_MAP(CMakeSetupDialog, CDialog)
|
|||
ON_WM_SYSCOMMAND()
|
||||
ON_WM_PAINT()
|
||||
ON_WM_QUERYDRAGICON()
|
||||
ON_BN_CLICKED(IDOK, OnOK)
|
||||
ON_BN_CLICKED(IDC_BuildProjects, OnBuildProjects)
|
||||
ON_CBN_EDITCHANGE(IDC_WhereBuild, OnChangeWhereBuild)
|
||||
ON_CBN_EDITCHANGE(IDC_WhereSource, OnChangeWhereSource)
|
||||
ON_CBN_SELCHANGE(IDC_WhereBuild, OnSelendokWhereBuild)
|
||||
ON_BN_CLICKED(IDC_BUTTON2, OnBrowseWhereSource)
|
||||
ON_BN_CLICKED(IDC_BuildProjects, OnConfigure)
|
||||
ON_BN_CLICKED(IDC_BUTTON3, OnBrowseWhereBuild)
|
||||
ON_CBN_EDITCHANGE(IDC_WhereBuild, OnChangeWhereBuild)
|
||||
ON_CBN_SELCHANGE(IDC_WhereBuild, OnSelendokWhereBuild)
|
||||
ON_CBN_EDITCHANGE(IDC_WhereSource, OnChangeWhereSource)
|
||||
ON_CBN_SELENDOK(IDC_WhereSource, OnSelendokWhereSource)
|
||||
ON_WM_SIZE()
|
||||
ON_WM_GETMINMAXINFO()
|
||||
ON_BN_CLICKED(IDCANCEL, OnCancel)
|
||||
ON_BN_CLICKED(IDC_OK, OnOk)
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
@ -162,6 +164,7 @@ BOOL CMakeSetupDialog::OnInitDialog()
|
|||
cmMakefile::GetMinorVersion());
|
||||
SetDlgItemText(IDC_CMAKE_VERSION, tmp);
|
||||
this->UpdateData(FALSE);
|
||||
m_OKButton.EnableWindow(false);
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
}
|
||||
|
||||
|
@ -386,10 +389,9 @@ void CMakeSetupDialog::OnBrowseWhereBuild()
|
|||
this->OnChangeWhereBuild();
|
||||
}
|
||||
|
||||
// Callback for build projects button
|
||||
void CMakeSetupDialog::OnBuildProjects()
|
||||
void CMakeSetupDialog::RunCMake(bool generateProjectFiles)
|
||||
{
|
||||
if(!cmSystemTools::FileExists(m_WhereBuild))
|
||||
if(!cmSystemTools::FileExists(m_WhereBuild))
|
||||
{
|
||||
std::string message =
|
||||
"Build directory does not exist, should I create it?\n\n"
|
||||
|
@ -431,7 +433,7 @@ void CMakeSetupDialog::OnBuildProjects()
|
|||
arg += m_WhereBuild;
|
||||
args.push_back(arg);
|
||||
// run the generate process
|
||||
if(make.Generate(args) != 0)
|
||||
if(make.Generate(args, generateProjectFiles) != 0)
|
||||
{
|
||||
cmSystemTools::Error(
|
||||
"Error in generation process, project files may be invalid");
|
||||
|
@ -446,7 +448,15 @@ void CMakeSetupDialog::OnBuildProjects()
|
|||
m_BuildPathChanged = false;
|
||||
// put the cursor back
|
||||
::SetCursor(LoadCursor(NULL, IDC_ARROW));
|
||||
m_CacheEntriesList.ClearDirty();
|
||||
}
|
||||
|
||||
|
||||
// Callback for build projects button
|
||||
void CMakeSetupDialog::OnConfigure()
|
||||
{
|
||||
this->RunCMake(false);
|
||||
// if cache has values then enb
|
||||
m_OKButton.EnableWindow(true);
|
||||
}
|
||||
|
||||
|
||||
|
@ -489,7 +499,24 @@ void CMakeSetupDialog::OnChangeWhereBuild()
|
|||
|
||||
// copy from the cache manager to the cache edit list box
|
||||
void CMakeSetupDialog::FillCacheGUIFromCacheManager()
|
||||
{
|
||||
{
|
||||
int size = m_CacheEntriesList.GetItems().size();
|
||||
bool reverseOrder = false;
|
||||
// if there are already entries in the cache, then
|
||||
// put the new ones in the top, so they show up first
|
||||
if(size)
|
||||
{
|
||||
reverseOrder = true;
|
||||
}
|
||||
|
||||
// all the current values are not new any more
|
||||
std::set<CPropertyItem*> items = m_CacheEntriesList.GetItems();
|
||||
for(std::set<CPropertyItem*>::iterator i = items.begin();
|
||||
i != items.end(); ++i)
|
||||
{
|
||||
CPropertyItem* item = *i;
|
||||
item->m_NewValue = false;
|
||||
}
|
||||
const cmCacheManager::CacheEntryMap &cache =
|
||||
cmCacheManager::GetInstance()->GetCacheMap();
|
||||
for(cmCacheManager::CacheEntryMap::const_iterator i = cache.begin();
|
||||
|
@ -505,38 +532,51 @@ void CMakeSetupDialog::FillCacheGUIFromCacheManager()
|
|||
m_CacheEntriesList.AddProperty(key,
|
||||
"ON",
|
||||
value.m_HelpString.c_str(),
|
||||
CPropertyList::CHECKBOX,"");
|
||||
CPropertyList::CHECKBOX,"",
|
||||
reverseOrder
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_CacheEntriesList.AddProperty(key,
|
||||
"OFF",
|
||||
value.m_HelpString.c_str(),
|
||||
CPropertyList::CHECKBOX,"");
|
||||
CPropertyList::CHECKBOX,"",
|
||||
reverseOrder
|
||||
);
|
||||
}
|
||||
break;
|
||||
case cmCacheManager::PATH:
|
||||
m_CacheEntriesList.AddProperty(key,
|
||||
value.m_Value.c_str(),
|
||||
value.m_HelpString.c_str(),
|
||||
CPropertyList::PATH,"");
|
||||
CPropertyList::PATH,"",
|
||||
reverseOrder
|
||||
);
|
||||
break;
|
||||
case cmCacheManager::FILEPATH:
|
||||
m_CacheEntriesList.AddProperty(key,
|
||||
value.m_Value.c_str(),
|
||||
value.m_HelpString.c_str(),
|
||||
CPropertyList::FILE,"");
|
||||
CPropertyList::FILE,"",
|
||||
reverseOrder
|
||||
);
|
||||
break;
|
||||
case cmCacheManager::STRING:
|
||||
m_CacheEntriesList.AddProperty(key,
|
||||
value.m_Value.c_str(),
|
||||
value.m_HelpString.c_str(),
|
||||
CPropertyList::EDIT,"");
|
||||
CPropertyList::EDIT,"",
|
||||
reverseOrder
|
||||
);
|
||||
break;
|
||||
case cmCacheManager::INTERNAL:
|
||||
break;
|
||||
}
|
||||
}
|
||||
// redraw the list
|
||||
m_CacheEntriesList.SetTopIndex(0);
|
||||
m_CacheEntriesList.Invalidate();
|
||||
}
|
||||
|
||||
// copy from the list box to the cache manager
|
||||
|
@ -633,9 +673,9 @@ void CMakeSetupDialog::OnSize(UINT nType, int cx, int cy)
|
|||
0, 0,
|
||||
SWP_NOSIZE | SWP_NOZORDER);
|
||||
|
||||
m_BuildProjects.GetWindowRect(&cRect);
|
||||
m_Configure.GetWindowRect(&cRect);
|
||||
this->ScreenToClient(&cRect);
|
||||
m_BuildProjects.SetWindowPos(&wndTop, cRect.left + deltax/2,
|
||||
m_Configure.SetWindowPos(&wndTop, cRect.left + deltax/2,
|
||||
cRect.top + deltay,
|
||||
0, 0,
|
||||
SWP_NOSIZE | SWP_NOZORDER);
|
||||
|
@ -645,6 +685,12 @@ void CMakeSetupDialog::OnSize(UINT nType, int cx, int cy)
|
|||
cRect.top + deltay,
|
||||
0, 0,
|
||||
SWP_NOSIZE | SWP_NOZORDER);
|
||||
m_OKButton.GetWindowRect(&cRect);
|
||||
this->ScreenToClient(&cRect);
|
||||
m_OKButton.SetWindowPos(&wndTop, cRect.left + deltax/2,
|
||||
cRect.top + deltay,
|
||||
0, 0,
|
||||
SWP_NOSIZE | SWP_NOZORDER);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -656,9 +702,9 @@ void CMakeSetupDialog::OnGetMinMaxInfo( MINMAXINFO FAR* lpMMI )
|
|||
lpMMI->ptMinTrackSize.y = 272;
|
||||
}
|
||||
|
||||
void CMakeSetupDialog::OnOK()
|
||||
void CMakeSetupDialog::OnCancel()
|
||||
{
|
||||
if(m_CacheEntriesList.IsDirty())
|
||||
if(m_OKButton.IsWindowEnabled())
|
||||
{
|
||||
if(MessageBox("You have changed options but not rebuilt, "
|
||||
"are you sure you want to exit?", "Confirm Exit",
|
||||
|
@ -672,3 +718,10 @@ void CMakeSetupDialog::OnOK()
|
|||
CDialog::OnOK();
|
||||
}
|
||||
}
|
||||
|
||||
void CMakeSetupDialog::OnOk()
|
||||
{
|
||||
m_CacheEntriesList.ClearDirty();
|
||||
this->RunCMake(true);
|
||||
CDialog::OnOK();
|
||||
}
|
||||
|
|
|
@ -32,7 +32,9 @@ protected:
|
|||
const char *aadefault);
|
||||
// Dialog Data
|
||||
//{{AFX_DATA(CMakeSetupDialog)
|
||||
enum { IDD = IDD_CMakeSetupDialog_DIALOG };
|
||||
enum { IDD = IDD_CMakeSetupDialog_DIALOG };
|
||||
CButton m_OKButton;
|
||||
CButton m_CancelButton;
|
||||
CString m_WhereSource;
|
||||
CString m_WhereBuild;
|
||||
CButton m_ListFrame;
|
||||
|
@ -42,9 +44,8 @@ protected:
|
|||
CPropertyList m_CacheEntriesList;
|
||||
CStatic m_MouseHelp;
|
||||
CStatic m_VersionDisplay;
|
||||
CButton m_BuildProjects;
|
||||
CButton m_CancelButton;
|
||||
//}}AFX_DATA
|
||||
CButton m_Configure;
|
||||
//}}AFX_DATA
|
||||
|
||||
// ClassWizard generated virtual function overrides
|
||||
//{{AFX_VIRTUAL(CMakeSetupDialog)
|
||||
|
@ -54,7 +55,7 @@ protected:
|
|||
|
||||
// Implementation
|
||||
protected:
|
||||
|
||||
void RunCMake(bool generateProjectFiles);
|
||||
// copy from the cache manager to the cache edit list box
|
||||
void FillCacheGUIFromCacheManager();
|
||||
// copy from the list box to the cache manager
|
||||
|
@ -68,11 +69,11 @@ protected:
|
|||
//{{AFX_MSG(CMakeSetupDialog)
|
||||
virtual BOOL OnInitDialog();
|
||||
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
|
||||
afx_msg void OnOK();
|
||||
afx_msg void OnCancel();
|
||||
afx_msg void OnPaint();
|
||||
afx_msg HCURSOR OnQueryDragIcon();
|
||||
afx_msg void OnBrowseWhereSource();
|
||||
virtual void OnBuildProjects();
|
||||
virtual void OnConfigure();
|
||||
afx_msg void OnBrowseWhereBuild();
|
||||
afx_msg void OnChangeWhereBuild();
|
||||
afx_msg void OnSelendokWhereBuild();
|
||||
|
@ -80,9 +81,10 @@ protected:
|
|||
afx_msg void OnSelendokWhereSource();
|
||||
afx_msg void OnSize(UINT nType, int cx, int cy);
|
||||
afx_msg void OnGetMinMaxInfo( MINMAXINFO FAR* lpMMI );
|
||||
//}}AFX_MSG
|
||||
afx_msg void OnOk();
|
||||
//}}AFX_MSG
|
||||
DECLARE_MESSAGE_MAP()
|
||||
|
||||
|
||||
int m_oldCX;
|
||||
int m_oldCY;
|
||||
float m_deltaXRemainder;
|
||||
|
|
|
@ -91,13 +91,21 @@ void CPropertyList::DrawItem(LPDRAWITEMSTRUCT lpDIS)
|
|||
|
||||
if (nIndex != (UINT) -1)
|
||||
{
|
||||
//get the CPropertyItem for the current row
|
||||
CPropertyItem* pItem = (CPropertyItem*) GetItemDataPtr(nIndex);
|
||||
//draw two rectangles, one for each row column
|
||||
dc.FillSolidRect(rect2,RGB(192,192,192));
|
||||
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);
|
||||
|
||||
//get the CPropertyItem for the current row
|
||||
CPropertyItem* pItem = (CPropertyItem*) GetItemDataPtr(nIndex);
|
||||
|
||||
//write the property name in the first rectangle
|
||||
dc.SetBkMode(TRANSPARENT);
|
||||
|
@ -119,9 +127,18 @@ int CPropertyList::AddItem(CString txt)
|
|||
return nIndex;
|
||||
}
|
||||
|
||||
int CPropertyList::AddPropItem(CPropertyItem* pItem)
|
||||
int CPropertyList::AddPropItem(CPropertyItem* pItem, bool reverseOrder)
|
||||
{
|
||||
int nIndex = AddString(_T(""));
|
||||
this->HideControls();
|
||||
int nIndex;
|
||||
if(reverseOrder)
|
||||
{
|
||||
nIndex = InsertString(0, _T(""));
|
||||
}
|
||||
else
|
||||
{
|
||||
nIndex = AddString(_T(""));
|
||||
}
|
||||
SetItemDataPtr(nIndex,pItem);
|
||||
m_PropertyItems.insert(pItem);
|
||||
return nIndex;
|
||||
|
@ -131,7 +148,7 @@ int CPropertyList::AddProperty(const char* name,
|
|||
const char* value,
|
||||
const char* helpString,
|
||||
int type,
|
||||
const char* comboItems)
|
||||
const char* comboItems, bool reverseOrder)
|
||||
{
|
||||
CPropertyItem* pItem = 0;
|
||||
for(int i =0; i < this->GetCount(); ++i)
|
||||
|
@ -153,8 +170,9 @@ int CPropertyList::AddProperty(const char* name,
|
|||
if(!pItem)
|
||||
{
|
||||
pItem = new CPropertyItem(name, value, helpString, type, comboItems);
|
||||
pItem->m_NewValue = true;
|
||||
}
|
||||
return this->AddPropItem(pItem);
|
||||
return this->AddPropItem(pItem, reverseOrder);
|
||||
}
|
||||
|
||||
int CPropertyList::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
||||
|
@ -357,7 +375,7 @@ void CPropertyList::OnChangeEditBox()
|
|||
}
|
||||
}
|
||||
|
||||
void CPropertyList::OnVScroll( UINT nSBCode, UINT nPos, CScrollBar* pScrollBar )
|
||||
void CPropertyList::HideControls()
|
||||
{
|
||||
if(m_editBox)
|
||||
{
|
||||
|
@ -375,6 +393,11 @@ void CPropertyList::OnVScroll( UINT nSBCode, UINT nPos, CScrollBar* pScrollBar )
|
|||
{
|
||||
m_btnCtrl.ShowWindow(SW_HIDE);
|
||||
}
|
||||
}
|
||||
|
||||
void CPropertyList::OnVScroll( UINT nSBCode, UINT nPos, CScrollBar* pScrollBar )
|
||||
{
|
||||
this->HideControls();
|
||||
CListBox::OnVScroll(nSBCode, nPos, pScrollBar);
|
||||
}
|
||||
|
||||
|
@ -601,8 +624,10 @@ void CPropertyList::OnDelete()
|
|||
CPropertyItem* pItem = (CPropertyItem*) GetItemDataPtr(m_curSel);
|
||||
cmCacheManager::GetInstance()->RemoveCacheEntry(pItem->m_propName);
|
||||
m_PropertyItems.erase(pItem);
|
||||
delete pItem;
|
||||
delete pItem;
|
||||
this->DeleteString(m_curSel);
|
||||
this->HideControls();
|
||||
this->SetTopIndex(0);
|
||||
InvalidateList();
|
||||
}
|
||||
|
||||
|
@ -627,6 +652,7 @@ void CPropertyList::RemoveAll()
|
|||
delete pItem;
|
||||
this->DeleteString(0);
|
||||
}
|
||||
this->HideControls();
|
||||
InvalidateList();
|
||||
}
|
||||
|
||||
|
|
|
@ -16,12 +16,14 @@ public:
|
|||
CString m_curValue;
|
||||
int m_nItemType;
|
||||
CString m_cmbItems;
|
||||
bool m_NewValue;
|
||||
bool m_Removed;
|
||||
public:
|
||||
CPropertyItem(CString propName, CString curValue,
|
||||
CString helpString,
|
||||
int nItemType, CString cmbItems)
|
||||
{
|
||||
m_NewValue = true;
|
||||
m_HelpString = helpString;
|
||||
m_Removed = false;
|
||||
m_propName = propName;
|
||||
|
@ -63,7 +65,9 @@ public:
|
|||
const char* value,
|
||||
const char* helpString,
|
||||
int type,
|
||||
const char* comboItems);
|
||||
const char* comboItems,
|
||||
bool reverseOrder);
|
||||
void HideControls();
|
||||
std::set<CPropertyItem*> GetItems()
|
||||
{
|
||||
return m_PropertyItems;
|
||||
|
@ -111,7 +115,7 @@ protected:
|
|||
|
||||
void InvertLine(CDC* pDC,CPoint ptFrom,CPoint ptTo);
|
||||
void DisplayButton(CRect region);
|
||||
int AddPropItem(CPropertyItem* pItem);
|
||||
int AddPropItem(CPropertyItem* pItem, bool top);
|
||||
void InvalidateList();
|
||||
|
||||
CComboBox m_cmbBox;
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
#define IDC_CMAKE_VERSION 1014
|
||||
#define IDC_FRAME 1015
|
||||
#define IDC_MouseHelpCaption 1016
|
||||
#define IDC_CompilingText 1017
|
||||
#define IDC_OK 1018
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
|
@ -25,7 +25,7 @@
|
|||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 133
|
||||
#define _APS_NEXT_COMMAND_VALUE 32771
|
||||
#define _APS_NEXT_CONTROL_VALUE 1018
|
||||
#define _APS_NEXT_CONTROL_VALUE 1019
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -404,8 +404,7 @@ void cmMakefile::SetMakefileGenerator(cmMakefileGenerator* mf)
|
|||
mf->SetMakefile(this);
|
||||
}
|
||||
|
||||
// Generate the output file
|
||||
void cmMakefile::GenerateMakefile()
|
||||
void cmMakefile::FinalPass()
|
||||
{
|
||||
// do all the variable expansions here
|
||||
this->ExpandVariables();
|
||||
|
@ -416,6 +415,13 @@ void cmMakefile::GenerateMakefile()
|
|||
{
|
||||
(*i)->FinalPass();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Generate the output file
|
||||
void cmMakefile::GenerateMakefile()
|
||||
{
|
||||
this->FinalPass();
|
||||
// merge libraries
|
||||
for (cmTargets::iterator l = m_Targets.begin();
|
||||
l != m_Targets.end(); l++)
|
||||
|
|
|
@ -118,7 +118,12 @@ public:
|
|||
* Produce the output makefile.
|
||||
*/
|
||||
void GenerateMakefile();
|
||||
|
||||
|
||||
/**
|
||||
* run the final pass on all commands.
|
||||
*/
|
||||
void FinalPass();
|
||||
|
||||
/**
|
||||
* Print the object state to std::cout.
|
||||
*/
|
||||
|
|
|
@ -222,7 +222,7 @@ void cmake::AddCMakePaths(const std::vector<std::string>& args)
|
|||
"Path to CMake installation.", cmCacheManager::INTERNAL);
|
||||
}
|
||||
|
||||
int cmake::Generate(const std::vector<std::string>& args)
|
||||
int cmake::Generate(const std::vector<std::string>& args, bool buildMakefiles)
|
||||
{
|
||||
if(args.size() == 1 && !cmSystemTools::FileExists("CMakeLists.txt"))
|
||||
{
|
||||
|
@ -279,7 +279,25 @@ int cmake::Generate(const std::vector<std::string>& args)
|
|||
this->Usage(args[0].c_str());
|
||||
return -1;
|
||||
}
|
||||
mf.GenerateMakefile();
|
||||
// if buildMakefiles, then call GenerateMakefile
|
||||
if(buildMakefiles)
|
||||
{
|
||||
mf.GenerateMakefile();
|
||||
}
|
||||
else // do not build, but let the commands finalize
|
||||
{
|
||||
std::vector<cmMakefile*> makefiles;
|
||||
mf.FindSubDirectoryCMakeListsFiles(makefiles);
|
||||
for(std::vector<cmMakefile*>::iterator i = makefiles.begin();
|
||||
i != makefiles.end(); ++i)
|
||||
{
|
||||
cmMakefile* mf = *i;
|
||||
mf->FinalPass();
|
||||
delete mf;
|
||||
}
|
||||
mf.FinalPass();
|
||||
}
|
||||
|
||||
|
||||
// Before saving the cache
|
||||
// if the project did not define one of the entries below, add them now
|
||||
|
|
|
@ -60,8 +60,10 @@ class cmake
|
|||
* to the command line version of cmake. For building a GUI,
|
||||
* you would pass in the following arguments:
|
||||
* /path/to/cmake -H/path/to/source -B/path/to/build
|
||||
* If you only want to parse the CMakeLists.txt files,
|
||||
* but not actually generate the makefiles, use buildMakefiles = false.
|
||||
*/
|
||||
int Generate(const std::vector<std::string>&);
|
||||
int Generate(const std::vector<std::string>&, bool buildMakefiles = true);
|
||||
|
||||
/**
|
||||
* Generate the SourceFilesList from the SourceLists. This should only be
|
||||
|
|
Loading…
Reference in New Issue