libui/winforms/entry.cpp

63 lines
1.1 KiB
C++
Raw Normal View History

2015-11-26 17:27:23 -06:00
// 26 november 2015
#include "uipriv_winforms.hpp"
2015-11-26 17:27:23 -06:00
struct uiEntry {
uiWindowsControl c;
2015-11-26 18:11:55 -06:00
gcroot<TextBox ^> *textbox;
2015-11-26 17:27:23 -06:00
void (*onChanged)(uiEntry *, void *);
void *onChangedData;
};
uiWindowsDefineControl(
uiEntry, // type name
uiEntryType, // type function
2015-11-26 18:11:55 -06:00
textbox // handle
2015-11-26 17:27:23 -06:00
)
static void defaultOnChanged(uiEntry *e, void *data)
{
// do nothing
}
char *uiEntryText(uiEntry *e)
{
2015-11-26 18:11:55 -06:00
return uiWindowsCLRStringToText((*(e->textbox))->Text);
2015-11-26 17:27:23 -06:00
}
void uiEntrySetText(uiEntry *e, const char *text)
{
2015-11-26 18:11:55 -06:00
(*(e->textbox))->Text = fromUTF8(text);
2015-11-26 17:27:23 -06:00
}
void uiEntryOnChanged(uiEntry *e, void (*f)(uiEntry *e, void *data), void *data)
{
e->onChanged = f;
e->onChangedData = data;
}
int uiEntryReadOnly(uiEntry *e)
{
2015-11-26 18:11:55 -06:00
return (*(e->textbox))->IsReadOnly != false;
2015-11-26 17:27:23 -06:00
}
void uiEntrySetReadOnly(uiEntry *e, int readonly)
{
2015-11-26 18:11:55 -06:00
(*(e->textbox))->IsReadOnly = readonly != 0;
2015-11-26 17:27:23 -06:00
}
uiEntry *uiNewEntry(void)
{
uiEntry *e;
e = (uiEntry *) uiNewControl(uiEntryType());
2015-11-26 18:11:55 -06:00
e->textbox = new gcroot<TextBox ^>();
*(e->textbox) = gcnew TextBox();
2015-11-26 17:27:23 -06:00
uiEntryOnChanged(e, defaultOnChanged, NULL);
2015-11-26 18:11:55 -06:00
uiWindowsFinishNewControl(e, uiEntry, textbox);
2015-11-26 17:27:23 -06:00
return e;
}