/* ======================================================================================= Name : ChkDataDlg.cpp Author : vincent lhullier Date :08/09/97 Description : implementation of main dialog of ChkData application ======================================================================================= */ /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ #include "stdafx.h" #include "ChkData.h" #include "ChkDataDlg.h" #include "Tree_Fct.h" #include "IniData.h" #include "SCR_Fct.h" /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ /* ======================================================================================= ======================================================================================= CAboutDlg ======================================================================================= ======================================================================================= */ class CAboutDlg : public CDialog { public: CAboutDlg(); // Dialog Data //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) //}}AFX_VIRTUAL // Implementation protected: //{{AFX_MSG(CAboutDlg) //}}AFX_MSG DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg) // No message handlers //}}AFX_MSG_MAP END_MESSAGE_MAP() /* ======================================================================================= ======================================================================================= CChkDataDlg dialog ======================================================================================= ======================================================================================= */ /* ---------------------------------------------------------------------------------------- Description : constructor ---------------------------------------------------------------------------------------- */ CChkDataDlg::CChkDataDlg(CWnd* pParent /*=NULL*/) : CDialog(CChkDataDlg::IDD, pParent) { //{{AFX_DATA_INIT(CChkDataDlg) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); m_hBtRougeBmp.LoadBitmap( IDB_BITMAP_BTROUGE ); m_hBtVertBmp.LoadBitmap( IDB_BITMAP_BTVERT ); m_lNumberOfFiles = 0; } /* ---------------------------------------------------------------------------------------- Description : destructor ---------------------------------------------------------------------------------------- */ CChkDataDlg::~CChkDataDlg() { m_hBtRougeBmp.DeleteObject(); m_hBtVertBmp.DeleteObject(); } /* ---------------------------------------------------------------------------------------- Description : Message map ---------------------------------------------------------------------------------------- */ BEGIN_MESSAGE_MAP(CChkDataDlg, CDialog) //{{AFX_MSG_MAP(CChkDataDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_WM_DRAWITEM() ON_WM_MEASUREITEM() ON_LBN_DBLCLK(IDC_LIST_FILETYPE, OnDblclkListFiletype) ON_BN_CLICKED(IDC_BUTTON_PROCESS, OnButtonProcess) ON_BN_CLICKED(IDC_BUTTON_BUILDFILELIST, OnButtonBuildfilelist) ON_LBN_SELCHANGE(IDC_LIST_SECTIONS, OnSelchangeListSections) ON_LBN_SELCHANGE(IDC_LIST_ENTRIES, OnSelchangeListEntries) ON_BN_CLICKED(IDC_BUTTON_SAVE, OnButtonSave) ON_BN_CLICKED(IDC_BUTTON_SECTIONANDREFS, OnButtonSectionandrefs) ON_BN_CLICKED(IDC_BUTTON_STAT, OnButtonStat) ON_LBN_SELCHANGE(IDC_LIST_BADREF, OnSelchangeListBadref) ON_LBN_DBLCLK(IDC_LIST_SECTIONWITHBADREF, OnDblclkListSectionwithbadref) ON_BN_CLICKED(IDC_BUTTON_MODSTAT, OnButtonModstat) //}}AFX_MSG_MAP ON_CONTROL_RANGE( BN_CLICKED, IDC_CHECK_PARAM0, IDC_CHECK_PARAM19, OnButtonParam ) END_MESSAGE_MAP() /* ======================================================================================= specific functions ======================================================================================= */ /* ---------------------------------------------------------------------------------------- Description : init progress bar ---------------------------------------------------------------------------------------- */ void CChkDataDlg::m_fn_vInitProgessBar( int _iStart, int _iEnd ) { m_oProgress.m_fn_vSetRange( _iStart, _iEnd ); m_oProgress.m_fn_vReinit(); m_oProgress.m_fn_vInitDrawing(); } /* ---------------------------------------------------------------------------------------- Description : fill section type list box ---------------------------------------------------------------------------------------- */ void CChkDataDlg::m_fn_vFillSectionTypeList( void ) { /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ SCR_tdst_DyAr_Description *p_stDyAr; SCR_tdst_Link_Value *p_stValue; unsigned int uiSection; int iIndex; char szText[512]; long lNumberOfSections = 0; /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ m_p_oLBSectionType->ResetContent(); p_stDyAr = &g_stSectionTypeLinkTable.stLinkArray; for (uiSection = 0; uiSection < p_stDyAr->uiNumValues; uiSection ++) { SCR_M_DyAr_GetElement( SCR_tdst_Link_Value, uiSection, p_stValue, g_stSectionTypeLinkTable.stLinkArray ); sprintf( szText, "%s", p_stValue->p_szKey ); if (p_stValue->stInfos.ulLong1) sprintf( szText + strlen( szText ), " (%d)", p_stValue->stInfos.ulLong1 ); iIndex = m_p_oLBSectionType->AddString( szText ); //m_p_oLBSectionType->SetItemData( iIndex, p_stValue->ulValue ); m_p_oLBSectionType->SetItemData( iIndex, (DWORD) p_stValue ); lNumberOfSections += p_stValue->stInfos.ulLong1; } sprintf( szText, " Section types : %d", p_stDyAr->uiNumValues ); if (lNumberOfSections) sprintf(szText + strlen( szText ), " (%d)", lNumberOfSections ); GetDlgItem( IDC_STATIC_NUMBEROFSECTIONTYPES )->SetWindowText( szText ); if (p_stDyAr->uiNumValues) { m_p_oLBSectionType->SetCurSel( 0 ); OnSelchangeListSections(); } } /* ---------------------------------------------------------------------------------------- Description : fill section type list box ---------------------------------------------------------------------------------------- */ void CChkDataDlg::m_fn_vFillListEntry( void ) { /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ SCR_tdst_DyAr_Description *p_stDyAr; tdstEntry *p_stEntry; unsigned int uiEntry; int iIndex; char szText[20]; /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ m_p_oLBEntry->ResetContent(); if (m_p_stCurrentSectionType == NULL) return; p_stDyAr = (SCR_tdst_DyAr_Description *) m_p_stCurrentSectionType->ulValue; for (uiEntry = 0; uiEntry < p_stDyAr->uiNumValues; uiEntry ++) { SCR_M_DyAr_GetElement( tdstEntry, uiEntry, p_stEntry, (*p_stDyAr) ); iIndex = m_p_oLBEntry->AddString( p_stEntry->szName ); m_p_oLBEntry->SetItemData( iIndex, (DWORD) p_stEntry ); } sprintf( szText, " Entries : %d", p_stDyAr->uiNumValues ); GetDlgItem( IDC_STATIC_NUMBEROFENTRIES )->SetWindowText( szText ); if (p_stDyAr->uiNumValues) { m_p_oLBEntry->SetCurSel( 0 ); } OnSelchangeListEntries(); } /* ---------------------------------------------------------------------------------------- Description : fill section type list box ---------------------------------------------------------------------------------------- */ void CChkDataDlg::m_fn_vShowCurrentEntry( void ) { /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ char szSample[1] = { 0 }; char *p_szSample; char cParam, cNumberOfParams; /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ if (m_p_stCurrentEntry == NULL) { p_szSample = szSample; cNumberOfParams = 0; } else { p_szSample = m_p_stCurrentEntry->szSample; cNumberOfParams = m_p_stCurrentEntry->cNumberOfParams; } GetDlgItem( IDC_STATIC_ENTRYSAMPLE )->SetWindowText( p_szSample ); for (cParam = 0; cParam < cNumberOfParams; cParam++) { m_a_poBtParam[ cParam ]->ShowWindow( TRUE ); m_a_poBtParam[ cParam ]->SetCheck( m_p_stCurrentEntry->a_cIsRef[ cParam ] ); } for (; cParam < 20; cParam++) m_a_poBtParam[ cParam ]->ShowWindow( FALSE ); } /* ---------------------------------------------------------------------------------------- Description : fill section type list box ---------------------------------------------------------------------------------------- */ void CChkDataDlg::m_fn_vDumpSectionAndRefsListInFile( char *_szFileName ) { /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ FILE *hpFile; SCR_tdst_DyAr_Description *p_stDyAr; SCR_tdst_DyAr_Description *p_stRefDyAr; SCR_tdst_Link_Value *p_stValue; unsigned int uiSection; tdstReference *p_stRef; unsigned int uiRef; /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ if ((hpFile = fopen( _szFileName, "wt") ) == NULL) return; fprintf( hpFile, "\n********************\n* Sections & Refs *\n********************\n" ); p_stDyAr = &g_stSectionLinkTable.stLinkArray; for (uiSection = 0; uiSection < p_stDyAr->uiNumValues; uiSection ++) { SCR_M_DyAr_GetElement( SCR_tdst_Link_Value, uiSection, p_stValue, (*p_stDyAr) ); fprintf( hpFile, "(%4d) %s\n", p_stValue->stInfos.ulLong1, p_stValue->p_szKey ); /* * dump references */ p_stRefDyAr = (SCR_tdst_DyAr_Description *) p_stValue->ulValue; if (p_stRefDyAr) { for (uiRef = 0; uiRef < p_stRefDyAr->uiNumValues; uiRef ++) { SCR_M_DyAr_GetElement( tdstReference, uiRef, p_stRef, (*p_stRefDyAr) ); fprintf( hpFile, "\t(%04d) -> %s\n", p_stRef->uiLine, p_stRef->p_stRef->p_szKey ); } } } fprintf( hpFile, "\n********************\n* References *\n********************\n" ); p_stDyAr = &g_stRefLinkTable.stLinkArray; for (uiRef = 0; uiRef < p_stDyAr->uiNumValues; uiRef++) { SCR_M_DyAr_GetElement( SCR_tdst_Link_Value, uiRef, p_stValue, (*p_stDyAr) ); fprintf( hpFile, "%c [%6d] %s\n", p_stValue->stInfos.ulLong2 ? ' ' : 'X', p_stValue->stInfos.ulLong1, p_stValue->p_szKey ); } fclose( hpFile ); } /* ---------------------------------------------------------------------------------------- Description : fill list with bad references ---------------------------------------------------------------------------------------- */ void CChkDataDlg::fn_vFillBadReferenceList() { /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ unsigned int uiRef; SCR_tdst_Link_Value *p_stValue; int iIndex; char szText[ SCR_CV_ui_Cfg_MaxLenName ]; long lBadRef = 0; /* unsigned long ulMaxRefBy = 0; unsigned long ulNbRefs; unsigned long ulMaxRef = 0; */ /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ m_p_oLBBadRef->ResetContent(); for (uiRef = 0; uiRef < g_stRefLinkTable.stLinkArray.uiNumValues; uiRef++) { SCR_M_DyAr_GetElement( SCR_tdst_Link_Value, uiRef, p_stValue, g_stRefLinkTable.stLinkArray ); if (p_stValue->stInfos.ulLong2 == 0) { sprintf( szText, "[%4d] %s", p_stValue->stInfos.ulLong1, p_stValue->p_szKey ); iIndex = m_p_oLBBadRef->AddString( szText ); m_p_oLBBadRef->SetItemData( iIndex, (DWORD) p_stValue ); lBadRef += p_stValue->stInfos.ulLong1; } /* if (p_stValue->stInfos.ulLong1 > ulMaxRefBy) ulMaxRefBy = p_stValue->stInfos.ulLong1; */ } // test /* for (uiRef = 0; uiRef < g_stSectionLinkTable.stLinkArray.uiNumValues; uiRef++) { SCR_M_DyAr_GetElement( SCR_tdst_Link_Value, uiRef, p_stValue, g_stSectionLinkTable.stLinkArray ); ulNbRefs = ((SCR_tdst_DyAr_Description *) p_stValue->ulValue == NULL) ? 0 : ((SCR_tdst_DyAr_Description *) p_stValue->ulValue)->uiNumValues; if (ulNbRefs > ulMaxRef) ulMaxRef = ulNbRefs; } */ sprintf( szText, " Bad references : %d [%d]", m_p_oLBBadRef->GetCount(), lBadRef ); GetDlgItem( IDC_STATIC_BADREF )->SetWindowText( szText ); m_p_stCurrentBadRef = NULL; fn_vFillSectionWithBadReferenceList(); } /* ---------------------------------------------------------------------------------------- Description : fill list of section that own current selected references ---------------------------------------------------------------------------------------- */ void CChkDataDlg::fn_vFillSectionWithBadReferenceList() { /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ SCR_tdst_DyAr_Description *p_stDyAr; SCR_tdst_Link_Value *p_stValue; tdstReference *p_stRef; int iIndex; unsigned int uiSection, uiRef; char szText[ SCR_CV_ui_Cfg_MaxLenName ]; unsigned int uiNbRef = 0; /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ m_p_oLBSectionWithBadRef->ResetContent(); if (m_p_stCurrentBadRef == NULL) return; for (uiSection = 0; uiSection < g_stSectionLinkTable.stLinkArray.uiNumValues; uiSection++) { SCR_M_DyAr_GetElement( SCR_tdst_Link_Value, uiSection, p_stValue, g_stSectionLinkTable.stLinkArray ); p_stDyAr = (SCR_tdst_DyAr_Description *) p_stValue->ulValue; if (p_stDyAr) { for (uiRef = 0; uiRef < p_stDyAr->uiNumValues; uiRef++) { SCR_M_DyAr_GetElement( tdstReference, uiRef, p_stRef, (*p_stDyAr) ); if (p_stRef->p_stRef == m_p_stCurrentBadRef) { sprintf( szText, "[%04d] %s", p_stRef->uiLine, p_stValue->p_szKey ); iIndex = m_p_oLBSectionWithBadRef->AddString( szText ); m_p_oLBSectionWithBadRef->SetItemData( iIndex, (DWORD) p_stValue ); if (uiNbRef++ == m_p_stCurrentBadRef->stInfos.ulLong1) return; } } } } } /* ---------------------------------------------------------------------------------------- Description : display last op time _lTime -> elapse time ---------------------------------------------------------------------------------------- */ void CChkDataDlg::m_fn_vDisplayLastOperationTime( long _lTime ) { div_t stDiv; char szTime[50], *p_szTime; p_szTime = szTime + sprintf( szTime, "Last op time "); stDiv = div( _lTime, 3600 ); _lTime = stDiv.rem; p_szTime += sprintf( p_szTime, "%02d:", stDiv.quot ); stDiv = div( _lTime, 60 ); sprintf( p_szTime, "%02d:%02d", stDiv.quot, stDiv.rem ); GetDlgItem( IDC_STATIC_LASTOPTIME )->SetWindowText( szTime ); } /* ======================================================================================= Message handlers ======================================================================================= */ /* ---------------------------------------------------------------------------------------- Description : WM_INITDIALOG ---------------------------------------------------------------------------------------- */ BOOL CChkDataDlg::OnInitDialog() { /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ long lType; tdstFileType *p_stFT = g_d_stFileType; UINT uiIndex; char szText[50]; /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ CDialog::OnInitDialog(); /* * Add "About..." menu item to system menu. * IDM_ABOUTBOX must be in the system command range. */ ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon /* * init progression bar */ m_oProgress.SubclassDlgItem( IDC_PROGRESS, this ); m_oProgress.SetStep( 1 ); /* * get pointer on dialog control */ static s_a_uiBtParam[20] = { IDC_CHECK_PARAM0, IDC_CHECK_PARAM1, IDC_CHECK_PARAM2, IDC_CHECK_PARAM3, IDC_CHECK_PARAM4, IDC_CHECK_PARAM5, IDC_CHECK_PARAM6, IDC_CHECK_PARAM7, IDC_CHECK_PARAM8, IDC_CHECK_PARAM9, IDC_CHECK_PARAM10,IDC_CHECK_PARAM11,IDC_CHECK_PARAM12,IDC_CHECK_PARAM13,IDC_CHECK_PARAM14, IDC_CHECK_PARAM15,IDC_CHECK_PARAM16,IDC_CHECK_PARAM17,IDC_CHECK_PARAM18,IDC_CHECK_PARAM19 }; m_p_oLBFiles = (CListBox *) GetDlgItem( IDC_LIST_FILE ); m_p_oLBFileType = (CListBox *) GetDlgItem( IDC_LIST_FILETYPE ); m_p_oLBSectionType = (CListBox *) GetDlgItem( IDC_LIST_SECTIONS ); m_p_oLBEntry = (CListBox *) GetDlgItem( IDC_LIST_ENTRIES ); m_p_oLBBadRef = (CListBox *) GetDlgItem( IDC_LIST_BADREF ); m_p_oLBSectionWithBadRef = (CListBox *) GetDlgItem( IDC_LIST_SECTIONWITHBADREF ); for (uiIndex = 0; uiIndex < 20; uiIndex++ ) { m_a_poBtParam[ uiIndex ] = (CButton *) GetDlgItem( s_a_uiBtParam[ uiIndex ] ); m_a_poBtParam[ uiIndex ]->ShowWindow( FALSE ); } /* * fill file type list */ m_p_oLBFileType->ResetContent(); for (lType = 0; lType < g_lNumberOfFileTypes; lType++, p_stFT++) { uiIndex = m_p_oLBFileType->AddString( p_stFT->szExt ); m_p_oLBFileType->SetItemData( uiIndex, (DWORD) p_stFT ); } sprintf( szText, "File types : %d", g_lNumberOfFileTypes ); GetDlgItem( IDC_STATIC_FILETYPE )->SetWindowText( szText ); /* * file section type list */ m_fn_vFillSectionTypeList(); return TRUE; // return TRUE unless you set the focus to a control } /* ---------------------------------------------------------------------------------------- Description : WM_SYSCOMMAND ---------------------------------------------------------------------------------------- */ void CChkDataDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); } } /* ---------------------------------------------------------------------------------------- Description : WM_PAINT ---------------------------------------------------------------------------------------- */ void CChkDataDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } } /* ---------------------------------------------------------------------------------------- Description : WM_QUERYDRAGICON ---------------------------------------------------------------------------------------- */ HCURSOR CChkDataDlg::OnQueryDragIcon() { return (HCURSOR) m_hIcon; } /* ---------------------------------------------------------------------------------------- Description : WM_DRAWITEM ---------------------------------------------------------------------------------------- */ void CChkDataDlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDIS) { // TODO: Add your message handler code here and/or call default if ( (lpDIS->itemID != LB_ERR) && (nIDCtl == IDC_LIST_FILETYPE) ) { CDC *p_oDC = CDC::FromHandle(lpDIS->hDC); CBrush oBrush; COLORREF xTextColor; BOOL bSelected = (lpDIS->itemState & ODS_SELECTED ); tdstFileType *p_stFT; CPoint oPoint; char szValue[10]; oBrush.CreateSolidBrush( GetSysColor( bSelected ? COLOR_HIGHLIGHT : COLOR_WINDOW) ); xTextColor = GetSysColor( bSelected ? COLOR_HIGHLIGHTTEXT : COLOR_WINDOWTEXT); p_oDC->FillRect( &lpDIS->rcItem, &oBrush ); p_stFT = (tdstFileType *) m_p_oLBFileType->GetItemData( lpDIS->itemID ); p_oDC->SetBkMode( TRANSPARENT); p_oDC->SetTextColor( xTextColor ); oPoint.x = lpDIS->rcItem.left; oPoint.y = lpDIS->rcItem.top; p_oDC->DrawState( oPoint, CSize(16,16), p_stFT->bConsider ? &m_hBtVertBmp : &m_hBtRougeBmp, DST_BITMAP ); lpDIS->rcItem.left += 20; lpDIS->rcItem.right -= 5; p_oDC->DrawText( p_stFT->szExt, &lpDIS->rcItem, DT_SINGLELINE | DT_LEFT | DT_VCENTER ); p_oDC->DrawText( itoa(p_stFT->lUsed, szValue, 10) , &lpDIS->rcItem, DT_SINGLELINE | DT_RIGHT | DT_VCENTER ); oBrush.DeleteObject(); } else CDialog::OnDrawItem(nIDCtl, lpDIS); } /* ---------------------------------------------------------------------------------------- Description : WM_MEASUREITEM ---------------------------------------------------------------------------------------- */ void CChkDataDlg::OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct) { //return 16; CDialog::OnMeasureItem(nIDCtl, lpMeasureItemStruct); } /* ---------------------------------------------------------------------------------------- Description : ON_LBN_DBLCLK on IDC_LIST_FILETYPE list box ---------------------------------------------------------------------------------------- */ void CChkDataDlg::OnDblclkListFiletype() { UINT nIndex; tdstFileType *p_stFT; nIndex = m_p_oLBFileType->GetCurSel(); if (nIndex != LB_ERR ) { p_stFT = (tdstFileType *) m_p_oLBFileType->GetItemData( nIndex ); p_stFT->bConsider = !p_stFT->bConsider; fn_IniD_vSetFileTypeConsiderStatus( p_stFT->szExt, p_stFT->bConsider ); m_p_oLBFileType->Invalidate(); } } /* ---------------------------------------------------------------------------------------- Description : BN_CLICKED on IDC_BUTTON_PROCESS button ---------------------------------------------------------------------------------------- */ void CChkDataDlg::OnButtonProcess() { /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ long lFile; char szFileName[ MAX_PATH ]; char *p_szFileName; time_t lStartTime, lEndTime; /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ /* * init progression and display for working */ m_fn_vInitProgessBar( 0, m_lNumberOfFiles ); GetDlgItem( IDC_STATIC_NUMBEROFFILES )->ShowWindow( FALSE ); m_oProgress.ShowWindow(TRUE); /* * get start time */ time( &lStartTime ); /* * reset use counters */ fn_Scr_vResetUsedCounters(); /* * parse each file */ strcpy( szFileName, g_stIniData.szRootForSection ); p_szFileName = szFileName + g_stIniData.lRootForSectionLength; for (lFile = 0; lFile < m_lNumberOfFiles; lFile++) { m_p_oLBFiles->GetText( lFile, p_szFileName ); m_p_oLBFiles->SetCurSel( lFile ); fn_Scr_vParseFileToBuildListOfSectionTypes( szFileName ); m_oProgress.StepIt(); } /* * refresh list of section type */ m_fn_vFillSectionTypeList(); /* * get end time and display elapse time */ time( &lEndTime ); m_oProgress.ShowWindow(FALSE); GetDlgItem( IDC_STATIC_NUMBEROFFILES )->ShowWindow( TRUE ); m_fn_vDisplayLastOperationTime( lEndTime - lStartTime ); } /* ---------------------------------------------------------------------------------------- Description : BN_CLICKED on IDC_BUTTON_PROCESS button ---------------------------------------------------------------------------------------- */ void CChkDataDlg::OnButtonBuildfilelist() { char szText[50]; long lFile; long lNbFiles; char **d_szFile; /* build list of file */ fn_Tree_vRefreshWithFileList( g_p_stRootProject, &g_stIniData.stCheckConfig ); m_lNumberOfFiles = fn_Tree_lBuildListOfFilesToGet( g_p_stRootProject, &d_szFile ); SCR_fn_v_Link_CloseTable( &g_stFileLinkTable ); SCR_fn_v_Link_InitTable( &g_stFileLinkTable ); for (lNbFiles = 0, lFile = 0; lFile < m_lNumberOfFiles ; lFile++) if ( fn_Tree_bConsiderFile( d_szFile[ lFile ] ) ) { m_p_oLBFiles->AddString( d_szFile[ lFile ] ); lNbFiles++; SCR_fnp_st_Link_AddEntry( &g_stFileLinkTable, d_szFile[ lFile ], 0, SCR_ELS_Link_Initialized ); } sprintf( szText, " Number of files : %d", lNbFiles ); GetDlgItem( IDC_STATIC_NUMBEROFFILES )->SetWindowText( szText ); fn_Tree_vFreeListOfFilesToGet( m_lNumberOfFiles, d_szFile ); m_lNumberOfFiles = lNbFiles; } /* ---------------------------------------------------------------------------------------- Description : LBN_SELCHANGE on IDC_LIST_SECTIONS ---------------------------------------------------------------------------------------- */ void CChkDataDlg::OnSelchangeListSections() { int iIndex = m_p_oLBSectionType->GetCurSel(); if (iIndex != LB_ERR ) m_p_stCurrentSectionType = (SCR_tdst_Link_Value *) m_p_oLBSectionType->GetItemData( iIndex ); else m_p_stCurrentSectionType = NULL; m_fn_vFillListEntry(); } /* ---------------------------------------------------------------------------------------- Description : LBN_SELCHANGE on IDC_LIST_ENTRIES ---------------------------------------------------------------------------------------- */ void CChkDataDlg::OnSelchangeListEntries() { int iIndex = m_p_oLBEntry->GetCurSel(); if (iIndex != LB_ERR ) m_p_stCurrentEntry = (tdstEntry *) m_p_oLBEntry->GetItemData( iIndex ); else m_p_stCurrentEntry = NULL; m_fn_vShowCurrentEntry(); } /* ---------------------------------------------------------------------------------------- Description : BN_CLICKED on IDC_BUTTON_SAVE ---------------------------------------------------------------------------------------- */ void CChkDataDlg::OnButtonSave() { fn_Scr_vSaveSectionTypes(); } /* ---------------------------------------------------------------------------------------- Description : BN_CLICKED on IDC_BUTTON_SECTIONANDREFS button ---------------------------------------------------------------------------------------- */ void CChkDataDlg::OnButtonSectionandrefs() { /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ long lFile; char szFileName[ MAX_PATH ]; char *p_szFileName; time_t lStartTime, lEndTime; SCR_tdst_Link_Value *p_stValue; SCR_tdst_Link_Value *p_stRefValue; unsigned int uiRef; long lNbErrors = 0; char szFullRef[ SCR_CV_ui_Cfg_MaxLenName ]; char cPath; BOOL bFile; /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ /* * init progression and display for working */ m_fn_vInitProgessBar( 0, m_lNumberOfFiles ); GetDlgItem( IDC_STATIC_NUMBEROFFILES )->ShowWindow( FALSE ); m_oProgress.ShowWindow(TRUE); fn_Scr_vFreeSectionList(); SCR_fn_v_Link_CloseTable( &g_stSectionLinkTable ); SCR_fn_v_Link_CloseTable( &g_stRefLinkTable ); SCR_fn_v_Link_InitTable( &g_stSectionLinkTable ); SCR_fn_v_Link_InitTable( &g_stRefLinkTable ); fn_Scr_vComputeSectionTypeHasRef( ); /* * get start time */ time( &lStartTime ); /* * reset use counters */ fn_Scr_vResetUsedCounters(); /* * parse each file */ strcpy( szFileName, g_stIniData.szRootForSection ); p_szFileName = szFileName + g_stIniData.lRootForSectionLength; for (lFile = 0; lFile < m_lNumberOfFiles; lFile++) { //m_p_oLBFiles->GetText( lFile, p_szFileName ); p_stValue = (SCR_tdst_Link_Value *) g_stFileLinkTable.stLinkArray.d_stDynArray[ lFile ].d_vElement; strcpy( p_szFileName, p_stValue->p_szKey ); m_p_oLBFiles->SetCurSel( lFile ); fn_Scr_vParseFileToBuildListOfSectionsAndRefs( szFileName ); //fn_Scr_vNewParseFileToBuildListOfSectionsAndRefs( szFileName, p_stValue ); m_oProgress.StepIt(); } /* * dump list in a file */ //m_fn_vDumpSectionAndRefsListInFile( "SctRefs.txt" ); m_fn_vInitProgessBar( 0, g_stRefLinkTable.stLinkArray.uiNumValues ); /* for (uiRef = 0; uiRef < g_stRefLinkTable.stLinkArray.uiNumValues; uiRef++) { SCR_M_DyAr_GetElement( SCR_tdst_Link_Value, uiRef, p_stRefValue, g_stRefLinkTable.stLinkArray ); // get referenced file p_szEndFileName = strchr( p_stRefValue->p_szKey, '^'); if (p_szEndFileName != NULL) *p_szEndFileName = 0; p_stLVFile = SCR_fnp_st_Link_SearchKey( &g_stFileLinkTable, p_stRefValue->p_szKey ); if (p_stLVFile == NULL) { for (cPath = 0; cPath < g_stIniData.cNumberOfDataPaths; cPath++) { sprintf( szFullRef, "%s\\%s", g_stIniData.a_stDataPath[cPath].szPath, p_stRefValue->p_szKey ); p_stLVFile = SCR_fnp_st_Link_SearchKey( &g_stFileLinkTable, szFullRef ); if (p_stLVFile != 0) break; } } if (p_stLVFile != 0) { if (p_szEndFileName == NULL) { p_stRefValue->stInfos.ulLong2 = 1; } else { *p_szEndFileName++ = '^'; if (p_stLVFile->ulValue) p_stLVSection = SCR_fnp_st_Link_SearchKey( (SCR_tdst_Link_Table *) p_stLVFile->ulValue, p_szEndFileName ); else p_stRefValue->stInfos.ulLong2 = 0; p_stRefValue->stInfos.ulLong2 = (unsigned long) p_stLVSection; } } else p_stRefValue->stInfos.ulLong2 = 0; m_oProgress.StepIt(); } */ for (uiRef = 0; uiRef < g_stRefLinkTable.stLinkArray.uiNumValues; uiRef++) { SCR_M_DyAr_GetElement( SCR_tdst_Link_Value, uiRef, p_stRefValue, g_stRefLinkTable.stLinkArray ); p_stValue = SCR_fnp_st_Link_SearchKey( &g_stSectionLinkTable, p_stRefValue->p_szKey ); if (p_stValue == NULL) { /* * test with all directory */ for (cPath = 0; cPath < g_stIniData.cNumberOfDataPaths; cPath++) { sprintf( szFullRef, "%s\\%s", g_stIniData.a_stDataPath[cPath].szPath, p_stRefValue->p_szKey ); p_stValue = SCR_fnp_st_Link_SearchKey( &g_stSectionLinkTable, szFullRef ); if (p_stValue != 0) break; } } p_stRefValue->stInfos.ulLong2 = (unsigned long) p_stValue; m_oProgress.StepIt(); } /* * get end time and display elapse time */ time( &lEndTime ); m_oProgress.ShowWindow(FALSE); GetDlgItem( IDC_STATIC_NUMBEROFFILES )->ShowWindow( TRUE ); m_fn_vDisplayLastOperationTime( lEndTime - lStartTime ); fn_vFillBadReferenceList(); } /* ---------------------------------------------------------------------------------------- Description : LBN_SELCHANGE on IDC_LIST_BADREF ---------------------------------------------------------------------------------------- */ void CChkDataDlg::OnSelchangeListBadref() { int iIndex = m_p_oLBBadRef->GetCurSel(); if (iIndex != LB_ERR ) m_p_stCurrentBadRef = (SCR_tdst_Link_Value *) m_p_oLBBadRef->GetItemData( iIndex ); else m_p_stCurrentBadRef = NULL; fn_vFillSectionWithBadReferenceList(); } /* ---------------------------------------------------------------------------------------- Description : BN_CLICKED on a Param button nID -> id of param button ---------------------------------------------------------------------------------------- */ void CChkDataDlg::OnButtonParam( UINT nID ) { char cParam = (char) (nID - IDC_CHECK_PARAM0 ); int iState; iState = m_a_poBtParam[ cParam ]->GetCheck(); m_p_stCurrentEntry->a_cIsRef[ cParam ] = iState; m_p_stCurrentEntry->cNumberOfRefs = 0; for (cParam = 0; cParam < m_p_stCurrentEntry->cNumberOfParams; cParam++) { if (m_p_stCurrentEntry->a_cIsRef[ cParam ]) m_p_stCurrentEntry->cNumberOfRefs++; } } /* ---------------------------------------------------------------------------------------- Description : BN_DBLCLK on IDC_LIST_SECTIONWITHBADREF ---------------------------------------------------------------------------------------- */ void CChkDataDlg::OnDblclkListSectionwithbadref() { int iIndex = m_p_oLBSectionWithBadRef->GetCurSel(); char szText[1024], *p_szText = szText; char szCommand[1024]; if (iIndex == LB_ERR) return; m_p_oLBSectionWithBadRef->GetText( iIndex, szText ); if ( (p_szText = strchr( szText, '^')) != NULL) *p_szText = 0; p_szText = szText; while (*p_szText++ != ']'); p_szText++; sprintf( szCommand, "Notepad %s%s", g_stIniData.szRootForSection, p_szText ); WinExec(szCommand, SW_SHOWNORMAL); } /* ---------------------------------------------------------------------------------------- Description : BN_CLICKED on IDC_BUTTON_STAT button ---------------------------------------------------------------------------------------- */ void CChkDataDlg::OnButtonStat() { /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ long lFile; char szFileName[ MAX_PATH ]; char *p_szFileName; time_t lStartTime, lEndTime; tdstScriptStat stStat; char *d_szStatText, *p_szStatText; /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ /* * init progression and display for working */ m_fn_vInitProgessBar( 0, m_lNumberOfFiles ); GetDlgItem( IDC_STATIC_NUMBEROFFILES )->ShowWindow( FALSE ); m_oProgress.ShowWindow(TRUE); /* * get start time */ fn_Scr_vInitStat( &stStat ); time( &lStartTime ); /* * parse each file */ strcpy( szFileName, g_stIniData.szRootForSection ); p_szFileName = szFileName + g_stIniData.lRootForSectionLength; for (lFile = 0; lFile < m_lNumberOfFiles; lFile++) { m_p_oLBFiles->GetText( lFile, p_szFileName ); m_p_oLBFiles->SetCurSel( lFile ); fn_Scr_vParseFileForStat( szFileName, &stStat ); m_oProgress.StepIt(); } /* * build stat text */ p_szStatText = d_szStatText = (char *) malloc ( 10000 ); p_szStatText += sprintf( p_szStatText, "Number of files -> %d\r\n", stStat.ulNbFiles ); p_szStatText += sprintf( p_szStatText, "Number of characters -> %d\r\n", stStat.ulNbChars ); p_szStatText += sprintf( p_szStatText, "Biggest file -> (%d) %s\r\n", stStat.ulMaxSize, stStat.szBiggestFile ); p_szStatText += sprintf( p_szStatText, "Number of lines -> %d\r\n", stStat.ulNbLines ); p_szStatText += sprintf( p_szStatText, " Directives -> %d\r\n", stStat.ulNbDirectiveLines ); p_szStatText += sprintf( p_szStatText, " Begin section -> %d\r\n", stStat.ulNbBeginSectionLines ); p_szStatText += sprintf( p_szStatText, " End section -> %d\r\n", stStat.ulNbEndSectionLines ); p_szStatText += sprintf( p_szStatText, " Entries -> %d\r\n", stStat.ulNbEntryLines ); p_szStatText += sprintf( p_szStatText, "Max sections in a file -> %d (%s)\r\n", stStat.ulNbMaxSectionInAFile, stStat.szFileWithMaxSection); p_szStatText += sprintf( p_szStatText, "Section name first part\r\n" ); p_szStatText += sprintf( p_szStatText, " Min -> (%d) %s\r\n", stStat.ulSectionNameMinLength, stStat.szSectionNameMin ); p_szStatText += sprintf( p_szStatText, " Max -> (%d) %s\r\n", stStat.ulSectionNameMaxLength, stStat.szSectionNameMax ); p_szStatText += sprintf( p_szStatText, "Section name second part\r\n" ); p_szStatText += sprintf( p_szStatText, " Max -> (%d) %s\r\n", stStat.ulSectionExtMaxLength, stStat.szSectionExtMax ); p_szStatText += sprintf( p_szStatText, " Average -> %f\r\n", stStat.fSectionExtAverageLength ); p_szStatText += sprintf( p_szStatText, "Entry name\r\n" ); p_szStatText += sprintf( p_szStatText, " Min -> (%d) %s\r\n", stStat.ulEntryMinLength, stStat.szEntryMin ); p_szStatText += sprintf( p_szStatText, " Max -> (%d) %s\r\n", stStat.ulEntryMaxLength, stStat.szEntryMax ); p_szStatText += sprintf( p_szStatText, "Format max length -> %d\r\n", stStat.ulFormatMaxLength ); p_szStatText += sprintf( p_szStatText, "Params max number -> %d\r\n", stStat.cMaxParams ); p_szStatText += sprintf( p_szStatText, "Params max length -> %d\r\n", stStat.ulParamsMaxLength ); GetDlgItem( IDC_EDIT_STAT )->SetWindowText( d_szStatText ); free ( d_szStatText ); /* * get end time and display elapse time */ time( &lEndTime ); m_oProgress.ShowWindow(FALSE); GetDlgItem( IDC_STATIC_NUMBEROFFILES )->ShowWindow( TRUE ); m_fn_vDisplayLastOperationTime( lEndTime - lStartTime ); } /* ---------------------------------------------------------------------------------------- Description : BN_CLICKED on IDC_BUTTON_PROCESS button ---------------------------------------------------------------------------------------- */ void CChkDataDlg::OnButtonModstat() { /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ long lFile; char szFileName[ MAX_PATH ]; char *p_szFileName; time_t lStartTime, lEndTime; tdstModStat stStat; char *d_szStatText, *p_szStatText; /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ /* * init progression and display for working */ m_fn_vInitProgessBar( 0, m_lNumberOfFiles ); GetDlgItem( IDC_STATIC_NUMBEROFFILES )->ShowWindow( FALSE ); m_oProgress.ShowWindow(TRUE); fn_Scr_vInitModStat( &stStat ); /* * get start time */ time( &lStartTime ); /* * parse each file */ strcpy( szFileName, g_stIniData.szRootForSection ); p_szFileName = szFileName + g_stIniData.lRootForSectionLength; for (lFile = 0; lFile < m_lNumberOfFiles; lFile++) { m_p_oLBFiles->GetText( lFile, p_szFileName ); m_p_oLBFiles->SetCurSel( lFile ); if ( strstr( szFileName, ".mod") ) fn_Scr_vParseFileToCountModData( szFileName, &stStat ); m_oProgress.StepIt(); } /* * get end time and display elapse time */ time( &lEndTime ); m_oProgress.ShowWindow(FALSE); GetDlgItem( IDC_STATIC_NUMBEROFFILES )->ShowWindow( TRUE ); m_fn_vDisplayLastOperationTime( lEndTime - lStartTime ); /* * build stat text */ p_szStatText = d_szStatText = (char *) malloc ( 10000 ); p_szStatText += sprintf( p_szStatText, "Number of Object -> %d\r\n", stStat.ulNumber ); p_szStatText += sprintf( p_szStatText, "Number of Points -> %d - %d\r\n", stStat.ulMinPoints, stStat.ulMaxPoints ); p_szStatText += sprintf( p_szStatText, "Number of Edges -> %d - %d\r\n", stStat.ulMinEdges, stStat.ulMaxEdges ); p_szStatText += sprintf( p_szStatText, "Number of Element -> %d - %d\r\n", stStat.ulMinElement, stStat.ulMaxElement ); GetDlgItem( IDC_EDIT_STAT )->SetWindowText( d_szStatText ); free ( d_szStatText ); }