Logo Search packages:      
Sourcecode: pwlib version File versions

cstm1dlg.cpp

// cstm1dlg.cpp : implementation file
//

#include "stdafx.h"
#include "MsDevWizard.h"
#include "cstm1dlg.h"
#include "MsDevWizardaw.h"

#include <stdlib.h>
#include <time.h>
#include <io.h>

#ifdef _PSEUDO_DEBUG
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CCustom1Dlg dialog


CCustom1Dlg::CCustom1Dlg()
      : CAppWizStepDlg(CCustom1Dlg::IDD)
{
      //{{AFX_DATA_INIT(CCustom1Dlg)
      m_class_name = _T("");
      m_manufacturer = _T("Equivalence");
      m_copyright_holder = _T("Equivalence Pty. Ltd.");
      m_product_name = _T("");
      m_product_type = 0;
      m_exe_name = _T("");
      m_pwlib_dir = _T("");
      m_use_dlls = TRUE;
      //}}AFX_DATA_INIT
}


void CCustom1Dlg::DoDataExchange(CDataExchange* pDX)
{
      CAppWizStepDlg::DoDataExchange(pDX);
      //{{AFX_DATA_MAP(CCustom1Dlg)
      DDX_Text(pDX, IDC_CLASS_NAME, m_class_name);
      DDX_Text(pDX, IDC_MANUFACTURER, m_manufacturer);
      DDX_Text(pDX, IDC_COPYRIGHT_HOLDER, m_copyright_holder);
      DDX_Text(pDX, IDC_PRODUCT_NAME, m_product_name);
      DDX_Radio(pDX, IDC_TEXT_ONLY, m_product_type);
      DDX_Text(pDX, IDC_EXE_NAME, m_exe_name);
      DDX_Text(pDX, IDC_PWLIB_DIR, m_pwlib_dir);
      DDX_Check(pDX, IDC_USE_DLL, m_use_dlls);
      //}}AFX_DATA_MAP
}

static void SetDictionaryKey(const char * key, BOOL value)
{
  if (value)
    MsDevWizardaw.m_Dictionary[key] = key;
  else
    MsDevWizardaw.m_Dictionary.RemoveKey(key);
}

