reman3/Rayman_X/cpa/public/CTL/Controls/CTL_Ctl.hpp

231 lines
7.2 KiB
C++

/* Header for the definition of a base control*/
/*/////////////////////////////////////////////////////////*/
#ifndef _CTL_CONTROL_
#define _CTL_CONTROL_
#if _MSC_VER >= 1000
#pragma once
#endif /* _MSC_VER >= 1000*/
#include <afxtempl.h>
#include "CTL\Data\CTL_Dat.hpp"
#include "CTL\Others\CTL_ODat.hpp"
#include "CTL\Controls\CTL_BCL.hpp"
#define CTL_C_SPACE_BETWEEN_CONTROLS 2
class CTL_Editor_Static;
class CTL_Editor_CheckBox;
class CTL_Editor_BaseControlList;
class CTL_Editor_BaseControl;
class CTL_Editor_ControlList;
/*#########################################################*/
typedef enum CTL_eControlSpacingType
{
CTL_SPACING_TYPE__SINGLE_LINE = 0,
CTL_SPACING_TYPE__MULTI_LINE,
CTL_SPACING_TYPE__AUTO,
CTL_SPACING_TYPE__FIXED_SIZE,
} CTL_tdeControlSpacingType;
/*#########################################################*/
class CPA_EXPORT CTL_Editor_Control
{
/*Constructor / Destructor*/
public:
CTL_Editor_Control( CTL_tdeEditorDataType tdeType,
BOOL bIsAlwaysReadOnly,
CTL_tdeControlSpacingType tdeSpacingType,
BOOL bUserCanChangeAspect,
CTL_Editor_ControlList *_pclParentList,
CString _csControlName,
/*ANNECY BBB {*/
BOOL _bAcceptNameFromData = TRUE,
/*ANNECY BBB }*/
/*Stefan Dumitrean 20-07-98 ( OAC buttons )*/
unsigned char ucInitialCurrentPair = 0
/*End Stefan Dumitrean 20-07-98 ( OAC buttons )*/
);
virtual ~CTL_Editor_Control();
/*Attributes*/
public:
/*Stefan Dumitrean 20-07-98 ( OAC buttons )*/
unsigned char m_ucInitialCurrentPair; /*indicates whether the control is in a */
/*initial/current pair or not*/
/* 0 - no pair, 1 - initial, 2 - current*/
/*End Stefan Dumitrean 20-07-98 ( OAC buttons )*/
protected:
/*The list of base controls*/
CTL_Editor_BaseControlList *m_pclListOfBaseControls;
/*Type of spacing for the group of controls*/
CTL_tdeControlSpacingType m_tdeSpacingType;
/*Indicates wether the User can modifiy control's aspect or not*/
BOOL m_bUserCanChangeAspect;
/*Indicates wether the group of controls has already been created or not*/
BOOL m_bControlCreated;
/*Indicates wether the group of controls is currently hidden or not*/
BOOL m_bHidden;
/*ANNECY BBB {*/
/*Indicates if the control accepts to be renamed when its name does not match the current data's*/
BOOL m_bAcceptNameFromData;
/*ANNECY BBB }*/
/*The whole rectangle occupied by the group of controls*/
CRect m_crZoneRect;
/*The name of the Characteristic*/
CString m_pro_csControlName;
CTL_Editor_Static *m_pclNameStatic;
/*Indicates a control is always in Read Only mode, by construction*/
/* of the Editor*/
BOOL m_bIsAlwaysReadOnly;
/*Indicates wether the control's current state is Read Only or not*/
/* (unused member if m_bAlwaysReadOnly is TRUE)*/
BOOL m_bIsReadOnly;
/*The type of the Data edited by this group of controls*/
CTL_tdeEditorDataType m_tdeDataType;
/*The current Data edited by this group of controls*/
CTL_Editor_Data *m_pclData;
/*The Parent Wnd of all controls in the group*/
CWnd *m_pclParentWnd;
private:
/*List of OwnerData*/
CTL_ListOfOwnerData m_pri_clListOfOwnerData;
/*The function to call to know if a Control can be displayed*/
/*The appliaction will use owner Data or something else to return the right value*/
CTL_td_p_fn_bControlCanBeDisplayed m_pri_p_fn_bControlCanBeDisplayedCallBack;
/*The parent list of controls*/
CTL_Editor_ControlList *m_pri_pclParentList;
/*Member functions*/
public:
/*The list of base controls*/
CTL_Editor_BaseControlList *m_pub_fn_pclGetListOfBaseControls();
/*The parent list of controls*/
CTL_Editor_ControlList *m_pub_fn_pclGetParentList();
CString m_pub_fn_csGetControlName();
/*Returns the old name*/
CString m_pub_fn_csSetControlName(CString _csNewName);
CTL_Editor_Static *m_pub_fn_pclGetNameStatic();
BOOL m_pub_fn_bHasBeenCreated();
BOOL m_fn_bCanUserChangeAspect();
BOOL m_fn_bIsAlwaysReadOnly();
BOOL m_fn_bIsReadOnly();
/*ANNECY BBB {*/
BOOL m_fn_bAcceptsToTakeNameFromData() { return m_bAcceptNameFromData; }
/*ANNECY BBB }*/
CRect m_fn_crGetZoneRect();
CTL_Editor_Data *m_fn_pclGetEditedData();
virtual void m_fn_vSetEditedData(CTL_Editor_Data *);
CTL_tdeEditorDataType m_pub_fn_tdeGetDataType();
CTL_tdeControlSpacingType m_fn_tdeGetSpacingType();
void m_fn_vAskForNewAspect(unsigned short uwAllowedTotalWidth);
void m_pub_fn_vDisplayInZone( CRect &_r_crSameLineDestinationZone,
CRect &_r_crNextLineDestinationZone);
void m_pub_fn_vSetControlCanBeDisplayedCallBack(CTL_td_p_fn_bControlCanBeDisplayed _p_fn_CallBalck);
/*Indicates whether this control must be displayed, according to CallBack*/
BOOL m_pub_fn_bMustBeDisplayed();
/*Owner Data*/
CTL_OwnerData *m_pub_fn_pclAddOwnerData(void *_pvDataPtr,
CString _csName);
CTL_OwnerData *m_pub_fn_pclAddOwnerData(long _lData,
CString _csName);
CTL_OwnerData *m_pub_fn_pclGetOwnerDataWithName(CString _csSearchedName);
/* Virtual functions*/
/*///////////////////*/
/*Function called to create controls (must be called only once)*/
/*(This function is pure virtual)*/
virtual BOOL m_fn_bCreateControl(CWnd *) = 0;
/*Function called to edit complex data (which can not be directly*/
/*edited)*/
/*(This function is virtual)*/
virtual void m_fn_vEditData();
/*Function called to develop complex data in tree*/
/*(This function is virtual)*/
virtual void m_fn_vDevelopData();
/*Function called to display the associated control of the char.*/
/*(This function is pure virtual)*/
virtual void m_fn_vDisplay() = 0;
/*Function called to hide the associated control of the char.*/
virtual void m_fn_vHide();
/*Function called to update the associated control of the char.*/
/*(This function is pure virtual)*/
virtual void m_fn_vUpdate(CTL_tdeUpdateReason _eReason = CTL_UPDATE_REASON__NO_REASON_GIVEN,
long _lUserDefinedReason = 0) = 0;
/*Function called to update parent window in case of values changes.*/
virtual void m_fn_vUpdateParent(CTL_tdeUpdateReason eReason = CTL_UPDATE_REASON__NO_REASON_GIVEN,
long _lUserDefinedReason = 0);
/*Function called to make control Read Only*/
/*(This function is pure virtual)*/
virtual void m_fn_vMakeReadOnly() = 0;
/*Function called to make control Read-Write*/
/*(This function is pure virtual)*/
virtual void m_fn_vMakeReadWrite() = 0;
protected:
BOOL m_pro_fn_bCreateBaseControls(unsigned char _ucNamePercentWidth,
unsigned short _uwNameMinWidth,
unsigned short _uwHeight,
BOOL _bGoToNextLineAfterName = FALSE);
void m_pro_fn_vDisplayBaseControls();
void m_pro_fn_vHideBaseControls();
private:
BOOL m_pri_fn_bCanDisplayInWidth(unsigned short uwLeftWidth);
/*Display of sub_controls in list*/
void m_pri_fn_vDisplaySubControlsInZone(BOOL _bUseNextLineZone,
CRect &_r_crSameLineDestinationZone,
CRect &_r_crNextLineDestinationZone);
unsigned short m_pri_fn_uwComputeTotalWidth(unsigned short uwAllowedTotalWidth);
unsigned char m_pri_fn_ucGetBaseControlNumber();
friend class EdActors_ControlDefinitionDialog;
};
#endif /*_CTL_CONTROL_*/