1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- #include "zori.h"
- #include "miao.h"
- /*
- * Pardon the pun name, but Zori is the submodule that handles the user
- * interface and the menus.
- */
- int zori_handler_compare(const void * v1, const void * v2) {
- const struct zori_handler * h1 = v1;
- const struct zori_handler * h2 = v2;
-
- if (h1->type < h2->type) return -1;
- if (h1->type > h2->type) return 1;
- return 0;
- }
- struct zori_handler * zori_handlers_add(struct zori_handlers * me, zori_event_type type, zori_handler_func * handler, void * data) {
- struct zori_handler * result = NULL;
-
- result = miao_push_ptr(me);
- if (result) {
- result->type = type;
- result->handler = handler;
- result->data = data;
- }
- miao_qsort(me, zori_handler_compare);
- return result;
- }
- void zori_handlers_done(struct zori_handlers * me) {
- miao_done(me);
- }
- void zori_handlers_init(struct zori_handlers * me) {
- miao_init(me);
- }
- struct zori_handler * zori_handlers_search(struct zori_handlers * me, zori_event_type type) {
- struct zori_handler * result;
- struct zori_handler key;
- key.type = type;
- key.handler = NULL;
- key.data = NULL;
- if (!me) return NULL;
- result = miao_bsearch(me, zori_handler_compare, &key);
- return result;
- }
- int zori_handlers_handle(struct zori_handlers * me, struct zori_event * event, struct zori_widget * widget) {
- struct zori_handler * handler = zori_handlers_search(me, event->sysev.type);
- if (!handler) return 0;
- return handler->handler(event);
- }
- struct zori_root zori_the_root = {0};
- int zori_init() {
- return 0;
- }
|