TabMarginsPage.cpp
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:8k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // TabMarginsPage.cpp : implementation file
  2. //
  3. // This file is a part of the XTREME TOOLKIT PRO MFC class library.
  4. // (c)1998-2008 Codejock Software, All Rights Reserved.
  5. //
  6. // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
  7. // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
  8. // CONSENT OF CODEJOCK SOFTWARE.
  9. //
  10. // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
  11. // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
  12. // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
  13. // SINGLE COMPUTER.
  14. //
  15. // CONTACT INFORMATION:
  16. // support@codejock.com
  17. // http://www.codejock.com
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. #include "stdafx.h"
  21. #include "tabmanager.h"
  22. #include "TabMarginsPage.h"
  23. #include "MainFrm.h"
  24. #ifdef _DEBUG
  25. #define new DEBUG_NEW
  26. #undef THIS_FILE
  27. static char THIS_FILE[] = __FILE__;
  28. #endif
  29. /////////////////////////////////////////////////////////////////////////////
  30. // CTabMarginsPage dialog
  31. CTabMarginsPage::CTabMarginsPage()
  32. : CXTPPropertyPage(CTabMarginsPage::IDD)
  33. {
  34. m_bApply[0] = TRUE;
  35. m_bApply[1] = FALSE;
  36. m_bApply[2] = FALSE;
  37. m_bApply[3] = FALSE;
  38. //{{AFX_DATA_INIT(CTabMarginsPage)
  39. //}}AFX_DATA_INIT
  40. }
  41. void AFXAPI DDX_TextEx(CDataExchange* pDX, int nIDC, long& value)
  42. {
  43. if (pDX->m_bSaveAndValidate)
  44. {
  45. CString str;
  46. pDX->m_pDlgWnd->GetDlgItem(nIDC)->GetWindowText(str);
  47. if (str.IsEmpty())
  48. {
  49. value = 0;
  50. return;
  51. }
  52. }
  53. DDX_Text(pDX, nIDC, value);
  54. }
  55. void CTabMarginsPage::DoDataExchange(CDataExchange* pDX)
  56. {
  57. CXTPPropertyPage::DoDataExchange(pDX);
  58. //{{AFX_DATA_MAP(CTabMarginsPage)
  59. //}}AFX_DATA_MAP
  60. DDX_TextEx(pDX, IDC_EDIT_CONTROL_LEFT, m_rcControlMargin.left);
  61. DDX_TextEx(pDX, IDC_EDIT_CONTROL_RIGHT, m_rcControlMargin.right);
  62. DDX_TextEx(pDX, IDC_EDIT_CONTROL_TOP, m_rcControlMargin.top);
  63. DDX_TextEx(pDX, IDC_EDIT_CONTROL_BOTTOM, m_rcControlMargin.bottom);
  64. DDX_TextEx(pDX, IDC_EDIT_CLIENT_LEFT, m_rcClientMargin.left);
  65. DDX_TextEx(pDX, IDC_EDIT_CLIENT_RIGHT, m_rcClientMargin.right);
  66. DDX_TextEx(pDX, IDC_EDIT_CLIENT_TOP, m_rcClientMargin.top);
  67. DDX_TextEx(pDX, IDC_EDIT_CLIENT_BOTTOM, m_rcClientMargin.bottom);
  68. DDX_TextEx(pDX, IDC_EDIT_HEADER_LEFT, m_rcHeaderMargin.left);
  69. DDX_TextEx(pDX, IDC_EDIT_HEADER_RIGHT, m_rcHeaderMargin.right);
  70. DDX_TextEx(pDX, IDC_EDIT_HEADER_TOP, m_rcHeaderMargin.top);
  71. DDX_TextEx(pDX, IDC_EDIT_HEADER_BOTTOM, m_rcHeaderMargin.bottom);
  72. DDX_TextEx(pDX, IDC_EDIT_BUTTON_LEFT, m_rcButtonMargin.left);
  73. DDX_TextEx(pDX, IDC_EDIT_BUTTON_RIGHT, m_rcButtonMargin.right);
  74. DDX_TextEx(pDX, IDC_EDIT_BUTTON_TOP, m_rcButtonMargin.top);
  75. DDX_TextEx(pDX, IDC_EDIT_BUTTON_BOTTOM, m_rcButtonMargin.bottom);
  76. DDX_Check(pDX, IDC_CHECK_TABWORKSPACE, m_bApply[0]);
  77. DDX_Check(pDX, IDC_CHECK_TABCONTROL, m_bApply[1]);
  78. DDX_Check(pDX, IDC_CHECK_DOCKINGPANE, m_bApply[2]);
  79. DDX_Check(pDX, IDC_CHECK_PANEL, m_bApply[3]);
  80. }
  81. CXTPTabPaintManager* CTabMarginsPage::GetPaintManager(int nIndex)
  82. {
  83. UpdateData();
  84. if (m_bApply[nIndex])
  85. {
  86. switch (nIndex)
  87. {
  88. case 0: return ((CMainFrame*)GetParentFrame())->m_MTIClientWnd.GetPaintManager();
  89. case 1: return GetParentTabControl()->GetPaintManager();
  90. case 2: return ((CMainFrame*)GetParentFrame())->m_paneManager.GetPaintManager()->GetTabPaintManager();
  91. case 3: return ((CMainFrame*)GetParentFrame())->m_paneManager.GetPaintManager()->GetPanelPaintManager();
  92. }
  93. }
  94. return NULL;
  95. }
  96. CXTPTabPaintManager* CTabMarginsPage::GetPaintManager()
  97. {
  98. for (int i = 0; i < 4; i++)
  99. {
  100. if (GetPaintManager(i) != 0)
  101. {
  102. return GetPaintManager(i);
  103. }
  104. }
  105. return NULL;
  106. }
  107. void CTabMarginsPage::Update()
  108. {
  109. CXTPTabPaintManager* pManager = GetPaintManager();
  110. if (pManager)
  111. {
  112. m_rcControlMargin = pManager->m_rcControlMargin;
  113. m_rcHeaderMargin = pManager->GetAppearanceSet()->m_rcHeaderMargin;
  114. m_rcClientMargin = pManager->m_rcClientMargin;
  115. m_rcButtonMargin = pManager->m_rcButtonMargin;
  116. } else
  117. {
  118. m_rcControlMargin.SetRect(0, 0, 0, 0);
  119. m_rcHeaderMargin.SetRect(0, 0, 0, 0);
  120. m_rcClientMargin.SetRect(0, 0, 0, 0);
  121. m_rcButtonMargin.SetRect(0, 0, 0, 0);
  122. }
  123. for (int i = IDC_EDIT_CONTROL_LEFT; i <= IDC_EDIT_BUTTON_BOTTOM; i++)
  124. GetDlgItem(i)->EnableWindow(pManager != NULL);
  125. UpdateData(FALSE);
  126. }
  127. void CTabMarginsPage::OnCancel()
  128. {
  129. }
  130. void CTabMarginsPage::OnOK()
  131. {
  132. }
  133. BEGIN_MESSAGE_MAP(CTabMarginsPage, CXTPPropertyPage)
  134. //{{AFX_MSG_MAP(CTabMarginsPage)
  135. ON_BN_CLICKED(IDC_CHECK_TABWORKSPACE, OnCheckApply)
  136. ON_BN_CLICKED(IDC_CHECK_TABCONTROL, OnCheckApply)
  137. ON_BN_CLICKED(IDC_CHECK_DOCKINGPANE, OnCheckApply)
  138. ON_BN_CLICKED(IDC_CHECK_PANEL, OnCheckApply)
  139. ON_EN_CHANGE(IDC_EDIT_CONTROL_LEFT, OnChangeEditControl)
  140. ON_EN_CHANGE(IDC_EDIT_CONTROL_TOP, OnChangeEditControl)
  141. ON_EN_CHANGE(IDC_EDIT_CONTROL_RIGHT, OnChangeEditControl)
  142. ON_EN_CHANGE(IDC_EDIT_CONTROL_BOTTOM, OnChangeEditControl)
  143. ON_EN_CHANGE(IDC_EDIT_CLIENT_LEFT, OnChangeEditClient)
  144. ON_EN_CHANGE(IDC_EDIT_CLIENT_TOP, OnChangeEditClient)
  145. ON_EN_CHANGE(IDC_EDIT_CLIENT_RIGHT, OnChangeEditClient)
  146. ON_EN_CHANGE(IDC_EDIT_CLIENT_BOTTOM, OnChangeEditClient)
  147. ON_EN_CHANGE(IDC_EDIT_HEADER_LEFT, OnChangeEditHeader)
  148. ON_EN_CHANGE(IDC_EDIT_HEADER_TOP, OnChangeEditHeader)
  149. ON_EN_CHANGE(IDC_EDIT_HEADER_RIGHT, OnChangeEditHeader)
  150. ON_EN_CHANGE(IDC_EDIT_HEADER_BOTTOM, OnChangeEditHeader)
  151. ON_EN_CHANGE(IDC_EDIT_BUTTON_LEFT, OnChangeEditButton)
  152. ON_EN_CHANGE(IDC_EDIT_BUTTON_TOP, OnChangeEditButton)
  153. ON_EN_CHANGE(IDC_EDIT_BUTTON_RIGHT, OnChangeEditButton)
  154. ON_EN_CHANGE(IDC_EDIT_BUTTON_BOTTOM, OnChangeEditButton)
  155. //}}AFX_MSG_MAP
  156. END_MESSAGE_MAP()
  157. /////////////////////////////////////////////////////////////////////////////
  158. // CTabMarginsPage message handlers
  159. BOOL CTabMarginsPage::OnInitDialog()
  160. {
  161. CXTPPropertyPage::OnInitDialog();
  162. Update();
  163. return TRUE;  // return TRUE unless you set the focus to a control
  164.               // EXCEPTION: OCX Property Pages should return FALSE
  165. }
  166. void CTabMarginsPage::OnCheckApply()
  167. {
  168. Update();
  169. }
  170. void CTabMarginsPage::OnChangeEditControl()
  171. {
  172. UpdateData();
  173. for (int i = 0; i < 4; i++)
  174. {
  175. if (GetPaintManager(i) != 0)
  176. {
  177. GetPaintManager(i)->m_rcControlMargin = m_rcControlMargin;
  178. }
  179. }
  180. ((CMainFrame*)GetParentFrame())->m_paneManager.RedrawPanes();
  181. GetParentTabControl()->Reposition();
  182. }
  183. void CTabMarginsPage::OnChangeEditClient()
  184. {
  185. UpdateData();
  186. for (int i = 0; i < 4; i++)
  187. {
  188. if (GetPaintManager(i) != 0)
  189. {
  190. GetPaintManager(i)->m_rcClientMargin = m_rcClientMargin;
  191. }
  192. }
  193. ((CMainFrame*)GetParentFrame())->m_paneManager.RedrawPanes();
  194. GetParentTabControl()->Reposition();
  195. }
  196. void CTabMarginsPage::OnChangeEditHeader()
  197. {
  198. UpdateData();
  199. for (int i = 0; i < 4; i++)
  200. {
  201. if (GetPaintManager(i) != 0)
  202. {
  203. GetPaintManager(i)->GetAppearanceSet()->m_rcHeaderMargin = m_rcHeaderMargin;
  204. }
  205. }
  206. ((CMainFrame*)GetParentFrame())->m_paneManager.RedrawPanes();
  207. GetParentTabControl()->Reposition();
  208. }
  209. CXTPTabControl* CTabMarginsPage::GetParentTabControl()
  210. {
  211. CXTPPropertyPageNavigator* pNavigator = ((CXTPPropertySheet*)GetParent())->GetNavigator();
  212. return (CXTPPropertyPageTabNavigator*)pNavigator;
  213. }
  214. void CTabMarginsPage::OnChangeEditButton()
  215. {
  216. UpdateData();
  217. for (int i = 0; i < 4; i++)
  218. {
  219. if (GetPaintManager(i) != 0)
  220. {
  221. GetPaintManager(i)->m_rcButtonMargin = m_rcButtonMargin;
  222. }
  223. }
  224. ((CMainFrame*)GetParentFrame())->m_paneManager.RedrawPanes();
  225. GetParentTabControl()->Reposition();
  226. }