///////////////////////////////////////////////////////////////////////////// // Options.cpp : implementation file // // Copyright (C) 1992-1998 Microsoft Corporation // All rights reserved. #include "stdafx.h" #include "API2Help.h" #include "Options.h" #include #include #include "APISplit.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // COptions dialog COptions::COptions(CString strSelectedAPI, CWnd* pParent /*=NULL*/) : CDialog(COptions::IDD, pParent) { m_strPrototype = strSelectedAPI; //{{AFX_DATA_INIT(COptions) //}}AFX_DATA_INIT } void COptions::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(COptions) DDX_Control(pDX, IDC_TOPICIDEDIT, m_TopicID); DDX_Control(pDX, IDC_TOPICNAME, m_TopicName); DDX_Control(pDX, IDC_STATIC4, m_Static4); DDX_Control(pDX, IDC_STATIC3, m_Static3); DDX_Control(pDX, IDC_STATIC2, m_Static2); DDX_Control(pDX, IDC_STATIC1, m_Static1); DDX_Control(pDX, IDC_RTFFILENAME, m_RTFFileName); DDX_Control(pDX, IDC_RTF, m_RTF); DDX_Control(pDX, IDC_HTMLFILENAME, m_HTMLFileName); DDX_Control(pDX, IDC_HTML, m_HTML); DDX_Control(pDX, IDC_BROWSERTF, m_BrowseRTF); DDX_Control(pDX, IDC_BROWSEHTML, m_BrowseHTML); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(COptions, CDialog) //{{AFX_MSG_MAP(COptions) ON_BN_CLICKED(IDC_HTML, OnHTML) ON_BN_CLICKED(IDC_RTF, OnRTF) ON_BN_CLICKED(IDC_BROWSEHTML, OnBrowseHTML) ON_BN_CLICKED(IDC_BROWSERTF, OnBrowseRTF) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // COptions message handlers void COptions::OnHTML() { if (m_HTML.GetCheck() == 1) { m_Static3.EnableWindow(); m_HTMLFileName.EnableWindow(); m_BrowseHTML.EnableWindow(); } else { m_Static3.EnableWindow(FALSE); m_HTMLFileName.EnableWindow(FALSE); m_BrowseHTML.EnableWindow(FALSE); } } void COptions::OnRTF() { if (m_RTF.GetCheck() == 1) { m_Static1.EnableWindow(); m_Static2.EnableWindow(); m_Static4.EnableWindow(); m_RTFFileName.EnableWindow(); m_TopicID.EnableWindow(); m_TopicName.EnableWindow(); m_BrowseRTF.EnableWindow(); } else { m_Static1.EnableWindow(FALSE); m_Static2.EnableWindow(FALSE); m_Static4.EnableWindow(FALSE); m_RTFFileName.EnableWindow(FALSE); m_TopicID.EnableWindow(FALSE); m_TopicName.EnableWindow(FALSE); m_BrowseRTF.EnableWindow(FALSE); } } void COptions::OnBrowseHTML() { CString strFileSpec; strFileSpec.LoadString(IDS_HTMLFILESPEC); CFileDialog Browser(FALSE, "", "", OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, strFileSpec); if (Browser.DoModal() == IDOK) { m_HTMLFileName.SetWindowText(Browser.GetPathName()); } } void COptions::OnBrowseRTF() { CString strFileSpec; strFileSpec.LoadString(IDS_RTFFILESPEC); CFileDialog Browser(FALSE, "", "", OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, strFileSpec); if(Browser.DoModal() == IDOK) { m_RTFFileName.SetWindowText(Browser.GetPathName()); } } void COptions::OnOK() { if ((m_RTF.GetCheck() == 0) && (m_HTML.GetCheck() == 0)) { CString strNoneSel; strNoneSel.LoadString(IDS_NONESEL); AfxMessageBox(strNoneSel); return; } else { BOOL bRTF = FALSE; BOOL bHTML = FALSE; CString strFuncName; CString strNewFunc; CString strReturn; CString strSuggestedReturn; CString strParameters; CArray Scoping; CArray ReturnsArray; CArray ParamList; CArray ParamNames; CArray ParamDescription; int nAppendStar = 0; ConvertWSToSpace (m_strPrototype); //Remove all multiple instances of ' ' (double space). RemoveUnnecessary(m_strPrototype); int nBeginningOfParameters = GetParameters(strParameters, m_strPrototype, ParamList); strFuncName = m_strPrototype.Left(nBeginningOfParameters); GetListOfParamNames(ParamList, ParamNames); //At this point, all parameters have been located. // Now find the function name strFuncName.TrimRight(); strReturn = strFuncName; strFuncName = strFuncName.Right(strFuncName.GetLength()-strFuncName.ReverseFind(' ')); strFuncName.TrimLeft(); //Check to make sure there is a '(' and a ')', and the '(' is before the ')' //strFuncName //Now, we have a function name, but this function could be of the form // class1::class2::...::classn::function. Try to split off each scope, // and build a list of these scopings (this list is not used in this // version). GetFunctAndScope(strFuncName, Scoping, strNewFunc); //Remove '*' from the function name, and count them for adding // onto the return type. if (strNewFunc != "") { while (strNewFunc[0] == '*') { strNewFunc.SetAt(0,' '); strNewFunc.TrimLeft(); nAppendStar++; } } GetReturnType(strReturn, ReturnsArray, strSuggestedReturn, nAppendStar); if ((m_RTF.GetCheck() == 0) && (m_HTML.GetCheck() == 0)) CDialog::OnOK(); if (m_RTF.GetCheck() == 1) { CString strFileName; m_RTFFileName.GetWindowText(strFileName); strFileName.TrimLeft(); strFileName.TrimRight(); if (strFileName.GetLength() == 0) { AfxMessageBox(IDS_NOFILE); return; } else if(m_TopicID.GetWindowTextLength() == 0) { AfxMessageBox(IDS_NOTOPICID); return; } else if(m_TopicName.GetWindowTextLength() == 0) { AfxMessageBox(IDS_NOTOPICNAME); return; } else { CString strID, strTopicName; m_TopicID.GetWindowText(strID); m_TopicName.GetWindowText(strTopicName); GenerateHelpFile(strFileName, strFuncName, strNewFunc, ParamList, ParamNames, strSuggestedReturn, strID, strTopicName); } } if (m_HTML.GetCheck() == 1) { CString strFileName; m_HTMLFileName.GetWindowText(strFileName); strFileName.TrimLeft(); strFileName.TrimRight(); if (strFileName.GetLength() == 0) { AfxMessageBox(IDS_NOFILEHTML); return; } else { GenerateHTML(strFileName, strFuncName, strNewFunc, ParamList, ParamNames, strSuggestedReturn); } } AfxMessageBox(IDS_FINISHED); CDialog::OnOK(); } }