X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=src%2Fevent-receiver.cpp;h=f0ec53aa0160208bc4b1e4592aaef47bc07ade23;hb=722b34ded15dc5317aa45f205b5fc85a78a394b5;hp=5d5467fc5a282dc77669b1bba8200e2501b231a5;hpb=2ae1221490c48228d5cb86550f8d1d33e8db930a;p=guile-irrlicht.git diff --git a/src/event-receiver.cpp b/src/event-receiver.cpp index 5d5467f..f0ec53a 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,6 +35,8 @@ extern "C" { { init_event_receiver_type (); init_event_type (); + DEFINE_GSUBR ("event-gui-caller", 1, 0, 0, event_gui_caller); + DEFINE_GSUBR ("event-gui-type", 1, 0, 0, event_gui_type); DEFINE_GSUBR ("event-key-input-key", 1, 0, 0, event_key_input_key); DEFINE_GSUBR ("event-key-input-pressed", 1, 0, 0, event_key_input_pressed); DEFINE_GSUBR ("event-type", 1, 0, 0, event_type); @@ -48,6 +51,18 @@ extern "C" { init_event_type, event_p, wrap_event, unwrap_event); + SCM + event_gui_caller (SCM event) + { + return wrap_gui_element (unwrap_event (event)->GUIEvent.Caller); + } + + SCM + event_gui_type (SCM event) + { + return scm_from_gui_event_type (unwrap_event (event)->GUIEvent.EventType); + } + SCM event_key_input_key (SCM event) { @@ -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)); + } + } + }