00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <GLW/GLWDropDownText.h>
00022 #include <GLW/GLWFont.h>
00023 #include <client/ScorchedClient.h>
00024
00025 REGISTER_CLASS_SOURCE(GLWDropDownText);
00026
00027 GLWDropDownText::GLWDropDownText(float x, float y, float w) :
00028 GLWDropDown(x, y, w)
00029 {
00030 }
00031
00032 GLWDropDownText::~GLWDropDownText()
00033 {
00034 }
00035
00036 void GLWDropDownText::addText(const LangString &text, const std::string &datatext)
00037 {
00038 GLWSelectorEntry entry(text, 0, false, 0, 0, datatext);
00039 addEntry(entry);
00040 }
00041
00042 LangString &GLWDropDownText::getCurrentText()
00043 {
00044 static LangString empty;
00045 if (!getCurrentEntry()) return empty;
00046 return getCurrentEntry()->getText();
00047 }
00048
00049 const char *GLWDropDownText::getCurrentDataText()
00050 {
00051 if (!getCurrentEntry()) return "";
00052 return getCurrentEntry()->getDataText();
00053 }
00054
00055 bool GLWDropDownText::isSelected(const LangString &text)
00056 {
00057 LangString current = getCurrentText();
00058 return (current == text);
00059 }
00060
00061 void GLWDropDownText::setCurrentText(const LangString &text)
00062 {
00063 int position = 0;
00064 std::list<GLWSelectorEntry>::iterator itor;
00065 for (itor = texts_.begin();
00066 itor != texts_.end();
00067 itor++)
00068 {
00069 GLWSelectorEntry &entry = *itor;
00070 if (entry.getText() == text)
00071 {
00072 current_ = &entry;
00073 break;
00074 }
00075
00076 position++;
00077 }
00078
00079 if (handler_)
00080 {
00081 handler_->select(id_, position, *current_);
00082 }
00083 }
00084
00085 void GLWDropDownText::draw()
00086 {
00087 GLWDropDown::draw();
00088
00089 if (getCurrentEntry())
00090 {
00091 GLWFont::instance()->getGameFont()->drawWidth(
00092 w_ - 25.0f,
00093 GLWFont::widgetFontColor, 14,
00094 x_ + 5.0f, y_ + 5.0f, 0.0f,
00095 getCurrentEntry()->getText());
00096 }
00097 }