diff --git a/snipplets/code/C/rest_server/.editorconfig b/snipplets/code/C/rest_server/.editorconfig new file mode 100644 index 0000000..d4b6d88 --- /dev/null +++ b/snipplets/code/C/rest_server/.editorconfig @@ -0,0 +1,2 @@ +[{*.c,*.h}] +indent_size = unset diff --git a/snipplets/code/C/unixsocket/.editorconfig b/snipplets/code/C/unixsocket/.editorconfig new file mode 100644 index 0000000..d4b6d88 --- /dev/null +++ b/snipplets/code/C/unixsocket/.editorconfig @@ -0,0 +1,2 @@ +[{*.c,*.h}] +indent_size = unset diff --git a/snipplets/code/C/webui/.editorconfig b/snipplets/code/C/webui/.editorconfig new file mode 100644 index 0000000..d4b6d88 --- /dev/null +++ b/snipplets/code/C/webui/.editorconfig @@ -0,0 +1,2 @@ +[{*.c,*.h}] +indent_size = unset diff --git a/snipplets/code/C/webui/call_c_from_js.c b/snipplets/code/C/webui/call_c_from_js.c new file mode 100644 index 0000000..1844d8c --- /dev/null +++ b/snipplets/code/C/webui/call_c_from_js.c @@ -0,0 +1,129 @@ +// Call C from JavaScript Example + +#include "webui.h" + +void my_function_string(webui_event_t* e) { + + // JavaScript: + // webui_fn('MyID_One', 'Hello'); + + const char* str = webui_get_string(e); + printf("my_function_string: %s\n", str); // Hello + + // Need Multiple Arguments? + // + // WebUI support only one argument. To get multiple arguments + // you can send a JSON string from JavaScript then decode it. + // Example: + // + // my_json = my_json_decoder(str); + // foo = my_json[0]; + // bar = my_json[1]; +} + +void my_function_integer(webui_event_t* e) { + + // JavaScript: + // webui_fn('MyID_Two', 123456789); + + long long number = webui_get_int(e); + printf("my_function_integer: %lld\n", number); // 123456789 +} + +void my_function_boolean(webui_event_t* e) { + + // JavaScript: + // webui_fn('MyID_Three', true); + + bool status = webui_get_bool(e); // True + if(status) + printf("my_function_boolean: True\n"); + else + printf("my_function_boolean: False\n"); +} + +void my_function_with_response(webui_event_t* e) { + + // JavaScript: + // const result = webui_fn('MyID_Four', number); + + long long number = webui_get_int(e); + number = number * 2; + printf("my_function_with_response: %lld\n", number); + + // Send back the response to JavaScript + webui_return_int(e, number); +} + +int main() { + + // HTML + const char* my_html = + "" + " " + " Call C from JavaScript Example" + " " + " " + " " + "

WebUI - Call C from JavaScript Example

" + "

Call C function with argument (See the logs in your terminal)

" + "
" + " " + "
" + "
" + " " + "
" + "
" + " " + "
" + "
" + "

Call C function and wait for the response

" + "
" + " " + "
" + "
" + " " + " " + " " + " " + ""; + + // Create a window + size_t my_window = webui_new_window(); + + // Bind HTML elements with C functions + webui_bind(my_window, "MyID_One", my_function_string); + webui_bind(my_window, "MyID_Two", my_function_integer); + webui_bind(my_window, "MyID_Three", my_function_boolean); + webui_bind(my_window, "MyID_Four", my_function_with_response); + + // Show the window + webui_show(my_window, my_html); // webui_show_browser(my_window, my_html, Chrome); + + // Wait until all windows get closed + webui_wait(); + + return 0; +} + +#if defined(_MSC_VER) + int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, PSTR cmdline, int cmdshow) { + return main(); + } +#endif diff --git a/snipplets/code/C/webui/index.html b/snipplets/code/C/webui/index.html new file mode 100644 index 0000000..620502a --- /dev/null +++ b/snipplets/code/C/webui/index.html @@ -0,0 +1,23 @@ + + + + + + ololo + + + + +
+ + + + diff --git a/snipplets/code/C/webui/minimal.c b/snipplets/code/C/webui/minimal.c new file mode 100644 index 0000000..a05010e --- /dev/null +++ b/snipplets/code/C/webui/minimal.c @@ -0,0 +1,24 @@ +#include +#include "webui.h" + +void fn_one(webui_event_t *e) { + const char *str = webui_get_string(e); + printf("Data from JavaScript: %s\n", str); + + webui_return_string(e, "Message from C"); +} + +void fn_two(webui_event_t *e) { puts("Click!"); } + +int main() { + size_t my_window = webui_new_window(); + + webui_bind(my_window, "MyID", fn_one); + webui_bind(my_window, "clck", fn_two); + + webui_show(my_window, "index.html"); + webui_run(my_window, "alert('Fast!');"); + webui_wait(); + + return 0; +}