OSDN Git Service

Remove TODO comments, some lines commented out.
[xkeymacs/xkeymacs.git] / xkeymacsdll / FunctionDefinition.cpp
1 // FunctionDefinition.cpp: implementation of the CFunctionDefinition class.\r
2 //\r
3 //////////////////////////////////////////////////////////////////////\r
4 \r
5 #include "stdafx.h"\r
6 #include "FunctionDefinition.h"\r
7 #include "Commands.h"\r
8 #include "Utils.h"\r
9 \r
10 //////////////////////////////////////////////////////////////////////\r
11 // Construction/Destruction\r
12 //////////////////////////////////////////////////////////////////////\r
13 \r
14 CFunctionDefinition::CFunctionDefinition()\r
15 {\r
16 \r
17 }\r
18 \r
19 CFunctionDefinition::CFunctionDefinition(CString szSymbol, CString szDefinition)\r
20 {\r
21         SetSymbol(szSymbol);\r
22         SetDefinition(szDefinition);\r
23 }\r
24 \r
25 CFunctionDefinition::~CFunctionDefinition()\r
26 {\r
27 \r
28 }\r
29 \r
30 void CFunctionDefinition::SetSymbol(CString szSymbol)\r
31 {\r
32         m_szSymbol = szSymbol;\r
33 }\r
34 \r
35 void CFunctionDefinition::SetDefinition(CString szDefinition)\r
36 {\r
37         m_szDefinition = szDefinition;\r
38 }\r
39 \r
40 CString CFunctionDefinition::GetSymbol()\r
41 {\r
42         return m_szSymbol;\r
43 }\r
44 \r
45 CString CFunctionDefinition::GetDefinition()\r
46 {\r
47         return m_szDefinition;\r
48 }\r
49 \r
50 void CFunctionDefinition::ClearKey(int nApplicationID)\r
51 {\r
52         if (nApplicationID < 0 || MAX_APP <= nApplicationID) {\r
53                 return;\r
54         }\r
55 \r
56         while (!m_oKey[nApplicationID].IsEmpty()) {\r
57                 KeyBind *pKeyBind = (KeyBind *)m_oKey[nApplicationID].GetHead();\r
58                 delete pKeyBind;\r
59                 pKeyBind = NULL;\r
60                 m_oKey[nApplicationID].RemoveHead();\r
61         }\r
62 }\r
63 \r
64 void CFunctionDefinition::SetKey(int nApplicationID, int nCommandType, int nKey)\r
65 {\r
66         if (nApplicationID < 0 || MAX_APP <= nApplicationID) {\r
67                 return;\r
68         }\r
69 \r
70         try {\r
71                 KeyBind *pKeyBind = new KeyBind;\r
72 \r
73                 if (pKeyBind) {\r
74                         pKeyBind->nCommandType = nCommandType;\r
75                         pKeyBind->bVk = (BYTE)nKey;\r
76                         pKeyBind->nControlID = 0;\r
77 \r
78                         m_oKey[nApplicationID].AddTail((CObject *)pKeyBind);\r
79                 }\r
80         }\r
81         catch (CMemoryException* e) {\r
82                 e->Delete();\r
83 //              CUtils::Log("CFunctionDefinition::SetKey: 'new' threw an exception");\r
84         }\r
85 }\r
86 \r
87 int CFunctionDefinition::GetKeyNumber(int nApplicationID)\r
88 {\r
89         if (nApplicationID < 0 || MAX_APP <= nApplicationID) {\r
90                 return 0;\r
91         }\r
92 \r
93         return m_oKey[nApplicationID].GetCount();\r
94 }\r
95 \r
96 void CFunctionDefinition::GetKey(int nApplicationID, int nKeyID, int *pCommandType, int *pKey)\r
97 {\r
98         *pCommandType = 0;\r
99         *pKey = 0;\r
100 \r
101         if (nApplicationID < 0 || MAX_APP <= nApplicationID) {\r
102                 return;\r
103         }\r
104         if (nKeyID < 0 || m_oKey[nApplicationID].GetCount() <= nKeyID) {\r
105                 return;\r
106         }\r
107 \r
108         KeyBind *pKeyBind = (KeyBind *)m_oKey[nApplicationID].GetAt(m_oKey[nApplicationID].FindIndex(nKeyID));\r
109         *pCommandType = pKeyBind->nCommandType;\r
110         *pKey = pKeyBind->bVk;\r
111 }\r
112 \r
113 void CFunctionDefinition::RemoveKey(int nApplicationID, int nCommandType, int nKey)\r
114 {\r
115         if (nApplicationID < 0 || MAX_APP <= nApplicationID) {\r
116                 return;\r
117         }\r
118 \r
119         for (POSITION pos = m_oKey[nApplicationID].GetHeadPosition(); pos; ) {\r
120                 POSITION currentPos = pos;\r
121                 KeyBind *pKeyBind = (KeyBind *)m_oKey[nApplicationID].GetNext(pos);\r
122                 if (pKeyBind->nCommandType == nCommandType && pKeyBind->bVk == nKey) {\r
123                         delete pKeyBind;\r
124                         pKeyBind = NULL;\r
125                         m_oKey[nApplicationID].RemoveAt(currentPos);\r
126                         break;\r
127                 }\r
128         }\r
129 }\r