summaryrefslogtreecommitdiff
path: root/Source/MFCDialog/PropertyList.h
blob: d3992a1fa322494192036ab3082f9570ba647b4a (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
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
/*=========================================================================

  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.

=========================================================================*/
#ifndef CPROPERTYLIST_H
#define CPROPERTYLIST_H



#include "../cmStandardIncludes.h"
class CMakeSetupDialog;

/////////////////////////////////////////////////////////////////////////////
//CPropertyList Items
class CPropertyItem
{
// Attributes
public:
  CString m_HelpString;
  CString m_propName;
  CString m_curValue;
  int m_nItemType;
  CString m_cmbItems;
  bool m_NewValue;
  bool m_Removed;
  bool m_Advanced;
  
public:
  CPropertyItem(CString propName, CString curValue,
                CString helpString,
                int nItemType, CString cmbItems)
    {
      m_NewValue = true;
      m_HelpString = helpString;
      m_Removed = false;
      m_propName = propName;
      m_curValue = curValue;
      m_nItemType = nItemType;
      m_cmbItems = cmbItems;
      m_Advanced = false;
    }
};

/////////////////////////////////////////////////////////////////////////////
// CPropertyList window

class CPropertyList : public CListBox
{
// Construction
public:
  enum ItemType 
    {
      COMBO = 0,
      EDIT,
      COLOR,
      FONT,
      FILE,
      CHECKBOX,
      PATH
    };
  CPropertyList();
  
// Attributes
public:
  CMakeSetupDialog *m_CMakeSetupDialog;

// Operations
public:
  bool GetShowAdvanced() {return m_ShowAdvanced;}
  bool IsDirty() { return m_Dirty;  }
  void ClearDirty() { m_Dirty = false;  }
  
  int AddItem(CString txt);
  void AddProperty(const char* name,
                  const char* value,
                  const char* helpString,
                  int type,
                  const char* comboItems,
                  bool reverseOrder,
                  bool advanced);
  void RemoveProperty(const char* name);
  void HideControls();
  void ShowAdvanced();
  void HideAdvanced();
  std::set<CPropertyItem*> GetItems() 
    {
      return m_PropertyItems;
    }
  void RemoveAll();
  CPropertyItem* GetItem(int index);
// Overrides
  // ClassWizard generated virtual function overrides
  //{{AFX_VIRTUAL(CPropertyList)
public:
  virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
  virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
protected:
  virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
  virtual void PreSubclassWindow();
  //}}AFX_VIRTUAL

// Implementation
public:
  virtual ~CPropertyList();

  // Generated message map functions
protected:
  //{{AFX_MSG(CPropertyList)
  afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
  afx_msg void OnSelchange();
  afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
  afx_msg void OnKillFocus(CWnd* pNewWnd);
  afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  afx_msg void OnRButtonUp( UINT nFlags, CPoint point );
  //}}AFX_MSG
  afx_msg void OnKillfocusCmbBox();
  afx_msg void OnSelchangeCmbBox();
  afx_msg void OnKillfocusEditBox();
  afx_msg void OnChangeEditBox();
  afx_msg void OnButton();
  afx_msg void OnIgnore();
  afx_msg void OnDelete();
  afx_msg void OnHelp();
  afx_msg void OnCheckBox();
  afx_msg void OnVScroll( UINT nSBCode, UINT nPos, CScrollBar* pScrollBar );


  DECLARE_MESSAGE_MAP()

  void InvertLine(CDC* pDC,CPoint ptFrom,CPoint ptTo);
  void DisplayButton(CRect region);
// order = 0 sorted
// order = 1 add to top
// order = 2 add to bottom
  int AddPropItem(CPropertyItem* pItem, int order);
  void InvalidateList();
  
  CComboBox m_cmbBox;
  CEdit m_editBox;
  CButton m_btnCtrl;
  CButton m_CheckBoxControl;
  
  CFont m_SSerif8Font;
        
  bool m_Dirty;
  int m_curSel;
  int m_prevSel;
  int m_nDivider;
  int m_nDivTop;
  int m_nDivBtm;
  int m_nOldDivX;
  int m_nLastBox;
  BOOL m_bTracking;
  BOOL m_bDivIsSet;
  HCURSOR m_hCursorArrow;
  HCURSOR m_hCursorSize;
  bool m_ShowAdvanced;
  std::set<CPropertyItem*> m_PropertyItems;
};

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_PROPERTYLIST_H__74205380_1B56_11D4_BC48_00105AA2186F__INCLUDED_)