259 lines
6.4 KiB
C++
259 lines
6.4 KiB
C++
/************************************************************************
|
|
* *
|
|
* FORAGEDL.CPP *
|
|
* *
|
|
* Copyright (C) Microsoft Corporation 1995 *
|
|
* All Rights reserved. *
|
|
* *
|
|
************************************************************************/
|
|
#include "stdafx.h"
|
|
#include "resource.h"
|
|
#pragma hdrstop
|
|
|
|
#include "foragedl.h"
|
|
|
|
#ifdef _DEBUG
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CForageDlg dialog
|
|
|
|
CForageDlg::CForageDlg(CString* pcszHelpFile, CString* pcszOutFile,
|
|
FORAGE_CMD* pfForage, CWnd* pParent /*=NULL*/)
|
|
: CDialog(CForageDlg::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(CForageDlg)
|
|
m_cszHelpFile = *pcszHelpFile;
|
|
m_cszOutputFile = *pcszOutFile;
|
|
//}}AFX_DATA_INIT
|
|
pfForageCmd = pfForage;
|
|
pszSaveHelpFile = pcszHelpFile;
|
|
pszSaveOutFile = pcszOutFile;
|
|
pforageFile = new CFileHistory(IDS_HISTORY_FORAGE);
|
|
pcomboHlp = NULL;
|
|
}
|
|
|
|
CForageDlg::~CForageDlg()
|
|
{
|
|
delete pforageFile;
|
|
}
|
|
|
|
void CForageDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CForageDlg)
|
|
DDX_CBString(pDX, IDC_COMBO_HELP_FILES, m_cszHelpFile);
|
|
DDV_MaxChars(pDX, m_cszHelpFile, 256);
|
|
DDV_EmptyFile(pDX, m_cszHelpFile, IDS_PROMPT_EMPTY_FILENAME);
|
|
DDX_CBString(pDX, IDC_COMBO_FORAGE_FILES, m_cszOutputFile);
|
|
DDV_MaxChars(pDX, m_cszOutputFile, 256);
|
|
//}}AFX_DATA_MAP
|
|
|
|
if (pDX->m_bSaveAndValidate) {
|
|
int id = GetCheckedRadioButton(IDC_LIST_TITLES, IDC_LIST_ALINK);
|
|
if (id != IDC_MULTI_INDEX)
|
|
DDV_EmptyFile(pDX, m_cszOutputFile, IDS_OUTPUT_REQUIRED);
|
|
}
|
|
if (!pcomboHlp)
|
|
pcomboHlp = (CComboBox*) GetDlgItem(IDC_COMBO_HELP_FILES);
|
|
|
|
// make certain we have a filename
|
|
|
|
if (!pDX->m_bSaveAndValidate) {
|
|
phlpFile->FillComboBox(pcomboHlp);
|
|
pforageFile->FillComboBox(
|
|
(CComboBox*) GetDlgItem(IDC_COMBO_FORAGE_FILES));
|
|
|
|
((CButton*) GetDlgItem(IDOK))->EnableWindow(FALSE);
|
|
|
|
switch (*pfForageCmd) {
|
|
|
|
case ForageRegions:
|
|
CheckDlgButton(IDC_LIST_REGION, TRUE);
|
|
break;
|
|
|
|
case ForageStructs:
|
|
CheckDlgButton(IDC_LIST_STRUCTURE, TRUE);
|
|
break;
|
|
|
|
case ForageText:
|
|
CheckDlgButton(IDC_LIST_TEXT, TRUE);
|
|
break;
|
|
|
|
case ForageKLinkInfo:
|
|
CheckDlgButton(IDC_LIST_KLINK, TRUE);
|
|
break;
|
|
|
|
case ForageBindings:
|
|
CheckDlgButton(IDC_LIST_BINDINGS, TRUE);
|
|
break;
|
|
|
|
case ForageHash:
|
|
CheckDlgButton(IDC_LIST_HASH, TRUE);
|
|
break;
|
|
|
|
case ForageALinkInfo:
|
|
CheckDlgButton(IDC_LIST_ALINK, TRUE);
|
|
break;
|
|
|
|
case ForageTopics:
|
|
default:
|
|
CheckDlgButton(IDC_LIST_TITLES, TRUE);
|
|
break;
|
|
}
|
|
SetChicagoDialogStyles(m_hWnd);
|
|
|
|
// If a filename wasn't specified when we were called, then
|
|
// select the first filename in our list, which will be the
|
|
// last filename compiled.
|
|
|
|
if (m_cszHelpFile.IsEmpty()) {
|
|
pcomboHlp->SetCurSel(0);
|
|
pcomboHlp->SetEditSel(0, -1);
|
|
((CButton*) GetDlgItem(IDOK))->EnableWindow(
|
|
pcomboHlp->GetCount() ? TRUE : FALSE);
|
|
}
|
|
else
|
|
((CButton*) GetDlgItem(IDOK))->EnableWindow(TRUE);
|
|
|
|
if (m_cszOutputFile.IsEmpty()) {
|
|
((CComboBox*) GetDlgItem(IDC_COMBO_FORAGE_FILES))->
|
|
SetCurSel(0);
|
|
((CComboBox*) GetDlgItem(IDC_COMBO_FORAGE_FILES))->
|
|
SetEditSel(0, -1);
|
|
}
|
|
}
|
|
else {
|
|
switch (GetCheckedRadioButton(IDC_LIST_TITLES, IDC_LIST_ALINK)) {
|
|
case IDC_LIST_TITLES:
|
|
*pfForageCmd = ForageTopics;
|
|
break;
|
|
|
|
case IDC_LIST_BINDINGS:
|
|
*pfForageCmd = ForageBindings;
|
|
break;
|
|
|
|
case IDC_LIST_HASH:
|
|
*pfForageCmd = ForageHash;
|
|
break;
|
|
|
|
case IDC_LIST_REGION:
|
|
*pfForageCmd = ForageRegions;
|
|
break;
|
|
|
|
case IDC_LIST_STRUCTURE:
|
|
*pfForageCmd = ForageStructs;
|
|
break;
|
|
|
|
case IDC_LIST_TEXT:
|
|
*pfForageCmd = ForageText;
|
|
break;
|
|
|
|
case IDC_LIST_KLINK:
|
|
*pfForageCmd = ForageKLinkInfo;
|
|
break;
|
|
|
|
case IDC_LIST_ALINK:
|
|
*pfForageCmd = ForageALinkInfo;
|
|
break;
|
|
|
|
}
|
|
*pszSaveOutFile = m_cszOutputFile;
|
|
pforageFile->Add(m_cszOutputFile);
|
|
*pszSaveHelpFile = m_cszHelpFile;
|
|
phlpFile->Add(m_cszHelpFile);
|
|
}
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(CForageDlg, CDialog)
|
|
//{{AFX_MSG_MAP(CForageDlg)
|
|
ON_BN_CLICKED(IDC_BROWSE, OnBrowse)
|
|
ON_CBN_CLOSEUP(IDC_COMBO_HELP_FILES, OnCloseupComboHelpFiles)
|
|
ON_CBN_EDITCHANGE(IDC_COMBO_HELP_FILES, OnEditchangeComboHelpFiles)
|
|
//}}AFX_MSG_MAP
|
|
ON_MESSAGE(WM_CONTEXTMENU, OnContextMenu)
|
|
ON_MESSAGE(WM_HELP, OnHelp)
|
|
END_MESSAGE_MAP()
|
|
|
|
void CForageDlg::OnBrowse()
|
|
{
|
|
CStr cszExt(IDS_EXT_HLP);
|
|
|
|
CFileDialog cfdlg(TRUE, cszExt, NULL,
|
|
OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST,
|
|
GetStringResource(IDS_HLP_EXTENSION));
|
|
|
|
if (cfdlg.DoModal() == IDOK) {
|
|
|
|
/*
|
|
* Contrary to the docs, the extension is not always added,
|
|
* so we make sure it gets added here.
|
|
*/
|
|
|
|
char szFile[_MAX_PATH];
|
|
strcpy(szFile, cfdlg.GetPathName());
|
|
PSTR psz = StrRChr(szFile, '.', _fDBCSSystem);
|
|
if (!psz)
|
|
ChangeExtension(szFile, cszExt);
|
|
|
|
pcomboHlp->SetWindowText(cfdlg.GetPathName());
|
|
((CButton*) GetDlgItem(IDOK))->EnableWindow(
|
|
(pcomboHlp->GetWindowTextLength() > 0));
|
|
}
|
|
}
|
|
|
|
void CForageDlg::OnCloseupComboHelpFiles()
|
|
{
|
|
/*
|
|
* The text (if any) hasn't been filled in at this point, so we
|
|
* have no way of knowing whether or not the edit field contains
|
|
* anything as a result of closing the combo-box. So, we just post
|
|
* ourselves a change message to check after the combo-box has
|
|
* finished filling in the edit control.
|
|
*/
|
|
|
|
PostMessage(WM_COMMAND, IDC_COMBO_HELP_FILES,
|
|
MAKELPARAM(GetDlgItem(IDC_COMBO_HELP_FILES)->m_hWnd,
|
|
CBN_EDITCHANGE));
|
|
}
|
|
|
|
void CForageDlg::OnEditchangeComboHelpFiles()
|
|
{
|
|
// Enable OK button if combo text box is non-zero
|
|
|
|
((CButton*) GetDlgItem(IDOK))->EnableWindow(
|
|
(pcomboHlp->GetWindowTextLength() > 0));
|
|
}
|
|
|
|
static const DWORD aHelpIds[] = {
|
|
IDC_COMBO_HELP_FILES, IDH_COMBO_REPORT_HELP,
|
|
IDC_BROWSE, IDH_BTN_REPORT_BROWSE,
|
|
IDC_COMBO_FORAGE_FILES, IDH_COMBO_REPORT_OUTPUT,
|
|
IDC_LIST_TITLES, IDH_LIST_TITLES,
|
|
IDC_LIST_HASH, IDH_LIST_HASH,
|
|
IDC_LIST_KLINK, IDH_LIST_K_KEYWORDS,
|
|
IDC_LIST_ALINK, IDH_LIST_A_KEYWORDS,
|
|
IDC_LIST_TEXT, IDH_LIST_TEXT,
|
|
IDOK, IDH_BTN_REPORT_OKAY,
|
|
IDC_GROUP, (DWORD) -1L,
|
|
0, 0
|
|
};
|
|
|
|
LRESULT CForageDlg::OnContextMenu(WPARAM wParam, LPARAM lParam)
|
|
{
|
|
::WinHelp((HWND) wParam,
|
|
AfxGetApp()->m_pszHelpFilePath,
|
|
HELP_CONTEXTMENU, (DWORD) (LPVOID) aHelpIds);
|
|
return 0;
|
|
}
|
|
|
|
LRESULT CForageDlg::OnHelp(WPARAM wParam, LPARAM lParam)
|
|
{
|
|
::WinHelp((HWND) ((LPHELPINFO) lParam)->hItemHandle,
|
|
AfxGetApp()->m_pszHelpFilePath,
|
|
HELP_WM_HELP, (DWORD) (LPVOID) aHelpIds);
|
|
return 0;
|
|
}
|