#include "demo_states.h"
#include <inttypes.h>
static void *doc1;
static void *doc2;
static void doc1_attachment(UiEvent *event,
void *userdata) {
if(event->intval) {
printf(
"attach document 1\n");
ui_attach_document(event->obj->ctx, doc1);
}
else {
printf(
"detach document 1\n");
ui_detach_document(event->obj->ctx, doc1);
}
}
static void doc2_attachment(UiEvent *event,
void *userdata) {
UiContext *ctx = ui_document_context(doc1);
if(event->intval) {
printf(
"attach document 2 to document 1\n");
ui_attach_document(ctx, doc2);
}
else {
printf(
"detach document 2 from document 1\n");
ui_detach_document(ctx, doc2);
}
}
static void doc_enable_state1(UiEvent *event,
void *doc) {
UiContext *ctx = ui_document_context(doc);
if(event->intval) {
ui_set_state(ctx,
1);
}
else {
ui_unset_state(ctx,
1);
}
}
static void doc_enable_state2(UiEvent *event,
void *doc) {
UiContext *ctx = ui_document_context(doc);
if(event->intval) {
ui_set_state(ctx,
2);
}
else {
ui_unset_state(ctx,
2);
}
}
static void doc_enable_state3(UiEvent *event,
void *doc) {
UiContext *ctx = ui_document_context(doc);
if(event->intval) {
ui_set_state(ctx,
3);
}
else {
ui_unset_state(ctx,
3);
}
}
static void doc_enable_state4(UiEvent *event,
void *doc) {
UiContext *ctx = ui_document_context(doc);
if(event->intval) {
ui_set_state(ctx,
4);
}
else {
ui_unset_state(ctx,
4);
}
}
static void doc_suppress_state1(UiEvent *event,
void *doc) {
UiContext *ctx = ui_document_context(doc);
if(event->intval) {
ui_suppress_state(ctx,
1);
}
else {
ui_unsuppress_state(ctx,
1);
}
}
static void doc_suppress_state2(UiEvent *event,
void *doc) {
UiContext *ctx = ui_document_context(doc);
if(event->intval) {
ui_suppress_state(ctx,
2);
}
else {
ui_unsuppress_state(ctx,
2);
}
}
static void doc_suppress_state3(UiEvent *event,
void *doc) {
UiContext *ctx = ui_document_context(doc);
if(event->intval) {
ui_suppress_state(ctx,
3);
}
else {
ui_unsuppress_state(ctx,
3);
}
}
static void doc_suppress_state4(UiEvent *event,
void *doc) {
UiContext *ctx = ui_document_context(doc);
if(event->intval) {
ui_suppress_state(ctx,
4);
}
else {
ui_unsuppress_state(ctx,
4);
}
}
static void application_startup(UiEvent *event,
void *userdata) {
UiObject *obj = ui_window(
"States Demo");
doc1 = ui_document_new(
8);
doc2 = ui_document_new(
8);
ui_hbox(obj, .margin =
10, .spacing =
8) {
ui_button(obj, .label =
"State 1", .states =
UI_STATES(
1));
ui_button(obj, .label =
"State 2", .states =
UI_STATES(
2));
ui_button(obj, .label =
"State 3", .states =
UI_STATES(
3));
ui_button(obj, .label =
"State 4", .states =
UI_STATES(
4));
ui_button(obj, .label =
"State 1,2", .states =
UI_STATES(
1,
2));
ui_button(obj, .label =
"State 1,2,3", .states =
UI_STATES(
1,
2,
3));
ui_button(obj, .label =
"State 1,2,3,4", .states =
UI_STATES(
1,
2,
3,
4));
}
ui_frame(obj, .label =
"Window", .fill =
TRUE, .margin =
10, .subcontainer =
UI_CONTAINER_VBOX) {
ui_hbox(obj, .margin =
10, .spacing =
8) {
ui_togglebutton(obj, .label =
"Enable 1", .enable_state =
1);
ui_togglebutton(obj, .label =
"Enable 2", .enable_state =
2);
ui_togglebutton(obj, .label =
"Enable 3", .enable_state =
3);
ui_togglebutton(obj, .label =
"Enable 4", .enable_state =
4);
}
ui_frame(obj, .label =
"Doc 1", .fill =
TRUE, .margin =
10, .padding =
10, .spacing =
10, .subcontainer =
UI_CONTAINER_VBOX) {
ui_togglebutton(obj, .label =
"Attach", .onchange = doc1_attachment);
ui_grid(obj, .margin =
10, .columnspacing =
8, .rowspacing =
8, .def_hfill =
TRUE) {
ui_togglebutton(obj, .label =
"Enable 1", .onchange = doc_enable_state1, .onchangedata = doc1);
ui_togglebutton(obj, .label =
"Enable 2", .onchange = doc_enable_state2, .onchangedata = doc1);
ui_togglebutton(obj, .label =
"Enable 3", .onchange = doc_enable_state3, .onchangedata = doc1);
ui_togglebutton(obj, .label =
"Enable 4", .onchange = doc_enable_state4, .onchangedata = doc1);
ui_newline(obj);
ui_togglebutton(obj, .label =
"Suppress 1", .onchange = doc_suppress_state1, .onchangedata = doc1);
ui_togglebutton(obj, .label =
"Suppress 2", .onchange = doc_suppress_state2, .onchangedata = doc1);
ui_togglebutton(obj, .label =
"Suppress 3", .onchange = doc_suppress_state3, .onchangedata = doc1);
ui_togglebutton(obj, .label =
"Suppress 4", .onchange = doc_suppress_state4, .onchangedata = doc1);
}
ui_frame(obj, .label =
"Doc 2", .fill =
TRUE, .margin =
10, .padding =
10, .spacing =
10, .subcontainer =
UI_CONTAINER_VBOX) {
ui_togglebutton(obj, .label =
"Attach", .onchange = doc2_attachment);
ui_grid(obj, .margin =
10, .columnspacing =
8, .rowspacing =
8, .def_hfill =
TRUE) {
ui_togglebutton(obj, .label =
"Enable 1", .onchange = doc_enable_state1, .onchangedata = doc2);
ui_togglebutton(obj, .label =
"Enable 2", .onchange = doc_enable_state2, .onchangedata = doc2);
ui_togglebutton(obj, .label =
"Enable 3", .onchange = doc_enable_state3, .onchangedata = doc2);
ui_togglebutton(obj, .label =
"Enable 4", .onchange = doc_enable_state4, .onchangedata = doc2);
ui_newline(obj);
ui_togglebutton(obj, .label =
"Suppress 1", .onchange = doc_suppress_state1, .onchangedata = doc2);
ui_togglebutton(obj, .label =
"Suppress 2", .onchange = doc_suppress_state2, .onchangedata = doc2);
ui_togglebutton(obj, .label =
"Suppress 3", .onchange = doc_suppress_state3, .onchangedata = doc2);
ui_togglebutton(obj, .label =
"Suppress 4", .onchange = doc_suppress_state4, .onchangedata = doc2);
}
}
}
}
ui_show(obj);
}
#ifndef UI_WIN32
int main(
int argc,
char **argv) {
ui_init(
NULL, argc, argv);
ui_onstartup(application_startup,
NULL);
ui_main();
return 0;
}
#else
int WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nShowCmd) {
return 0;
}
#endif