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

对话框与窗口

开发平台:

Visual C++

  1. // XTPSyntaxEditPropertiesPage.h : header 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 SYNTAX EDIT 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. //{{AFX_CODEJOCK_PRIVATE
  21. #if !defined(__XTPSYNTAXEDITPROPERTIESPAGE_H__)
  22. #define __XTPSYNTAXEDITPROPERTIESPAGE_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. class CXTPSyntaxEditPropertiesDlg;
  28. class CXTPSyntaxEditView;
  29. class CXTPSyntaxEditTextSchemesManager;
  30. struct XTP_EDIT_SCHEMAFILEINFO;
  31. namespace XTPSyntaxEditLexAnalyser
  32. {
  33. class CXTPSyntaxEditLexPropInfoArray;
  34. struct XTP_EDIT_LEXCLASSINFO;
  35. struct XTP_EDIT_LEXPROPINFO;
  36. }
  37. //===========================================================================
  38. // Summary:
  39. //      CXTPSyntaxEditTipWnd implements a tooltip window for
  40. //      CXTPSyntaxEditTipListBox class.
  41. //===========================================================================
  42. class _XTP_EXT_CLASS CXTPSyntaxEditTipWnd : public CWnd
  43. {
  44. public:
  45. //-----------------------------------------------------------------------
  46. // Summary: Default object constructor.
  47. //-----------------------------------------------------------------------
  48. CXTPSyntaxEditTipWnd();
  49. //-----------------------------------------------------------------------
  50. // Summary: Default object destructor.
  51. //-----------------------------------------------------------------------
  52. virtual ~CXTPSyntaxEditTipWnd();
  53. //-----------------------------------------------------------------------
  54. // Summary:
  55. //      Create a tooltip window.
  56. // Parameters:
  57. //      pListBox - A pointer to CListBox to attach.
  58. // Returns:
  59. //      TRUE if successful, FALSE otherwise.
  60. // See Also: ShowTip
  61. //-----------------------------------------------------------------------
  62. virtual BOOL Create(CListBox* pListBox);
  63. //-----------------------------------------------------------------------
  64. // Summary:
  65. //      Use this member function to determine is attached list box has
  66. //      owner draw flags (LBS_OWNERDRAWFIXED or LBS_OWNERDRAWVARIABLE).
  67. // Returns:
  68. //      TRUE if attached list box is owner drawn, FALSE otherwise.
  69. // See Also: CListBox, LBS_OWNERDRAWFIXED, LBS_OWNERDRAWVARIABLE
  70. //-----------------------------------------------------------------------
  71. virtual BOOL IsOwnerDrawn();
  72. //-----------------------------------------------------------------------
  73. // Summary:
  74. //      Use this member function to show tooltip for specified list box item.
  75. // Parameters:
  76. //      iIndex - A list box item index.
  77. // Returns:
  78. //      TRUE if successful, FALSE otherwise.
  79. // See Also: HideTip
  80. //-----------------------------------------------------------------------
  81. virtual BOOL ShowTip(int iIndex);
  82. //-----------------------------------------------------------------------
  83. // Summary:
  84. //      Use this member function to hide tooltip.
  85. // Returns:
  86. //      TRUE if tooltip was visible and method hide it, FALSE if tooltip
  87. //      was not visible.
  88. // See Also: ShowTip
  89. //-----------------------------------------------------------------------
  90. virtual BOOL HideTip();
  91. //-----------------------------------------------------------------------
  92. // Summary: Get text color.
  93. // Returns: A tooltip text color.
  94. // See Also: GetBackColor
  95. //-----------------------------------------------------------------------
  96. virtual COLORREF GetTextColor() const;
  97. //-----------------------------------------------------------------------
  98. // Summary: Get background color.
  99. // Returns: A tooltip background color.
  100. // See Also: GetTextColor
  101. //-----------------------------------------------------------------------
  102. virtual COLORREF GetBackColor() const;
  103. protected:
  104. //-----------------------------------------------------------------------
  105. // Summary:
  106. //     Register the window class if it has not already been registered.
  107. // Parameters:
  108. //     hInstance - Instance of resource where control is located
  109. // Returns:
  110. //     TRUE if the window class was successfully registered.  FALSE otherwise.
  111. //-----------------------------------------------------------------------
  112. virtual BOOL RegisterWindowClass(HINSTANCE hInstance = NULL);
  113. //-----------------------------------------------------------------------
  114. // Summary:
  115. //      This method used to draw tooltip for owner drawn list box.
  116. // Parameters:
  117. //      pDC     - A pointer to device context.
  118. //      rClient - Tooltip rect (in client coordinates of this window).
  119. // Returns:
  120. //      TRUE if successful, FALSE otherwise.
  121. // See Also: DrawTip
  122. //-----------------------------------------------------------------------
  123. virtual BOOL OwnerDrawTip(CDC* pDC, CRect rClient);
  124. //-----------------------------------------------------------------------
  125. // Summary:
  126. //      This method used to draw tooltip.
  127. // Parameters:
  128. //      pDC     - A pointer to device context.
  129. //      rClient - Tooltip rect (in client coordinates of this window).
  130. // Returns:
  131. //      TRUE if successful, FALSE otherwise.
  132. // See Also: OwnerDrawTip
  133. //-----------------------------------------------------------------------
  134. virtual BOOL DrawTip(CDC* pDC, CRect rClient);
  135. //-----------------------------------------------------------------------
  136. // Summary:
  137. //      Used to get rectangle for a specified item.
  138. // Parameters:
  139. //      iItem - [in] A list box item index.
  140. //      rItem - [out] Item rectangle.
  141. // Returns:
  142. //      TRUE if successful, FALSE otherwise.
  143. //-----------------------------------------------------------------------
  144. virtual BOOL CalcItemRect(int iItem, CRect& rItem);
  145. //{{AFX_VIRTUAL(CXTPSyntaxEditTipWnd)
  146. //}}AFX_VIRTUAL
  147. //{{AFX_CODEJOCK_PRIVATE
  148. #ifdef _DEBUG
  149. virtual void AssertValid() const;
  150. virtual void Dump(CDumpContext& dc) const;
  151. #endif
  152. //}}AFX_CODEJOCK_PRIVATE
  153. //{{AFX_CODEJOCK_PRIVATE
  154. afx_msg void OnPaint();
  155. afx_msg void OnTimer(UINT_PTR nIDEvent);
  156. afx_msg LRESULT OnNcHitTest(CPoint point);
  157. afx_msg void OnNcPaint();
  158. DECLARE_MESSAGE_MAP()
  159. //}}AFX_CODEJOCK_PRIVATE
  160. protected:
  161. int         m_iIndex;       // Current item index.
  162. CRect       m_rWindow;      // Store window rect.
  163. CPoint      m_ptCursor;     // Store cursor position.
  164. CListBox*   m_pListBox;     // Store pointer to attached list box.
  165. private:
  166. void SetTipTimer();
  167. void KillTipTimer();
  168. UINT        m_uIDEvent1;
  169. UINT        m_uIDEvent2;
  170. };
  171. //===========================================================================
  172. // Summary:
  173. //      This class implements a list box with tooltip.
  174. //===========================================================================
  175. class _XTP_EXT_CLASS CXTPSyntaxEditTipListBox : public CListBox
  176. {
  177. public:
  178. //-----------------------------------------------------------------------
  179. // Summary: Default object constructor.
  180. //-----------------------------------------------------------------------
  181. CXTPSyntaxEditTipListBox();
  182. //-----------------------------------------------------------------------
  183. // Summary:
  184. //      This method used to determine a list box item for a specified point.
  185. // Parameters:
  186. //      pPoint - A pointer to POINT object or NULL. If this parameter
  187. //               NULL - current mouse coordinates are used.
  188. // Returns:
  189. //      Item index under specified point or LB_ERR.
  190. // See Also: HitTest@CPoint@BOOL
  191. //-----------------------------------------------------------------------
  192. int HitTest(LPPOINT pPoint = NULL) const;
  193. //-----------------------------------------------------------------------
  194. // Summary:
  195. //      This method used to determine a list box item for a specified point.
  196. // Parameters:
  197. //      point     - A CPoint object.
  198. //      bIsClient - Set as TRUE if point contains client coordinates or
  199. //                  set as FALSE if screen.
  200. // Returns:
  201. //      Item index under specified point or LB_ERR.
  202. // See Also: HitTest@LPPOINT
  203. //-----------------------------------------------------------------------
  204. int HitTest(CPoint point, BOOL bIsClient = FALSE) const;
  205. //-----------------------------------------------------------------------
  206. // Summary:
  207. //      Use this member function to show tooltip for specified point
  208. //      if necessary.
  209. // Parameters:
  210. //      point     - A CPoint object.
  211. //      bIsClient - Set as TRUE if point contains client coordinates or
  212. //                  set as FALSE if screen.
  213. // Returns:
  214. //      Item index if tooltip showed, otherwise LB_ERR.
  215. //-----------------------------------------------------------------------
  216. int ShowTip(CPoint point, BOOL bIsClient = FALSE);
  217. //-----------------------------------------------------------------------
  218. // Summary:
  219. //      Use this member function to determine is selection changed
  220. //      by the user.
  221. // Returns:
  222. //      TRUE selection changed, FALSE otherwise.
  223. //-----------------------------------------------------------------------
  224. BOOL SelChanged() const;
  225. protected:
  226. //{{AFX_CODEJOCK_PRIVATE
  227. virtual BOOL PreTranslateMessage(MSG* pMsg);
  228. //}}AFX_CODEJOCK_PRIVATE
  229. protected:
  230. DWORD                   m_dwIdx;        // Selection indexes: LOWORD - previous selection index, HIWORD - active selection index.
  231. CXTPSyntaxEditTipWnd    m_wndInfoTip;   // A tooltip window.
  232. };
  233. //===========================================================================
  234. // Summary:
  235. //      This class implements a combo box with tooltip.
  236. //===========================================================================
  237. class _XTP_EXT_CLASS CXTPSyntaxEditTipComboBox : public CComboBox
  238. {
  239. public:
  240. //-----------------------------------------------------------------------
  241. // Summary:
  242. //      Use this member function to get an attached list box.
  243. // Returns:
  244. //      A CXTPSyntaxEditTipListBox object reference.
  245. // See Also: CXTPSyntaxEditTipListBox
  246. //-----------------------------------------------------------------------
  247. CXTPSyntaxEditTipListBox& GetListBox();
  248. protected:
  249. //{{AFX_CODEJOCK_PRIVATE
  250. afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
  251. afx_msg void OnDestroy();
  252. DECLARE_MESSAGE_MAP()
  253. //}}AFX_CODEJOCK_PRIVATE
  254. private:
  255. CXTPSyntaxEditTipListBox m_wndListBox;
  256. };
  257. AFX_INLINE CXTPSyntaxEditTipListBox& CXTPSyntaxEditTipComboBox::GetListBox() {
  258. return m_wndListBox;
  259. }
  260. //===========================================================================
  261. // Summary:
  262. //     This class implements a property page for common edit options.
  263. //===========================================================================
  264. class _XTP_EXT_CLASS CXTPSyntaxEditPropertiesPageEdit : public CPropertyPage
  265. {
  266. DECLARE_DYNCREATE(CXTPSyntaxEditPropertiesPageEdit)
  267. public:
  268. // -------------------------------------------------------------------
  269. // Summary:
  270. //     Default object constructor.
  271. // Parameters:
  272. //     pEditView  - Pointer to CXTPSyntaxEditView object.
  273. // -------------------------------------------------------------------
  274. CXTPSyntaxEditPropertiesPageEdit(CXTPSyntaxEditView* pEditView=NULL);
  275. // -------------------------------------------------------------------
  276. // Summary:
  277. //     Default object destructor.
  278. // -------------------------------------------------------------------
  279. virtual ~CXTPSyntaxEditPropertiesPageEdit();
  280. //{{AFX_CODEJOCK_PRIVATE
  281. enum { IDD = XTP_IDD_EDIT_PAGEEDITOR };
  282. BOOL    m_bAutoReload;
  283. BOOL    m_bHorzScrollBar;
  284. BOOL    m_bVertScrollBar;
  285. BOOL    m_bSyntaxColor;
  286. BOOL    m_bAutoIndent;
  287. BOOL    m_bSelMargin;
  288. BOOL    m_bLineNumbers;
  289. BOOL    m_bVirtualSpace;
  290. BOOL    m_bCollapsibleNodes;
  291. int     m_nCaretStyle;
  292. int     m_nTabType;
  293. int     m_nTabSize;
  294. CButton m_btnRadioSpaces;
  295. CButton m_btnRadioTab;
  296. CButton m_btnRadioCaretThin;
  297. CButton m_btnRadioCaretThick;
  298. protected:
  299. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  300. public:
  301. virtual BOOL OnApply();
  302. //}}AFX_CODEJOCK_PRIVATE
  303. protected:
  304. // -------------------------------------------------------------------
  305. // Summary:
  306. //     Use this method to load controls state (options) from the registry.
  307. // Returns:
  308. //      TRUE if successful, FALSE otherwise.
  309. // See Also: WriteRegistryValues
  310. // -------------------------------------------------------------------
  311. BOOL ReadRegistryValues();
  312. // -------------------------------------------------------------------
  313. // Summary:
  314. //     Use this method to save controls state (options) it the registry.
  315. // Returns:
  316. //      TRUE if successful, FALSE otherwise.
  317. // See Also: ReadRegistryValues
  318. // -------------------------------------------------------------------
  319. BOOL WriteRegistryValues();
  320. // -------------------------------------------------------------------
  321. // Summary:
  322. //      Use this method to set or reset modified flag.
  323. // Parameters:
  324. //      bChanged - TRUE if options where modified, FALSE otherwise.
  325. // See Also: CPropertyPage::SetModified
  326. // -------------------------------------------------------------------
  327. void SetModified(BOOL bChanged = TRUE);
  328. //{{AFX_CODEJOCK_PRIVATE
  329. virtual BOOL OnInitDialog();
  330. afx_msg void OnChkAutoReload();
  331. afx_msg void OnChkHorzScrollBar();
  332. afx_msg void OnChkVertScrollBar();
  333. afx_msg void OnChkSyntaxColor();
  334. afx_msg void OnChkAutoIndent();
  335. afx_msg void OnChkSelMargin();
  336. afx_msg void OnChkLineNumbers();
  337. afx_msg void OnChkVirtualSpace();
  338. afx_msg void OnChangeTabsSize();
  339. afx_msg void OnTabsSpaces();
  340. afx_msg void OnTabsTab();
  341. afx_msg void OnCaretThin();
  342. afx_msg void OnCaretThick();
  343. DECLARE_MESSAGE_MAP()
  344. //}}AFX_CODEJOCK_PRIVATE
  345. protected:
  346. BOOL                m_bModified;    // Store modified flag.
  347. CXTPSyntaxEditView* m_pEditView;    // Store pointer to CXTPSyntaxEditView object.
  348. };
  349. //===========================================================================
  350. // Summary:
  351. //     This class implements a property page font options.
  352. //===========================================================================
  353. class _XTP_EXT_CLASS CXTPSyntaxEditPropertiesPageFont : public CPropertyPage
  354. {
  355. DECLARE_DYNCREATE(CXTPSyntaxEditPropertiesPageFont)
  356. public:
  357. // Summary:
  358. //     Default object constructor.
  359. // Parameters:
  360. //     pEditView  - Pointer to CXTPSyntaxEditView object.
  361. CXTPSyntaxEditPropertiesPageFont(CXTPSyntaxEditView* pEditView=NULL);
  362. // -------------------------------------------------------------------
  363. // Summary:
  364. //     Default object destructor.
  365. // -------------------------------------------------------------------
  366. virtual ~CXTPSyntaxEditPropertiesPageFont();
  367. // -------------------------------------------------------------------
  368. // Summary:
  369. //      Use this member function to get editor font.
  370. // Returns:
  371. //      A reference to CFont object.
  372. // See Also: GetSafeLogFont
  373. // -------------------------------------------------------------------
  374. CFont& GetEditFont();
  375. // -------------------------------------------------------------------
  376. // Summary:
  377. //      Use this member function to get editor font.
  378. // Parameters:
  379. //      lf - A reference to LOGFONT structure.
  380. // Returns:
  381. //      TRUE if successful, FALSE otherwise.
  382. // See Also: GetEditFont
  383. // -------------------------------------------------------------------
  384. BOOL GetSafeLogFont(LOGFONT& lf);
  385. // -------------------------------------------------------------------
  386. // Summary:
  387. //      Use this method to change font in specified CFont object.
  388. //      The previous font deleted.
  389. // Parameters:
  390. //      editFont - A reference to CFont object to set new font.
  391. //      lf       - A new font parameters.
  392. // Returns:
  393. //      TRUE if successful, FALSE otherwise.
  394. // See Also: CFont::CreateFontIndirect
  395. // -------------------------------------------------------------------
  396. BOOL CreateSafeFontIndirect(CFont& editFont, const LOGFONT& lf);
  397. //{{AFX_CODEJOCK_PRIVATE
  398. enum { IDD = XTP_IDD_EDIT_PAGEFONT };
  399. CXTPSyntaxEditColorComboBox m_wndComboHiliteText;
  400. CXTPSyntaxEditColorComboBox m_wndComboHiliteBack;
  401. CXTPSyntaxEditColorComboBox m_wndComboText;
  402. CXTPSyntaxEditColorComboBox m_wndComboBack;
  403. CXTPSyntaxEditColorSampleText   m_txtSampleSel;
  404. CXTPSyntaxEditColorSampleText   m_txtSample;
  405. CButton     m_btnCustomText;
  406. CButton     m_btnCustomBack;
  407. CButton     m_btnCustomHiliteText;
  408. CButton     m_btnCustomHiliteBack;
  409. CXTPSyntaxEditTipComboBox   m_wndComboScript;
  410. CXTPSyntaxEditTipComboBox   m_wndComboStyle;
  411. CXTPSyntaxEditTipComboBox   m_wndComboSize;
  412. CXTPSyntaxEditTipComboBox   m_wndComboName;
  413. BOOL    m_bStrikeOut;
  414. BOOL    m_bUnderline;
  415. CString m_csName;
  416. CString m_csSize;
  417. CString m_csStyle;
  418. COLORREF m_crHiliteText;
  419. COLORREF m_crHiliteBack;
  420. COLORREF m_crText;
  421. COLORREF m_crBack;
  422. //}}AFX_CODEJOCK_PRIVATE
  423. //{{AFX_CODEJOCK_PRIVATE
  424. protected:
  425. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  426. public:
  427. virtual BOOL OnApply();
  428. //}}AFX_CODEJOCK_PRIVATE
  429. protected:
  430. // -------------------------------------------------------------------
  431. // Summary:
  432. //     Initialize font name combo box.
  433. // -------------------------------------------------------------------
  434. void InitFontCombo();
  435. // -------------------------------------------------------------------
  436. // Summary:
  437. //     Initialize font style combo box.
  438. // -------------------------------------------------------------------
  439. void InitStyleCombo();
  440. // -------------------------------------------------------------------
  441. // Summary:
  442. //     Initialize font size combo box.
  443. // -------------------------------------------------------------------
  444. void InitSizeCombo();
  445. // -------------------------------------------------------------------
  446. // Summary:
  447. //     Initialize font script combo box.
  448. // -------------------------------------------------------------------
  449. void InitScriptCombo();
  450. // -------------------------------------------------------------------
  451. // Summary:
  452. //     Initialize color combo box.
  453. // -------------------------------------------------------------------
  454. void InitColorComboxes();
  455. // -------------------------------------------------------------------
  456. // Summary:
  457. //     Use this member function to update font for a sample text control.
  458. // -------------------------------------------------------------------
  459. void UpdateSampleFont();
  460. // -------------------------------------------------------------------
  461. // Summary:
  462. //     Use this member function to update colors for a sample text control.
  463. // -------------------------------------------------------------------
  464. void UpdateSampleColors();
  465. // -------------------------------------------------------------------
  466. // Summary:
  467. //      Use this helper function to get currently selected list box item
  468. //      text and update combo box.
  469. // Parameters:
  470. //      comboBox    - [in] A references to combobox object.
  471. //      csItemText  - [out] A references to CString to store text.
  472. // Returns:
  473. //      Selected item index or CB_ERR.
  474. // See Also: CComboBox::GetLBText
  475. // -------------------------------------------------------------------
  476. int GetLBText(CComboBox& comboBox, CString& csItemText);
  477. // -------------------------------------------------------------------
  478. // Summary:
  479. //     Use this method to load controls state (options) from the registry.
  480. // Returns:
  481. //      TRUE if successful, FALSE otherwise.
  482. // See Also: WriteRegistryValues
  483. // -------------------------------------------------------------------
  484. BOOL ReadRegistryValues();
  485. // -------------------------------------------------------------------
  486. // Summary:
  487. //     Use this method to save controls state (options) it the registry.
  488. // Returns:
  489. //      TRUE if successful, FALSE otherwise.
  490. // See Also: ReadRegistryValues
  491. // -------------------------------------------------------------------
  492. BOOL WriteRegistryValues();
  493. // -------------------------------------------------------------------
  494. // Summary:
  495. //      Use this method to set or reset modified flag.
  496. // Parameters:
  497. //      bChanged - TRUE if options where modified, FALSE otherwise.
  498. // See Also: CPropertyPage::SetModified
  499. // -------------------------------------------------------------------
  500. void SetModified(BOOL bChanged = TRUE);
  501. // -------------------------------------------------------------------
  502. // Summary:
  503. //      Use this function to get edit control paint manager.
  504. // Returns:
  505. //      Pointer to CXTPSyntaxEditPaintManager object.
  506. // -------------------------------------------------------------------
  507. CXTPSyntaxEditPaintManager* GetPaintManager();
  508. //{{AFX_CODEJOCK_PRIVATE
  509. virtual BOOL OnInitDialog();
  510. afx_msg void OnSelChangeComboNames();
  511. afx_msg void OnSelChangeComboStyles();
  512. afx_msg void OnSelChangeComboSizes();
  513. afx_msg void OnChkStrikeOut();
  514. afx_msg void OnChkUnderline();
  515. afx_msg void OnSelEndOkScript();
  516. afx_msg void OnBtnCustomText();
  517. afx_msg void OnBtnCustomBack();
  518. afx_msg void OnBtnCustomHiliteText();
  519. afx_msg void OnBtnCustomtHiliteBack();
  520. afx_msg void OnSelEndOkHiliteText();
  521. afx_msg void OnSelEndOkHiliteBack();
  522. afx_msg void OnSelEndOkText();
  523. afx_msg void OnSelEndOkBack();
  524. DECLARE_MESSAGE_MAP()
  525. //}}AFX_CODEJOCK_PRIVATE
  526. protected:
  527. const UINT m_uFaceSize; // Store face name maximum string size.
  528. BYTE                m_iCharSet;     // Store char set.
  529. BOOL                m_bModified;    // Store modified flag.
  530. CXTPSyntaxEditView* m_pEditView;    // Store pointer to CXTPSyntaxEditView object.
  531. CFont               m_editFont;     // Store editor font.
  532. };
  533. //---------------------------------------------------------------------------
  534. AFX_INLINE CFont& CXTPSyntaxEditPropertiesPageFont::GetEditFont() {
  535. return m_editFont;
  536. }
  537. //===========================================================================
  538. // Summary:
  539. //     This class implements a property page colors options.
  540. //===========================================================================
  541. class _XTP_EXT_CLASS CXTPSyntaxEditPropertiesPageColor : public CPropertyPage
  542. {
  543. DECLARE_DYNCREATE(CXTPSyntaxEditPropertiesPageColor)
  544. public:
  545. // -------------------------------------------------------------------
  546. // Summary:
  547. //     Default object constructor.
  548. // Parameters:
  549. //     pEditView  - Pointer to CXTPSyntaxEditView object.
  550. // -------------------------------------------------------------------
  551. CXTPSyntaxEditPropertiesPageColor(CXTPSyntaxEditView* pEditView=NULL);
  552. // -------------------------------------------------------------------
  553. // Summary:
  554. //     Default object destructor.
  555. // -------------------------------------------------------------------
  556. virtual ~CXTPSyntaxEditPropertiesPageColor();
  557. // -------------------------------------------------------------------
  558. // Summary:
  559. //     Use this method to save controls state (options) it the registry.
  560. // Returns:
  561. //      TRUE if successful, FALSE otherwise.
  562. // -------------------------------------------------------------------
  563. BOOL WriteRegistryValues();
  564. // -------------------------------------------------------------------
  565. // Summary:
  566. //      Use this method to set or reset modified flag.
  567. // Parameters:
  568. //      bChanged - TRUE if options where modified, FALSE otherwise.
  569. // See Also: CPropertyPage::SetModified
  570. // -------------------------------------------------------------------
  571. void SetModified(BOOL bChanged = TRUE);
  572. //{{AFX_CODEJOCK_PRIVATE
  573. enum { IDD = XTP_IDD_EDIT_PAGECOLOR };
  574. CXTPSyntaxEditColorSampleText   m_txtSampleSel;
  575. CXTPSyntaxEditColorSampleText   m_txtSample;
  576. CXTPSyntaxEditColorComboBox m_wndComboHiliteText;
  577. CXTPSyntaxEditColorComboBox m_wndComboHiliteBack;
  578. CXTPSyntaxEditColorComboBox m_wndComboText;
  579. CXTPSyntaxEditColorComboBox m_wndComboBack;
  580. CButton     m_btnBold;
  581. CButton     m_btnItalic;
  582. CButton     m_btnUnderline;
  583. CButton     m_btnCustomText;
  584. CButton     m_btnCustomBack;
  585. CButton     m_btnCustomHiliteText;
  586. CButton     m_btnCustomHiliteBack;
  587. CXTPSyntaxEditTipListBox    m_lboxName;
  588. CXTPSyntaxEditTipListBox    m_lboxProp;
  589. CStatic     m_gboxSampleText;
  590. BOOL    m_bBold;
  591. BOOL    m_bItalic;
  592. BOOL    m_bUnderline;
  593. COLORREF m_crHiliteText;
  594. COLORREF m_crHiliteBack;
  595. COLORREF m_crText;
  596. COLORREF m_crBack;
  597. public:
  598. virtual BOOL OnSetActive();
  599. protected:
  600. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  601. public:
  602. virtual BOOL OnApply();
  603. //}}AFX_CODEJOCK_PRIVATE
  604. protected:
  605. // -------------------------------------------------------------------
  606. // Summary:
  607. //     Use this member function to update font for a sample text control.
  608. // -------------------------------------------------------------------
  609. void UpdateSampleColors();
  610. // -------------------------------------------------------------------
  611. // Summary:
  612. //     Use this member function to update font for a sample text control.
  613. // -------------------------------------------------------------------
  614. void UpdateFont();
  615. // -------------------------------------------------------------------
  616. // Summary:
  617. //      Initialize dialog controls for specified lex schema.
  618. // Parameters:
  619. //      pSchemaInfo - A pointer to XTP_EDIT_SCHEMAFILEINFO object.
  620. // Returns:
  621. //      TRUE if successful, FALSE otherwise.
  622. // -------------------------------------------------------------------
  623. BOOL InitSchemaClasses(XTP_EDIT_SCHEMAFILEINFO* pSchemaInfo);
  624. // -------------------------------------------------------------------
  625. // Summary:
  626. //      Initialize dialog controls for specified lex class.
  627. // Parameters:
  628. //      infoClass - A reference to XTP_EDIT_LEXCLASSINFO object.
  629. // -------------------------------------------------------------------
  630. void InitClassData(const XTP_EDIT_LEXCLASSINFO& infoClass);
  631. // -------------------------------------------------------------------
  632. // Summary:
  633. //     Determine is specified class a top level schema class.
  634. // Parameters:
  635. //      infoClass - A reference to XTP_EDIT_LEXCLASSINFO object.
  636. // Returns:
  637. //      TRUE if specified class is a top level schema class, FALSE otherwise.
  638. // -------------------------------------------------------------------
  639. BOOL IsTopLevelClass(const XTP_EDIT_LEXCLASSINFO& infoClass);
  640. // -------------------------------------------------------------------
  641. // Summary:
  642. //     Update controls state (enabled/disabled).
  643. // -------------------------------------------------------------------
  644. void EnableControls();
  645. // -------------------------------------------------------------------
  646. // Summary:
  647. //      Use this member function to get lex property as a comma separated
  648. //      string.
  649. // Parameters:
  650. //      infoProp - A reference to XTP_EDIT_LEXPROPINFO object.
  651. // Returns:
  652. //      A comma separated string.
  653. // See Also: XTP_EDIT_LEXPROPINFO
  654. // -------------------------------------------------------------------
  655. CString GetPropValue(const XTP_EDIT_LEXPROPINFO& infoProp) const;
  656. // -------------------------------------------------------------------
  657. // Summary:
  658. //     Set defaults controls state.
  659. // -------------------------------------------------------------------
  660. void SetDefaults();
  661. // -------------------------------------------------------------------
  662. // Summary:
  663. //      Use this member function to determine is specified properties
  664. //      data exists in the provided array.
  665. // Parameters:
  666. //      arrProp      - A properties data array.
  667. //      lpszPropName - A lex property name.
  668. // Returns:
  669. //      Property data index in the array or -1
  670. // -------------------------------------------------------------------
  671. int PropExists(CXTPSyntaxEditLexPropInfoArray& arrProp, LPCTSTR lpszPropName);
  672. // -------------------------------------------------------------------
  673. // Summary:
  674. //     Use this member function to update font parameters for currently
  675. //     selected lex class.
  676. // Parameters:
  677. //      lpszPropName - A lex class property name (font attribute).
  678. //      bValue       - A property value.
  679. // Returns:
  680. //      TRUE if successful, FALSE otherwise.
  681. // See Also: UpdateColorValue
  682. // -------------------------------------------------------------------
  683. BOOL UpdateFontValue(BOOL& bValue, LPCTSTR lpszPropName);
  684. // -------------------------------------------------------------------
  685. // Summary:
  686. //      Use this member function to update colors parameters for currently
  687. //      selected lex class.
  688. // Parameters:
  689. //      combo        - An edit color combo box.
  690. //      color        - A color value.
  691. //      lpszPropName - A lex class property name (color attribute).
  692. // Returns:
  693. //      TRUE if successful, FALSE otherwise.
  694. // See Also: UpdateFontValue
  695. // -------------------------------------------------------------------
  696. BOOL UpdateColorValue(CXTPSyntaxEditColorComboBox& combo, COLORREF& color, LPCTSTR lpszPropName);
  697. // -------------------------------------------------------------------
  698. // Summary:
  699. //      Use this member function to retrieve a display name property
  700. //      value for a lex class.
  701. // Parameters:
  702. //      info - A reference to XTP_EDIT_LEXCLASSINFO object.
  703. // Returns:
  704. //      Display name property value for a lex class.
  705. // -------------------------------------------------------------------
  706. CString GetDisplayName(const XTP_EDIT_LEXCLASSINFO& info) const;
  707. //{{AFX_CODEJOCK_PRIVATE
  708. virtual BOOL OnInitDialog();
  709. afx_msg void OnBtnCustomText();
  710. afx_msg void OnBtnCustomBack();
  711. afx_msg void OnBtnCustomHiliteText();
  712. afx_msg void OnBtnCustomtHiliteBack();
  713. afx_msg void OnChkBold();
  714. afx_msg void OnChkItalic();
  715. afx_msg void OnChkUnderline();
  716. afx_msg void OnSelEndOkHiliteText();
  717. afx_msg void OnSelEndOkHiliteBack();
  718. afx_msg void OnSelEndOkText();
  719. afx_msg void OnSelEndOkBack();
  720. afx_msg void OnSelChangeSchemaNames();
  721. afx_msg void OnSelChangeSchemaProp();
  722. afx_msg void OnDblClickSchema();
  723. afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);
  724. DECLARE_MESSAGE_MAP()
  725. //}}AFX_CODEJOCK_PRIVATE
  726. protected:
  727. BOOL                                    m_bModified;        // Store modified flag.
  728. CXTPSyntaxEditView*                     m_pEditView;        // Store pointer to CXTPSyntaxEditView object.
  729. CXTPSyntaxEditConfigurationManagerPtr   m_ptrConfigMgr;     // Store pointer to Configuration Manager.
  730. CXTPSyntaxEditTextSchemesManager*       m_pTextSchemesMgr;  // Store pointer to Schemes Manager.
  731. CFont                                   m_editFont;         // Store editor font.
  732. CMapStringToPtr                         m_mapLexClassInfo;  // Map lex schema name to schema classes array (CXTPSyntaxEditLexClassInfoArray*).
  733. CXTPSyntaxEditLexClassInfoArray*        m_parLexClassInfo;  // Store currently selected schema classes.
  734. };
  735. /////////////////////////////////////////////////////////////////////////////
  736. //{{AFX_INSERT_LOCATION}}
  737. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  738. #endif // !defined(__XTPSYNTAXEDITPROPERTIESPAGE_H__)