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 }