X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=src%2Fgui-toolbar.cpp;h=ace658cf6ca423f20bca76d3294b83081da18caf;hb=c4d9e46f268b4f7f738dd77685c632991125cec9;hp=eec05c71a3714c4fbaa93fb93440ab2dc35c2ef2;hpb=a079c41de6a7504e579b425820beef21579e530e;p=guile-irrlicht.git diff --git a/src/gui-toolbar.cpp b/src/gui-toolbar.cpp index eec05c7..ace658c 100644 --- a/src/gui-toolbar.cpp +++ b/src/gui-toolbar.cpp @@ -21,57 +21,37 @@ #include #include - -#include "gui-button.h" +#include "gsubr.h" #include "gui-toolbar.h" -#include "texture.h" #include "wchar.h" #include "wrapped.h" -extern "C" { - - void - init_gui_toolbar (void) - { - init_gui_toolbar_type (); - } - - DEFINE_WRAPPED_TYPE (irr::gui::IGUIToolBar*, "gui-toolbar", - init_gui_toolbar_type, gui_toolbar_p, - wrap_gui_toolbar, unwrap_gui_toolbar); - - SCM - irr_gui_IGUIToolBar_addButton (SCM wrapped_gui_toolbar, - SCM rest) - { - SCM id = scm_from_int32 (-1); - SCM text = SCM_UNDEFINED; - SCM tooltiptext = SCM_UNDEFINED; - SCM img = SCM_UNDEFINED; - SCM pressedimg = SCM_UNDEFINED; - SCM is_push_button = SCM_BOOL_F; - SCM use_alpha_channel = SCM_BOOL_F; - - scm_c_bind_keyword_arguments ("add-button!", rest, (scm_t_keyword_arguments_flags)0, - scm_from_utf8_keyword ("id"), &id, - scm_from_utf8_keyword ("text"), &text, - scm_from_utf8_keyword ("tooltiptext"), &tooltiptext, - scm_from_utf8_keyword ("img"), &img, - scm_from_utf8_keyword ("pressedimg"), &pressedimg, - scm_from_utf8_keyword ("is_push_button"), &is_push_button, - scm_from_utf8_keyword ("use_alpha_channel"), &use_alpha_channel, - SCM_UNDEFINED); - - irr::gui::IGUIToolBar* toolbar = unwrap_gui_toolbar (wrapped_gui_toolbar); - irr::gui::IGUIButton* button = - toolbar->addButton (scm_to_int32 (id), - text == SCM_UNDEFINED ? 0 : scm_to_wide_char_string (text), - tooltiptext == SCM_UNDEFINED ? 0 : scm_to_wide_char_string (tooltiptext), - img == SCM_UNDEFINED ? 0 : unwrap_texture (img), - pressedimg == SCM_UNDEFINED ? 0 : unwrap_texture (pressedimg), - scm_to_bool (is_push_button), - scm_to_bool (use_alpha_channel)); - return wrap_gui_button (button); - } +using namespace irr; + +SCM +IGUIToolBar_addButton (SCM gui_toolbar, + SCM id, + SCM text, + SCM tooltiptext, + SCM img, + SCM pressedimg, + SCM is_push_button, + SCM use_alpha_channel) +{ + gui::IGUIToolBar* toolbar = (gui::IGUIToolBar*) scm_to_irr_pointer (gui_toolbar); + gui::IGUIButton* button = + toolbar->addButton (scm_to_int32 (id), + scm_to_wide_char_string (text), + scm_to_wide_char_string (tooltiptext), + (video::ITexture*) scm_to_irr_pointer (img), + (video::ITexture*) scm_to_irr_pointer (pressedimg), + scm_to_bool (is_push_button), + scm_to_bool (use_alpha_channel)); + return scm_from_pointer ((void*) button, NULL); +} +void +init_gui_toolbar (void) +{ + DEFINE_GSUBR ("IGUIToolBar_addButton", 8, 0, 0, IGUIToolBar_addButton); }