[GME-commit] GMESRC/Paradigms/MetaGME/MetaInterpreter2004/Asp
EventsDial.cpp,NONE,1.1 EventsDial.h,NONE,1.1 Options.cpp,NONE,1.1
options.h,NONE,1.1
gme-commit at list.isis.vanderbilt.edu
gme-commit at list.isis.vanderbilt.edu
Fri Nov 5 15:25:10 CST 2004
- Previous message: [GME-commit] GMESRC/Doc muserdoc.txt,NONE,1.1
- Next message: [GME-commit] GMESRC/Paradigms/MetaGME/MetaInterpreter2004
BON2Component.cpp,1.24,1.25 Component.rc,1.8,1.9 Globals.h,1.4,1.5
MetaGME2004.dsp,1.15,1.16 resource.h,1.5,1.6
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /var/lib/gme/GMESRC/Paradigms/MetaGME/MetaInterpreter2004/Asp
In directory braindrain:/tmp/cvs-serv6256/Asp
Added Files:
EventsDial.cpp EventsDial.h Options.cpp options.h
Log Message:
The user can edit upon interpretation the eventmasks and priorities for the cardinality-based contstraints.
CVS User: zolmol
--- NEW FILE: EventsDial.cpp ---
// EventsDial.cpp : implementation file
//
#include "stdafx.h"
#include "EventsDial.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/*static*/ int EventsDial::m_valCreated = 0x80000000;
/*static*/ int EventsDial::m_valDestroyed = 0x40000000;
/*static*/ int EventsDial::m_valAttr = 0x00000001;
/*static*/ int EventsDial::m_valRegistry = 0x00000002;//not exposed to the user
/*static*/ int EventsDial::m_valNewchild = 0x00000004;
/*static*/ int EventsDial::m_valRelation = 0x00000008;//ref pointer, set member, conn endpoint change
/*static*/ int EventsDial::m_valProperties = 0x00000010;
/*static*/ int EventsDial::m_valSubtinst = 0x00000020;
/*static*/ int EventsDial::m_valBase = 0x00000040;//obsolete (based on mga.idl)
/*static*/ int EventsDial::m_valPosition = 0x00000080;//obsolete (based on mga.idl)
/*static*/ int EventsDial::m_valParent = 0x00000100;
/*static*/ int EventsDial::m_valLostchild = 0x00000200;
/*static*/ int EventsDial::m_valReferenced = 0x00000400;
/*static*/ int EventsDial::m_valConnected = 0x00000800;
/*static*/ int EventsDial::m_valSetIncluded = 0x00001000;
/*static*/ int EventsDial::m_valRefReleased = 0x00002000;
/*static*/ int EventsDial::m_valDisconnected = 0x00004000;
/*static*/ int EventsDial::m_valSetExcluded = 0x00008000;
/*static*/ int EventsDial::m_valUserBits = 0x00FF0000;//not exposed to the user
/*static*/ int EventsDial::m_valCloseModel = 0x00800000;
/////////////////////////////////////////////////////////////////////////////
// EventsDial dialog
EventsDial::EventsDial(CWnd* pParent /*=NULL*/)
: CDialog(EventsDial::IDD, pParent)
, m_sumAll( 0)
{
//{{AFX_DATA_INIT(EventsDial)
m_chkCreated = FALSE;
m_chkDestroyed = FALSE;
m_chkAttr = FALSE;
m_chkNewchild = FALSE;
m_chkRelation = FALSE;
m_chkProperties = FALSE;
m_chkSubtinst = FALSE;
m_chkParent = FALSE;
m_chkLostchild = FALSE;
m_chkReferenced = FALSE;
m_chkConnected = FALSE;
m_chkIncludeInSet = FALSE;
m_chkDisconnect = FALSE;
m_chkUnrefer = FALSE;
m_chkExcludeFromSet = FALSE;
m_chkCloseModel = FALSE;
//}}AFX_DATA_INIT
}
void EventsDial::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(EventsDial)
DDX_Check(pDX, IDC_CHECK1, m_chkCreated);
DDX_Check(pDX, IDC_CHECK2, m_chkDestroyed);
DDX_Check(pDX, IDC_CHECK3, m_chkAttr);
DDX_Check(pDX, IDC_CHECK5, m_chkNewchild);
DDX_Check(pDX, IDC_CHECK6, m_chkRelation);
DDX_Check(pDX, IDC_CHECK7, m_chkProperties);
DDX_Check(pDX, IDC_CHECK8, m_chkSubtinst);
DDX_Check(pDX, IDC_CHECK11, m_chkParent);
DDX_Check(pDX, IDC_CHECK12, m_chkLostchild);
DDX_Check(pDX, IDC_CHECK13, m_chkReferenced);
DDX_Check(pDX, IDC_CHECK14, m_chkConnected);
DDX_Check(pDX, IDC_CHECK16, m_chkIncludeInSet);
DDX_Check(pDX, IDC_CHECK17, m_chkDisconnect);
DDX_Check(pDX, IDC_CHECK18, m_chkUnrefer);
DDX_Check(pDX, IDC_CHECK19, m_chkExcludeFromSet);
DDX_Check(pDX, IDC_CHECK15, m_chkCloseModel);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(EventsDial, CDialog)
//{{AFX_MSG_MAP(EventsDial)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// EventsDial message handlers
BOOL EventsDial::OnInitDialog()
{
CDialog::OnInitDialog();
m_chkCreated = ( m_sumAll & m_valCreated) != 0;
m_chkDestroyed = ( m_sumAll & m_valDestroyed) != 0;
m_chkAttr = ( m_sumAll & m_valAttr) != 0;
//m_chkRegistry = ( m_sumAll & m_valRegistry) != 0;
m_chkNewchild = ( m_sumAll & m_valNewchild) != 0;
m_chkRelation = ( m_sumAll & m_valRelation) != 0;
m_chkProperties = ( m_sumAll & m_valProperties) != 0;
m_chkSubtinst = ( m_sumAll & m_valSubtinst) != 0;
//m_chkBase = ( m_sumAll & m_valBase) != 0;
//m_chkPosition = ( m_sumAll & m_valPosition) != 0;
m_chkParent = ( m_sumAll & m_valParent) != 0;
m_chkLostchild = ( m_sumAll & m_valLostchild) != 0;
m_chkReferenced = ( m_sumAll & m_valReferenced) != 0;
m_chkConnected = ( m_sumAll & m_valConnected) != 0;
m_chkIncludeInSet = ( m_sumAll & m_valSetIncluded ) != 0;
m_chkUnrefer = ( m_sumAll & m_valRefReleased ) != 0;
m_chkDisconnect = ( m_sumAll & m_valDisconnected ) != 0;
m_chkExcludeFromSet = ( m_sumAll & m_valSetExcluded ) != 0;
m_chkCloseModel = ( m_sumAll & m_valCloseModel) != 0;
UpdateData( FALSE);
return TRUE;
}
void EventsDial::OnOK()
{
UpdateData( TRUE);
m_sumAll = 0;
if( m_chkCreated) m_sumAll |= m_valCreated;
if( m_chkDestroyed) m_sumAll |= m_valDestroyed;
if( m_chkAttr) m_sumAll |= m_valAttr;
//if( m_chkRegistry) m_sumAll |= m_valRegistry;
if( m_chkNewchild) m_sumAll |= m_valNewchild;
if( m_chkRelation) m_sumAll |= m_valRelation;
if( m_chkProperties) m_sumAll |= m_valProperties;
if( m_chkSubtinst) m_sumAll |= m_valSubtinst;
//if( m_chkBase) m_sumAll |= m_valBase;
//if( m_chkPosition) m_sumAll |= m_valPosition;
if( m_chkParent) m_sumAll |= m_valParent;
if( m_chkLostchild) m_sumAll |= m_valLostchild;
if( m_chkReferenced) m_sumAll |= m_valReferenced;
if( m_chkConnected) m_sumAll |= m_valConnected;
if( m_chkIncludeInSet) m_sumAll |= m_valSetIncluded;
if( m_chkUnrefer) m_sumAll |= m_valRefReleased;
if( m_chkDisconnect) m_sumAll |= m_valDisconnected;
if( m_chkExcludeFromSet) m_sumAll |= m_valSetExcluded;
if( m_chkCloseModel) m_sumAll |= m_valCloseModel;
CDialog::OnOK();
}
--- NEW FILE: EventsDial.h ---
#if !defined(AFX_EVENTSDIAL_H__6AEC715F_5884_4DB8_AB81_DE6C33BF3BF4__INCLUDED_)
#define AFX_EVENTSDIAL_H__6AEC715F_5884_4DB8_AB81_DE6C33BF3BF4__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <afxcmn.h>
#include "resource.h"
/////////////////////////////////////////////////////////////////////////////
// EventsDial dialog
class EventsDial : public CDialog
{
// Construction
public:
EventsDial(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(EventsDial)
enum { IDD = IDD_EVENTSDLG };
BOOL m_chkCreated;
BOOL m_chkDestroyed;
BOOL m_chkAttr;
BOOL m_chkNewchild;
BOOL m_chkRelation;
BOOL m_chkProperties;
BOOL m_chkSubtinst;
BOOL m_chkParent;
BOOL m_chkLostchild;
BOOL m_chkReferenced;
BOOL m_chkConnected;
BOOL m_chkIncludeInSet;
BOOL m_chkDisconnect;
BOOL m_chkUnrefer;
BOOL m_chkExcludeFromSet;
BOOL m_chkCloseModel;
//}}AFX_DATA
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(EventsDial)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(EventsDial)
virtual BOOL OnInitDialog();
virtual void OnOK();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
public:
static int m_valCreated;
static int m_valDestroyed;
static int m_valAttr;
static int m_valRegistry;
static int m_valNewchild;
static int m_valRelation;
static int m_valProperties;
static int m_valSubtinst;
static int m_valBase;
static int m_valPosition;
static int m_valParent;
static int m_valLostchild;
static int m_valReferenced;
static int m_valConnected;
static int m_valSetIncluded;
static int m_valRefReleased;
static int m_valDisconnected;
static int m_valSetExcluded;
static int m_valUserBits;
static int m_valCloseModel;
// the sum of all values
int m_sumAll;
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_EVENTSDIAL_H__6AEC715F_5884_4DB8_AB81_DE6C33BF3BF4__INCLUDED_)
--- NEW FILE: Options.cpp ---
// Options.cpp : implementation file
//
#include "stdafx.h"
#include "Options.h"
#include "EventsDial.h"
#include "BON.h"
#include "BONImpl.h"
#include <afxdlgs.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/*static*/ const std::string Options::OptionsRegistrySubNode_str = "MetaGME_Options/GeneratedConstraints";
/*static*/ const std::string Options::RegContMask_str = "RegularContainmentEventMask";
/*static*/ const std::string Options::FolContMask_str = "FolderContainmentEventMask";
/*static*/ const std::string Options::ConnectMask_str = "ConnectionEndEventMask";
/*static*/ const std::string Options::Priority_str = "Priority";
/*static*/ const std::string Options::DontAsk_str = "skip_dialog";
/////////////////////////////////////////////////////////////////////////////
// Options dialog
Options::Options(CWnd* pParent /*=NULL*/)
: CDialog(Options::IDD, pParent)
, m_valRegContMask( 0 )
, m_valFolContMask( 0 )
, m_valConnectMask( 0 )
, m_valPriority ( 1 )
{
//{{AFX_DATA_INIT(Options)
m_strRegCont = _T("");
m_strFolCont = _T("");
m_strConnect = _T("");
m_dontask = FALSE;
m_strPriority = _T("");
//}}AFX_DATA_INIT
}
void Options::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(Options)
DDX_Control(pDX, IDC_SPIN1, m_spin);
DDX_Text(pDX, IDC_EDIT1, m_strRegCont);
DDV_HexNumber(pDX, m_strRegCont);
DDV_MaxChars(pDX, m_strRegCont, 10);
DDX_Text(pDX, IDC_EDIT2, m_strFolCont);
DDV_HexNumber(pDX, m_strFolCont);
DDV_MaxChars(pDX, m_strFolCont, 10);
DDX_Text(pDX, IDC_EDIT3, m_strConnect);
DDV_HexNumber(pDX, m_strConnect);
DDV_MaxChars(pDX, m_strConnect, 10);
DDX_Check(pDX, IDC_CHECK1, m_dontask);
DDX_Text(pDX, IDC_EDIT4, m_strPriority);
DDV_MaxChars(pDX, m_strPriority, 2);
DDV_MinMaxInt(pDX, atoi( m_strPriority), 1, 10);
//}}AFX_DATA_MAP
}
void PASCAL Options::DDV_HexNumber(CDataExchange* pDX, const CString& nmb)
{
if( !pDX->m_bSaveAndValidate) return;
CString whitespace = " \t\n";
CString digits = "0123456789";
CString hexadigits = "0123456789abcdefABCDEF";
bool fail = false;
int i = 0;
//skip whitespaces
while( i < nmb.GetLength() && whitespace.Find( nmb.GetAt( i)) != -1) ++i;
if( i == nmb.GetLength()) //empty
{
return;//do not fail if empty string, will be considered 0
}
bool hex = false;
if( i + 1 < nmb.GetLength() && nmb.GetAt(i) == '0' && (nmb.GetAt(i + 1) == 'x' || nmb.GetAt(i + 1) == 'X'))
{
i += 2;
hex = true;
digits = hexadigits;
}
while( i < nmb.GetLength() && digits.Find( nmb.GetAt(i)) != -1) ++i;
fail = i < nmb.GetLength();
if( fail)
{
AfxMessageBox("Enter a hexadecimal value please!", MB_ICONERROR);
pDX->Fail();
}
}
BEGIN_MESSAGE_MAP(Options, CDialog)
//{{AFX_MSG_MAP(Options)
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
ON_BN_CLICKED(IDC_BUTTON3, OnButton3)
ON_BN_CLICKED(IDC_CHECK1, OnDontAskClick)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// Options message handlers
BOOL Options::OnInitDialog()
{
CDialog::OnInitDialog();
char buff[32];
sprintf( buff, "0x%08X", m_valRegContMask);
m_strRegCont = buff;
sprintf( buff, "0x%08X", m_valFolContMask);
m_strFolCont = buff;
sprintf( buff, "0x%08X", m_valConnectMask);
m_strConnect = buff;
sprintf( buff, "%d", m_valPriority);
m_strPriority = buff;
m_spin.SetRange( 1, 10);
m_spin.SetPos( m_valPriority);
UpdateData( FALSE);
return TRUE;
}
void Options::OnButton1()
{
UpdateData( TRUE);
EventsDial d;
int val = 0;
if( sscanf( m_strRegCont, "%X", &val) == 1)
d.m_sumAll = val;
if( d.DoModal() == IDOK)
{
char buff[32];
sprintf( buff, "0x%08X", d.m_sumAll);
m_strRegCont = buff;
m_valRegContMask = d.m_sumAll;
}
UpdateData( FALSE);
}
void Options::OnButton2()
{
UpdateData( TRUE);
EventsDial d;
int val = 0;
if( sscanf( m_strFolCont, "%X", &val) == 1)
d.m_sumAll = val;
if( d.DoModal() == IDOK)
{
char buff[32];
sprintf( buff, "0x%08X", d.m_sumAll);
m_strFolCont = buff;
m_valFolContMask = d.m_sumAll;
}
UpdateData( FALSE);
}
void Options::OnButton3()
{
UpdateData( TRUE);
EventsDial d;
int val = 0;
if( sscanf( m_strConnect, "%X", &val) == 1)
d.m_sumAll = val;
if( d.DoModal() == IDOK)
{
char buff[32];
sprintf( buff, "0x%08X", d.m_sumAll);
m_strConnect = buff;
m_valConnectMask = d.m_sumAll;
}
UpdateData( FALSE);
}
void Options::setDefs( int reg_cont, int fol_cont, int conn_msk, int prior)
{
m_valRegContMask = reg_cont;
m_valFolContMask = fol_cont;
m_valConnectMask = conn_msk;
m_valPriority = prior;
}
void Options::getResults( int* v1, int* v2, int* v3, int* vp, bool* dont_ask)
{
*v1 = m_valRegContMask;
*v2 = m_valFolContMask;
*v3 = m_valConnectMask;
*vp = m_valPriority;
*dont_ask = m_dontask == TRUE;
}
/*static*/ bool Options::fetchOpts( const BON::Project& proj, int* v1, int* v2, int* v3, int *pr)
{
BON::RegistryNode rn = proj->getRootFolder()->getRegistry()->getChild( OptionsRegistrySubNode_str);
if( !rn) return true;
if( rn->getValue() == DontAsk_str)
{
return false;
}
else
{
int status = 0;
BON::RegistryNode ch1 = rn->getChild( RegContMask_str);
if( ch1 && ch1->getStatus() == BON::RNS_Here)
status = sscanf( ch1->getValue().c_str(), "%x", v1); //number stored in hexadecimal format
BON::RegistryNode ch2 = rn->getChild( FolContMask_str);
if( ch2 && ch2->getStatus() == BON::RNS_Here)
status = sscanf( ch2->getValue().c_str(), "%x", v2);
BON::RegistryNode ch3 = rn->getChild( ConnectMask_str);
if( ch3 && ch3->getStatus() == BON::RNS_Here)
status = sscanf( ch3->getValue().c_str(), "%x", v3);
BON::RegistryNode ch4 = rn->getChild( Priority_str);
if( ch4 && ch4->getStatus() == BON::RNS_Here)
{
*pr = ch4->getIntegerValue();
}
}
return true;
}
/*static*/ void Options::saveOpts( const BON::Project& proj, int v1, int v2, int v3, int vp, bool dont_ask)
{
char buff[ 10 + 1 ];
BON::RegistryNode rn = proj->getRootFolder()->getRegistry();
sprintf( buff, "0x%08X", v1);
rn->setValueByPath( "/" + OptionsRegistrySubNode_str + "/" + RegContMask_str, buff);
sprintf( buff, "0x%08X", v2);
rn->setValueByPath( "/" + OptionsRegistrySubNode_str + "/" + FolContMask_str, buff);
sprintf( buff, "0x%08X", v3);
rn->setValueByPath( "/" + OptionsRegistrySubNode_str + "/" + ConnectMask_str, buff);
sprintf( buff, "%d", vp);
rn->setValueByPath( "/" + OptionsRegistrySubNode_str + "/" + Priority_str, buff);
if( dont_ask) rn->setValueByPath( "/" + OptionsRegistrySubNode_str, DontAsk_str);
}
void Options::OnOK()
{
CDialog::OnOK();//UpdateData( TRUE);
if( m_strRegCont.IsEmpty() || !sscanf( (LPCTSTR) m_strRegCont, "%x", &m_valRegContMask)) m_valRegContMask = 0;
if( m_strFolCont.IsEmpty() || !sscanf( (LPCTSTR) m_strFolCont, "%x", &m_valFolContMask)) m_valFolContMask = 0;
if( m_strConnect.IsEmpty() || !sscanf( (LPCTSTR) m_strConnect, "%x", &m_valConnectMask)) m_valConnectMask = 0;
m_valPriority = atoi( m_strPriority);
if( !m_valPriority) m_valPriority = 1;
}
void Options::OnDontAskClick()
{
if( ((CButton * ) GetDlgItem( IDC_CHECK1))->GetCheck())
if( IDCANCEL == MessageBox( CString("If you leave this option checked you can access this dialog later only if you modify the \"") + OptionsRegistrySubNode_str.c_str() + "\" value in the RootFolder's registry to something else than \"" + DontAsk_str.c_str() + "\"!", "Warning!", MB_OKCANCEL | MB_ICONWARNING))
((CButton *) GetDlgItem( IDC_CHECK1))->SetCheck( 0);
}
--- NEW FILE: options.h ---
#if !defined(AFX_OPTIONS_H__D33EAC1F_01D6_4270_93F8_069D3BAFE231__INCLUDED_)
#define AFX_OPTIONS_H__D33EAC1F_01D6_4270_93F8_069D3BAFE231__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "resource.h"
#include "BON.h"
#include <afxcmn.h>
/////////////////////////////////////////////////////////////////////////////
// Options dialog
class Options : public CDialog
{
// Construction
public:
Options(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(Options)
enum { IDD = IDD_OPTIONS };
CSpinButtonCtrl m_spin;
CString m_strRegCont;
CString m_strFolCont;
CString m_strConnect;
BOOL m_dontask;
CString m_strPriority;
//}}AFX_DATA
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(Options)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
void PASCAL DDV_HexNumber(CDataExchange* pDX, const CString& nmb);
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(Options)
virtual BOOL OnInitDialog();
afx_msg void OnButton1();
afx_msg void OnButton2();
afx_msg void OnButton3();
afx_msg void OnDontAskClick();
virtual void OnOK();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
public:
void setDefs( int regCont, int folCont, int conn, int prior);
void getResults( int* v1, int* v2, int* v3, int* vp, bool* ask);
static bool fetchOpts( const BON::Project& proj, int* v1, int* v2, int* v3, int* vp);
static void saveOpts( const BON::Project& proj, int v1, int v2, int v3, int vp, bool dont_ask);
static const std::string OptionsRegistrySubNode_str;
static const std::string RegContMask_str;
static const std::string FolContMask_str;
static const std::string ConnectMask_str;
static const std::string Priority_str;
static const std::string DontAsk_str;
protected:
int m_valRegContMask;// redundancy...
int m_valFolContMask;
int m_valConnectMask;
int m_valPriority;
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_OPTIONS_H__D33EAC1F_01D6_4270_93F8_069D3BAFE231__INCLUDED_)
- Previous message: [GME-commit] GMESRC/Doc muserdoc.txt,NONE,1.1
- Next message: [GME-commit] GMESRC/Paradigms/MetaGME/MetaInterpreter2004
BON2Component.cpp,1.24,1.25 Component.rc,1.8,1.9 Globals.h,1.4,1.5
MetaGME2004.dsp,1.15,1.16 resource.h,1.5,1.6
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the GME-commit
mailing list