Initial import
[olsrd.git] / gui / win32 / Main / MyEdit.cpp
1 /*\r
2  * Windows GUI for olsr.org\r
3  * Copyright (C) 2004 Thomas Lopatic (thomas@lopatic.de)\r
4  *\r
5  * This file is part of olsr.org.\r
6  *\r
7  * olsr.org is free software; you can redistribute it and/or modify\r
8  * it under the terms of the GNU General Public License as published by\r
9  * the Free Software Foundation; either version 2 of the License, or\r
10  * (at your option) any later version.\r
11  *\r
12  * olsr.org is distributed in the hope that it will be useful,\r
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
15  * GNU General Public License for more details.\r
16  *\r
17  * You should have received a copy of the GNU General Public License\r
18  * along with olsr.org; if not, write to the Free Software\r
19  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
20  *\r
21  */\r
22 \r
23 #include "stdafx.h"\r
24 #include "frontend.h"\r
25 #include "MyEdit.h"\r
26 \r
27 #ifdef _DEBUG\r
28 #define new DEBUG_NEW\r
29 #undef THIS_FILE\r
30 static char THIS_FILE[] = __FILE__;\r
31 #endif\r
32 \r
33 MyEdit::MyEdit()\r
34 {\r
35 }\r
36 \r
37 MyEdit::~MyEdit()\r
38 {\r
39 }\r
40 \r
41 \r
42 BEGIN_MESSAGE_MAP(MyEdit, CEdit)\r
43         //{{AFX_MSG_MAP(MyEdit)\r
44         ON_WM_CHAR()\r
45         ON_WM_KILLFOCUS()\r
46         //}}AFX_MSG_MAP\r
47 END_MESSAGE_MAP()\r
48 \r
49 void MyEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) \r
50 {\r
51         static unsigned char *Allowed = (unsigned char *)"0123456789.";\r
52         int i;\r
53         CString Text;\r
54 \r
55         if (nChar >= 32)\r
56         {\r
57                 for (i = 0; Allowed[i] != 0; i++)\r
58                         if (nChar == Allowed[i])\r
59                                 break;\r
60 \r
61                 if (Allowed[i] == 0)\r
62                         return;\r
63 \r
64                 GetWindowText(Text);\r
65 \r
66                 if (nChar == '.' && Text.Find('.') >= 0)\r
67                         return;\r
68 \r
69                 if (Text.GetLength() > 2 && Text.Find('.') < 0 && nChar != '.')\r
70                         return;\r
71         }\r
72         \r
73         CEdit::OnChar(nChar, nRepCnt, nFlags);\r
74 }\r
75 \r
76 void MyEdit::OnKillFocus(CWnd* pNewWnd) \r
77 {\r
78         CString Text;\r
79         int Index;\r
80         int Len;\r
81 \r
82         GetWindowText(Text);\r
83 \r
84         Index = Text.Find('.');\r
85 \r
86         Len = Text.GetLength();\r
87 \r
88         if (Len == 0)\r
89                 SetWindowText("0.0");\r
90 \r
91         else if (Index < 0)\r
92                 SetWindowText(Text + ".0");\r
93 \r
94         else if (Index == Len - 1)\r
95                 SetWindowText(Text + "0");\r
96 \r
97         CEdit::OnKillFocus(pNewWnd);\r
98 }\r