OSDN Git Service

Forgot to add ctextmarkerdlg.{h,cpp} Github#40
authorTakashi Sawanaka <sdottaka@users.sourceforge.net>
Sat, 30 Sep 2017 07:46:31 +0000 (16:46 +0900)
committerTakashi Sawanaka <sdottaka@users.sourceforge.net>
Sat, 30 Sep 2017 07:46:31 +0000 (16:46 +0900)
Externals/crystaledit/editlib/ctextmarkerdlg.cpp [new file with mode: 0644]
Externals/crystaledit/editlib/ctextmarkerdlg.h [new file with mode: 0644]

diff --git a/Externals/crystaledit/editlib/ctextmarkerdlg.cpp b/Externals/crystaledit/editlib/ctextmarkerdlg.cpp
new file mode 100644 (file)
index 0000000..af00f59
--- /dev/null
@@ -0,0 +1,243 @@
+/**\r
+ *  @file ctextmarkerdlg.cpp\r
+ *\r
+ *  @brief Implementation of Marker-dialog.\r
+ */\r
+\r
+#include "StdAfx.h"\r
+#include "resource.h"\r
+#include "ctextmarkerdlg.h"\r
+#include "ccrystaltextmarkers.h"\r
+#include "ccrystaltextview.h"\r
+#include <algorithm>\r
+\r
+#ifdef _DEBUG\r
+#define new DEBUG_NEW\r
+#endif\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// CTextMarkerDlg dialog\r
+\r
+\r
+CTextMarkerDlg::CTextMarkerDlg (CCrystalTextMarkers & markers, const CString& sText, DWORD dwFlags)\r
+: CDialog (CTextMarkerDlg::IDD, NULL)\r
+, m_markers(markers)\r
+, m_nCurItemIndex(0)\r
+, m_tempMarkers(markers)\r
+, m_nBgColorIndex(0)\r
+, m_bMatchCase((dwFlags & FIND_MATCH_CASE) != 0)\r
+, m_bWholeWord((dwFlags & FIND_WHOLE_WORD) != 0)\r
+, m_bRegExp((dwFlags & FIND_REGEXP) != 0)\r
+, m_bMarkersEnabled(markers.GetEnabled())\r
+{\r
+       if (!sText.IsEmpty())\r
+       {\r
+               m_tempMarkers.SetMarker(m_tempMarkers.MakeNewId(), sText, dwFlags, \r
+                       static_cast<COLORINDEX>(static_cast<int>(COLORINDEX_MARKERBKGND1) + (m_tempMarkers.GetMarkers().size() % 3)));\r
+       }\r
+}\r
+\r
+void CTextMarkerDlg::\r
+DoDataExchange (CDataExchange * pDX)\r
+{\r
+       CDialog::DoDataExchange (pDX);\r
+       //{{AFX_DATA_MAP(CTextMarkerDlg)\r
+       DDX_Control(pDX, IDC_EDIT_MARKER_LIST, m_listMarkers);\r
+       if (!pDX->m_bSaveAndValidate)\r
+               UpdateDataListView(false);\r
+       DDX_Control(pDX, IDC_EDIT_WHOLE_WORD, m_ctlWholeWord);\r
+       DDX_Control(pDX, IDC_EDIT_MARKER_BGCOLORIDX, m_ctlBgColorIdx);\r
+       DDX_Text(pDX, IDC_EDIT_FINDTEXT, m_sFindWhat);\r
+       DDX_CBIndex(pDX, IDC_EDIT_MARKER_BGCOLORIDX, m_nBgColorIndex);\r
+       DDX_Check(pDX, IDC_EDIT_MATCH_CASE, m_bMatchCase);\r
+       DDX_Check(pDX, IDC_EDIT_REGEXP, m_bRegExp);\r
+       DDX_Check(pDX, IDC_EDIT_WHOLE_WORD, m_bWholeWord);\r
+       DDX_Check(pDX, IDC_EDIT_MARKERS_ENABLED, m_bMarkersEnabled);\r
+       if (pDX->m_bSaveAndValidate)\r
+               UpdateDataListView(true);\r
+       else\r
+               m_ctlWholeWord.EnableWindow(!m_bRegExp);\r
+       //}}AFX_DATA_MAP\r
+}\r
+\r
+BEGIN_MESSAGE_MAP (CTextMarkerDlg, CDialog)\r
+//{{AFX_MSG_MAP(CTextMarkerDlg)\r
+ON_BN_CLICKED(IDC_EDIT_REGEXP, OnBnclickedEditRegExp)\r
+ON_BN_CLICKED(IDC_EDIT_MARKER_NEW, &CTextMarkerDlg::OnBnClickedEditMarkerNew)\r
+ON_BN_CLICKED(IDC_EDIT_MARKER_DELETE, &CTextMarkerDlg::OnBnClickedEditMarkerDelete)\r
+ON_BN_CLICKED(ID_APPLY_NOW, &CTextMarkerDlg::OnBnClickedApplyNow)\r
+ON_NOTIFY(LVN_ITEMCHANGED, IDC_EDIT_MARKER_LIST, &CTextMarkerDlg::OnItemchangedEditMarkerList)\r
+ON_CBN_EDITCHANGE(IDC_EDIT_FINDTEXT, &CTextMarkerDlg::OnEditchangeEditFindtext)\r
+ON_NOTIFY(LVN_ITEMCHANGING, IDC_EDIT_MARKER_LIST, &CTextMarkerDlg::OnItemchangingEditMarkerList)\r
+//}}AFX_MSG_MAP\r
+END_MESSAGE_MAP ()\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// CTextMarkerDlg message handlers\r
+\r
+BOOL CTextMarkerDlg::OnInitDialog ()\r
+{\r
+       LangTranslateDialog(m_hWnd);\r
+       CDialog::OnInitDialog ();\r
+\r
+       m_ctlBgColorIdx.InsertString(-1, _T("Marker Color 1"));\r
+       m_ctlBgColorIdx.InsertString(-1, _T("Marker Color 2"));\r
+       m_ctlBgColorIdx.InsertString(-1, _T("Marker Color 3"));\r
+\r
+       m_listMarkers.SetExtendedStyle(LVS_EX_CHECKBOXES | LVS_EX_ONECLICKACTIVATE | LVS_EX_FULLROWSELECT);\r
+       std::vector<CString> keys;\r
+       for (const auto& marker : m_tempMarkers.GetMarkers())\r
+               keys.push_back(marker.first);\r
+       std::sort(keys.begin(), keys.end());\r
+       int i = 0;\r
+       for (const auto& key: keys)\r
+       {\r
+               const auto& marker = m_tempMarkers.GetMarkers()[key];\r
+               if (marker.bUserDefined)\r
+               {\r
+                       m_listMarkers.InsertItem(LVIF_TEXT | LVIF_PARAM,\r
+                               m_listMarkers.GetItemCount(), \r
+                               marker.sFindWhat, 0, 0, 0,\r
+                               reinterpret_cast<LPARAM>((const TCHAR *)(m_tempMarkers.GetMarkers().find(key)->first)));\r
+                       m_listMarkers.SetCheck(i, marker.bVisible);\r
+                       ++i;\r
+               }\r
+       }\r
+       if (keys.size() > 0)\r
+               m_listMarkers.SetItemState(static_cast<int>(keys.size()) - 1, \r
+                       LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED | LVIS_SELECTED);\r
+\r
+       UpdateData(FALSE);\r
+       return true;\r
+}\r
+\r
+int CTextMarkerDlg::GetSelectedItemIndex() const\r
+{\r
+       for (int i = 0; i < m_listMarkers.GetItemCount(); ++i)\r
+       {\r
+               if ((m_listMarkers.GetItemState(i, LVIS_SELECTED) & LVIS_SELECTED) != 0)\r
+                       return i;\r
+       }\r
+       return -1;\r
+}\r
+\r
+void CTextMarkerDlg::UpdateDataListView(bool bSaveAndValidate)\r
+{\r
+       if (!bSaveAndValidate)\r
+       {\r
+               for (int i = 0; i < m_listMarkers.GetItemCount(); ++i)\r
+               {\r
+                       const TCHAR *pKey = reinterpret_cast<TCHAR *>(m_listMarkers.GetItemData(i));\r
+                       CCrystalTextMarkers::Marker& marker = m_tempMarkers.GetMarkers().at(pKey);\r
+                       if (m_listMarkers.GetItemState(i, LVIS_SELECTED))\r
+                       {\r
+                               m_sFindWhat = marker.sFindWhat;\r
+                               m_nBgColorIndex = static_cast<int>(marker.nBgColorIndex) - COLORINDEX_MARKERBKGND1;\r
+                               if (m_nBgColorIndex < 0)\r
+                                       m_nBgColorIndex = 0;\r
+                               m_bWholeWord = (marker.dwFlags & FIND_WHOLE_WORD) != 0;\r
+                               m_bMatchCase = (marker.dwFlags & FIND_MATCH_CASE) != 0;\r
+                               m_bRegExp = (marker.dwFlags & FIND_REGEXP) != 0;\r
+                               if (m_bRegExp)\r
+                                       m_bWholeWord = false;\r
+                       }\r
+               }\r
+       }\r
+       else\r
+       {\r
+               for (int i = 0; i < m_listMarkers.GetItemCount(); ++i)\r
+               {\r
+                       const TCHAR *pKey = reinterpret_cast<TCHAR *>(m_listMarkers.GetItemData(i));\r
+                       CCrystalTextMarkers::Marker& marker = m_tempMarkers.GetMarkers().at(pKey);\r
+                       if (m_listMarkers.GetItemState(i, LVIS_SELECTED))\r
+                       {\r
+                               marker.sFindWhat = m_sFindWhat;\r
+                               marker.nBgColorIndex = static_cast<COLORINDEX>(m_nBgColorIndex + COLORINDEX_MARKERBKGND1);\r
+                               marker.dwFlags = GetLastSearchFlags();\r
+                       }\r
+               }\r
+       }\r
+}\r
+\r
+DWORD CTextMarkerDlg::GetLastSearchFlags() const\r
+{\r
+       return\r
+               (m_bMatchCase ? FIND_MATCH_CASE : 0) |\r
+               (m_bWholeWord ? FIND_WHOLE_WORD : 0) |\r
+               (m_bRegExp ? FIND_REGEXP : 0);\r
+}\r
+\r
+void CTextMarkerDlg::OnBnclickedEditRegExp()\r
+{\r
+       UpdateData();\r
+}\r
+\r
+void CTextMarkerDlg::OnBnClickedEditMarkerNew()\r
+{\r
+       CString name = m_tempMarkers.MakeNewId();\r
+       CString sFindWhat = _T("New Pattern");\r
+       m_tempMarkers.SetMarker(name, sFindWhat, GetLastSearchFlags(), \r
+               static_cast<COLORINDEX>(static_cast<int>(COLORINDEX_MARKERBKGND1) + (m_tempMarkers.GetMarkers().size() % 3)));\r
+       int i = GetSelectedItemIndex();\r
+       if (i >= 0)\r
+               m_listMarkers.SetItemState(i, 0, LVIS_SELECTED);\r
+       m_listMarkers.InsertItem(LVIF_TEXT | LVIF_STATE | LVIF_PARAM,\r
+               m_listMarkers.GetItemCount(), sFindWhat, LVIS_SELECTED, LVIS_SELECTED, 0,\r
+               reinterpret_cast<LPARAM>((const TCHAR *)(m_tempMarkers.GetMarkers().find(name)->first)));\r
+       m_listMarkers.SetCheck(m_listMarkers.GetItemCount() - 1, 1);\r
+}\r
+\r
+void CTextMarkerDlg::OnBnClickedEditMarkerDelete()\r
+{\r
+       int i = GetSelectedItemIndex();\r
+       if (i < 0)\r
+               return;\r
+       const TCHAR *pKey = reinterpret_cast<TCHAR *>(m_listMarkers.GetItemData(i));\r
+       m_listMarkers.DeleteItem(i);\r
+       m_tempMarkers.GetMarkers().erase(pKey);\r
+       if (i >= m_listMarkers.GetItemCount() - 1)\r
+               i = m_listMarkers.GetItemCount() - 1;\r
+       if (i >= 0)\r
+               m_listMarkers.SetItemState(i, LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED | LVIS_SELECTED);\r
+}\r
+\r
+void CTextMarkerDlg::OnBnClickedApplyNow()\r
+{\r
+       UpdateData(TRUE);\r
+       for (int i = 0; i < m_listMarkers.GetItemCount(); ++i)\r
+       {\r
+               const TCHAR *pKey = reinterpret_cast<TCHAR *>(m_listMarkers.GetItemData(i));\r
+               m_tempMarkers.GetMarkers()[pKey].bVisible = !!m_listMarkers.GetCheck(i);\r
+       }\r
+       m_tempMarkers.SetEnabled(!!m_bMarkersEnabled);\r
+       m_markers = m_tempMarkers;\r
+       m_markers.UpdateViews();\r
+}\r
+\r
+void CTextMarkerDlg::OnOK()\r
+{\r
+       OnBnClickedApplyNow();\r
+       CDialog::OnOK();\r
+}\r
+\r
+void CTextMarkerDlg::OnEditchangeEditFindtext()\r
+{\r
+       int i = GetSelectedItemIndex();\r
+       if (i < 0)\r
+               return;\r
+       CString sFindWhat;\r
+       GetDlgItemText(IDC_EDIT_FINDTEXT, sFindWhat);\r
+       m_listMarkers.SetItemText(i, 0, sFindWhat);\r
+}\r
+\r
+void CTextMarkerDlg::OnItemchangingEditMarkerList(NMHDR *, LRESULT *pResult)\r
+{\r
+       UpdateData(TRUE);\r
+       *pResult = 0;\r
+}\r
+\r
+void CTextMarkerDlg::OnItemchangedEditMarkerList(NMHDR *, LRESULT *pResult)\r
+{\r
+       UpdateData(FALSE);\r
+       *pResult = 0;\r
+}\r
diff --git a/Externals/crystaledit/editlib/ctextmarkerdlg.h b/Externals/crystaledit/editlib/ctextmarkerdlg.h
new file mode 100644 (file)
index 0000000..c24bca4
--- /dev/null
@@ -0,0 +1,68 @@
+/**\r
+ *  @file ctextmarkerdlg.h\r
+ *\r
+ *  @brief Declaration of Marker-dialog.\r
+ */\r
+#pragma once\r
+\r
+#include "resource.h"\r
+#include "memcombo.h"\r
+#include "ccrystaltextmarkers.h"\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// CTextMarkerDlg dialog\r
+\r
+class EDITPADC_CLASS CTextMarkerDlg : public CDialog\r
+  {\r
+private :\r
+       CCrystalTextMarkers m_tempMarkers;\r
+       CCrystalTextMarkers& m_markers;\r
+       int GetSelectedItemIndex() const;\r
+       void UpdateDataListView(bool bSaveAndValidate);\r
+\r
+    // Construction\r
+public :\r
+    CTextMarkerDlg (CCrystalTextMarkers& markers, const CString& sPattern = _T(""), DWORD dwFlags = 0);\r
+       DWORD GetLastSearchFlags() const;\r
+\r
+    // Dialog Data\r
+    //{{AFX_DATA(CTextMarkerDlg)\r
+    enum { IDD = IDD_EDIT_MARKER };\r
+    CComboBox m_ctlBgColorIdx;\r
+    CButton m_ctlWholeWord;\r
+       CListCtrl m_listMarkers;\r
+       CString m_sFindWhat;\r
+       int m_nBgColorIndex;\r
+       int m_nCurItemIndex;\r
+    BOOL m_bMatchCase;\r
+    BOOL m_bWholeWord;\r
+    BOOL m_bRegExp;\r
+       BOOL m_bMarkersEnabled;\r
+    //}}AFX_DATA\r
+\r
+    // Overrides\r
+    // ClassWizard generated virtual function overrides\r
+    //{{AFX_VIRTUAL(CTextMarkerDlg)\r
+  public:\r
+  protected:\r
+    virtual void DoDataExchange (CDataExchange * pDX);    // DDX/DDV support\r
+  //}}AFX_VIRTUAL\r
+\r
+    // Implementation\r
+protected :\r
+    // Generated message map functions\r
+    //{{AFX_MSG(CTextMarkerDlg)\r
+    virtual BOOL OnInitDialog ();\r
+       virtual void OnOK();\r
+    afx_msg void OnBnclickedEditRegExp ();\r
+       afx_msg void OnBnClickedEditMarkerNew();\r
+       afx_msg void OnBnClickedEditMarkerDelete();\r
+       afx_msg void OnBnClickedApplyNow();\r
+       afx_msg void OnEditchangeEditFindtext();\r
+       afx_msg void OnItemchangingEditMarkerList(NMHDR *pNMHDR, LRESULT *pResult);\r
+       afx_msg void OnItemchangedEditMarkerList(NMHDR *pNMHDR, LRESULT *pResult);\r
+    //}}AFX_MSG\r
+    DECLARE_MESSAGE_MAP ()\r
+public:\r
+};\r