|
|
1.1 ! root 1: ! 2: //==========================================================================// ! 3: // Includes // ! 4: //==========================================================================// ! 5: ! 6: #include "perfmon.h" ! 7: #include "datasrc.h" // External declarations for this file ! 8: ! 9: #include "fileutil.h" // for FileErrorMessageBox (whatever) ! 10: #include "grafdata.h" // for ResetGraph ! 11: #include "alert.h" // for ResetAlert ! 12: #include "log.h" // for ResetLog ! 13: #include "report.h" // for ResetReport ! 14: #include "playback.h" ! 15: #include "status.h" ! 16: #include "utils.h" ! 17: #include "pmhelpid.h" // Help IDs ! 18: #include "fileopen.h" // FileOpneHookProc ! 19: #include "pmemory.h" // for MemoryAllocate & MemoryFree ! 20: ! 21: //==========================================================================// ! 22: // Local Data // ! 23: //==========================================================================// ! 24: ! 25: ! 26: BOOL bIgnoreFirstChange ; ! 27: BOOL bDataSourceNow ; ! 28: BOOL bDataSourcePrevious ; ! 29: BOOL bLogFileNameChanged ; ! 30: ! 31: LPTSTR pszLogFilePath ; ! 32: LPTSTR pszLogFileTitle ; ! 33: ! 34: ! 35: //==========================================================================// ! 36: // Local Functions // ! 37: //==========================================================================// ! 38: ! 39: ! 40: ! 41: void static UpdateLogName (HDLG hDlg) ! 42: { ! 43: DialogSetString (hDlg, IDD_DATASOURCEFILENAME, pszLogFileTitle) ; ! 44: } ! 45: ! 46: ! 47: ! 48: void OnChangeLog (HWND hWndParent) ! 49: { // OnChangeLog ! 50: OPENFILENAME ofn ; ! 51: TCHAR szOpenLog [WindowCaptionLen + 1] ; ! 52: TCHAR aszOpenFilter[LongTextLen] ; ! 53: TCHAR szMyLogFilePath [FilePathLen + 1] ; ! 54: int StringLength ; ! 55: DWORD SaveCurrentDlgID = dwCurrentDlgID ; ! 56: ! 57: //=============================// ! 58: // Get Log File // ! 59: //=============================// ! 60: ! 61: StringLoad (IDS_OPENLOG, szOpenLog) ; ! 62: StringLoad (IDS_SAVELOGFILEEXT, szMyLogFilePath) ; ! 63: ! 64: // load the log file extension ! 65: LoadString (hInstance, IDS_SAVELOGFILE, aszOpenFilter, ! 66: sizeof(aszOpenFilter) / sizeof(TCHAR)) ; ! 67: StringLength = lstrlen (aszOpenFilter) + 1 ; ! 68: LoadString (hInstance, IDS_SAVELOGFILEEXT, ! 69: &aszOpenFilter[StringLength], ! 70: sizeof(aszOpenFilter) / sizeof(TCHAR) - StringLength) ; ! 71: StringLength += lstrlen (&aszOpenFilter[StringLength]) ; ! 72: ! 73: // setup the end strings ! 74: aszOpenFilter[StringLength+1] = aszOpenFilter[StringLength+2] = TEXT('\0') ; ! 75: ! 76: ! 77: ofn.lStructSize = sizeof (OPENFILENAME) ; ! 78: ofn.hwndOwner = hWndParent ; ! 79: ofn.hInstance = hInstance ; ! 80: ofn.lpstrFilter = aszOpenFilter ; ! 81: ofn.lpstrCustomFilter = NULL ; ! 82: ofn.nMaxCustFilter = 0 ; ! 83: ofn.nFilterIndex = 1; ! 84: ofn.lpstrFile = szMyLogFilePath ; ! 85: ofn.nMaxFile = FilePathLen * sizeof (TCHAR) ; ! 86: ofn.lpstrFileTitle = pszLogFileTitle ; ! 87: ofn.nMaxFileTitle = FilePathLen * sizeof (TCHAR) ; ! 88: ofn.lpstrInitialDir = NULL ; ! 89: ofn.lpstrTitle = szOpenLog ; ! 90: ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | ! 91: OFN_PATHMUSTEXIST | OFN_SHOWHELP | OFN_ENABLEHOOK ; ! 92: ofn.lCustData = 0L ; ! 93: ofn.lpfnHook = (LPOFNHOOKPROC) FileOpenHookProc ; ! 94: ofn.lpstrDefExt = (LPTSTR)NULL; ! 95: ! 96: dwCurrentDlgID = HC_PM_idDlgOptionOpenLogFile ; ! 97: if (GetOpenFileName (&ofn)) ! 98: { ! 99: if (!strsame(pszLogFilePath, szMyLogFilePath)) ! 100: { ! 101: int FileNameOffset ; ! 102: LPTSTR pFileName ; ! 103: ! 104: bLogFileNameChanged |= TRUE ; ! 105: lstrcpy (pszLogFilePath, szMyLogFilePath) ; ! 106: lstrcpy (pszLogFileTitle, ofn.lpstrFileTitle) ; ! 107: ! 108: pFileName = ExtractFileName (szMyLogFilePath) ; ! 109: if (pFileName != szMyLogFilePath) ! 110: { ! 111: FileNameOffset = pFileName - szMyLogFilePath ; ! 112: szMyLogFilePath[FileNameOffset] = TEXT('\0') ; ! 113: SetCurrentDirectory (szMyLogFilePath) ; ! 114: } ! 115: UpdateLogName (hWndParent) ; ! 116: } ! 117: } ! 118: ! 119: // restore the global before exit ! 120: dwCurrentDlgID = SaveCurrentDlgID ; ! 121: } // OnChangeLog ! 122: ! 123: ! 124: //==========================================================================// ! 125: // Message Handlers // ! 126: //==========================================================================// ! 127: ! 128: ! 129: void static OnInitDialog (HDLG hDlg) ! 130: { ! 131: bLogFileNameChanged = FALSE ; ! 132: ! 133: bIgnoreFirstChange = TRUE ; ! 134: ! 135: bDataSourcePrevious = bDataSourceNow = !PlayingBackLog () ; ! 136: ! 137: CheckRadioButton (hDlg, IDD_DATASOURCENOW, IDD_DATASOURCEFILE, ! 138: bDataSourceNow ? IDD_DATASOURCENOW : IDD_DATASOURCEFILE) ; ! 139: UpdateLogName (hDlg) ; ! 140: ! 141: EditSetLimit (GetDlgItem(hDlg, IDD_DATASOURCEFILENAME), ! 142: FilePathLen - 1) ; ! 143: ! 144: WindowCenter (hDlg) ; ! 145: ! 146: dwCurrentDlgID = HC_PM_idDlgOptionDataFrom ; ! 147: } ! 148: ! 149: ! 150: void /*static*/ OnDataSourceOK (HDLG hDlg) ! 151: { // OnOK ! 152: BOOL bHaveResetPerfmon ; ! 153: INT RetCode = 0 ; ! 154: ! 155: bHaveResetPerfmon = FALSE; ! 156: if (!BoolEqual (bDataSourceNow, bDataSourcePrevious) || ! 157: (bLogFileNameChanged && !bDataSourceNow) ) ! 158: { ! 159: if (PlayingBackLog () && bDataSourceNow | bLogFileNameChanged) ! 160: { ! 161: CloseInputLog (hWndMain) ; ! 162: bHaveResetPerfmon = TRUE ; ! 163: } ! 164: ! 165: if (!bDataSourceNow) ! 166: { ! 167: if (!bHaveResetPerfmon) ! 168: { ! 169: ResetGraphView (hWndGraph) ; ! 170: ResetAlertView (hWndAlert) ; ! 171: ResetLogView (hWndLog) ; ! 172: ResetReportView (hWndReport) ; ! 173: } ! 174: ! 175: GetDlgItemText (hDlg, IDD_DATASOURCEFILENAME, ! 176: pszLogFilePath, FilePathLen - 1) ; ! 177: lstrcpy (pszLogFileTitle, pszLogFilePath); ! 178: ! 179: if (RetCode = OpenPlayback (pszLogFilePath, pszLogFileTitle)) ! 180: { ! 181: DlgErrorBox (hDlg, RetCode, pszLogFileTitle) ; ! 182: } ! 183: } ! 184: ! 185: StatusLineReady (hWndStatus) ; ! 186: } ! 187: ! 188: if (RetCode == 0) ! 189: { ! 190: EndDialog (hDlg, 1) ; ! 191: } ! 192: } // OnOK ! 193: ! 194: ! 195: ! 196: //==========================================================================// ! 197: // Exported Functions // ! 198: //==========================================================================// ! 199: ! 200: ! 201: int FAR WINAPI DataSourceDlgProc (HWND hDlg, ! 202: unsigned iMessage, ! 203: WPARAM wParam, ! 204: LPARAM lParam) ! 205: { ! 206: BOOL bHandled ; ! 207: ! 208: bHandled = TRUE ; ! 209: switch (iMessage) ! 210: { ! 211: case WM_INITDIALOG: ! 212: OnInitDialog (hDlg) ; ! 213: return (TRUE) ; ! 214: ! 215: case WM_CLOSE: ! 216: dwCurrentDlgID = 0 ; ! 217: EndDialog (hDlg, 0) ; ! 218: break ; ! 219: ! 220: case WM_COMMAND: ! 221: switch(LOWORD(wParam)) ! 222: { ! 223: case IDD_DATASOURCEFILENAME: ! 224: if (bIgnoreFirstChange) ! 225: { ! 226: bIgnoreFirstChange = FALSE; ! 227: } ! 228: ! 229: else if (HIWORD(wParam) == EN_UPDATE && !bLogFileNameChanged) ! 230: { ! 231: bLogFileNameChanged = TRUE; ! 232: CheckRadioButton (hDlg, ! 233: IDD_DATASOURCENOW, ! 234: IDD_DATASOURCEFILE, ! 235: IDD_DATASOURCEFILE) ; ! 236: bDataSourceNow = FALSE ; ! 237: } ! 238: break ; ! 239: ! 240: case IDD_DATASOURCECHANGEFILE: ! 241: OnChangeLog (hDlg) ; ! 242: if (bLogFileNameChanged) ! 243: { ! 244: CheckRadioButton (hDlg, ! 245: IDD_DATASOURCENOW, ! 246: IDD_DATASOURCEFILE, ! 247: IDD_DATASOURCEFILE) ; ! 248: bDataSourceNow = FALSE ; ! 249: } ! 250: break ; ! 251: ! 252: case IDD_DATASOURCEFILE: ! 253: bDataSourceNow = FALSE ; ! 254: break ; ! 255: ! 256: case IDD_DATASOURCENOW: ! 257: bDataSourceNow = TRUE ; ! 258: break ; ! 259: ! 260: case IDD_OK: ! 261: dwCurrentDlgID = 0 ; ! 262: OnDataSourceOK (hDlg) ; ! 263: break ; ! 264: ! 265: case IDD_CANCEL: ! 266: dwCurrentDlgID = 0 ; ! 267: EndDialog (hDlg, 0) ; ! 268: break ; ! 269: ! 270: case IDD_DATASOURCEHELP: ! 271: CallWinHelp (dwCurrentDlgID) ; ! 272: break ; ! 273: ! 274: default: ! 275: bHandled = FALSE ; ! 276: break; ! 277: } ! 278: break; ! 279: ! 280: ! 281: default: ! 282: bHandled = FALSE ; ! 283: break ; ! 284: } // switch ! 285: ! 286: return (bHandled) ; ! 287: } // DataSourceDlgProc ! 288: ! 289: ! 290: ! 291: BOOL DisplayDataSourceOptions (HWND hWndParent) ! 292: /* ! 293: Effect: Put up Perfmon's Data Source Options Display dialog, ! 294: which allows ! 295: the user to select the source of data input: real ! 296: time or log file. ! 297: */ ! 298: { // DisplayDisplayOptions ! 299: BOOL retCode ; ! 300: ! 301: pszLogFilePath = (LPTSTR) MemoryAllocate (FilePathLen * sizeof(TCHAR)) ; ! 302: pszLogFileTitle = (LPTSTR) MemoryAllocate (FilePathLen * sizeof(TCHAR)) ; ! 303: ! 304: lstrcpy (pszLogFilePath, PlaybackLog.szFilePath) ; ! 305: lstrcpy (pszLogFileTitle, PlaybackLog.szFileTitle) ; ! 306: ! 307: retCode = DialogBox (hInstance, idDlgDataSource, ! 308: hWndParent, (DLGPROC) DataSourceDlgProc) ; ! 309: ! 310: MemoryFree (pszLogFilePath) ; ! 311: MemoryFree (pszLogFileTitle) ; ! 312: ! 313: return (retCode) ; ! 314: ! 315: } // DisplayDisplayOptions ! 316: ! 317: ! 318:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.