reman3/Rayman_X/cpa/public/ITF/cpasubm.hpp

149 lines
4.8 KiB
C++

/*=========================================================================
*
* CPASubM.hpp
*
*
* Version 1.0
* Creation date
* Revision date
*
* FBF
*=======================================================================*/
#ifdef ACTIVE_EDITOR
#ifndef __EDTSUBM_HPP__
#define __EDTSUBM_HPP__
/****************************************/
#ifndef CPA_EXPORT
#if defined(CPA_WANTS_IMPORT)
#define CPA_EXPORT __declspec(dllimport)
#elif defined(CPA_WANTS_EXPORT)
#define CPA_EXPORT __declspec(dllexport)
#else
#define CPA_EXPORT
#endif
#endif
/****************************************/
#include "CustomID.h"
#include <afxtempl.h>
class CPA_EditorBase;
class EDT_SubMenu;
typedef enum {
C_SubMenuEdit,
C_SubMenuEditor,
C_SubMenuTool,
/*ANNECY Shaitan NewInterface 24/03/98 {*/
C_SubMenuLoad,
C_SubMenu3DView,
C_SubMenuSpecific,
/*ENDANNECY Shaitan NewInterface }*/
C_SubMenuPreference,
C_PopupMenu,
C_SubSubMenu
} tde_SubMenu;
typedef enum {
C_SMEEntry,
C_SMESeparator,
C_SMEMenu
} tde_SubMenuElementType;
/*#########################*/
/* Base class*/
/*#########################*/
class EDT_SubMenuElement
{
/* datas*/
protected:
tde_SubMenuElementType m_eType;
public:
EDT_SubMenuElement(tde_SubMenuElementType _eType) { m_eType = _eType; }
virtual ~EDT_SubMenuElement() {}
/* methods*/
public:
tde_SubMenuElementType mfn_eGetElementType() { return m_eType; }
};
/*#########################*/
/* Entry*/
/*#########################*/
class CPA_EXPORT EDT_SubMenuEntry : public EDT_SubMenuElement
{
protected:
char *m_p_cText; /* text of entry in menu*/
UINT m_uiID; /* Intern ID*/
UINT m_IDCmdMsg; /* ID of message to send to owner*/
CPA_EditorBase *m_pOwner; /* concerned Editor*/
BOOL m_bChecked; /* check entry menu*/
BOOL m_bEnabled; /* enable entry menu*/
public:
EDT_SubMenuEntry(CPA_EditorBase *pOwner, char *p_cName, UINT uiMsgID, UINT uiIntID, BOOL _bCheck = FALSE, BOOL _bEnable = TRUE);
virtual ~EDT_SubMenuEntry();
void fn_vSetCheck (BOOL _bCheck) { m_bChecked = _bCheck; }
void fn_vSetEnable (BOOL _bEnable) { m_bEnabled = _bEnable; }
BOOL GetCheck (void) { return m_bChecked; }
BOOL GetEnable (void) { return m_bEnabled; }
UINT GetInternalID (void) { return m_uiID; }
char *GetText (void) { return m_p_cText;}
UINT GetCmdID (void) { return m_IDCmdMsg; }
CPA_EditorBase * GetOwner (void) { return m_pOwner; }
virtual UINT SendCommand (EDT_SubMenu *_p_oSubMenu);
};
/*#########################*/
/* Separator*/
/*#########################*/
class EDT_SubMenuSeparator : public EDT_SubMenuElement
{
/* methods*/
public:
EDT_SubMenuSeparator() : EDT_SubMenuElement(C_SMESeparator) {};
};
/*#########################*/
/* SubMenu*/
/*#########################*/
class CPA_EXPORT EDT_SubMenu : public EDT_SubMenuElement, public CList<EDT_SubMenuElement*,EDT_SubMenuElement*>
{
/* datas*/
protected:
tde_SubMenu m_eSubMenu;
UINT m_uiInternalIDStart;
UINT m_uiInternalID;
BOOL m_bHasFather;
EDT_SubMenu *m_p_oFather;
char *m_szName;
/* methods*/
public:
EDT_SubMenu(tde_SubMenu _eSubMenu,UINT _uiIDStart = C_CustomIDUserEnd);
virtual ~EDT_SubMenu();
tde_SubMenu GetSubMenuType (void);
virtual EDT_SubMenu *fn_p_oGetNewSubMenu(char *_szName, tde_SubMenu _eMenuType = C_SubSubMenu);
void fn_vSetIDStart (UINT _uiIDStart) { m_uiInternalIDStart = _uiIDStart; }
void AddASeparator (void);
virtual void AddAnEntry (CPA_EditorBase *p_oOwner = NULL, char *p_cText = NULL, UINT uiEntryID = 0, BOOL _bCheck = FALSE, BOOL _bEnable = TRUE);
virtual void AddASubMenu (EDT_SubMenu *_p_oSubMenu);
virtual void Build (CMenu *pPopupMenu = NULL);
UINT _OnCommand (UINT uiInternalID);
void Clear (void);
BOOL fn_bFindCmdID (UINT uiInternalID, CPA_EditorBase **, UINT *CmdID);
void fn_vSetFather (EDT_SubMenu *_p_oFather);
void fn_vSetName (char *_szName);
char fn_cGrayedItem (CMenu *pPopupMenu, char *szItem) ;
protected:
UINT mfn_vGetNextInternalID (void);
void DeleteEntirePopupMenu (CMenu* pPopupMenu);
void fn_vGrayedAllMenuItem ( CMenu *pPopupMenu );
};
#endif /* __EDTSUBM_HPP__*/
#endif /* ACTIVE_EDITOR*/