00001 #include "gui_slider.hpp" 00002 #include "gui_texture.hpp" 00003 00004 #include <luapp_function.hpp> 00005 00006 namespace gui 00007 { 00008 void slider::register_glue(utils::wptr<lua::state> pLua) 00009 { 00010 pLua->reg<lua_slider>(); 00011 } 00012 00013 lua_slider::lua_slider(lua_State* pLua) : lua_frame(pLua) 00014 { 00015 pSliderParent_ = dynamic_cast<slider*>(pParent_); 00016 if (pParent_ && !pSliderParent_) 00017 throw exception("lua_slider", "Dynamic cast failed !"); 00018 } 00019 00020 int lua_slider::_allow_clicks_outside_thumb(lua_State* pLua) 00021 { 00022 if (!check_parent_()) 00023 return 0; 00024 00025 lua::function mFunc("Slider:allow_clicks_outside_thumb", pLua); 00026 mFunc.add(0, "allow", lua::TYPE_BOOLEAN); 00027 if (mFunc.check()) 00028 pSliderParent_->set_allow_clicks_outside_thumb(mFunc.get(0)->get_bool()); 00029 00030 return mFunc.on_return(); 00031 } 00032 00033 int lua_slider::_get_max_value(lua_State* pLua) 00034 { 00035 if (!check_parent_()) 00036 return 0; 00037 00038 lua::function mFunc("Slider:get_max_value", pLua, 1); 00039 00040 mFunc.push(pSliderParent_->get_max_value()); 00041 00042 return mFunc.on_return(); 00043 } 00044 00045 int lua_slider::_get_min_value(lua_State* pLua) 00046 { 00047 if (!check_parent_()) 00048 return 0; 00049 00050 lua::function mFunc("Slider:get_min_value", pLua, 1); 00051 00052 mFunc.push(pSliderParent_->get_min_value()); 00053 00054 return mFunc.on_return(); 00055 } 00056 00057 int lua_slider::_get_min_max_values(lua_State* pLua) 00058 { 00059 if (!check_parent_()) 00060 return 0; 00061 00062 lua::function mFunc("Slider:get_min_max_values", pLua, 2); 00063 00064 mFunc.push(pSliderParent_->get_min_value()); 00065 mFunc.push(pSliderParent_->get_max_value()); 00066 00067 return mFunc.on_return(); 00068 } 00069 00070 int lua_slider::_get_orientation(lua_State* pLua) 00071 { 00072 if (!check_parent_()) 00073 return 0; 00074 00075 lua::function mFunc("Slider:get_orientation", pLua, 1); 00076 00077 switch (pSliderParent_->get_orientation()) 00078 { 00079 case slider::ORIENT_VERTICAL : mFunc.push(std::string("VERTICAL")); 00080 case slider::ORIENT_HORIZONTAL : mFunc.push(std::string("HORIZONTAL")); 00081 } 00082 00083 return mFunc.on_return(); 00084 } 00085 00086 int lua_slider::_get_thumb_texture(lua_State* pLua) 00087 { 00088 if (!check_parent_()) 00089 return 0; 00090 00091 lua::function mFunc("Slider:get_thumb_texture", pLua, 1); 00092 00093 texture* pTexture = pSliderParent_->get_thumb_texture(); 00094 if (pTexture) 00095 { 00096 pTexture->push_on_lua(mFunc.get_state()); 00097 mFunc.notify_pushed(); 00098 } 00099 00100 return mFunc.on_return(); 00101 } 00102 00103 int lua_slider::_get_value(lua_State* pLua) 00104 { 00105 if (!check_parent_()) 00106 return 0; 00107 00108 lua::function mFunc("Slider:get_value", pLua, 1); 00109 00110 mFunc.push(pSliderParent_->get_value()); 00111 00112 return mFunc.on_return(); 00113 } 00114 00115 int lua_slider::_get_value_step(lua_State* pLua) 00116 { 00117 if (!check_parent_()) 00118 return 0; 00119 00120 lua::function mFunc("Slider:get_value_step", pLua, 1); 00121 00122 mFunc.push(pSliderParent_->get_value_step()); 00123 00124 return mFunc.on_return(); 00125 } 00126 00127 int lua_slider::_set_max_value(lua_State* pLua) 00128 { 00129 if (!check_parent_()) 00130 return 0; 00131 00132 lua::function mFunc("Slider:set_max_value", pLua); 00133 mFunc.add(0, "max", lua::TYPE_NUMBER); 00134 if (mFunc.check()) 00135 { 00136 pSliderParent_->set_max_value(mFunc.get(0)->get_number()); 00137 } 00138 00139 return mFunc.on_return(); 00140 } 00141 00142 int lua_slider::_set_min_value(lua_State* pLua) 00143 { 00144 if (!check_parent_()) 00145 return 0; 00146 00147 lua::function mFunc("Slider:set_min_value", pLua); 00148 mFunc.add(0, "min", lua::TYPE_NUMBER); 00149 if (mFunc.check()) 00150 { 00151 pSliderParent_->set_min_value(mFunc.get(0)->get_number()); 00152 } 00153 00154 return mFunc.on_return(); 00155 } 00156 00157 int lua_slider::_set_min_max_values(lua_State* pLua) 00158 { 00159 if (!check_parent_()) 00160 return 0; 00161 00162 lua::function mFunc("Slider:set_min_max_values", pLua); 00163 mFunc.add(0, "min", lua::TYPE_NUMBER); 00164 mFunc.add(1, "max", lua::TYPE_NUMBER); 00165 if (mFunc.check()) 00166 { 00167 pSliderParent_->set_min_max_values( 00168 mFunc.get(0)->get_number(), 00169 mFunc.get(1)->get_number() 00170 ); 00171 } 00172 00173 return mFunc.on_return(); 00174 } 00175 00176 int lua_slider::_set_orientation(lua_State* pLua) 00177 { 00178 if (!check_parent_()) 00179 return 0; 00180 00181 lua::function mFunc("Slider:set_orientation", pLua); 00182 mFunc.add(0, "value", lua::TYPE_NUMBER); 00183 if (mFunc.check()) 00184 { 00185 pSliderParent_->set_value(mFunc.get(0)->get_number()); 00186 } 00187 00188 return mFunc.on_return(); 00189 } 00190 00191 int lua_slider::_set_thumb_texture(lua_State* pLua) 00192 { 00193 if (!check_parent_()) 00194 return 0; 00195 00196 lua::function mFunc("Slider:set_thumb_texture", pLua); 00197 mFunc.add(0, "texture", lua::TYPE_USERDATA); 00198 if (mFunc.check()) 00199 { 00200 lua_texture* pLuaTexture = mFunc.get_state()->get<lua_texture>(); 00201 if (pLuaTexture) 00202 { 00203 texture* pTexture = dynamic_cast<texture*>(pLuaTexture->get_parent()); 00204 pSliderParent_->set_thumb_texture(pTexture); 00205 } 00206 } 00207 00208 return mFunc.on_return(); 00209 } 00210 00211 int lua_slider::_set_value_step(lua_State* pLua) 00212 { 00213 if (!check_parent_()) 00214 return 0; 00215 00216 lua::function mFunc("Slider:set_value_step", pLua); 00217 mFunc.add(0, "value step", lua::TYPE_NUMBER); 00218 if (mFunc.check()) 00219 pSliderParent_->set_value_step(mFunc.get(0)->get_number()); 00220 00221 return mFunc.on_return(); 00222 } 00223 00224 int lua_slider::_set_value(lua_State* pLua) 00225 { 00226 if (!check_parent_()) 00227 return 0; 00228 00229 lua::function mFunc("Slider:set_value", pLua); 00230 mFunc.add(0, "value", lua::TYPE_NUMBER); 00231 mFunc.add(1, "silent", lua::TYPE_BOOLEAN, true); 00232 if (mFunc.check()) 00233 { 00234 if (mFunc.is_provided(1)) 00235 pSliderParent_->set_value(mFunc.get(0)->get_number(), mFunc.get(1)->get_bool()); 00236 else 00237 pSliderParent_->set_value(mFunc.get(0)->get_number()); 00238 } 00239 00240 return mFunc.on_return(); 00241 } 00242 }