/*=========================================================================*/ /* CPAKACnf.hpp : CPA_KeyActionConfiguration Class for editors.*/ /**/ /* Version 1.0*/ /* Creation date 21/10/96*/ /* Author: Philippe Touillaud*/ /**/ /* The aim of this class is to provide tools for configurating the keyboard:*/ /* Init and configuration of the actions ran by a defined keypress.*/ /* Revision date*/ /* Author: CB : To isolate from CPA project*/ /**/ /* (c) Ubi Studios 1996*/ /**/ /*=========================================================================*/ #ifndef __CPAKeyActionConfiguration_HPP__ #define __CPAKeyActionConfiguration_HPP__ #ifdef ACTIVE_EDITOR #include /****************************************/ #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 /****************************************/ /*///////////////////////////////////////////////////////////////////////////*/ /* Some constants*/ #define C_KeybSHIFT 1 #define C_KeybCTRL 2 /*CPA2 Corneliu Babiuc (ALT key) 14-05-98*/ #define C_KeybALT 4 /*END CPA2 Corneliu Babiuc (ALT key) 14-05-98*/ /*###########################################################################*/ /* To define a key*/ class CPA_EXPORT CPA_KeyDefinition : public CObject { public: CPA_KeyDefinition(char cKey, char cFlags, unsigned short uwAction) { m_cKey = cKey; m_cFlags = cFlags; m_uwAction = uwAction; } public: char m_cKey; /* Value of key stroke*/ char m_cFlags; /* Value of flags*/ unsigned short m_uwAction; /* Associated action*/ }; /*///////////////////////////////////////////////////////////////////////////*/ /* Structure used for the definition of the link table KAction-IniNames*/ typedef struct tdstKeyboardActionDef_ { char *p_szIniName; /* Name of section in .INI file*/ unsigned short uwAction; /* Associated action*/ } tdstKeyboardActionDef; /*///////////////////////////////////////////////////////////////////////////*/ class CPA_EXPORT CPA_KeyActionConfiguration : public CObject { /* Construction, Destruction*/ public: CPA_KeyActionConfiguration(CString, tdstKeyboardActionDef *p_a_stKeybrdDef); ~CPA_KeyActionConfiguration(); private: typedef enum {VALID, INVALID, UNKNOWN} tdeNameValid; CString m_szObjectName; CString m_szFileIniName; tdeNameValid m_eFileIniNameValid; tdstKeyboardActionDef *m_p_a_stKeybrdDef; CList m_lstKeyDefinition; /*///////////////////////////////////////////////////////////////////////////*/ public: /**/ /* Get/Set*/ /**/ void mfn_vSetObjectName(CString szName) { m_szObjectName = szName; } CString mfn_szGetObjectName(void) { return m_szObjectName; } /**/ /* Flags tools*/ /**/ BOOL mfn_bIsShiftSet(char cFlags) { return (cFlags == C_KeybSHIFT); } BOOL mfn_bIsCtrlSet (char cFlags) { return (cFlags == C_KeybCTRL); } void mfn_vSetShift (char *cFlags) { *cFlags = C_KeybSHIFT; } void mfn_vSetCtrl (char *cFlags) { *cFlags = C_KeybCTRL; } void mfn_vSetFlag (char cVKCode, char *cFlags); /*CPA2 Corneliu Babiuc (ALT key) 14-05-98*/ BOOL mfn_bIsAltSet (char cFlags) {return (cFlags == C_KeybALT); } void mfn_vSetAlt (char *cFlags) { *cFlags = C_KeybALT; } /*END CPA2 Corneliu Babiuc (ALT key) 14-05-98*/ /**/ /* Key status acces*/ /**/ BOOL mfn_bIsReserved(char cKey); BOOL mfn_bIsCombined(char cKey); BOOL mfn_bKeyIsUsed(char cKey, char cFlags); BOOL mfn_bKeyIsUsedOutside(char cKey, char cFlags); /**/ /* List inits*/ /**/ void mfn_vUpdateIniFileFromKeyDefList(void); BOOL IsInitFileValid() { return (m_eFileIniNameValid == VALID); } /**/ /* Finding associations*/ /**/ unsigned short mfn_uwKeyToAction(char cKey); unsigned short mfn_uwKeyToAction(char cKey, char cFlags); char mfn_cActionToKey(unsigned short uwAction, char *p_cFlags); /**/ /* For the keyboard configuration interface*/ /**/ void mfn_vBuildStringList(CList *); void mfn_vUpdateKeyDefListFromStringList(CList *); CString mfn_oConvertKeyDefInString(char, char, unsigned short); char mfn_cConvertStringInKeyDef(const CString *, char *, unsigned short *); char mfn_cIniStringToKey(LPCTSTR, char *); CString mfn_oKeyToIniString(char, char); CString mfn_oKeyToKeyString(char, char); void CPA_KeyActionConfiguration::mfn_vDialog(CWnd *, CString); CString mfn_oConvertIniStringToKeyString(const CString *p_oIniString); /*///////////////////////////////////////////////////////////////////////////*/ private: /**/ /* Load list from INI file*/ /**/ void mfn_vUpdateKeyDefListFromIniFile(void); void mfn_vAddKeyDefFromIniFile(LPCTSTR p_szDes, unsigned short uwAction); /**/ /* Conversions*/ /**/ unsigned short mfn_uwIniStringToAction(const CString *); CString mfn_oActionToIniString(unsigned short); /**/ /* INI file access*/ /**/ CString mfn_oGetProfileString(LPCTSTR p_szDes); BOOL mfn_bWriteProfileString(LPCTSTR p_szDes, LPCTSTR p_oValue); /**/ /* Other useful tools*/ /**/ void mfn_vRemoveEditorKeyDefList(void); }; /*///////////////////////////////////////////////////////////////////////////*/ #endif /* ACTIVE_EDITOR*/ #endif /*__CPAKeyActionConfiguration_HPP__*/