home *** CD-ROM | disk | FTP | other *** search
/ CICA 1995 September (Japanese) / CICA Shareware for Windows CD-ROM (Walnut Creek) (September 1995) (Japanese) (Disc 2).iso / disc2 / nt / ntperf.exe / PERFTOOLS / SRC / PERFMON / DATASRC.C_ / DATASRC.C
Encoding:
C/C++ Source or Header  |  1993-05-15  |  9.6 KB  |  319 lines

  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. 
  319.