Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

488 lines
14 KiB

  1. /*++
  2. Copyright (c) 1990-1998 Microsoft Corporation, All Rights Reserved
  3. Module Name:
  4. CONFIG.c
  5. ++*/
  6. #include "windows.h"
  7. #include "immdev.h"
  8. #include "fakeime.h"
  9. #include "prsht.h"
  10. #include "resource.h"
  11. #define MAX_PAGES 5
  12. /**********************************************************************/
  13. /* */
  14. /* AddPage() */
  15. /* */
  16. /**********************************************************************/
  17. void PASCAL AddPage(LPPROPSHEETHEADER ppsh, UINT id, DLGPROC pfn)
  18. {
  19. if (ppsh->nPages < MAX_PAGES) {
  20. PROPSHEETPAGE psp;
  21. psp.dwSize = sizeof(psp);
  22. psp.dwFlags = PSP_DEFAULT;
  23. psp.hInstance = hInst;
  24. psp.pszTemplate = MAKEINTRESOURCE(id);
  25. psp.pfnDlgProc = pfn;
  26. psp.lParam = 0;
  27. ppsh->phpage[ppsh->nPages] = CreatePropertySheetPage(&psp);
  28. if (ppsh->phpage[ppsh->nPages])
  29. ppsh->nPages++;
  30. }
  31. }
  32. /**********************************************************************/
  33. /* */
  34. /* ImeConfigure() */
  35. /* */
  36. /**********************************************************************/
  37. BOOL WINAPI ImeConfigure(HKL hKL,HWND hWnd, DWORD dwMode, LPVOID lpData)
  38. {
  39. HPROPSHEETPAGE rPages[MAX_PAGES];
  40. PROPSHEETHEADER psh;
  41. ImeLog(LOGF_API, TEXT("ImeConfigure"));
  42. psh.dwSize = sizeof(psh);
  43. psh.dwFlags = PSH_PROPTITLE;
  44. psh.hwndParent = hWnd;
  45. psh.hInstance = hInst;
  46. psh.pszCaption = MAKEINTRESOURCE(IDS_CONFIGNAME);
  47. psh.nPages = 0;
  48. psh.nStartPage = 0;
  49. psh.phpage = rPages;
  50. switch (dwMode)
  51. {
  52. case IME_CONFIG_GENERAL:
  53. AddPage(&psh, DLG_GENERAL, GeneralDlgProc);
  54. AddPage(&psh, DLG_REGISTERWORD, RegWordDlgProc);
  55. AddPage(&psh, DLG_SELECTDICTIONARY, SelectDictionaryDlgProc);
  56. AddPage(&psh, DLG_ABOUT, AboutDlgProc);
  57. #ifdef DEBUG
  58. AddPage(&psh, DLG_DEBUG, DebugOptionDlgProc);
  59. #endif
  60. PropertySheet(&psh);
  61. break;
  62. case IME_CONFIG_REGISTERWORD:
  63. AddPage(&psh, DLG_REGISTERWORD, RegWordDlgProc);
  64. AddPage(&psh, DLG_ABOUT, AboutDlgProc);
  65. PropertySheet(&psh);
  66. break;
  67. case IME_CONFIG_SELECTDICTIONARY:
  68. AddPage(&psh, DLG_SELECTDICTIONARY, SelectDictionaryDlgProc);
  69. AddPage(&psh, DLG_ABOUT, AboutDlgProc);
  70. PropertySheet(&psh);
  71. break;
  72. default:
  73. break;
  74. }
  75. return TRUE;
  76. }
  77. /**********************************************************************/
  78. /* */
  79. /* RegWordConfigure() */
  80. /* */
  81. /**********************************************************************/
  82. INT_PTR CALLBACK RegWordDlgProc(HWND hDlg, UINT message , WPARAM wParam, LPARAM lParam)
  83. {
  84. NMHDR FAR *lpnm;
  85. LPPROPSHEETPAGE lpPropSheet = (LPPROPSHEETPAGE)(GetWindowLongPtr(hDlg, DWLP_USER));
  86. UINT nItem;
  87. UINT i;
  88. LRESULT dwIndex;
  89. TCHAR szRead[128];
  90. TCHAR szString[128];
  91. TCHAR szBuf[128];
  92. LRESULT dwStyle;
  93. switch(message)
  94. {
  95. case WM_NOTIFY:
  96. lpnm = (NMHDR FAR *)lParam;
  97. switch(lpnm->code)
  98. {
  99. case PSN_SETACTIVE:
  100. break;
  101. case PSN_KILLACTIVE:
  102. break;
  103. case PSN_APPLY:
  104. if (!GetDlgItemText(hDlg, ID_WR_READING, szRead, sizeof(szRead)/sizeof(szRead[0])))
  105. {
  106. LoadString(hInst,IDS_NOREADING,szBuf,sizeof(szBuf)/sizeof(szBuf[0]));
  107. MessageBox(hDlg, szBuf, NULL, MB_OK);
  108. return FALSE;
  109. }
  110. if (!GetDlgItemText(hDlg, ID_WR_STRING, szString, sizeof(szString)/sizeof(szString[0])))
  111. {
  112. LoadString(hInst,IDS_NOSTRING,szBuf,sizeof(szBuf)/sizeof(szBuf[0]));
  113. MessageBox(hDlg, szBuf, NULL, MB_OK);
  114. return FALSE;
  115. }
  116. dwIndex = SendDlgItemMessage(hDlg, ID_WR_STYLE,CB_GETCURSEL,0,0);
  117. dwStyle = SendDlgItemMessage(hDlg, ID_WR_STYLE,CB_GETITEMDATA,dwIndex,0);
  118. if (!ImeRegisterWord(szRead, (DWORD) dwStyle, szString))
  119. {
  120. LoadString(hInst,IDS_REGWORDRET,szBuf,sizeof(szBuf)/sizeof(szBuf[0]));
  121. MessageBox(hDlg, szBuf, NULL, MB_OK);
  122. }
  123. break;
  124. case PSN_RESET:
  125. break;
  126. case PSN_HELP:
  127. break;
  128. default:
  129. return FALSE;
  130. }
  131. break;
  132. case WM_INITDIALOG:
  133. SetWindowLongPtr(hDlg, DWLP_USER, (LONG_PTR)lParam);
  134. lpPropSheet = (LPPROPSHEETPAGE)lParam;
  135. if (nItem = ImeGetRegisterWordStyle(0, NULL))
  136. {
  137. LPSTYLEBUF lpStyleBuf = (LPSTYLEBUF)GlobalAlloc(GPTR,nItem * sizeof(STYLEBUF));
  138. if (!lpStyleBuf)
  139. {
  140. LoadString(hInst,IDS_NOMEMORY,szBuf,sizeof(szBuf)/sizeof(szBuf[0]));
  141. MessageBox(hDlg, szBuf, NULL, MB_OK);
  142. return TRUE;
  143. }
  144. ImeGetRegisterWordStyle(nItem,lpStyleBuf);
  145. for (i = 0; i < nItem; i++)
  146. {
  147. dwIndex = SendDlgItemMessage(hDlg,ID_WR_STYLE,CB_ADDSTRING,0,(LPARAM)lpStyleBuf->szDescription);
  148. SendDlgItemMessage(hDlg,ID_WR_STYLE,CB_SETITEMDATA,dwIndex,lpStyleBuf->dwStyle);
  149. lpStyleBuf++;
  150. }
  151. GlobalFree((HANDLE)lpStyleBuf);
  152. }
  153. break;
  154. case WM_DESTROY:
  155. break;
  156. case WM_HELP:
  157. break;
  158. case WM_CONTEXTMENU: // right mouse click
  159. break;
  160. case WM_COMMAND:
  161. break;
  162. default:
  163. return FALSE;
  164. }
  165. return TRUE;
  166. }
  167. /**********************************************************************/
  168. /* */
  169. /* SelectDictionaryConfigure() */
  170. /* */
  171. /**********************************************************************/
  172. INT_PTR CALLBACK SelectDictionaryDlgProc(HWND hDlg, UINT message , WPARAM wParam, LPARAM lParam)
  173. {
  174. NMHDR FAR *lpnm;
  175. LPPROPSHEETPAGE lpPropSheet = (LPPROPSHEETPAGE)(GetWindowLongPtr(hDlg, DWLP_USER));
  176. switch(message)
  177. {
  178. case WM_NOTIFY:
  179. lpnm = (NMHDR FAR *)lParam;
  180. switch(lpnm->code)
  181. {
  182. case PSN_SETACTIVE:
  183. break;
  184. case PSN_KILLACTIVE:
  185. break;
  186. case PSN_APPLY:
  187. break;
  188. case PSN_RESET:
  189. break;
  190. case PSN_HELP:
  191. break;
  192. default:
  193. return FALSE;
  194. }
  195. break;
  196. case WM_INITDIALOG:
  197. SetWindowLongPtr(hDlg, DWLP_USER, (LONG_PTR)lParam);
  198. lpPropSheet = (LPPROPSHEETPAGE)lParam;
  199. break;
  200. case WM_DESTROY:
  201. break;
  202. case WM_HELP:
  203. break;
  204. case WM_CONTEXTMENU: // right mouse click
  205. break;
  206. case WM_COMMAND:
  207. break;
  208. default:
  209. return FALSE;
  210. }
  211. return TRUE;
  212. }
  213. /**********************************************************************/
  214. /* */
  215. /* AboutConfigure() */
  216. /* */
  217. /**********************************************************************/
  218. INT_PTR CALLBACK AboutDlgProc(HWND hDlg, UINT message , WPARAM wParam, LPARAM lParam)
  219. {
  220. NMHDR FAR *lpnm;
  221. LPPROPSHEETPAGE lpPropSheet = (LPPROPSHEETPAGE)(GetWindowLongPtr(hDlg, DWLP_USER));
  222. switch(message)
  223. {
  224. case WM_NOTIFY:
  225. lpnm = (NMHDR FAR *)lParam;
  226. switch(lpnm->code)
  227. {
  228. case PSN_SETACTIVE:
  229. break;
  230. case PSN_KILLACTIVE:
  231. break;
  232. case PSN_APPLY:
  233. break;
  234. case PSN_RESET:
  235. break;
  236. case PSN_HELP:
  237. break;
  238. default:
  239. return FALSE;
  240. }
  241. break;
  242. case WM_INITDIALOG:
  243. SetWindowLongPtr(hDlg, DWLP_USER, (LONG_PTR) lParam);
  244. lpPropSheet = (LPPROPSHEETPAGE)lParam;
  245. break;
  246. case WM_DESTROY:
  247. break;
  248. case WM_HELP:
  249. break;
  250. case WM_CONTEXTMENU: // right mouse click
  251. break;
  252. case WM_COMMAND:
  253. break;
  254. default:
  255. return FALSE;
  256. }
  257. return TRUE;
  258. }
  259. /**********************************************************************/
  260. /* */
  261. /* GeneralConfigure() */
  262. /* */
  263. /**********************************************************************/
  264. INT_PTR CALLBACK GeneralDlgProc(HWND hDlg, UINT message , WPARAM wParam, LPARAM lParam)
  265. {
  266. NMHDR FAR *lpnm;
  267. LPPROPSHEETPAGE lpPropSheet = (LPPROPSHEETPAGE)(GetWindowLongPtr(hDlg, DWLP_USER));
  268. switch(message)
  269. {
  270. case WM_NOTIFY:
  271. lpnm = (NMHDR FAR *)lParam;
  272. switch(lpnm->code)
  273. {
  274. case PSN_SETACTIVE:
  275. break;
  276. case PSN_KILLACTIVE:
  277. break;
  278. case PSN_APPLY:
  279. break;
  280. case PSN_RESET:
  281. break;
  282. case PSN_HELP:
  283. break;
  284. default:
  285. return FALSE;
  286. }
  287. break;
  288. case WM_INITDIALOG:
  289. SetWindowLongPtr(hDlg, DWLP_USER, (LONG_PTR)lParam);
  290. lpPropSheet = (LPPROPSHEETPAGE)lParam;
  291. break;
  292. case WM_DESTROY:
  293. break;
  294. case WM_HELP:
  295. break;
  296. case WM_CONTEXTMENU: // right mouse click
  297. break;
  298. case WM_COMMAND:
  299. break;
  300. default:
  301. return FALSE;
  302. }
  303. return TRUE;
  304. }
  305. /**********************************************************************/
  306. /* */
  307. /* DebugOptionDlgProc() */
  308. /* */
  309. /**********************************************************************/
  310. INT_PTR CALLBACK DebugOptionDlgProc(HWND hDlg, UINT message , WPARAM wParam, LPARAM lParam)
  311. {
  312. DWORD dwTemp;
  313. TCHAR szBuf[128];
  314. NMHDR FAR *lpnm;
  315. LPPROPSHEETPAGE lpPropSheet = (LPPROPSHEETPAGE)(GetWindowLongPtr(hDlg, DWLP_USER));
  316. switch(message)
  317. {
  318. case WM_NOTIFY:
  319. lpnm = (NMHDR FAR *)lParam;
  320. switch(lpnm->code)
  321. {
  322. case PSN_SETACTIVE:
  323. break;
  324. case PSN_KILLACTIVE:
  325. break;
  326. case PSN_APPLY:
  327. #ifdef DEBUG
  328. dwTemp = 0;
  329. if (IsDlgButtonChecked(hDlg, IDC_LOGF_ENTRY))
  330. dwTemp |= LOGF_ENTRY;
  331. if (IsDlgButtonChecked(hDlg, IDC_LOGF_API))
  332. dwTemp |= LOGF_API;
  333. if (IsDlgButtonChecked(hDlg, IDC_LOGF_KEY))
  334. dwTemp |= LOGF_KEY;
  335. dwLogFlag = dwTemp;
  336. dwTemp = 0;
  337. if (IsDlgButtonChecked(hDlg, IDC_DEBF_THREADID))
  338. dwTemp |= DEBF_THREADID;
  339. if (IsDlgButtonChecked(hDlg, IDC_DEBF_GUIDELINE))
  340. dwTemp |= DEBF_GUIDELINE;
  341. dwDebugFlag = dwTemp;
  342. SetDwordToSetting(TEXT("LogFlag"), dwLogFlag);
  343. SetDwordToSetting(TEXT("DebugFlag"), dwDebugFlag);
  344. #endif
  345. break;
  346. case PSN_RESET:
  347. break;
  348. case PSN_HELP:
  349. break;
  350. default:
  351. return FALSE;
  352. }
  353. break;
  354. case WM_INITDIALOG:
  355. SetWindowLongPtr(hDlg, DWLP_USER, (LONG_PTR) lParam);
  356. lpPropSheet = (LPPROPSHEETPAGE)lParam;
  357. #ifdef DEBUG
  358. CheckDlgButton(hDlg, IDC_LOGF_ENTRY,
  359. (dwLogFlag & LOGF_ENTRY) ? 1 : 0);
  360. CheckDlgButton(hDlg, IDC_LOGF_API,
  361. (dwLogFlag & LOGF_API) ? 1 : 0);
  362. CheckDlgButton(hDlg, IDC_LOGF_KEY,
  363. (dwLogFlag & LOGF_KEY) ? 1 : 0);
  364. CheckDlgButton(hDlg, IDC_DEBF_THREADID,
  365. (dwDebugFlag & DEBF_THREADID) ? 1 : 0);
  366. CheckDlgButton(hDlg, IDC_DEBF_GUIDELINE,
  367. (dwDebugFlag & DEBF_GUIDELINE) ? 1 : 0);
  368. #endif
  369. break;
  370. case WM_DESTROY:
  371. break;
  372. case WM_HELP:
  373. break;
  374. case WM_CONTEXTMENU: // right mouse click
  375. break;
  376. case WM_COMMAND:
  377. break;
  378. default:
  379. return FALSE;
  380. }
  381. return TRUE;
  382. }