Update of /cvsroot/anyedit/AnyEditv2
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19983
Added Files:
FilePropWordCount.cpp FilePropWordCount.h
Log Message:
Page to show statistical file informations.
--- NEW FILE: FilePropWordCount.cpp ---
// FilePropWordCount.cpp: Implementierungsdatei
//
#include "stdafx.h"
#include "anyedit.h"
#include "FilePropWordCount.h"
#include "AnyEditDoc.h"
#include "AnyEditView.h"
#include "FilePropertyDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// Dialogfeld CFilePropWordCount
CFilePropWordCount::CFilePropWordCount(CWnd* pParent /*=NULL*/)
: CPropertyPage(CFilePropWordCount::IDD)
{
//{{AFX_DATA_INIT(CFilePropWordCount)
// HINWEIS: Der Klassen-Assistent fügt hier Elementinitialisierung ein
//}}AFX_DATA_INIT
m_pFileProp = NULL;
}
void CFilePropWordCount::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CFilePropWordCount)
// HINWEIS: Der Klassen-Assistent fügt hier DDX- und DDV-Aufrufe ein
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CFilePropWordCount, CPropertyPage)
//{{AFX_MSG_MAP(CFilePropWordCount)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// Behandlungsroutinen für Nachrichten CFilePropWordCount
BOOL CFilePropWordCount::OnInitDialog()
{
CPropertyPage::OnInitDialog();
SetDlgItemText(IDC_EDIT_LINEMARKS, _T("1"));
SetDlgItemText(IDC_EDIT_WHOLE_WORD, _T("0"));
SetDlgItemText(IDC_EDIT_TEXT, _T("0"));
SetDlgItemText(IDC_EDIT_COUNT_ALL, _T("0"));
SetDlgItemText(IDC_EDIT_RADIO1, _T(""));
SetDlgItemText(IDC_EDIT_RADIO2, _T(""));
SetDlgItemText(IDC_EDIT_RADIO3, _T(""));
SetDlgItemText(IDC_EDIT_RADIO4, _T(""));
CString strFileName;
if (m_pFileProp)
{
strFileName = m_pFileProp->m_strTempFilePath;
long lCharCount = 0;
long lLineCount = 0;
long lSpaceCount = 0;
long lWordCount = 0;
if (!strFileName.IsEmpty() &&
CountWords(strFileName,
lCharCount, lLineCount, lSpaceCount, lWordCount))
{
TCHAR szFormat[32] = {0};
wsprintf(szFormat, _T("%d"), lLineCount);
SetDlgItemText(IDC_EDIT_LINEMARKS, szFormat);
wsprintf(szFormat, _T("%d"), lWordCount);
SetDlgItemText(IDC_EDIT_WHOLE_WORD, szFormat);
wsprintf(szFormat, _T("%d"), lCharCount);
SetDlgItemText(IDC_EDIT_TEXT, szFormat);
wsprintf(szFormat, _T("%d"), lSpaceCount + lCharCount);
SetDlgItemText(IDC_EDIT_COUNT_ALL, szFormat);
}
strFileName = m_pFileProp->m_strSelFilePath;
if (! strFileName.IsEmpty())
{
if (CountWords(strFileName,
lCharCount, lLineCount, lSpaceCount, lWordCount))
{
TCHAR szFormat[32] = {0};
wsprintf(szFormat, _T("%d"), lLineCount);
SetDlgItemText(IDC_EDIT_RADIO1, szFormat);
wsprintf(szFormat, _T("%d"), lWordCount);
SetDlgItemText(IDC_EDIT_RADIO2, szFormat);
wsprintf(szFormat, _T("%d"), lCharCount);
SetDlgItemText(IDC_EDIT_RADIO3, szFormat);
wsprintf(szFormat, _T("%d"), lSpaceCount + lCharCount);
SetDlgItemText(IDC_EDIT_RADIO4, szFormat);
}
}
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX-Eigenschaftenseiten sollten FALSE zurückgeben
}
bool CFilePropWordCount::CountWords(LPCTSTR lpszFileName,
long& lCharCount, long& lLineCount, long& lSpaceCount, long& lWordCount)
{
if (lpszFileName == NULL)
return false;
ATLASSERT(lpszFileName);
lCharCount = 0;
lLineCount = 0;
lSpaceCount = 0;
lWordCount = 0;
FILE* pFile = _tfopen(lpszFileName, _T("rb"));
if (pFile != NULL)
{
int c = 0, nState = 0;
const int chNewLine = _T('\n');
while ((c = _gettc(pFile)) != EOF)
{
if (!_istspace(c))
++lCharCount;
if (c == chNewLine)
++lLineCount;
if (_istspace(c))
{
nState = 0;
if (!_istcntrl(c))
++lSpaceCount;
}
else if (nState == 0)
{
nState = 1;
++lWordCount;
}
}
fclose(pFile);
return true;
}
return false;
}
void CFilePropWordCount::SetFileInfo(CFileProperty *pFileInfo)
{
m_pFileProp = pFileInfo;
}
--- NEW FILE: FilePropWordCount.h ---
(This appears to be a binary file; contents omitted.)
|