X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=src%2Fevent-receiver.cpp;h=56affaf44c429920b88ad3e9880f0f4657b60afb;hb=70a3e723e41be522422f3e49faa060c64227bca8;hp=e97263e243168de467089caeea0c067f3a6922ac;hpb=898d352f35f3f007dd4c1f49091f38bdeb012fd3;p=guile-irrlicht.git diff --git a/src/event-receiver.cpp b/src/event-receiver.cpp index e97263e..56affaf 100644 --- a/src/event-receiver.cpp +++ b/src/event-receiver.cpp @@ -23,6 +23,7 @@ #include #include "event-receiver.h" +#include "gui-element.h" #include "gsubr.h" #include "keycodes.h" #include "wrapped.h" @@ -34,9 +35,11 @@ extern "C" { { init_event_receiver_type (); init_event_type (); - DEFINE_GSUBR ("event-key-input-key", 1, 0, 0, event_type); - DEFINE_GSUBR ("event-key-input-pressed", 1, 0, 0, event_type); - DEFINE_GSUBR ("event-type", 1, 0, 0, event_type); + DEFINE_GSUBR ("get-event-gui-caller", 1, 0, 0, get_event_gui_caller); + DEFINE_GSUBR ("get-event-gui-type", 1, 0, 0, get_event_gui_type); + DEFINE_GSUBR ("get-event-key-input-key", 1, 0, 0, get_event_key_input_key); + DEFINE_GSUBR ("get-event-key-input-pressed", 1, 0, 0, get_event_key_input_pressed); + DEFINE_GSUBR ("get-event-type", 1, 0, 0, get_event_type); DEFINE_GSUBR ("make-event-receiver", 1, 0, 0, make_event_receiver); } @@ -49,19 +52,31 @@ extern "C" { wrap_event, unwrap_event); SCM - event_key_input_key (SCM event) + get_event_gui_caller (SCM event) + { + return wrap_gui_element (unwrap_event (event)->GUIEvent.Caller); + } + + SCM + get_event_gui_type (SCM event) + { + return scm_from_gui_event_type (unwrap_event (event)->GUIEvent.EventType); + } + + SCM + get_event_key_input_key (SCM event) { return scm_from_key_code (unwrap_event (event)->KeyInput.Key); } SCM - event_key_input_pressed (SCM event) + get_event_key_input_pressed (SCM event) { return scm_from_bool (unwrap_event (event)->KeyInput.PressedDown); } SCM - event_type (SCM event) + get_event_type (SCM event) { return scm_from_event_type (unwrap_event (event)->EventType); } @@ -125,4 +140,140 @@ extern "C" { } } + SCM + scm_from_gui_event_type (irr::gui::EGUI_EVENT_TYPE gui_event_type) + { + switch (gui_event_type) + { + case irr::gui::EGET_ELEMENT_FOCUS_LOST: + return scm_from_utf8_symbol ("element-focus-lost"); + break; + + case irr::gui::EGET_ELEMENT_FOCUSED: + return scm_from_utf8_symbol ("element-focused"); + break; + + case irr::gui::EGET_ELEMENT_HOVERED: + return scm_from_utf8_symbol ("element-hovered"); + break; + + case irr::gui::EGET_ELEMENT_LEFT: + return scm_from_utf8_symbol ("element-left"); + break; + + case irr::gui::EGET_ELEMENT_CLOSED: + return scm_from_utf8_symbol ("element-closed"); + break; + + case irr::gui::EGET_BUTTON_CLICKED: + return scm_from_utf8_symbol ("button-clicked"); + break; + + case irr::gui::EGET_SCROLL_BAR_CHANGED: + return scm_from_utf8_symbol ("scrollbar-changed"); + break; + + case irr::gui::EGET_CHECKBOX_CHANGED: + return scm_from_utf8_symbol ("checkbox-changed"); + break; + + case irr::gui::EGET_LISTBOX_CHANGED: + return scm_from_utf8_symbol ("listbox-changed"); + break; + + case irr::gui::EGET_LISTBOX_SELECTED_AGAIN: + return scm_from_utf8_symbol ("listbox-selected-again"); + break; + + case irr::gui::EGET_FILE_SELECTED: + return scm_from_utf8_symbol ("file-selected"); + break; + + case irr::gui::EGET_DIRECTORY_SELECTED: + return scm_from_utf8_symbol ("directory-selected"); + break; + + case irr::gui::EGET_FILE_CHOOSE_DIALOG_CANCELLED: + return scm_from_utf8_symbol ("file-choose-dialog-cancelled"); + break; + + case irr::gui::EGET_MESSAGEBOX_YES: + return scm_from_utf8_symbol ("messagebox-yes"); + break; + + case irr::gui::EGET_MESSAGEBOX_NO: + return scm_from_utf8_symbol ("messagebox-no"); + break; + + case irr::gui::EGET_MESSAGEBOX_OK: + return scm_from_utf8_symbol ("messagebox-ok"); + break; + + case irr::gui::EGET_MESSAGEBOX_CANCEL: + return scm_from_utf8_symbol ("messagebox-cancel"); + break; + + case irr::gui::EGET_EDITBOX_ENTER: + return scm_from_utf8_symbol ("editbox-enter"); + break; + + case irr::gui::EGET_EDITBOX_CHANGED: + return scm_from_utf8_symbol ("editbox-changed"); + break; + + case irr::gui::EGET_EDITBOX_MARKING_CHANGED: + return scm_from_utf8_symbol ("editbox-marking-changed"); + break; + + case irr::gui::EGET_TAB_CHANGED: + return scm_from_utf8_symbol ("tab-changed"); + break; + + case irr::gui::EGET_MENU_ITEM_SELECTED: + return scm_from_utf8_symbol ("menu-item-selected"); + break; + + case irr::gui::EGET_COMBO_BOX_CHANGED: + return scm_from_utf8_symbol ("combo-box-changed"); + break; + + case irr::gui::EGET_SPINBOX_CHANGED: + return scm_from_utf8_symbol ("spinbox-changed"); + break; + + case irr::gui::EGET_TABLE_CHANGED: + return scm_from_utf8_symbol ("table-changed"); + break; + + case irr::gui::EGET_TABLE_HEADER_CHANGED: + return scm_from_utf8_symbol ("table-header-changed"); + break; + + case irr::gui::EGET_TABLE_SELECTED_AGAIN: + return scm_from_utf8_symbol ("table-selected-again"); + break; + + case irr::gui::EGET_TREEVIEW_NODE_DESELECT: + return scm_from_utf8_symbol ("treeview-node-deselect"); + break; + + case irr::gui::EGET_TREEVIEW_NODE_SELECT: + return scm_from_utf8_symbol ("treeview-node-select"); + break; + + case irr::gui::EGET_TREEVIEW_NODE_EXPAND: + return scm_from_utf8_symbol ("treeview-node-expand"); + break; + + case irr::gui::EGET_TREEVIEW_NODE_COLLAPSE: + return scm_from_utf8_symbol ("treeview-node-collapse"); + break; + + default: + SCM type = scm_from_uint (gui_event_type); + scm_error (scm_arg_type_key, NULL, "Wrong GUI event type: ~S", + scm_list_1 (type), scm_list_1 (type)); + } + } + }