home *** CD-ROM | disk | FTP | other *** search
- //==========================================================================//
- // Includes //
- //==========================================================================//
-
- #include <stdio.h>
-
- #include "perfmon.h" // included by all source
- #include "timefrm.h" // external declarations for this file
-
- #include "alert.h" // for PlaybackAlert
- #include "grafdata.h" // for PlaybackChart
- #include "perfmops.h" // for PerfmonViewWindow
- #include "playback.h" // for PlaybackIndexN
- #include "report.h" // for PlaybackReport
- #include "timeline.h" // for TL_INTERVAL
- #include "utils.h"
- #include "pmhelpid.h" // for Help IDs
-
- //==========================================================================//
- // Local Data //
- //==========================================================================//
-
-
-
- static RECT TFrameRectWindow ;
-
- //==========================================================================//
- // Local Functions //
- //==========================================================================//
-
-
- void ClearSystemTime (SYSTEMTIME *pSystemTime)
- { // ClearSystemTime
- pSystemTime->wYear = 0 ;
- pSystemTime->wMonth = 0 ;
- pSystemTime->wDayOfWeek = 0 ;
- pSystemTime->wDay = 0 ;
- pSystemTime->wHour = 0 ;
- pSystemTime->wMinute = 0 ;
- pSystemTime->wSecond = 0 ;
- pSystemTime->wMilliseconds = 0 ;
- } // ClearSystemTime
-
-
- //==========================================================================//
- // Message Handlers //
- //==========================================================================//
-
-
- void static OnInitDialog (HDLG hDlg)
- { // OnInitDialog
- PBOOKMARK pBookmark ;
- int iIndex ;
- TCHAR szText [20+20+BookmarkCommentLen] ;
- TCHAR szDate [20] ;
- TCHAR szTime [20] ;
- int iBookmarksNum ;
- HWND hWndTLine ;
- HWND hWndBookmarks ;
- int currentTextExtent = 0 ;
- int maxTextExtent = 0 ;
- HDC hDC = 0 ;
- HFONT hFont ;
-
- hWndTLine = DialogControl (hDlg, IDD_TIMEFRAMETIMELINE) ;
- hWndBookmarks = DialogControl (hDlg, IDD_TIMEFRAMEBOOKMARKS) ;
- SetFont (hWndBookmarks, hFontScales) ;
- LBSetHorzExtent (hWndBookmarks, 0) ;
-
- TLineSetRange (hWndTLine, 0, PlaybackLog.iTotalTics - 1) ;
- TLineSetStart (hWndTLine, PlaybackLog.StartIndexPos.iPosition) ;
- TLineSetStop (hWndTLine, PlaybackLog.StopIndexPos.iPosition) ;
-
- iBookmarksNum = 0 ;
- pBookmark = PlaybackLog.pBookmarkFirst ;
-
- if (pBookmark)
- {
- hDC = GetDC (hWndBookmarks) ;
- if (hDC)
- {
- hFont = (HFONT)SendMessage(hWndBookmarks, WM_GETFONT, 0, 0L);
- if (hFont)
- SelectObject(hDC, hFont);
- }
-
- while (pBookmark)
- {
- SystemTimeDateString (&(pBookmark->SystemTime), szDate) ;
- SystemTimeTimeString (&(pBookmark->SystemTime), szTime, TRUE) ;
- TSPRINTF (szText, TEXT(" %s %s %s"),
- szDate, szTime,
- pBookmark->szComment) ;
- iIndex = LBAdd (hWndBookmarks, szText) ;
- LBSetData (hWndBookmarks, iIndex, pBookmark->iTic) ;
-
- // get the biggest text width
- if (hDC)
- {
- currentTextExtent = TextWidth (hDC, szText) + xScrollWidth / 2 ;
- if (currentTextExtent > maxTextExtent)
- {
- maxTextExtent = currentTextExtent ;
- }
- }
-
- pBookmark = pBookmark->pBookmarkNext ;
- }
-
- LBSetSelection (hWndBookmarks, 0) ;
-
- iBookmarksNum = LBNumItems (hWndBookmarks) ;
- }
-
- if (iBookmarksNum == 0)
- {
- DialogEnable (hDlg, IDD_TIMEFRAMEBOOKMARKS, FALSE) ;
- DialogEnable (hDlg, IDD_TIMEFRAMEBOOKMARKGRP, FALSE) ;
- DialogEnable (hDlg, IDD_TIMEFRAMESETSTART, FALSE) ;
- DialogEnable (hDlg, IDD_TIMEFRAMESETSTOP, FALSE) ;
- }
- else
- {
- LBSetHorzExtent (hWndBookmarks, maxTextExtent) ;
- }
-
- if (hDC)
- {
- ReleaseDC (hWndBookmarks, hDC) ;
- }
-
- if (TFrameRectWindow.right == TFrameRectWindow.left)
- {
- // we have not initialize this data yet.
- // will get init. after the first time frame window invoke
- WindowCenter (hDlg) ;
- }
- else
- {
- // show it in its previous position
- MoveWindow (hDlg,
- TFrameRectWindow.left,
- TFrameRectWindow.top,
- TFrameRectWindow.right - TFrameRectWindow.left,
- TFrameRectWindow.bottom - TFrameRectWindow.top,
- TRUE) ;
- }
-
- dwCurrentDlgID = HC_PM_idDlgEditTimeFrame ;
-
- } // OnInitDialog
-
-
- void static OnTLineInterval (HDLG hDlg,
- int iInterval,
- SYSTEMTIME *pSystemTime)
- { // OnTLineInterval
- PLOGINDEX pIndex ;
-
-
- pIndex = PlaybackIndexN (iInterval) ;
-
- if (pIndex)
- *pSystemTime = pIndex->SystemTime ;
- else
- ClearSystemTime (pSystemTime) ;
- } // OnTLineInterval
-
-
- void static OnOK (HDLG hDlg)
- { // OnOK
- LOGPOSITION lp ;
- int iIndex ;
- HWND hWndTLine = DialogControl (hDlg, IDD_TIMEFRAMETIMELINE) ;
-
- iIndex = TLineStart (hWndTLine) ;
- if (LogPositionN (iIndex, &lp)) ;
- PlaybackLog.StartIndexPos = lp ;
-
- iIndex = TLineStop (hWndTLine) ;
- if (LogPositionN (iIndex, &lp))
- PlaybackLog.StopIndexPos = lp ;
-
-
- PlaybackLog.iSelectedTics =
- PlaybackLog.StopIndexPos.iPosition -
- PlaybackLog.StartIndexPos.iPosition + 1 ;
-
- PlaybackChart (hWndGraph) ;
- PlaybackAlert (hWndAlert, 0) ;
- PlaybackReport (hWndReport) ;
-
- WindowInvalidate (PerfmonViewWindow ()) ;
-
- GetWindowRect (hDlg, &TFrameRectWindow) ;
-
- dwCurrentDlgID = 0 ;
- } // OnOK
-
- void static OnCancel (HWND hWnd)
- {
- HDC hGraphDC ;
- PGRAPHSTRUCT pGraph ;
-
- pGraph = GraphData (hWndGraph) ;
- hGraphDC = GetDC (hWndGraph) ;
- if (!hGraphDC || !pGraph)
- {
- return ;
- }
-
- TLineRedraw (hGraphDC, pGraph) ;
-
- GetWindowRect (hWnd, &TFrameRectWindow) ;
-
- dwCurrentDlgID = 0 ;
- }
-
-
- void OnSetStartStop (HWND hDlg, BOOL bSetStart)
- {
- int iTic ;
- int iStopTic ;
- int iStartTic ;
- HWND hWndTLine = DialogControl (hDlg, IDD_TIMEFRAMETIMELINE) ;
- HWND hWndBookmarks = DialogControl (hDlg, IDD_TIMEFRAMEBOOKMARKS) ;
-
- iStartTic = TLineStart (hWndTLine) ;
- iStopTic = TLineStop (hWndTLine) ;
-
- iTic = LBData (hWndBookmarks, LBSelection (hWndBookmarks)) ;
- if ((bSetStart && iStopTic <= iTic) ||
- (!bSetStart && iStartTic >= iTic))
- {
- DlgErrorBox (hDlg, ERR_STOPBEFORESTART) ;
- }
- else
- {
- if (bSetStart)
- {
- TLineSetStart (hWndTLine, iTic) ;
- }
- else
- {
- TLineSetStop (hWndTLine, iTic) ;
- }
- WindowInvalidate (hWndTLine) ;
- }
- } // OnSetStartStop
-
-
- //==========================================================================//
- // Exported Functions //
- //==========================================================================//
-
-
- int FAR WINAPI TimeframeDlgProc (HWND hDlg,
- unsigned iMessage,
- WPARAM wParam,
- LONG lParam)
- {
- BOOL bHandled ;
-
- bHandled = TRUE ;
- switch (iMessage)
- {
- case TL_INTERVAL:
- OnTLineInterval (hDlg, wParam, (SYSTEMTIME *) lParam) ;
- break ;
-
- case WM_INITDIALOG:
- OnInitDialog (hDlg) ;
- return (TRUE) ;
-
- case WM_CLOSE:
- OnCancel (hDlg) ;
- EndDialog (hDlg, 0) ;
- break ;
-
- case WM_COMMAND:
- switch(wParam)
- {
- case IDD_OK:
- SetHourglassCursor() ;
- OnOK (hDlg) ;
- SetArrowCursor() ;
- EndDialog (hDlg, 1) ;
- break ;
-
- case IDD_TIMEFRAMESETSTART:
- case IDD_TIMEFRAMESETSTOP:
- OnSetStartStop (hDlg, wParam == IDD_TIMEFRAMESETSTART) ;
- break ;
-
- case IDD_CANCEL:
- OnCancel (hDlg) ;
- GetWindowRect (hDlg, &TFrameRectWindow) ;
- EndDialog (hDlg, 0) ;
- break ;
-
- case IDD_TIMEFRAMEHELP:
- CallWinHelp (dwCurrentDlgID) ;
- break ;
-
- default:
- bHandled = FALSE ;
- break;
- }
- break;
-
-
- default:
- bHandled = FALSE ;
- break ;
- } // switch
-
- return (bHandled) ;
- } // TimeframeDlgProc
-
-
-
- BOOL SetTimeframe (HWND hWndParent)
- { // SetTimeframe
- if (DialogBox (hInstance, idDlgTimeframe,
- hWndParent, (DLGPROC) TimeframeDlgProc))
- {
- return (TRUE) ;
- }
- return (FALSE) ;
- }
-