added text input
This commit is contained in:
parent
44d51f917f
commit
36229efea5
@ -23,6 +23,7 @@ public:
|
|||||||
ItemVariable(CatVar &variable);
|
ItemVariable(CatVar &variable);
|
||||||
|
|
||||||
void Change(float amount);
|
void Change(float amount);
|
||||||
|
void PutChar(char ch);
|
||||||
|
|
||||||
virtual void Update() override;
|
virtual void Update() override;
|
||||||
virtual bool ConsumesKey(ButtonCode_t key) override;
|
virtual bool ConsumesKey(ButtonCode_t key) override;
|
||||||
|
@ -24,7 +24,7 @@ void ItemVariable::Update()
|
|||||||
Item::Update();
|
Item::Update();
|
||||||
if (!catvar.desc_long.empty())
|
if (!catvar.desc_long.empty())
|
||||||
if (catvar.desc_long.length() && IsHovered() &&
|
if (catvar.desc_long.length() && IsHovered() &&
|
||||||
catvar.desc_long != "no description")
|
catvar.desc_long != "no description")
|
||||||
ShowTooltip(catvar.desc_long);
|
ShowTooltip(catvar.desc_long);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -66,7 +66,9 @@ bool ItemVariable::ConsumesKey(ButtonCode_t key)
|
|||||||
if (capturing)
|
if (capturing)
|
||||||
return true;
|
return true;
|
||||||
if (key == ButtonCode_t::MOUSE_WHEEL_DOWN ||
|
if (key == ButtonCode_t::MOUSE_WHEEL_DOWN ||
|
||||||
key == ButtonCode_t::MOUSE_WHEEL_UP || key == ButtonCode_t::MOUSE_FIRST)
|
key == ButtonCode_t::MOUSE_WHEEL_UP ||
|
||||||
|
key == ButtonCode_t::KEY_LSHIFT || key == ButtonCode_t::KEY_LCONTROL ||
|
||||||
|
key >= ButtonCode_t::KEY_FIRST && key <= ButtonCode_t::KEY_BACKSPACE)
|
||||||
return true;
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -84,11 +86,16 @@ void ItemVariable::OnFocusLose()
|
|||||||
capturing = false;
|
capturing = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ItemVariable::PutChar(char ch)
|
||||||
|
{
|
||||||
|
catvar.SetValue(catvar.GetString() + std::string(1, ch));
|
||||||
|
}
|
||||||
|
|
||||||
void ItemVariable::OnKeyPress(ButtonCode_t key, bool repeat)
|
void ItemVariable::OnKeyPress(ButtonCode_t key, bool repeat)
|
||||||
{
|
{
|
||||||
if (capturing)
|
if (capturing)
|
||||||
{
|
{
|
||||||
if (key == 70)
|
if (key == ButtonCode_t::KEY_ESCAPE)
|
||||||
key = (ButtonCode_t) 0;
|
key = (ButtonCode_t) 0;
|
||||||
catvar = (int) key;
|
catvar = (int) key;
|
||||||
capturing = false;
|
capturing = false;
|
||||||
@ -101,33 +108,69 @@ void ItemVariable::OnKeyPress(ButtonCode_t key, bool repeat)
|
|||||||
{
|
{
|
||||||
case CV_ENUM:
|
case CV_ENUM:
|
||||||
case CV_SWITCH:
|
case CV_SWITCH:
|
||||||
change = 1.0f;
|
case CV_STRING:
|
||||||
break;
|
{
|
||||||
|
if (key == ButtonCode_t::KEY_BACKSPACE)
|
||||||
|
{
|
||||||
|
std::string val = catvar.GetString();
|
||||||
|
if (val.length() > 0)
|
||||||
|
catvar.SetValue(val.substr(0, val.length() - 1));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (key == ButtonCode_t::KEY_SPACE)
|
||||||
|
{
|
||||||
|
PutChar(' ');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
char ch = 0;
|
||||||
|
if (g_IInputSystem->IsButtonDown(ButtonCode_t::KEY_LSHIFT) ||
|
||||||
|
g_IInputSystem->IsButtonDown(ButtonCode_t::KEY_RSHIFT))
|
||||||
|
ch = GetUpperChar(key);
|
||||||
|
else
|
||||||
|
ch = GetChar(key);
|
||||||
|
if (ch)
|
||||||
|
PutChar(ch);
|
||||||
|
}
|
||||||
|
}
|
||||||
case CV_INT:
|
case CV_INT:
|
||||||
case CV_FLOAT:
|
case CV_FLOAT:
|
||||||
{
|
{
|
||||||
if (catvar.restricted)
|
if (catvar.restricted)
|
||||||
{
|
|
||||||
change = float(catvar.max - catvar.min) / 50.0f;
|
change = float(catvar.max - catvar.min) / 50.0f;
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
change = 1.0f;
|
change = 1.0f;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (catvar.type == CV_STRING)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
if (change < 1.0f && catvar.type == CV_INT)
|
if (change < 1.0f && catvar.type == CV_INT)
|
||||||
change = 1.0f;
|
change = 1.0f;
|
||||||
|
|
||||||
if ((catvar.type == CV_SWITCH && key == ButtonCode_t::MOUSE_FIRST) ||
|
if (key == ButtonCode_t::MOUSE_WHEEL_UP)
|
||||||
key == ButtonCode_t::MOUSE_WHEEL_UP)
|
|
||||||
{
|
{
|
||||||
Change(change);
|
if (catvar.type == CV_FLOAT &&
|
||||||
|
g_IInputSystem->IsButtonDown(ButtonCode_t::KEY_LSHIFT))
|
||||||
|
Change(change * 2);
|
||||||
|
else if (catvar.type == CV_FLOAT &&
|
||||||
|
g_IInputSystem->IsButtonDown(ButtonCode_t::KEY_LCONTROL))
|
||||||
|
Change(change / 4);
|
||||||
|
else
|
||||||
|
Change(change);
|
||||||
}
|
}
|
||||||
else if (key == ButtonCode_t::MOUSE_WHEEL_DOWN)
|
else if (key == ButtonCode_t::MOUSE_WHEEL_DOWN)
|
||||||
{
|
{
|
||||||
Change(-change);
|
if (catvar.type == CV_FLOAT &&
|
||||||
|
g_IInputSystem->IsButtonDown(ButtonCode_t::KEY_LSHIFT))
|
||||||
|
Change(-change * 2);
|
||||||
|
else if (catvar.type == CV_FLOAT &&
|
||||||
|
g_IInputSystem->IsButtonDown(ButtonCode_t::KEY_LCONTROL))
|
||||||
|
Change(-change / 4);
|
||||||
|
else
|
||||||
|
Change(-change);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user