home *** CD-ROM | disk | FTP | other *** search
- // chooser.cpp : Implements the CDialogChooser class
- //
-
- #include "stdafx.h"
- #include "$$root$$.h"
- #include "chooser.h"
- $$BEGINLOOP(NUM_NEW_STEPS)
- #include "cstm$$ITERATOR$$dlg.h"
- $$ENDLOOP
- $$IF(APWZSEQ_EXE)
- #include "$$filebase$$aw.h"
- $$ENDIF //APWZSEQ_EXE
-
- #ifdef _PSEUDO_DEBUG
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
-
- // On construction, set up internal array with pointers to each step.
- CDialogChooser::CDialogChooser()
- {
- m_pDlgs[0] = NULL;
- $$IF(APWZSEQ_EXE)
-
- m_pDlgs[1] = GetDialog(APWZDLG_APPTYPE);
- m_pDlgs[2] = GetDialog(APWZDLG_DATABASE);
- m_pDlgs[3] = GetDialog(APWZDLG_OLE);
- m_pDlgs[4] = GetDialog(APWZDLG_DOCAPPOPTIONS);
- m_pDlgs[5] = GetDialog(APWZDLG_PROJOPTIONS);
- m_pDlgs[6] = GetDialog(APWZDLG_CLASSES);
- m_pDlgs[7] = GetDialog(APWZDLG_DLGAPPOPTIONS);
- $$ELIF(APWZSEQ_DLL)
-
- m_pDlgs[1] = GetDialog(APWZDLG_DLLPROJOPTIONS);
- $$ENDIF //APWZSEQ_EXE,_DLL
- $$IF(HAS_NEW_STEPS)
-
- $$BEGINLOOP(NUM_NEW_STEPS)
- m_pDlgs[$$MPDLGS_INDEX$$] = new CCustom$$ITERATOR$$Dlg;
- $$ENDLOOP
- $$ENDIF //HAS_NEW_STEPS
-
- m_nCurrDlg = 0;
- $$IF(APWZSEQ_EXE)
- m_nTrack = 0;
- $$ENDIF
- }
- $$IF(HAS_NEW_STEPS)
- // Remember where the custom steps begin, so we can delete them in
- // the destructor
- #define FIRST_CUSTOM_STEP $$MPDLGS_INDEX_0$$
- #define LAST_CUSTOM_STEP $$MPDLGS_INDEX_LAST$$
- $$ENDIF //HAS_NEW_STEPS
- $$IF(APWZSEQ_EXE)
-
- // Set up arrays of indices to simulate behavior of AppWizard (i.e., to have
- // separate "tracks" for an MDI/SDI app and a dialog-based app).
- static int nDocTrack[] = {0, 1, 2, 3, 4, 5, 6$$CUSTOM_INDICES$$};
- static int nDlgTrack[] = {0, 1, 7, 5, 6$$CUSTOM_INDICES$$};
- static int* pnTrack[] = {nDocTrack, nDlgTrack};
- static int nLast[] = {$$LAST_DOCTRACK_INDEX$$, $$LAST_DLGTRACK_INDEX$$};
- $$ENDIF //APWZSEQ_EXE
- $$IF(HAS_NEW_STEPS)
-
- // The destructor deletes entries in the internal array corresponding to
- // custom steps.
- CDialogChooser::~CDialogChooser()
- {
- $$IF(CUSTOMTYPE_SEQUENCE)
- // NOTE: Be sure to delete all of your custom steps here, but don't delete
- // any standard AppWizard steps you got through the GetDialog API.
- $$ENDIF //CUSTOMTYPE_SEQUENCE
- for (int i = FIRST_CUSTOM_STEP; i <= LAST_CUSTOM_STEP; i++)
- {
- ASSERT(m_pDlgs[i] != NULL);
- delete m_pDlgs[i];
- }
- }
- $$ENDIF //HAS_NEW_STEPS
-
- // Use the internal array to determine the next step.
- CAppWizStepDlg* CDialogChooser::Next(CAppWizStepDlg* pDlg)
- {
- $$IF(APWZSEQ_EXE)
- ASSERT(m_nTrack == 0 || m_nTrack == 1);
- ASSERT(0 <= m_nCurrDlg && m_nCurrDlg < nLast[m_nTrack]);
- ASSERT(pDlg == m_pDlgs[(pnTrack[m_nTrack])[m_nCurrDlg]]);
-
- // If the current step is the "project type" step, the AppWizard "track" may
- // have changed.
- if (m_nCurrDlg == 1)
- {
- CString strTemp;
- m_nTrack = $$safe_root$$aw.m_Dictionary.Lookup(_T("PROJTYPE_DLG"), strTemp) ? 1 : 0;
- SetNumberOfSteps(nLast[m_nTrack]);
- }
-
- m_nCurrDlg++;
-
- // If the new step is the "project type" step, don't display the max number
- // of steps.
- if (m_nCurrDlg == 1)
- SetNumberOfSteps(-1);
-
- return m_pDlgs[(pnTrack[m_nTrack])[m_nCurrDlg]];
- $$ELSE //!APWZSEQ_EXE
- ASSERT(0 <= m_nCurrDlg && m_nCurrDlg < LAST_DLG);
- ASSERT(pDlg == m_pDlgs[m_nCurrDlg]);
-
- m_nCurrDlg++;
- return m_pDlgs[m_nCurrDlg];
- $$ENDIF //APWZSEQ_EXE
- }
-
- // Use the internal array to determine the previous step.
- CAppWizStepDlg* CDialogChooser::Back(CAppWizStepDlg* pDlg)
- {
- $$IF(APWZSEQ_EXE)
- ASSERT(m_nTrack == 0 || m_nTrack == 1);
- ASSERT(1 <= m_nCurrDlg && m_nCurrDlg <= nLast[m_nTrack]);
- ASSERT(pDlg == m_pDlgs[(pnTrack[m_nTrack])[m_nCurrDlg]]);
-
- m_nCurrDlg--;
-
- // If the new step is the "project type" step, don't display the max number
- // of steps.
- if (m_nCurrDlg == 1)
- SetNumberOfSteps(-1);
-
- return m_pDlgs[(pnTrack[m_nTrack])[m_nCurrDlg]];
- $$ELSE //!APWZSEQ_EXE
- ASSERT(1 <= m_nCurrDlg && m_nCurrDlg <= LAST_DLG);
- ASSERT(pDlg == m_pDlgs[m_nCurrDlg]);
-
- m_nCurrDlg--;
- return m_pDlgs[m_nCurrDlg];
- $$ENDIF //APWZSEQ_EXE
- }
-