Implemented uiCheckbox and uiEntry on Haiku. Still no event handling.
This commit is contained in:
parent
278c973ae5
commit
b23de8794e
|
@ -1,42 +1,61 @@
|
||||||
// 18 november 2015
|
// 18 november 2015
|
||||||
#include "uipriv_haiku.hpp"
|
#include "uipriv_haiku.hpp"
|
||||||
|
|
||||||
|
// TODOs
|
||||||
|
// - checkbox text isn't aligned with the checkbox
|
||||||
|
|
||||||
struct uiCheckbox {
|
struct uiCheckbox {
|
||||||
uiHaikuControl c;
|
uiHaikuControl c;
|
||||||
BStringView *dummy;
|
BCheckBox *checkbox;
|
||||||
|
void (*onToggled)(uiCheckbox *, void *);
|
||||||
|
void *onToggledData;
|
||||||
};
|
};
|
||||||
|
|
||||||
uiHaikuDefineControl(
|
uiHaikuDefineControl(
|
||||||
uiCheckbox, // type name
|
uiCheckbox, // type name
|
||||||
uiCheckboxType, // type function
|
uiCheckboxType, // type function
|
||||||
dummy // handle
|
checkbox // handle
|
||||||
)
|
)
|
||||||
|
|
||||||
|
#define mCheckboxToggled 0x4E714E71
|
||||||
|
|
||||||
|
static void defaultOnToggled(uiCheckbox *c, void *data)
|
||||||
|
{
|
||||||
|
// do nothing
|
||||||
|
}
|
||||||
|
|
||||||
char *uiCheckboxText(uiCheckbox *c)
|
char *uiCheckboxText(uiCheckbox *c)
|
||||||
{
|
{
|
||||||
// TODO
|
// TODO not on api.haiku-os.org? or is this not right?
|
||||||
return NULL;
|
return uiHaikuStrdupText(c->checkbox->Label());
|
||||||
}
|
}
|
||||||
|
|
||||||
void uiCheckboxSetText(uiCheckbox *c, const char *text)
|
void uiCheckboxSetText(uiCheckbox *c, const char *text)
|
||||||
{
|
{
|
||||||
// TODO
|
// TODO not on api.haiku-os.org? or is this not right?
|
||||||
|
c->checkbox->SetLabel(text);
|
||||||
}
|
}
|
||||||
|
|
||||||
void uiCheckboxOnToggled(uiCheckbox *c, void (*f)(uiCheckbox *c, void *data), void *data)
|
void uiCheckboxOnToggled(uiCheckbox *c, void (*f)(uiCheckbox *c, void *data), void *data)
|
||||||
{
|
{
|
||||||
// TODO
|
c->onToggled = f;
|
||||||
|
c->onToggledData = data;
|
||||||
}
|
}
|
||||||
|
|
||||||
int uiCheckboxChecked(uiCheckbox *c)
|
int uiCheckboxChecked(uiCheckbox *c)
|
||||||
{
|
{
|
||||||
// TODO
|
return c->checkbox->Value() != B_CONTROL_OFF;
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void uiCheckboxSetChecked(uiCheckbox *c, int checked)
|
void uiCheckboxSetChecked(uiCheckbox *c, int checked)
|
||||||
{
|
{
|
||||||
// TODO
|
int32 value;
|
||||||
|
|
||||||
|
value = B_CONTROL_OFF;
|
||||||
|
if (checked)
|
||||||
|
value = B_CONTROL_ON;
|
||||||
|
// TODO does this trigger an event?
|
||||||
|
c->checkbox->SetValue(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
uiCheckbox *uiNewCheckbox(const char *text)
|
uiCheckbox *uiNewCheckbox(const char *text)
|
||||||
|
@ -45,8 +64,9 @@ uiCheckbox *uiNewCheckbox(const char *text)
|
||||||
|
|
||||||
c = (uiCheckbox *) uiNewControl(uiCheckboxType());
|
c = (uiCheckbox *) uiNewControl(uiCheckboxType());
|
||||||
|
|
||||||
c->dummy = new BStringView(BRect(0, 0, 1, 1), NULL,
|
c->checkbox = new BCheckBox(text, new BMessage(mCheckboxToggled));
|
||||||
"TODO uiCheckbox not implemented");
|
|
||||||
|
uiCheckboxOnToggled(c, defaultOnToggled, NULL);
|
||||||
|
|
||||||
uiHaikuFinishNewControl(c, uiCheckbox);
|
uiHaikuFinishNewControl(c, uiCheckbox);
|
||||||
|
|
||||||
|
|
|
@ -3,29 +3,39 @@
|
||||||
|
|
||||||
struct uiEntry {
|
struct uiEntry {
|
||||||
uiHaikuControl c;
|
uiHaikuControl c;
|
||||||
BStringView *dummy;
|
BTextControl *tc;
|
||||||
|
void (*onChanged)(uiEntry *, void *);
|
||||||
|
void *onChangedData;
|
||||||
};
|
};
|
||||||
|
|
||||||
uiHaikuDefineControl(
|
uiHaikuDefineControl(
|
||||||
uiEntry, // type name
|
uiEntry, // type name
|
||||||
uiEntryType, // type function
|
uiEntryType, // type function
|
||||||
dummy // handle
|
tc // handle
|
||||||
)
|
)
|
||||||
|
|
||||||
|
#define mEntryChanged 0x60FE60FE
|
||||||
|
|
||||||
|
static void defaultOnChanged(uiEntry *e, void *data)
|
||||||
|
{
|
||||||
|
// do nothing
|
||||||
|
}
|
||||||
|
|
||||||
char *uiEntryText(uiEntry *e)
|
char *uiEntryText(uiEntry *e)
|
||||||
{
|
{
|
||||||
// TODO
|
return uiHaikuStrdupText(e->tc->Text());
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void uiEntrySetText(uiEntry *e, const char *text)
|
void uiEntrySetText(uiEntry *e, const char *text)
|
||||||
{
|
{
|
||||||
// TODO
|
// TODO does this send a message?
|
||||||
|
e->tc->SetText(text);
|
||||||
}
|
}
|
||||||
|
|
||||||
void uiEntryOnChanged(uiEntry *e, void (*f)(uiEntry *e, void *data), void *data)
|
void uiEntryOnChanged(uiEntry *e, void (*f)(uiEntry *e, void *data), void *data)
|
||||||
{
|
{
|
||||||
// TODO
|
e->onChanged = f;
|
||||||
|
e->onChangedData = data;
|
||||||
}
|
}
|
||||||
|
|
||||||
int uiEntryReadOnly(uiEntry *e)
|
int uiEntryReadOnly(uiEntry *e)
|
||||||
|
@ -45,8 +55,9 @@ uiEntry *uiNewEntry(void)
|
||||||
|
|
||||||
e = (uiEntry *) uiNewControl(uiEntryType());
|
e = (uiEntry *) uiNewControl(uiEntryType());
|
||||||
|
|
||||||
e->dummy = new BStringView(BRect(0, 0, 1, 1), NULL,
|
e->tc = new BTextControl(NULL, "", new BMessage(mEntryChanged));
|
||||||
"TODO uiEntry not implemented");
|
|
||||||
|
uiEntryOnChanged(e, defaultOnChanged, NULL);
|
||||||
|
|
||||||
uiHaikuFinishNewControl(e, uiEntry);
|
uiHaikuFinishNewControl(e, uiEntry);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue