summaryrefslogtreecommitdiffstats
path: root/Source/MFCDialog/CMakeSetupDialog.h
blob: 5311a8467de180e3fe4fbbed28da6ebc092edb42 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
/*=========================================================================

Program:   CMake - Cross-Platform Makefile Generator
Module:    $RCSfile$
Language:  C++
Date:      $Date$
Version:   $Revision$

Copyright (c) 2002 Kitware, Inc., Insight Consortium.  All rights reserved.
See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.

This software is distributed WITHOUT ANY WARRANTY; without even 
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
PURPOSE.  See the above copyright notices for more information.

=========================================================================*/
// 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


#include "PropertyList.h"
#include "CMakeGenDialog.h"

/////////////////////////////////////////////////////////////////////////////
// CMakeSetupDialog dialog

class CMakeCommandLineInfo;
class cmake;

class CMakeSetupDialog : public CDialog
{
// Construction
public:
  CMakeSetupDialog(const CMakeCommandLineInfo& cmdInfo, 
                   CWnd* pParent = NULL); 

  ~CMakeSetupDialog();
  // return the cmake that is currently being used
  cmake *GetCMakeInstance() {
    return m_CMakeInstance; }
protected:
  //! Load cache file from m_WhereBuild and display in GUI editor
  void LoadCacheFromDiskToGUI();
  //! Save GUI values to cmCacheManager and then save to disk.
  void SaveCacheFromGUI();
  void SaveToRegistry();
  void LoadFromRegistry();
  bool Browse(CString&, const char* title);
  void ReadRegistryValue(HKEY hKey,
                         CString *val,
                         const char *key,
                         const char *aadefault);
  void ShowAdvancedValues();
  void RemoveAdvancedValues();
  // Dialog Data
  //{{AFX_DATA(CMakeSetupDialog)
  enum { IDD = IDD_CMakeSetupDialog_DIALOG };
  CButton       m_AdvancedValuesControl;
  CButton       m_BrowseSource;
  CButton       m_BrowseBuild;
  CButton m_HelpButton;
  CButton m_DeleteButton;
  CButton m_OKButton;
  CButton m_CancelButton;
  CString       m_WhereSource;
  CString       m_WhereBuild;
  CButton       m_ListFrame;
  bool          m_BuildPathChanged;
  CComboBox     m_WhereSourceControl;
  CComboBox     m_WhereBuildControl;
  CPropertyList m_CacheEntriesList;
  CStatic       m_MouseHelp;
  CStatic       m_StatusDisplay;
  CButton       m_Configure;
  BOOL    m_AdvancedValues;
  //}}AFX_DATA
  
  // ClassWizard generated virtual function overrides
  //{{AFX_VIRTUAL(CMakeSetupDialog)
protected:
  virtual void DoDataExchange(CDataExchange* pDX);      // DDX/DDV support
  //}}AFX_VIRTUAL
  
// 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
  void FillCacheManagerFromCacheGUI();
  // Create a shortcut on the desktop with the current Source/Build dir.
  int CreateShortcut();
  
  // Set initial directories from a file path.
  void ChangeDirectoriesFromFile(const char* arg);
  
  HICON m_hIcon;
  CString m_RegistryKey;
  CString m_PathToExecutable;
  // Generated message map functions
  //{{AFX_MSG(CMakeSetupDialog)
  virtual BOOL OnInitDialog();
  afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
  afx_msg void OnCancel();
  afx_msg void OnPaint();
  afx_msg HCURSOR OnQueryDragIcon();
  afx_msg void OnBrowseWhereSource();
  virtual void OnConfigure();
  afx_msg void OnBrowseWhereBuild();
  afx_msg void OnChangeWhereBuild();
  afx_msg void OnSelendokWhereBuild();
  afx_msg void OnChangeWhereSource();
  afx_msg void OnSelendokWhereSource();
  afx_msg void OnSize(UINT nType, int cx, int cy);
  afx_msg void OnGetMinMaxInfo( MINMAXINFO FAR* lpMMI );
  afx_msg void OnOk();
  afx_msg void OnHelpButton();
  afx_msg void OnDeleteButton();
  afx_msg void OnAdvancedValues();
  afx_msg void OnDoubleclickedAdvancedValues();
  afx_msg void OnDropFiles(HDROP);
  afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
  //}}AFX_MSG
  DECLARE_MESSAGE_MAP()
    
  int m_oldCX;
  int m_oldCY;
  float m_deltaXRemainder;
  cmake *m_CMakeInstance;
  HCURSOR m_Cursor;
  bool m_RunningConfigure;
  bool m_GeneratorPicked;

  CCMakeGenDialog m_GeneratorDialog;

};

//{{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_)