X-Git-Url: https://git.jsancho.org/?p=guile-irrlicht.git;a=blobdiff_plain;f=src%2Fevent-receiver.cpp;fp=src%2Fevent-receiver.cpp;h=0000000000000000000000000000000000000000;hp=1d8e09722e887d784f3bef4e707ca12123fc3d05;hb=d392bfc335713faab44275624d8fd78139880975;hpb=3bb58c2b45af12c0f9c9eac648e67ac6fa90e104 diff --git a/src/event-receiver.cpp b/src/event-receiver.cpp deleted file mode 100644 index 1d8e097..0000000 --- a/src/event-receiver.cpp +++ /dev/null @@ -1,272 +0,0 @@ -/* guile-irrlicht --- GNU Guile bindings for Irrlicht Engine - - Copyright (C) 2020 Javier Sancho - - This file is part of guile-irrlicht. - - guile-irrlicht is free software; you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 3 of the - License, or (at your option) any later version. - - guile-irrlicht is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with guile-irrlicht. If not, see - . -*/ - -#include -#include -#include "event-receiver.h" -#include "gsubr.h" -#include "keycodes.h" -#include "wrapped.h" - -using namespace irr; - -SCM -IEventReceiver_make (SCM proc_on_event) -{ - class CustomReceiver : public IEventReceiver - { - SCM scm_on_event; - - public: - CustomReceiver (SCM on_event) - { - scm_on_event = on_event; - } - - virtual bool OnEvent (const SEvent& event) - { - SCM wrapped_event = scm_from_irr_pointer ("", (void*) &event); - return scm_to_bool (scm_call_1 (scm_on_event, wrapped_event)); - } - }; - - CustomReceiver* receiver = new CustomReceiver (proc_on_event); - return scm_from_irr_pointer ("", (void*) receiver); -} - -SCM -SEvent_EventType (SCM event) -{ - return scm_from_event_type - (((SEvent*)scm_to_irr_pointer (event))->EventType); -} - -SCM -SEvent_SGUIEvent_Caller (SCM event) -{ - gui::IGUIElement* caller = - ((SEvent*)scm_to_irr_pointer (event))->GUIEvent.Caller; - return scm_from_irr_pointer ("", (void*) caller); -} - -SCM -SEvent_SGUIEvent_EventType (SCM event) -{ - return scm_from_gui_event_type - (((SEvent*)scm_to_irr_pointer (event))->GUIEvent.EventType); -} - -SCM -SEvent_SKeyInput_Key (SCM event) -{ - return scm_from_key_code - (((SEvent*)scm_to_irr_pointer (event))->KeyInput.Key); -} - -SCM -SEvent_SKeyInput_PressedDown (SCM event) -{ - return scm_from_bool - (((SEvent*)scm_to_irr_pointer (event))->KeyInput.PressedDown); -} - -void -init_event_receiver (void) -{ - DEFINE_GSUBR ("IEventReceiver_make", 1, 0, 0, IEventReceiver_make); - DEFINE_GSUBR ("SEvent_EventType", 1, 0, 0, SEvent_EventType); - DEFINE_GSUBR ("SEvent_SGUIEvent_Caller", 1, 0, 0, SEvent_SGUIEvent_Caller); - DEFINE_GSUBR ("SEvent_SGUIEvent_EventType", 1, 0, 0, SEvent_SGUIEvent_EventType); - DEFINE_GSUBR ("SEvent_SKeyInput_Key", 1, 0, 0, SEvent_SKeyInput_Key); - DEFINE_GSUBR ("SEvent_SKeyInput_PressedDown", 1, 0, 0, SEvent_SKeyInput_PressedDown); -} - -SCM -scm_from_event_type (EEVENT_TYPE event_type) -{ - switch (event_type) - { - case EET_GUI_EVENT: - return scm_from_utf8_symbol ("gui-event"); - break; - - case EET_MOUSE_INPUT_EVENT: - return scm_from_utf8_symbol ("mouse-input-event"); - break; - - case EET_KEY_INPUT_EVENT: - return scm_from_utf8_symbol ("key-input-event"); - break; - - case EET_JOYSTICK_INPUT_EVENT: - return scm_from_utf8_symbol ("joystick-input-event"); - break; - - case EET_LOG_TEXT_EVENT: - return scm_from_utf8_symbol ("log-text-event"); - break; - - case EET_USER_EVENT: - return scm_from_utf8_symbol ("user-event"); - break; - - default: - SCM type = scm_from_uint (event_type); - scm_error (scm_arg_type_key, NULL, "Wrong event type: ~S", - scm_list_1 (type), scm_list_1 (type)); - } -} - -SCM -scm_from_gui_event_type (gui::EGUI_EVENT_TYPE gui_event_type) -{ - switch (gui_event_type) - { - case gui::EGET_ELEMENT_FOCUS_LOST: - return scm_from_utf8_symbol ("element-focus-lost"); - break; - - case gui::EGET_ELEMENT_FOCUSED: - return scm_from_utf8_symbol ("element-focused"); - break; - - case gui::EGET_ELEMENT_HOVERED: - return scm_from_utf8_symbol ("element-hovered"); - break; - - case gui::EGET_ELEMENT_LEFT: - return scm_from_utf8_symbol ("element-left"); - break; - - case gui::EGET_ELEMENT_CLOSED: - return scm_from_utf8_symbol ("element-closed"); - break; - - case gui::EGET_BUTTON_CLICKED: - return scm_from_utf8_symbol ("button-clicked"); - break; - - case gui::EGET_SCROLL_BAR_CHANGED: - return scm_from_utf8_symbol ("scrollbar-changed"); - break; - - case gui::EGET_CHECKBOX_CHANGED: - return scm_from_utf8_symbol ("checkbox-changed"); - break; - - case gui::EGET_LISTBOX_CHANGED: - return scm_from_utf8_symbol ("listbox-changed"); - break; - - case gui::EGET_LISTBOX_SELECTED_AGAIN: - return scm_from_utf8_symbol ("listbox-selected-again"); - break; - - case gui::EGET_FILE_SELECTED: - return scm_from_utf8_symbol ("file-selected"); - break; - - case gui::EGET_DIRECTORY_SELECTED: - return scm_from_utf8_symbol ("directory-selected"); - break; - - case gui::EGET_FILE_CHOOSE_DIALOG_CANCELLED: - return scm_from_utf8_symbol ("file-choose-dialog-cancelled"); - break; - - case gui::EGET_MESSAGEBOX_YES: - return scm_from_utf8_symbol ("messagebox-yes"); - break; - - case gui::EGET_MESSAGEBOX_NO: - return scm_from_utf8_symbol ("messagebox-no"); - break; - - case gui::EGET_MESSAGEBOX_OK: - return scm_from_utf8_symbol ("messagebox-ok"); - break; - - case gui::EGET_MESSAGEBOX_CANCEL: - return scm_from_utf8_symbol ("messagebox-cancel"); - break; - - case gui::EGET_EDITBOX_ENTER: - return scm_from_utf8_symbol ("editbox-enter"); - break; - - case gui::EGET_EDITBOX_CHANGED: - return scm_from_utf8_symbol ("editbox-changed"); - break; - - case gui::EGET_EDITBOX_MARKING_CHANGED: - return scm_from_utf8_symbol ("editbox-marking-changed"); - break; - - case gui::EGET_TAB_CHANGED: - return scm_from_utf8_symbol ("tab-changed"); - break; - - case gui::EGET_MENU_ITEM_SELECTED: - return scm_from_utf8_symbol ("menu-item-selected"); - break; - - case gui::EGET_COMBO_BOX_CHANGED: - return scm_from_utf8_symbol ("combo-box-changed"); - break; - - case gui::EGET_SPINBOX_CHANGED: - return scm_from_utf8_symbol ("spinbox-changed"); - break; - - case gui::EGET_TABLE_CHANGED: - return scm_from_utf8_symbol ("table-changed"); - break; - - case gui::EGET_TABLE_HEADER_CHANGED: - return scm_from_utf8_symbol ("table-header-changed"); - break; - - case gui::EGET_TABLE_SELECTED_AGAIN: - return scm_from_utf8_symbol ("table-selected-again"); - break; - - case gui::EGET_TREEVIEW_NODE_DESELECT: - return scm_from_utf8_symbol ("treeview-node-deselect"); - break; - - case gui::EGET_TREEVIEW_NODE_SELECT: - return scm_from_utf8_symbol ("treeview-node-select"); - break; - - case gui::EGET_TREEVIEW_NODE_EXPAND: - return scm_from_utf8_symbol ("treeview-node-expand"); - break; - - case 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)); - } -}