reman3/Rayman_X/cpa/tempgrp/OAC/Inc/EdActors/EDACDgNL.hpp

237 lines
8.8 KiB
C++

#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
// CPACDgNL.hpp : header file
//
#if !defined (__EDACDGNL_HPP__)
#define __EDACDGNL_HPP__
#include "EdAcIRes.h"
//#include "acp_base.h"
//#include "cpadllb.hpp"
#include "EdAcDef.hpp"
/////////////////////////////////////////////////////////////////////////////
// EdActors_EditNameListsDialog dialog
class EdActors_EditorActor;
class CPA_tdoNameList;
class tdoObjectName;
class EdActors_EditNameListsDialog;
//=======================================================================================
typedef struct tdstToolTipData_
{
UINT uiControlId;
CWnd *p_oMfcControl;
const char *pszTipText;
} tdstToolTipData;
//=======================================================================================
#define M_vFillToolTipData(stTTD, uiCI, pCtrl, pszText) \
(stTTD).uiControlId = uiCI; \
(stTTD).p_oMfcControl = pCtrl; \
(stTTD).pszTipText = pszText
//=======================================================================================
typedef struct tdstListSpecificActions_
{
void (*fn_vWhenNameAdded)(short, CPA_tdoNameList *);
void (*fn_vWhenNameRemoved)(short, CPA_tdoNameList *);
} tdstListSpecificActions;
//=======================================================================================
typedef struct tdstCarEditNameListsDialogArgs_
{
struct
{
EdActors_EditorActor *p_oEditorActor;
CPA_tdoNameList *p_oCurrentNameList;
const char *p_c_szNameListType;
const char *p_c_szScriptName;
BOOL bModelCanSelectANameList;
BOOL bNoNames;
} stIn;
struct
{
CPA_tdoNameList *p_oNameListSelectedForModel;
} stOut;
} tdstCarEditNameListsDialogArgs;
//=======================================================================================
class tdoDummyName
{
public:
tdoDummyName(tdoObjectName *_p_oObjectName, short _wIndex);
tdoDummyName(CString _csName, tdeShareMode _eShareMode);
void m_vSetName(CString _csName) { m_csName = _csName; }
CString m_csGetName(void) { return m_csName; }
CString m_csGetInitName(void) { return m_p_oAssociatedName ? m_p_oAssociatedName->GetName() : m_csName; }
tdeShareMode m_eGetShareMode() { return m_eShareMode; }
tdeShareMode m_eGetInitShareMode() { return m_p_oAssociatedName ? m_p_oAssociatedName->m_eGetShareMode() : m_eShareMode; }
void m_vSetShareMode(tdeShareMode _eShareMode) { m_eShareMode = _eShareMode; }
BOOL m_bWasHereOnInit() { return m_p_oAssociatedName != NULL; }
tdoObjectName *m_p_oGetAssociatedName() { return m_p_oAssociatedName; }
short m_wGetInitIndex() { return m_wInitIndex; }
BOOL m_bNameChanged() { return m_csName != m_csGetInitName(); }
BOOL m_bShareModeChanged() { return m_eShareMode != m_eGetInitShareMode(); }
private:
tdeShareMode m_eShareMode;
short m_wInitIndex;
CString m_csName;
tdoObjectName *m_p_oAssociatedName;
};
//=======================================================================================
//this is a fake name list
class tdoDummyNameList
{
public:
tdoDummyNameList(CPA_tdoNameList *_p_oNameList);
tdoDummyNameList(CString _csName);
~tdoDummyNameList();
tdoDummyName *m_p_oAddName(CString _csName, tdeShareMode _eShareMode);
BOOL m_bRemoveName(CString _csName);
BOOL m_bRestoreName(CString _csName);
BOOL m_bRenameName(CString _csOldName, CString _csNewName);
BOOL m_bReshareName(CString _csName, tdeShareMode _eShareMode);
void m_vSetName(CString _csName) { m_csName = _csName; }
CString m_csGetName(void) { return m_csName; }
CString m_csGetInitName(void) { return m_p_oAssociatedList ? m_p_oAssociatedList->GetName() : m_csName; }
BOOL m_bNameExists(CString _csName);
BOOL m_bWasHereOnInit() { return m_p_oAssociatedList != NULL; }
void m_vInvalidateDeletedNames();
void m_vValidateActiveNames(EdActors_EditNameListsDialog *_p_oDialog);
CPA_tdoNameList *m_p_oGetAssociatedList() { return m_p_oAssociatedList; }
void m_vFillControls(CListBox *_p_oListBox, CEdit *_p_oCurEdit);
BOOL m_bNameChanged() { return m_csName != m_csGetInitName(); }
void m_vSetAssociatedList(CPA_tdoNameList *_p_oNameList, BOOL _bAreYouSure = FALSE);
private:
BOOL m_bAddName(tdoObjectName *_p_oObjectName);
tdoDummyName *m_p_oFindActiveName(CString _csName);
tdoDummyName *m_p_oFindDeletedName(CString _csName);
CString m_csName;
CPA_tdoNameList *m_p_oAssociatedList;
CPA_List<tdoDummyName> m_clNames, m_clDeletedNames;
};
//=======================================================================================
class tdoListModifHandler
{
public:
tdoListModifHandler(CString _csNameListType, CPA_Family *_p_oFamily);
~tdoListModifHandler();
tdoDummyNameList *m_p_oAcceptListAdd(CString _csName);
BOOL m_bAcceptListDelete(CString _csName);
BOOL m_bAcceptListRename(CString _csOldName, CString _csNewName);
tdoDummyName *m_p_oAcceptNameAdd(CString _csListName, CString _csName, tdeShareMode _eShareMode);
BOOL m_bAcceptNameDelete(CString _csListName, CString _csName);
BOOL m_bAcceptNameRename(CString _csListName, CString _csOldName, CString _csNewName);
BOOL m_bAcceptNameReshare(CString _csListName, CString _csName, tdeShareMode _eShareMode);
void m_vPerformAllModifs();
void m_vModifsAreAccepted(EdActors_EditNameListsDialog *_p_oDialog) { m_p_oDialog = _p_oDialog; }
BOOL m_bModifsAreAccepted() { return m_p_oDialog != NULL; }
BOOL m_bListExists(CString _csName);
BOOL m_bNameExists(CString _csName);
void m_vFillControls(CListBox *_p_oListBox, CEdit *_p_oCurEdit, tdoDummyNameList *_p_oCurrentSelectedList);
tdoDummyNameList *m_p_oGetListforNameList(CPA_tdoNameList *_p_oNameList);
private:
CString m_csNameListType;
CPA_Family *m_p_oFamily;
tdoDummyNameList *m_p_oFindActiveNameList(CString _csName);
tdoDummyNameList *m_p_oFindDeletedNameList(CString _csName);
CPA_List<tdoDummyNameList> m_clLists, m_clDeletedLists;
EdActors_EditNameListsDialog *m_p_oDialog;
BOOL m_bModelCanSelectAnotherList;
};
//=======================================================================================
//=======================================================================================
class EdActors_EditNameListsDialog : public CDialog
{
// Construction
public:
~EdActors_EditNameListsDialog();
EdActors_EditNameListsDialog(tdstCarEditNameListsDialogArgs *, CWnd *pParent = NULL); // standard constructor
tdstCarEditNameListsDialogArgs *m_p_stArgs;
tdoDummyNameList *m_p_oCurrentSelectedList, *m_p_oListSelectedForModel;
// Dialog Data
//{{AFX_DATA(EdActors_EditNameListsDialog)
enum { IDD = IDD_CAR_DIALOG_EDIT_NAMELISTS };
//}}AFX_DATA
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(EdActors_EditNameListsDialog)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
virtual void OnDestroy();
//}}AFX_VIRTUAL
private:
enum
{
E_em_None,
E_em_NameListSelect,
E_em_NameListEdit
} m_eEditMode;
//if this is set, the message comes from an internal modification...
BOOL m_bAutodispatch;
BOOL m_bUserEditedAList;
CToolTipCtrl *m_poToolTip;
HICON m_hIconCommon, m_hIconShared, m_hIconVirge, m_hIconChecked;
BOOL m_bIconClickedInListBox(CPoint oPoint);
tdoListModifHandler *m_p_oListModifHandler;
CWnd *m_p_oDefaultButton;
// Implementation
protected:
tdstToolTipData m_a13_stToopTipData[13];
CEdit *m_p_oNameEdit;
CStatic *m_p_oEditGroupTitle, *m_p_oItemListTitle;
CButton *m_p_oAddButton, *m_p_oRenameButton, *m_p_oDeleteButton;
CButton *m_p_oCommonRadioButton, *m_p_oSharedRadioButton, *m_p_oVirgeRadioButton;
CButton *m_p_oSwapEditModeButton, *m_p_oOkButton, *m_p_oCancelButton;
CListBox *m_p_oItemListBox;
void m_vSelectNameList(CPA_tdoNameList *_p_oNameList);
void m_vSetRadioShareMode(tdeShareMode _eShareMode);
tdeShareMode m_eGetRadioShareMode();
void m_vSetDefaultButton(CButton *_p_oButton);
virtual BOOL PreTranslateMessage(MSG* pMsg);
// Generated message map functions
//{{AFX_MSG(EdActors_EditNameListsDialog)
afx_msg BOOL m_bGetToolTipText(UINT, NMHDR *, LRESULT *);
afx_msg void OnEnlSwapEditModeButtonClicked();
afx_msg void OnEnlShareModeRadioButtonClicked();
afx_msg void OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct);
afx_msg void OnEnlListBoxSelChange();
afx_msg void OnEnlNameEditChange();
afx_msg void OnEnlAddButtonClicked();
afx_msg void OnEnlDeleteButtonClicked();
afx_msg void OnEnlRenameButtonClicked();
afx_msg void OnEnlDefaultButtonClicked();
//}}AFX_MSG
virtual BOOL OnInitDialog();
virtual void OnOK();
DECLARE_MESSAGE_MAP()
};
#define M_vRegisterControl(memberpointer, type, id, tooltiprank, tooltiptext) \
memberpointer = (type) GetDlgItem(id); \
m_poToolTip->AddTool(memberpointer, LPSTR_TEXTCALLBACK); \
M_vFillToolTipData(m_a13_stToopTipData[tooltiprank], id, memberpointer, tooltiptext)
#define M_vFakeMessage(message) ((void) ( m_bAutodispatch = FALSE, (message)(), m_bAutodispatch = TRUE ))
#endif /* __EDACDGNL_HPP__ */ //bbb 03/04/97
//bbb 02/04/97 }