From 27b8ce1db37b3460b489dc0ad8446d19264db2a8 Mon Sep 17 00:00:00 2001 From: cody271 Date: Sat, 19 Aug 2017 15:32:52 -0700 Subject: [PATCH] Add uiTimer() API and example --- darwin/main.m | 4 +++ examples/CMakeLists.txt | 8 +++++- examples/timer/main.c | 64 +++++++++++++++++++++++++++++++++++++++++ ui.h | 2 ++ unix/main.c | 4 +++ windows/main.cpp | 4 +++ 6 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 examples/timer/main.c diff --git a/darwin/main.m b/darwin/main.m index 865fb942..0bdb2965 100644 --- a/darwin/main.m +++ b/darwin/main.m @@ -243,3 +243,7 @@ void uiQueueMain(void (*f)(void *data), void *data) // the signature of f matches dispatch_function_t dispatch_async_f(dispatch_get_main_queue(), data, f); } + +void uiTimer(int milliseconds, int (*f)(void *data), void *data) +{ +} diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 61ed7b82..8d83566e 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -42,9 +42,15 @@ _add_example(drawtext ${_EXAMPLE_RESOURCES_RC} ) +_add_example(timer + timer/main.c + ${_EXAMPLE_RESOURCES_RC} +) + add_custom_target(examples DEPENDS controlgallery histogram cpp-multithread - drawtext) + drawtext + timer) diff --git a/examples/timer/main.c b/examples/timer/main.c new file mode 100644 index 00000000..d1b80b97 --- /dev/null +++ b/examples/timer/main.c @@ -0,0 +1,64 @@ +#include +#include +#include +#include "../../ui.h" + +uiMultilineEntry *e; + +int sayTime(void *data) +{ + time_t t; + char *s; + + t = time(NULL); + s = ctime(&t); + + uiMultilineEntryAppend(e, s); + return 1; +} + +int onClosing(uiWindow *w, void *data) +{ + uiQuit(); + return 1; +} + +void saySomething(uiButton *b, void *data) +{ + uiMultilineEntryAppend(e, "Saying something\n"); +} + +int main(void) +{ + uiInitOptions o; + uiWindow *w; + uiBox *b; + uiButton *btn; + + memset(&o, 0, sizeof (uiInitOptions)); + if (uiInit(&o) != NULL) + abort(); + + w = uiNewWindow("Hello", 320, 240, 0); + uiWindowSetMargined(w, 1); + + b = uiNewVerticalBox(); + uiBoxSetPadded(b, 1); + uiWindowSetChild(w, uiControl(b)); + + e = uiNewMultilineEntry(); + uiMultilineEntrySetReadOnly(e, 1); + + btn = uiNewButton("Say Something"); + uiButtonOnClicked(btn, saySomething, NULL); + uiBoxAppend(b, uiControl(btn), 0); + + uiBoxAppend(b, uiControl(e), 1); + + uiTimer(1000, sayTime, NULL); + + uiWindowOnClosing(w, onClosing, NULL); + uiControlShow(uiControl(w)); + uiMain(); + return 0; +} diff --git a/ui.h b/ui.h index e3f0c908..3eed0e39 100644 --- a/ui.h +++ b/ui.h @@ -62,6 +62,8 @@ _UI_EXTERN void uiQuit(void); _UI_EXTERN void uiQueueMain(void (*f)(void *data), void *data); +_UI_EXTERN void uiTimer(int milliseconds, int (*f)(void *data), void *data); + _UI_EXTERN void uiOnShouldQuit(int (*f)(void *data), void *data); _UI_EXTERN void uiFreeText(char *text); diff --git a/unix/main.c b/unix/main.c index 2998bf31..1047f5c5 100644 --- a/unix/main.c +++ b/unix/main.c @@ -106,3 +106,7 @@ void uiQueueMain(void (*f)(void *data), void *data) q->data = data; gdk_threads_add_idle(doqueued, q); } + +void uiTimer(int milliseconds, int (*f)(void *data), void *data) +{ +} diff --git a/windows/main.cpp b/windows/main.cpp index eb6d8492..00ae26c2 100644 --- a/windows/main.cpp +++ b/windows/main.cpp @@ -128,3 +128,7 @@ void uiQueueMain(void (*f)(void *data), void *data) // LONGTERM this is likely not safe to call across threads (allocates memory) logLastError(L"error queueing function to run on main thread"); } + +void uiTimer(int milliseconds, int (*f)(void *data), void *data) +{ +}