// This is called whenever the user presses Next, Back, or Finish with this step
//  present.  Do all validation & data exchange from the dialog in this function.
BOOL CCustom1Dlg::OnDismiss()
{
      if (!UpdateData(TRUE))
            return FALSE;

        // Strip .exe off end of string (if there is one)
        CString lower_exe = m_exe_name;
        lower_exe.MakeLower();
        int pos = lower_exe.Find(".exe");
        if (pos >= 0)
          m_exe_name = m_exe_name.Mid(pos);

        static const struct {
          const char * product_type;
          const char * parent_app_class;
          const char * parent_win_class;
          const char * header_file;
          BOOL is_gui;
          BOOL is_service;
          BOOL has_http;
          BOOL has_signature;
        } product_type_strings[] = {
          { "Text Only", "PProcess",            "",                "ptlib.h", FALSE, FALSE, FALSE, FALSE },
          { "GUI",       "PApplication",        "PTopLevelWindow", "pwlib.h", TRUE,  FALSE, FALSE, FALSE },
          { "GUI",       "PApplication",        "PMDIFrameWindow", "pwlib.h", TRUE,  FALSE, FALSE, FALSE },
          { "Service",   "PServiceProcess",     "",                "ptlib.h", FALSE, TRUE,  FALSE, FALSE },
          { "Service",   "PHTTPServiceProcess", "",                "ptlib.h", FALSE, TRUE,  TRUE,  FALSE },
          { "Service",   "PHTTPServiceProcess", "",                "ptlib.h", FALSE, TRUE,  TRUE,  TRUE  }
        };

      MsDevWizardaw.m_Dictionary["PRODUCT_TYPE"] = product_type_strings[m_product_type].product_type;
      MsDevWizardaw.m_Dictionary["PRODUCT_NAME"] = m_product_name;
      MsDevWizardaw.m_Dictionary["MANUFACTURER"] = m_manufacturer;
      MsDevWizardaw.m_Dictionary["COPYRIGHT_HOLDER"] = m_copyright_holder;
      MsDevWizardaw.m_Dictionary["EXE_NAME"] = m_exe_name;
      MsDevWizardaw.m_Dictionary["APP_CLASS_NAME"] = m_class_name;
      MsDevWizardaw.m_Dictionary["PARENT_APP_CLASS"] = product_type_strings[m_product_type].parent_app_class;
      MsDevWizardaw.m_Dictionary["PARENT_WIN_CLASS"] = product_type_strings[m_product_type].parent_win_class;
      MsDevWizardaw.m_Dictionary["HEADER_FILE"] = product_type_strings[m_product_type].header_file;
        SetDictionaryKey("IS_GUI", product_type_strings[m_product_type].is_gui);
        SetDictionaryKey("IS_SERVICE", product_type_strings[m_product_type].is_service);
        SetDictionaryKey("HAS_HTTP", product_type_strings[m_product_type].has_http);
        SetDictionaryKey("HAS_SIGNATURE", product_type_strings[m_product_type].has_signature);

        srand(clock());
      MsDevWizardaw.m_Dictionary["SIGNATURE_KEY"].Format(
                        "%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u",
                        rand()&255, rand()&255, rand()&255, rand()&255,
                        rand()&255, rand()&255, rand()&255, rand()&255,
                        rand()&255, rand()&255, rand()&255, rand()&255,
                        rand()&255, rand()&255, rand()&255, rand()&255);
      MsDevWizardaw.m_Dictionary["APPLICATION_KEY"].Format(
                        "%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u",
                        rand()&255, rand()&255, rand()&255, rand()&255,
                        rand()&255, rand()&255, rand()&255, rand()&255,
                        rand()&255, rand()&255, rand()&255, rand()&255,
                        rand()&255, rand()&255, rand()&255, rand()&255);

        MsDevWizardaw.m_has_gui = product_type_strings[m_product_type].is_gui;
        MsDevWizardaw.m_is_service = product_type_strings[m_product_type].is_service;
        MsDevWizardaw.m_has_http = product_type_strings[m_product_type].has_http;
        MsDevWizardaw.m_use_dlls = m_use_dlls;
        MsDevWizardaw.m_pwlib_dir = m_pwlib_dir;

      return TRUE;      // return FALSE if the dialog shouldn't be dismissed
}


BEGIN_MESSAGE_MAP(CCustom1Dlg, CAppWizStepDlg)
      //{{AFX_MSG_MAP(CCustom1Dlg)
      //}}AFX_MSG_MAP
END_MESSAGE_MAP()


/////////////////////////////////////////////////////////////////////////////
// CCustom1Dlg message handlers

BOOL CCustom1Dlg::OnInitDialog() 
{
      CAppWizStepDlg::OnInitDialog();
      
      m_class_name = MsDevWizardaw.m_Dictionary["Safe_root"];
      m_product_name = MsDevWizardaw.m_Dictionary["Root"];
      m_exe_name = MsDevWizardaw.m_Dictionary["Root"];

        m_pwlib_dir = "";
        CString full_dir = MsDevWizardaw.m_Dictionary["FULL_DIR_PATH"];
        full_dir.MakeLower();
        int pos;
        if ((pos = full_dir.Find("\\pwlib\\")) >= 0) {
          pos += 6;
          do {
            full_dir = full_dir.Mid(pos+1);
            if (!full_dir.IsEmpty())
              m_pwlib_dir += "..\\";
          } while ((pos = full_dir.Find('\\')) >= 0);
        }
        else {
          const char * pwlib_dir = getenv("PWLIB_DIR");
          if (pwlib_dir == NULL)
            pwlib_dir = "c:\\pwlib";
          if (_access(pwlib_dir, 0) == 0)
            m_pwlib_dir = pwlib_dir;
        }

        UpdateData(FALSE);

      return TRUE;  // return TRUE unless you set the focus to a control
                    // EXCEPTION: OCX Property Pages should return FALSE
}

Generated by  Doxygen 1.6.0   Back to index