1 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7 #include "windowstool.h"
8 #include "dlgeditsetting.h"
9 #include "layoutmanager.h"
14 class DlgEditSetting : public LayoutManager
16 HWND m_hwndMayuPathName; ///
17 HWND m_hwndMayuPath; ///
18 HWND m_hwndSymbols; ///
20 DlgEditSettingData *m_data; ///
24 DlgEditSetting(HWND i_hwnd)
25 : LayoutManager(i_hwnd),
26 m_hwndMayuPathName(NULL),
34 BOOL wmInitDialog(HWND /* focus */, LPARAM i_lParam)
36 m_data = reinterpret_cast<DlgEditSettingData *>(i_lParam);
38 setSmallIcon(m_hwnd, IDI_ICON_mayu);
39 setBigIcon(m_hwnd, IDI_ICON_mayu);
41 CHECK_TRUE( m_hwndMayuPathName
42 = GetDlgItem(m_hwnd, IDC_EDIT_mayuPathName) );
43 CHECK_TRUE( m_hwndMayuPath = GetDlgItem(m_hwnd, IDC_EDIT_mayuPath) );
44 CHECK_TRUE( m_hwndSymbols = GetDlgItem(m_hwnd, IDC_EDIT_symbols) );
46 SetWindowText(m_hwndMayuPathName, m_data->m_name.c_str());
47 SetWindowText(m_hwndMayuPath, m_data->m_filename.c_str());
48 SetWindowText(m_hwndSymbols, m_data->m_symbols.c_str());
50 restrictSmallestSize();
53 typedef LayoutManager LM;
55 addItem(GetDlgItem(m_hwnd, IDC_STATIC_mayuPathName));
56 addItem(GetDlgItem(m_hwnd, IDC_EDIT_mayuPathName),
57 LM::ORIGIN_LEFT_EDGE, LM::ORIGIN_TOP_EDGE,
58 LM::ORIGIN_RIGHT_EDGE, LM::ORIGIN_TOP_EDGE);
59 addItem(GetDlgItem(m_hwnd, IDC_STATIC_mayuPathNameComment),
60 LM::ORIGIN_RIGHT_EDGE, LM::ORIGIN_TOP_EDGE,
61 LM::ORIGIN_RIGHT_EDGE, LM::ORIGIN_TOP_EDGE);
63 addItem(GetDlgItem(m_hwnd, IDC_STATIC_mayuPath));
64 addItem(GetDlgItem(m_hwnd, IDC_EDIT_mayuPath),
65 LM::ORIGIN_LEFT_EDGE, LM::ORIGIN_TOP_EDGE,
66 LM::ORIGIN_RIGHT_EDGE, LM::ORIGIN_TOP_EDGE);
67 addItem(GetDlgItem(m_hwnd, IDC_BUTTON_browse),
68 LM::ORIGIN_RIGHT_EDGE, LM::ORIGIN_TOP_EDGE,
69 LM::ORIGIN_RIGHT_EDGE, LM::ORIGIN_TOP_EDGE);
71 addItem(GetDlgItem(m_hwnd, IDC_STATIC_symbols));
72 addItem(GetDlgItem(m_hwnd, IDC_EDIT_symbols),
73 LM::ORIGIN_LEFT_EDGE, LM::ORIGIN_TOP_EDGE,
74 LM::ORIGIN_RIGHT_EDGE, LM::ORIGIN_TOP_EDGE);
75 addItem(GetDlgItem(m_hwnd, IDC_STATIC_symbolsComment),
76 LM::ORIGIN_RIGHT_EDGE, LM::ORIGIN_TOP_EDGE,
77 LM::ORIGIN_RIGHT_EDGE, LM::ORIGIN_TOP_EDGE);
79 addItem(GetDlgItem(m_hwnd, IDOK),
80 LM::ORIGIN_CENTER, LM::ORIGIN_TOP_EDGE,
81 LM::ORIGIN_CENTER, LM::ORIGIN_TOP_EDGE);
82 addItem(GetDlgItem(m_hwnd, IDCANCEL),
83 LM::ORIGIN_CENTER, LM::ORIGIN_TOP_EDGE,
84 LM::ORIGIN_CENTER, LM::ORIGIN_TOP_EDGE);
86 restrictSmallestSize(LM::RESTRICT_BOTH);
87 restrictLargestSize(LM::RESTRICT_VERTICALLY);
95 CHECK_TRUE( EndDialog(m_hwnd, 0) );
100 BOOL wmCommand(int /* i_notify_code */, int i_id, HWND /* i_hwnd_control */)
102 _TCHAR buf[GANA_MAX_PATH];
105 case IDC_BUTTON_browse:
107 tstring title = loadString(IDS_openMayu);
108 tstring filter = loadString(IDS_openMayuFilter);
109 for (size_t i = 0; i < filter.size(); ++ i)
110 if (filter[i] == _T('|'))
111 filter[i] = _T('\0');
113 _tcscpy(buf, _T(".mayu"));
115 memset(&of, 0, sizeof(of));
116 of.lStructSize = sizeof(of);
117 of.hwndOwner = m_hwnd;
118 of.lpstrFilter = filter.c_str();
121 of.nMaxFile = NUMBER_OF(buf);
122 of.lpstrTitle = title.c_str();
123 of.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST |
124 OFN_HIDEREADONLY | OFN_PATHMUSTEXIST;
125 if (GetOpenFileName(&of))
126 SetWindowText(m_hwndMayuPath, buf);
132 GetWindowText(m_hwndMayuPathName, buf, NUMBER_OF(buf));
133 m_data->m_name = buf;
134 GetWindowText(m_hwndMayuPath, buf, NUMBER_OF(buf));
135 m_data->m_filename = buf;
136 GetWindowText(m_hwndSymbols, buf, NUMBER_OF(buf));
137 m_data->m_symbols = buf;
138 CHECK_TRUE( EndDialog(m_hwnd, 1) );
144 CHECK_TRUE( EndDialog(m_hwnd, 0) );
155 INT_PTR CALLBACK dlgEditSetting_dlgProc(HWND i_hwnd, UINT i_message,
157 BOOL CALLBACK dlgEditSetting_dlgProc(HWND i_hwnd, UINT i_message,
159 WPARAM i_wParam, LPARAM i_lParam)
162 getUserData(i_hwnd, &wc);
167 wc = setUserData(i_hwnd, new DlgEditSetting(i_hwnd));
168 return wc->wmInitDialog(
169 reinterpret_cast<HWND>(i_wParam), i_lParam);
175 return wc->wmCommand(HIWORD(i_wParam), LOWORD(i_wParam),
176 reinterpret_cast<HWND>(i_lParam));
178 return wc->wmClose();
183 return wc->defaultWMHandler(i_message, i_wParam, i_lParam);