comparison engine/core/gui/widgets/utf8textbox.h @ 228:756b895e1dab

Merged unicode-support back into trunk. Now all GUI/visible strings should be unicode. Internal strings unchanged. Remember to use a font that actually has the desired codepoints. Current default unicode policiy is 'ignore'.
author phoku@33b003aa-7bff-0310-803a-e67f0ece8222
date Sat, 21 Mar 2009 10:38:11 +0000
parents
children
comparison
equal deleted inserted replaced
227:d642169490f7 228:756b895e1dab
1 /***************************************************************************
2 * Copyright (C) 2009 by the FIFE team *
3 * http://www.fifengine.de *
4 * This file is part of FIFE. *
5 * *
6 * FIFE is free software; you can redistribute it and/or *
7 * modify it under the terms of the GNU Lesser General Public *
8 * License as published by the Free Software Foundation; either *
9 * version 2.1 of the License, or (at your option) any later version. *
10 * *
11 * This library is distributed in the hope that it will be useful, *
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
14 * Lesser General Public License for more details. *
15 * *
16 * You should have received a copy of the GNU Lesser General Public *
17 * License along with this library; if not, write to the *
18 * Free Software Foundation, Inc., *
19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
20 ***************************************************************************/
21
22 #ifndef RAVERON_UTF8TEXTBOX_HPP
23 #define RAVERON_UTF8TEXTBOX_HPP
24
25 // Standard C++ library includes
26
27 // 3rd party library includes
28 #include <guichan/widgets/textbox.hpp>
29
30 // FIFE includes
31 // These includes are split up in two parts, separated by one empty line
32 // First block: files included from the FIFE root src directory
33 // Second block: files included from the same folder
34 #include "util/utf8/utf8stringeditor.h"
35
36 namespace gcn {
37
38 /**
39 * UTF-8 aware version of the TextBox class.
40 *
41 * Using UTF8StringEditor, it is able to correctly edit UTF-8 multiline texts.
42 *
43 * You will also need an UTF-8 aware font to be able to correctly
44 * display such text (so gcn::ImageFont can not be used).
45 *
46 * TextBox::setCaretColumn(), TextBox::setCaretRow(),
47 * TextBox::setCaretRowColumn(), TextBox::getCaretColumn()
48 * and TextBox::getCaretRow() addresses byte offsets of the text.
49 * Use character versions of those methods with UTF8 suffix, they
50 * will correctly access real character positions in UTF-8 texts.
51 *
52 * @author Przemyslaw Grzywacz
53 */
54 class UTF8TextBox: public TextBox {
55 public:
56 /**
57 * Constructor.
58 * @param text Initial text.
59 */
60 UTF8TextBox(const std::string& text = "");
61
62 /**
63 * Destructor.
64 */
65 virtual ~UTF8TextBox();
66
67 /**
68 * Key pressed handler.
69 *
70 * Overides gcn::TextField to handle UTF-8 character codes.
71 *
72 * @param keyEvent Keyboard event.
73 */
74 virtual void keyPressed(KeyEvent& keyEvent);
75
76 /**
77 * Sets caret column (UTF-8 aware).
78 * @param column Caret column.
79 */
80 void setCaretColumnUTF8(int column);
81
82 /**
83 * Sets caret row (UTF-8 aware).
84 * @param row Caret row
85 */
86 void setCaretRowUTF8(int row);
87
88 /**
89 * Sets caret row and column (UTF-8 aware).
90 * @param row Caret row.
91 * @param column Caret column.
92 */
93 void setCaretRowColumnUTF8(int row, int column);
94
95 /**
96 * Gets caret column (UTF-8 aware).
97 * @return Caret column.
98 */
99 int getCaretColumnUTF8();
100
101 /**
102 * Gets caret column (UTF-8 aware).
103 * @return Caret row.
104 */
105 int getCaretRowUTF8();
106
107 protected:
108
109 /**
110 * UTF-8 string editor suppor.
111 *
112 * It allows the UTF8TextBox to easly traverse UTF-8 strings
113 * as well as inserting and deleting characters.
114 */
115 UTF8StringEditor* mStringEditor;
116 };
117
118 };
119
120 #endif // !RAVERON_UTF8TEXTBOX_HPP