diff --git a/examples/controlgallery/main.c b/examples/controlgallery/main.c index f29033e6..1e426041 100644 --- a/examples/controlgallery/main.c +++ b/examples/controlgallery/main.c @@ -82,6 +82,7 @@ int main(void) uiBox *inner2; uiEntry *entry; uiCombobox *cbox; + uiEditableCombobox *ecbox; uiRadioButtons *rb; uiTab *tab; @@ -206,11 +207,11 @@ int main(void) uiComboboxAppend(cbox, "Combobox Item 3"); uiBoxAppend(inner, uiControl(cbox), 0); - cbox = uiNewEditableCombobox(); - uiComboboxAppend(cbox, "Editable Item 1"); - uiComboboxAppend(cbox, "Editable Item 2"); - uiComboboxAppend(cbox, "Editable Item 3"); - uiBoxAppend(inner, uiControl(cbox), 0); + ecbox = uiNewEditableCombobox(); + uiEditableComboboxAppend(ecbox, "Editable Item 1"); + uiEditableComboboxAppend(ecbox, "Editable Item 2"); + uiEditableComboboxAppend(ecbox, "Editable Item 3"); + uiBoxAppend(inner, uiControl(ecbox), 0); rb = uiNewRadioButtons(); uiRadioButtonsAppend(rb, "Radio Button 1"); diff --git a/test/page10.c b/test/page10.c index bbbfe659..74de4fba 100644 --- a/test/page10.c +++ b/test/page10.c @@ -82,6 +82,9 @@ static void handlerDraw(uiAreaHandler *a, uiArea *area, uiAreaDrawParams *dp) uiDrawTextLayoutSetColor(layout, 5, 6, 1, 0, 0.5, 0.5); + uiDrawTextLayoutSetColor(layout, + 6, 7, + 0.5, 0, 1, 0.5); uiDrawText(dp->Context, 10, 10 + height + height, layout); uiDrawFreeTextLayout(layout); diff --git a/test/page4.c b/test/page4.c index 27c68880..bb57ef07 100644 --- a/test/page4.c +++ b/test/page4.c @@ -29,13 +29,13 @@ SETTOO(Slider, Low, -80) SETTOO(Slider, High, 80) static uiCombobox *cbox; -static uiCombobox *editable; +static uiEditableCombobox *editable; static uiRadioButtons *rb; static void appendCBRB(uiButton *b, void *data) { uiComboboxAppend(cbox, "New Item"); - uiComboboxAppend(editable, "New Item"); + uiEditableComboboxAppend(editable, "New Item"); uiRadioButtonsAppend(rb, "New Item"); } @@ -46,6 +46,17 @@ static void onCBChanged(uiCombobox *c, void *data) (int) uiComboboxSelected(c)); } +static void onECBChanged(uiEditableCombobox *c, void *data) +{ + char *t; + + t = uiEditableComboboxText(c); + printf("%s combobox changed to %s\n", + (char *) data, + t); + uiFreeText(t); +} + uiBox *makePage4(void) { uiBox *page4; @@ -101,10 +112,10 @@ uiBox *makePage4(void) uiBoxAppend(page4, uiControl(cbox), 0); editable = uiNewEditableCombobox(); - uiComboboxAppend(editable, "Editable Item 1"); - uiComboboxAppend(editable, "Editable Item 2"); - uiComboboxAppend(editable, "Editable Item 3"); - uiComboboxOnSelected(editable, onCBChanged, "editable"); + uiEditableComboboxAppend(editable, "Editable Item 1"); + uiEditableComboboxAppend(editable, "Editable Item 2"); + uiEditableComboboxAppend(editable, "Editable Item 3"); + uiEditableComboboxOnChanged(editable, onECBChanged, "editable"); uiBoxAppend(page4, uiControl(editable), 0); rb = uiNewRadioButtons(); diff --git a/ui.h b/ui.h index ad847b57..66d1fb7e 100644 --- a/ui.h +++ b/ui.h @@ -190,7 +190,15 @@ _UI_EXTERN intmax_t uiComboboxSelected(uiCombobox *c); _UI_EXTERN void uiComboboxSetSelected(uiCombobox *c, intmax_t n); _UI_EXTERN void uiComboboxOnSelected(uiCombobox *c, void (*f)(uiCombobox *c, void *data), void *data); _UI_EXTERN uiCombobox *uiNewCombobox(void); -_UI_EXTERN uiCombobox *uiNewEditableCombobox(void); + +typedef struct uiEditableCombobox uiEditableCombobox; +#define uiEditableCombobox(this) ((uiEditableCombobox *) (this)) +_UI_EXTERN void uiEditableComboboxAppend(uiEditableCombobox *c, const char *text); +_UI_EXTERN char *uiEditableComboboxText(uiEditableCombobox *c); +_UI_EXTERN void uiEditableComboboxSetText(uiEditableCombobox *c, intmax_t n); +// TODO what do we call a function that sets the currently selected item and fills the text field with it? editable comboboxes have no consistent concept of selected item +_UI_EXTERN void uiEditableComboboxOnChanged(uiEditableCombobox *c, void (*f)(uiEditableCombobox *c, void *data), void *data); +_UI_EXTERN uiEditableCombobox *uiNewEditableCombobox(void); typedef struct uiRadioButtons uiRadioButtons; #define uiRadioButtons(this) ((uiRadioButtons *) (this))