X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=src%2Fgui-environment.cpp;h=c2e52726d5d516c589d45bcb6fb65d6375512690;hb=3bb58c2b45af12c0f9c9eac648e67ac6fa90e104;hp=1ee3e5d9212c18009efab2fbdc222fbc5e04dee1;hpb=c4d9e46f268b4f7f738dd77685c632991125cec9;p=guile-irrlicht.git diff --git a/src/gui-environment.cpp b/src/gui-environment.cpp index 1ee3e5d..c2e5272 100644 --- a/src/gui-environment.cpp +++ b/src/gui-environment.cpp @@ -39,14 +39,20 @@ IGUIEnvironment_addButton (SCM gui_environment, SCM text, SCM tooltiptext) { + wchar_t* wtext = (wchar_t*) scm_to_utf32_string (text); + wchar_t* wtooltiptext = (wchar_t*) scm_to_utf32_string (tooltiptext); + gui::IGUIButton* button = ((gui::IGUIEnvironment*)scm_to_irr_pointer (gui_environment))-> addButton (scm_to_rect_s32 (rectangle), (TParent)scm_to_irr_pointer (parent), scm_to_int32 (id), - scm_to_wide_char_string (text), - scm_to_wide_char_string (tooltiptext)); - return scm_from_pointer ((void*)button, NULL); + wtext, + wtooltiptext); + + free (wtext); + free (wtooltiptext); + return scm_from_irr_pointer ("", (void*) button); } template @@ -58,14 +64,45 @@ IGUIEnvironment_addEditBox (SCM gui_environment, SCM parent, SCM id) { + wchar_t* wtext = (wchar_t*) scm_to_utf32_string (text); + gui::IGUIEditBox* editbox = ((gui::IGUIEnvironment*)scm_to_irr_pointer (gui_environment))-> - addEditBox (scm_to_wide_char_string (text), + addEditBox (wtext, scm_to_rect_s32 (rectangle), scm_to_bool (border), (TParent)scm_to_irr_pointer (parent), scm_to_int32 (id)); - return scm_from_pointer ((void*)editbox, NULL); + + free (wtext); + return scm_from_irr_pointer ("", (void*) editbox); +} + +template +SCM +IGUIEnvironment_addFileOpenDialog (SCM gui_environment, + SCM title, + SCM modal, + SCM parent, + SCM id, + SCM restore_cwd, + SCM start_dir) +{ + gui::IGUIEnvironment* guienv = (gui::IGUIEnvironment*)scm_to_irr_pointer (gui_environment); + wchar_t* wtitle = (wchar_t*) scm_to_utf32_string (title); + io::path::char_type* cstartDir = scm_to_utf8_string (start_dir); + + gui::IGUIFileOpenDialog* dialog = + guienv->addFileOpenDialog (wtitle, + scm_to_bool (modal), + (TParent)scm_to_irr_pointer (parent), + scm_to_int32 (id), + scm_to_bool (restore_cwd), + cstartDir); + + free (wtitle); + free (cstartDir); + return scm_from_irr_pointer ("", (void*) dialog); } template @@ -79,14 +116,18 @@ IGUIEnvironment_addImage (SCM gui_environment, SCM text) { gui::IGUIEnvironment* guienv = (gui::IGUIEnvironment*)scm_to_irr_pointer (gui_environment); + wchar_t* wtext = (wchar_t*) scm_to_utf32_string (text); + gui::IGUIImage* new_image = guienv->addImage ((video::ITexture*)scm_to_irr_pointer (image), scm_to_position2d_s32 (position), scm_to_bool (use_alpha_channel), (TParent)scm_to_irr_pointer (parent), scm_to_int32 (id), - scm_to_wide_char_string (text)); - return scm_from_pointer ((void*) new_image, NULL); + wtext); + + free (wtext); + return scm_from_irr_pointer ("", (void*) new_image); } template @@ -103,7 +144,7 @@ IGUIEnvironment_addListBox (SCM gui_environment, (TParent)scm_to_irr_pointer (parent), scm_to_int32 (id), scm_to_bool (draw_background)); - return scm_from_pointer ((void*)listbox, NULL); + return scm_from_irr_pointer ("", (void*) listbox); } template @@ -120,7 +161,7 @@ IGUIEnvironment_addScrollBar (SCM gui_environment, scm_to_rect_s32 (rectangle), (TParent)scm_to_irr_pointer (parent), scm_to_int32 (id)); - return scm_from_pointer ((void*)scrollbar, NULL); + return scm_from_irr_pointer ("", (void*) scrollbar); } template @@ -134,16 +175,20 @@ IGUIEnvironment_addStaticText (SCM gui_environment, SCM id, SCM fill_background) { + wchar_t* wtext = (wchar_t*) scm_to_utf32_string (text); + gui::IGUIStaticText* static_text = ((gui::IGUIEnvironment*)scm_to_irr_pointer (gui_environment))-> - addStaticText (scm_to_wide_char_string (text), + addStaticText (wtext, scm_to_rect_s32 (rectangle), scm_to_bool (border), scm_to_bool (word_wrap), (TParent)scm_to_irr_pointer (parent), scm_to_int32 (id), scm_to_bool (fill_background)); - return scm_from_pointer ((void*)static_text, NULL); + + free (wtext); + return scm_from_irr_pointer ("", (void*) static_text); } template @@ -155,14 +200,18 @@ IGUIEnvironment_addWindow (SCM gui_environment, SCM parent, SCM id) { + wchar_t* wtext = (wchar_t*) scm_to_utf32_string (text); + gui::IGUIWindow* window = ((gui::IGUIEnvironment*)scm_to_irr_pointer (gui_environment))-> addWindow (scm_to_rect_s32 (rectangle), scm_to_bool (modal), - scm_to_wide_char_string (text), + wtext, (TParent)scm_to_irr_pointer (parent), scm_to_int32 (id)); - return scm_from_pointer ((void*)window, NULL); + + free (wtext); + return scm_from_irr_pointer ("", (void*) window); } SCM @@ -177,17 +226,18 @@ IGUIEnvironment_getBuiltInFont (SCM gui_environment) { gui::IGUIFont* font = ((gui::IGUIEnvironment*)scm_to_irr_pointer (gui_environment))->getBuiltInFont (); - return scm_from_pointer ((void*)font, NULL); + return scm_from_irr_pointer ("", (void*) font); } SCM IGUIEnvironment_getFont (SCM gui_environment, SCM filename) { + char* cfilename = scm_to_utf8_string (filename); gui::IGUIFont* font = - ((gui::IGUIEnvironment*)scm_to_irr_pointer (gui_environment))-> - getFont (scm_to_utf8_stringn (filename, NULL)); - return scm_from_pointer ((void*)font, NULL); + ((gui::IGUIEnvironment*)scm_to_irr_pointer (gui_environment))->getFont (cfilename); + free (cfilename); + return scm_from_irr_pointer ("", (void*) font); } SCM @@ -195,7 +245,7 @@ IGUIEnvironment_getSkin (SCM gui_environment) { gui::IGUISkin* skin = ((gui::IGUIEnvironment*)scm_to_irr_pointer (gui_environment))->getSkin (); - return scm_from_pointer ((void*)skin, NULL); + return scm_from_irr_pointer ("", (void*) skin); } void @@ -205,6 +255,8 @@ init_gui_environment (void) IGUIEnvironment_addButton); DEFINE_GSUBR ("IGUIEnvironment_addEditBox_IGUIElement", 6, 0, 0, IGUIEnvironment_addEditBox); + DEFINE_GSUBR ("IGUIEnvironment_addFileOpenDialog_IGUIElement", 7, 0, 0, + IGUIEnvironment_addFileOpenDialog); DEFINE_GSUBR ("IGUIEnvironment_addImage_IGUIElement", 7, 0, 0, IGUIEnvironment_addImage); DEFINE_GSUBR ("IGUIEnvironment_addListBox_IGUIElement", 5, 0, 0, @@ -213,6 +265,8 @@ init_gui_environment (void) IGUIEnvironment_addScrollBar); DEFINE_GSUBR ("IGUIEnvironment_addStaticText_IGUIElement", 8, 0, 0, IGUIEnvironment_addStaticText); + DEFINE_GSUBR ("IGUIEnvironment_addStaticText_IGUIWindow", 8, 0, 0, + IGUIEnvironment_addStaticText); DEFINE_GSUBR ("IGUIEnvironment_addWindow_IGUIElement", 6, 0, 0, IGUIEnvironment_addWindow); DEFINE_GSUBR ("IGUIEnvironment_drawAll", 1, 0, 0, IGUIEnvironment_drawAll);