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.

195 lines
6.7 KiB

  1. #include "precomp.h"
  2. extern TCHAR g_szCustIns[];
  3. extern TCHAR g_szTempSign[];
  4. extern BOOL g_fIntranet;
  5. extern PROPSHEETPAGE g_psp[];
  6. extern int g_iCurPage;
  7. INT_PTR CALLBACK BToolbarProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
  8. {
  9. TCHAR szFeatureDir[MAX_PATH];
  10. TCHAR szToolbarBmp[MAX_PATH];
  11. TCHAR szWorkDir[MAX_PATH];
  12. TCHAR szTemp[MAX_PATH];
  13. BOOL fToolbarBmp;
  14. INT iTheme = 0, iBackground = 0;
  15. PTSTR pszPath;
  16. switch (uMsg)
  17. {
  18. case WM_INITDIALOG:
  19. // --------- Toolbar background -----------------------------------------
  20. EnableDBCSChars(hDlg, IDE_TOOLBARBMP);
  21. Edit_LimitText(GetDlgItem(hDlg, IDE_TOOLBARBMP), countof(szToolbarBmp) - 1);
  22. // --------- Toolbar bitmaps -----------------------------------------
  23. // --------- Toolbar buttons --------------------------------------------
  24. EnableDBCSChars(hDlg, IDC_BTOOLBARLIST);
  25. break;
  26. case WM_NOTIFY:
  27. switch (((LPNMHDR) lParam)->code)
  28. {
  29. case PSN_SETACTIVE:
  30. SetBannerText(hDlg);
  31. // --------- Toolbar background -----------------------------------------
  32. // import INS clean-up -- delete bitmap from the temp location
  33. InsGetString(IS_BRANDING, TOOLBAR_BMP, szToolbarBmp, countof(szToolbarBmp),
  34. g_szCustIns, NULL, &fToolbarBmp);
  35. if (fToolbarBmp)
  36. DeleteFileInDir(szToolbarBmp, g_szTempSign);
  37. if (fToolbarBmp)
  38. {
  39. CheckRadioButton(hDlg, IDC_BGIE6, IDC_BG_CUSTOM, IDC_BG_CUSTOM);
  40. }
  41. else
  42. {
  43. CheckRadioButton(hDlg, IDC_BGIE6, IDC_BG_CUSTOM, IDC_BGIE6);
  44. }
  45. SetDlgItemTextTriState(hDlg, IDE_TOOLBARBMP, IDC_BG_CUSTOM, szToolbarBmp, fToolbarBmp);
  46. // --------- Toolbar buttons --------------------------------------------
  47. // import INS clean-up -- delete keys that are not relevant
  48. if (!g_fIntranet)
  49. InsDeleteKey(IS_BTOOLBARS, IK_BTDELETE, g_szCustIns);
  50. g_cmCabMappings.GetFeatureDir(FEATURE_BTOOLBAR, szFeatureDir);
  51. PathCreatePath(szFeatureDir);
  52. if (BToolbar_Init(GetDlgItem(hDlg, IDC_BTOOLBARLIST), g_szCustIns, g_szTempSign, szFeatureDir) == 0)
  53. {
  54. EnsureDialogFocus(hDlg, IDC_EDITBTOOLBAR, IDC_ADDBTOOLBAR);
  55. EnsureDialogFocus(hDlg, IDC_REMOVEBTOOLBAR, IDC_ADDBTOOLBAR);
  56. DisableDlgItem(hDlg, IDC_EDITBTOOLBAR);
  57. DisableDlgItem(hDlg, IDC_REMOVEBTOOLBAR);
  58. }
  59. else
  60. ListBox_SetCurSel(GetDlgItem(hDlg, IDC_BTOOLBARLIST), (WPARAM) 0);
  61. if (g_fIntranet)
  62. ReadBoolAndCheckButton(IS_BTOOLBARS, IK_BTDELETE, FALSE, g_szCustIns, hDlg, IDC_DELETEBTOOLBARS);
  63. EnableDlgItem2(hDlg, IDC_DELETEBTOOLBARS, g_fIntranet);
  64. ShowDlgItem2 (hDlg, IDC_DELETEBTOOLBARS, g_fIntranet);
  65. CheckBatchAdvance(hDlg);
  66. break;
  67. case PSN_WIZBACK:
  68. case PSN_WIZNEXT:
  69. // --------- Toolbar background -----------------------------------------
  70. //----- Validate the path for a bitmap -----
  71. iBackground = IsDlgButtonChecked(hDlg, IDC_BGIE6) ? 0 : 2;
  72. fToolbarBmp = GetDlgItemTextTriState(hDlg, IDE_TOOLBARBMP, IDC_BG_CUSTOM, szToolbarBmp, countof(szToolbarBmp));
  73. if ((iBackground==2) && !IsBitmapFileValid(hDlg, IDE_TOOLBARBMP, szToolbarBmp, NULL, 0, 0, 0, 0))
  74. {
  75. SetWindowLongPtr(hDlg, DWLP_MSGRESULT, -1);
  76. break;
  77. }
  78. // toolbar bitmap
  79. g_cmCabMappings.GetFeatureDir(FEATURE_BRAND, szWorkDir);
  80. // delete the old bitmap file
  81. if (InsGetString(IS_BRANDING, TOOLBAR_BMP, szTemp, countof(szTemp), g_szCustIns))
  82. DeleteFileInDir(szTemp, szWorkDir);
  83. // copy the new bitmap file
  84. if (fToolbarBmp && *szToolbarBmp)
  85. CopyFileToDir(szToolbarBmp, szWorkDir);
  86. InsWriteString(IS_BRANDING, TOOLBAR_BMP, szToolbarBmp, g_szCustIns, fToolbarBmp, NULL, INSIO_TRISTATE);
  87. // --------- Toolbar buttons --------------------------------------------
  88. g_cmCabMappings.GetFeatureDir(FEATURE_BTOOLBAR, szFeatureDir);
  89. BToolbar_Save(GetDlgItem(hDlg, IDC_BTOOLBARLIST), g_szCustIns, szFeatureDir);
  90. if (g_fIntranet)
  91. CheckButtonAndWriteBool(hDlg, IDC_DELETEBTOOLBARS, IS_BTOOLBARS, IK_BTDELETE, g_szCustIns);
  92. // --------- Toolbar finish -----------------------------------------
  93. g_iCurPage = PPAGE_BTOOLBARS;
  94. EnablePages();
  95. (((LPNMHDR) lParam)->code == PSN_WIZNEXT) ? PageNext(hDlg) : PagePrev(hDlg);
  96. break;
  97. case PSN_HELP:
  98. IeakPageHelp(hDlg, g_psp[g_iCurPage].pszTemplate);
  99. break;
  100. case PSN_QUERYCANCEL:
  101. pszPath = (PTSTR)GetWindowLongPtr(hDlg, GWLP_USERDATA);
  102. if (pszPath)
  103. {
  104. CoTaskMemFree(pszPath);
  105. SetWindowLongPtr(hDlg, GWLP_USERDATA, NULL);
  106. }
  107. QueryCancel(hDlg);
  108. break;
  109. default:
  110. return FALSE;
  111. }
  112. break;
  113. case WM_COMMAND:
  114. if (GET_WM_COMMAND_CMD(wParam, lParam) != BN_CLICKED)
  115. return FALSE;
  116. switch (GET_WM_COMMAND_ID(wParam, lParam))
  117. {
  118. case IDC_ADDBTOOLBAR:
  119. BToolbar_Edit(GetDlgItem(hDlg, IDC_BTOOLBARLIST), TRUE);
  120. break;
  121. case IDC_EDITBTOOLBAR:
  122. BToolbar_Edit(GetDlgItem(hDlg, IDC_BTOOLBARLIST), FALSE);
  123. break;
  124. case IDC_REMOVEBTOOLBAR:
  125. BToolbar_Remove(GetDlgItem(hDlg, IDC_BTOOLBARLIST));
  126. break;
  127. case IDC_BGIE6:
  128. case IDC_BG_CUSTOM:
  129. fToolbarBmp = (GET_WM_COMMAND_ID(wParam, lParam)==IDC_BG_CUSTOM);
  130. EnableDlgItem2(hDlg, IDE_TOOLBARBMP, fToolbarBmp);
  131. EnableDlgItem2(hDlg, IDC_BROWSETBB, fToolbarBmp);
  132. break;
  133. case IDC_BROWSETBB:
  134. GetDlgItemText(hDlg, IDE_TOOLBARBMP, szToolbarBmp, countof(szToolbarBmp));
  135. if (BrowseForFile(hDlg, szToolbarBmp, countof(szToolbarBmp), GFN_BMP))
  136. SetDlgItemText(hDlg, IDE_TOOLBARBMP, szToolbarBmp);
  137. break;
  138. default:
  139. return FALSE;
  140. }
  141. break;
  142. case WM_HELP:
  143. IeakPageHelp(hDlg, g_psp[g_iCurPage].pszTemplate);
  144. break;
  145. case IDM_BATCHADVANCE:
  146. DoBatchAdvance(hDlg);
  147. break;
  148. default:
  149. return FALSE;
  150. }
  151. return TRUE;
  152. }