OSDN Git Service

Add Expand Different Subfolders menu item (#1964)
[winmerge-jp/winmerge-jp.git] / Src / TrDialogs.h
1 #pragma once\r
2 \r
3 #include "DDXHelper.h"\r
4 \r
5 #undef GetDlgItemText\r
6 #undef SetDlgItemText\r
7 \r
8 class StaticDlgUtils\r
9 {\r
10 protected:\r
11         static void WildcardRemoveDuplicatePatterns(String& patterns);\r
12 };\r
13 \r
14 template<class T>\r
15 class DlgUtils : public StaticDlgUtils\r
16 {\r
17         T *dlg() { return static_cast<T *>(this); }\r
18 \r
19 public:\r
20         void EnableDlgItem(unsigned id, bool enabled)\r
21         {\r
22                 dlg()->GetDlgItem(id)->EnableWindow(enabled);\r
23         }\r
24 \r
25         void SetDlgItemFocus(unsigned id)\r
26         {\r
27                 dlg()->GetDlgItem(id)->SetFocus();\r
28         }\r
29 \r
30         unsigned GetDlgItemText(unsigned id, String& text)\r
31         {\r
32                 CString cstrText = text.c_str();\r
33                 unsigned uResult = dlg()->GetDlgItemTextW(id, cstrText);\r
34                 text = cstrText;\r
35                 return uResult;\r
36         }\r
37 \r
38         void SetDlgItemText(unsigned id, const String& text)\r
39         {\r
40                 dlg()->SetDlgItemTextW(id, text.c_str());\r
41         }\r
42 \r
43         void SetDlgItemComboBoxList(unsigned id, const std::initializer_list<String>& list)\r
44         {\r
45                 CComboBox * cbo = (CComboBox *)dlg()->GetDlgItem(id);\r
46                 if (!cbo)\r
47                         return;\r
48                 for (const auto& item : list)\r
49                         cbo->AddString(item.c_str());\r
50         }\r
51 \r
52         String GetTitleText()\r
53         {\r
54                 CString title;\r
55                 dlg()->GetWindowText(title);\r
56                 return title.GetString();\r
57         }\r
58 \r
59         void SetTitleText(const String& text)\r
60         {\r
61                 dlg()->SetWindowText(text.c_str());\r
62         }\r
63 };\r
64 \r
65 class CTrDialog : public CDialog, public DlgUtils<CTrDialog>\r
66 {\r
67         DECLARE_DYNAMIC(CTrDialog)\r
68 public:\r
69         using CDialog::CDialog;\r
70 \r
71         virtual BOOL OnInitDialog();\r
72 };\r
73 \r
74 class CTrPropertyPage : public CPropertyPage, public DlgUtils<CTrPropertyPage>\r
75 {\r
76         DECLARE_DYNAMIC(CTrPropertyPage)\r
77 public:\r
78         using CPropertyPage::CPropertyPage;\r
79 \r
80         virtual BOOL OnInitDialog();\r
81 };\r
82 \r
83 class CTrDialogBar : public CDialogBar, public DlgUtils<CTrDialogBar>\r
84 {\r
85         DECLARE_DYNAMIC(CTrDialogBar)\r
86 public:\r
87         virtual BOOL Create(CWnd* pParentWnd, LPCTSTR lpszTemplateName,\r
88                 UINT nStyle, UINT nID);\r
89         virtual BOOL Create(CWnd* pParentWnd, UINT nIDTemplate,\r
90                 UINT nStyle, UINT nID);\r
91 };\r