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 }