00001 #include "gui_editbox.hpp"
00002
00003 #include <luapp_function.hpp>
00004
00005 namespace gui
00006 {
00007 void edit_box::register_glue(utils::wptr<lua::state> pLua)
00008 {
00009 pLua->reg<lua_edit_box>();
00010 }
00011
00012 lua_edit_box::lua_edit_box(lua_State* pLua) : lua_focus_frame(pLua)
00013 {
00014 pEditBoxParent_ = dynamic_cast<edit_box*>(pParent_);
00015 if (pParent_ && !pEditBoxParent_)
00016 throw exception("lua_edit_box", "Dynamic cast failed !");
00017 }
00018
00019 int lua_edit_box::_add_history_line(lua_State* pLua)
00020 {
00021 if (!check_parent_())
00022 return 0;
00023
00024 lua::function mFunc("EditBox:add_history_line", pLua);
00025 mFunc.add(0, "line", lua::TYPE_STRING);
00026 if (mFunc.check())
00027 pEditBoxParent_->add_history_line(mFunc.get(0)->get_string());
00028
00029 return mFunc.on_return();
00030 }
00031
00032 int lua_edit_box::_get_blink_speed(lua_State* pLua)
00033 {
00034 if (!check_parent_())
00035 return 0;
00036
00037 lua::function mFunc("EditBox:get_blink_speed", pLua, 1);
00038
00039 mFunc.push(pEditBoxParent_->get_blink_speed());
00040
00041 return mFunc.on_return();
00042 }
00043
00044 int lua_edit_box::_get_history_lines(lua_State* pLua)
00045 {
00046 const std::deque<std::string>& lHistoryLine = pEditBoxParent_->get_history_lines();
00047 if (!check_parent_())
00048 return 0;
00049
00050 lua::function mFunc("EditBox:get_history_lines", pLua, lHistoryLine.size());
00051
00052 std::deque<std::string>::const_iterator iterLine;
00053 foreach (iterLine, lHistoryLine)
00054 mFunc.push(*iterLine);
00055
00056 return mFunc.on_return();
00057 }
00058
00059 int lua_edit_box::_get_max_letters(lua_State* pLua)
00060 {
00061 if (!check_parent_())
00062 return 0;
00063
00064 lua::function mFunc("EditBox:get_max_letters", pLua, 1);
00065
00066 mFunc.push(pEditBoxParent_->get_max_letters());
00067
00068 return mFunc.on_return();
00069 }
00070
00071 int lua_edit_box::_get_num_letters(lua_State* pLua)
00072 {
00073 if (!check_parent_())
00074 return 0;
00075
00076 lua::function mFunc("EditBox:get_num_letters", pLua, 1);
00077
00078 mFunc.push(pEditBoxParent_->get_num_letters());
00079
00080 return mFunc.on_return();
00081 }
00082
00083 int lua_edit_box::_get_number(lua_State* pLua)
00084 {
00085 if (!check_parent_())
00086 return 0;
00087
00088 lua::function mFunc("EditBox:get_number", pLua, 1);
00089
00090 mFunc.push(utils::string_to_float(pEditBoxParent_->get_text()));
00091
00092 return mFunc.on_return();
00093 }
00094
00095 int lua_edit_box::_get_text(lua_State* pLua)
00096 {
00097 if (!check_parent_())
00098 return 0;
00099
00100 lua::function mFunc("EditBox:get_text", pLua, 1);
00101
00102 mFunc.push(pEditBoxParent_->get_text());
00103
00104 return mFunc.on_return();
00105 }
00106
00107 int lua_edit_box::_get_text_insets(lua_State* pLua)
00108 {
00109 if (!check_parent_())
00110 return 0;
00111
00112 lua::function mFunc("EditBox:get_text_insets", pLua, 4);
00113
00114 const std::array<int,4>& lInsets = pEditBoxParent_->get_text_insets();
00115
00116 for (uint i = 0; i < 4; ++i)
00117 mFunc.push(lInsets[i]);
00118
00119 return mFunc.on_return();
00120 }
00121
00122 int lua_edit_box::_highlight_text(lua_State* pLua)
00123 {
00124 if (!check_parent_())
00125 return 0;
00126
00127 lua::function mFunc("EditBox:highlight_text", pLua);
00128 mFunc.add(0, "start", lua::TYPE_NUMBER, true);
00129 mFunc.add(1, "end", lua::TYPE_NUMBER, true);
00130 if (mFunc.check())
00131 {
00132 uint uiStart = 0;
00133 uint uiEnd = uint(-1);
00134
00135 if (mFunc.is_provided(0))
00136 uiStart = uint(mFunc.get(0)->get_number());
00137 if (mFunc.is_provided(1))
00138 uiEnd = uint(mFunc.get(1)->get_number());
00139
00140 pEditBoxParent_->highlight_text(uiStart, uiEnd);
00141 }
00142
00143 return mFunc.on_return();
00144 }
00145
00146 int lua_edit_box::_insert(lua_State* pLua)
00147 {
00148 if (!check_parent_())
00149 return 0;
00150
00151 lua::function mFunc("EditBox:insert", pLua);
00152 mFunc.add(0, "text", lua::TYPE_STRING);
00153 if (mFunc.check())
00154 pEditBoxParent_->insert_after_cursor(mFunc.get(0)->get_string());
00155
00156 return mFunc.on_return();
00157 }
00158
00159 int lua_edit_box::_is_multi_line(lua_State* pLua)
00160 {
00161 if (!check_parent_())
00162 return 0;
00163
00164 lua::function mFunc("EditBox:is_multi_line", pLua);
00165
00166 mFunc.push(pEditBoxParent_->is_multi_line());
00167
00168 return mFunc.on_return();
00169 }
00170
00171 int lua_edit_box::_is_numeric(lua_State* pLua)
00172 {
00173 if (!check_parent_())
00174 return 0;
00175
00176 lua::function mFunc("EditBox:is_numeric", pLua);
00177
00178 mFunc.push(pEditBoxParent_->is_numeric_only());
00179
00180 return mFunc.on_return();
00181 }
00182
00183 int lua_edit_box::_is_password(lua_State* pLua)
00184 {
00185 if (!check_parent_())
00186 return 0;
00187
00188 lua::function mFunc("EditBox:is_password", pLua);
00189
00190 mFunc.push(pEditBoxParent_->is_password_mode_enabled());
00191
00192 return mFunc.on_return();
00193 }
00194
00195 int lua_edit_box::_set_blink_speed(lua_State* pLua)
00196 {
00197 if (!check_parent_())
00198 return 0;
00199
00200 lua::function mFunc("EditBox:set_blink_speed", pLua);
00201 mFunc.add(0, "blink speed", lua::TYPE_NUMBER);
00202 if (mFunc.check())
00203 pEditBoxParent_->set_blink_speed(double(mFunc.get(0)->get_number()));
00204
00205 return mFunc.on_return();
00206 }
00207
00208 int lua_edit_box::_set_max_history_lines(lua_State* pLua)
00209 {
00210 if (!check_parent_())
00211 return 0;
00212
00213 lua::function mFunc("EditBox:set_max_history_lines", pLua);
00214 mFunc.add(0, "max lines", lua::TYPE_NUMBER);
00215 if (mFunc.check())
00216 pEditBoxParent_->set_max_history_lines(mFunc.get(0)->get_number());
00217
00218 return mFunc.on_return();
00219 }
00220
00221 int lua_edit_box::_set_max_letters(lua_State* pLua)
00222 {
00223 if (!check_parent_())
00224 return 0;
00225
00226 lua::function mFunc("EditBox:set_max_letters", pLua);
00227 mFunc.add(0, "max letters", lua::TYPE_NUMBER);
00228 if (mFunc.check())
00229 pEditBoxParent_->set_max_letters(mFunc.get(0)->get_number());
00230
00231 return mFunc.on_return();
00232 }
00233
00234 int lua_edit_box::_set_multi_line(lua_State* pLua)
00235 {
00236 if (!check_parent_())
00237 return 0;
00238
00239 lua::function mFunc("EditBox:set_multi_line", pLua);
00240 mFunc.add(0, "multiLine", lua::TYPE_BOOLEAN);
00241 if (mFunc.check())
00242 pEditBoxParent_->set_multi_line(mFunc.get(0)->get_bool());
00243
00244 return mFunc.on_return();
00245 }
00246
00247 int lua_edit_box::_set_number(lua_State* pLua)
00248 {
00249 if (!check_parent_())
00250 return 0;
00251
00252 lua::function mFunc("EditBox:set_number", pLua);
00253 mFunc.add(0, "number", lua::TYPE_NUMBER);
00254 if (mFunc.check())
00255 pEditBoxParent_->set_text(utils::to_string(mFunc.get(0)->get_number()));
00256
00257 return mFunc.on_return();
00258 }
00259
00260 int lua_edit_box::_set_numeric(lua_State* pLua)
00261 {
00262 if (!check_parent_())
00263 return 0;
00264
00265 lua::function mFunc("EditBox:set_numeric", pLua);
00266 mFunc.add(0, "numeric", lua::TYPE_NUMBER);
00267 if (mFunc.check())
00268 pEditBoxParent_->set_numeric_only(mFunc.get(0)->get_bool());
00269
00270 return mFunc.on_return();
00271 }
00272
00273 int lua_edit_box::_set_password(lua_State* pLua)
00274 {
00275 if (!check_parent_())
00276 return 0;
00277
00278 lua::function mFunc("EditBox:set_password", pLua);
00279 mFunc.add(0, "enable", lua::TYPE_NUMBER);
00280 if (mFunc.check())
00281 pEditBoxParent_->enable_password_mode(mFunc.get(0)->get_bool());
00282
00283 return mFunc.on_return();
00284 }
00285
00286 int lua_edit_box::_set_text(lua_State* pLua)
00287 {
00288 if (!check_parent_())
00289 return 0;
00290
00291 lua::function mFunc("EditBox:set_text", pLua);
00292 mFunc.add(0, "text", lua::TYPE_STRING);
00293 if (mFunc.check())
00294 pEditBoxParent_->set_text(mFunc.get(0)->get_string());
00295
00296 return mFunc.on_return();
00297 }
00298
00299 int lua_edit_box::_set_text_insets(lua_State* pLua)
00300 {
00301 if (!check_parent_())
00302 return 0;
00303
00304 lua::function mFunc("EditBox:set_text_insets", pLua);
00305 mFunc.add(0, "left", lua::TYPE_NUMBER);
00306 mFunc.add(1, "right", lua::TYPE_NUMBER);
00307 mFunc.add(2, "top", lua::TYPE_NUMBER);
00308 mFunc.add(3, "bottom", lua::TYPE_NUMBER);
00309 if (mFunc.check())
00310 {
00311 pEditBoxParent_->set_text_insets(
00312 int(mFunc.get(0)->get_number()),
00313 int(mFunc.get(1)->get_number()),
00314 int(mFunc.get(2)->get_number()),
00315 int(mFunc.get(3)->get_number())
00316 );
00317 }
00318
00319 return mFunc.on_return();
00320 }
00321 }