--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ui/wpf/UIwrapper/UIwrapper/controls.cpp Sun Jan 21 16:30:18 2024 +0100 @@ -0,0 +1,110 @@ + + +#include "stdafx.h" +#include <stdio.h> + +#include "controls.h" + +#using "UIcore.dll" + +/* ------------------------------ Buttons ------------------------------ */ + +UI_EXPORT void* __stdcall UIbutton(gcroot<UI::Container^> *container, char *label, UIcallback f, void *eventdata) { + gcroot<Button^> *button = new gcroot<Button^>(); + + EventWrapper ^evt = gcnew EventWrapper(f, eventdata); + RoutedEventHandler ^handler = gcnew RoutedEventHandler(evt, &EventWrapper::Callback); + + *button = UI::Controls::Button(*container, gcnew String(label), handler); + return button; +} + + +/* ------------------------------ Labels ------------------------------ */ + +UI_EXPORT void* __stdcall UIlabel(gcroot<UI::Container^> *container, char *label, int alignment) { + gcroot<Label^> *control = new gcroot<Label^>(); + *control = UI::Controls::Label(*container, gcnew String(label), alignment); + return control; +} + +UI_EXPORT void* __stdcall UIspace(gcroot<UI::Container^> *container) { + gcroot<Label^> *control = new gcroot<Label^>(); + *control = UI::Controls::Space(*container); + return control; +} + +UI_EXPORT void* __stdcall UIseparator(gcroot<UI::Container^> *container) { + gcroot<Separator^> *control = new gcroot<Separator^>(); + *control = UI::Controls::Separator(*container); + return control; +} + + + +/* ------------------------------ Textarea ------------------------------ */ + +UI_EXPORT void* __stdcall UItextarea(gcroot<UI::Container^> *container, char *text) { + String ^str = nullptr; + if (text) { + str = gcnew String(text); + } + + gcroot<UI::TextArea^> *textarea = new gcroot<UI::TextArea^>(); + *textarea = gcnew UI::TextArea(*container, str, true); + + return textarea; +} + +UI_EXPORT void __stdcall UItextarea_set(gcroot<UI::TextArea^> *textarea, char *str) { + (*textarea)->SetText(gcnew String(str)); +} + +UI_EXPORT char* __stdcall UItextarea_get(gcroot<UI::TextArea^> *textarea) { + String ^str = (*textarea)->GetText(); + return (char*)(void*)Marshal::StringToHGlobalAnsi(str); +} + +UI_EXPORT char* __stdcall UItextarea_getsubstr(gcroot<UI::TextArea^> *textarea, int begin, int end) { + String ^str = (*textarea)->GetSubString(begin, end); + return (char*)(void*)Marshal::StringToHGlobalAnsi(str); +} + +UI_EXPORT void __stdcall UItextarea_insert(gcroot<UI::TextArea^> *textarea, int position, char *str) { + // TODO +} + +UI_EXPORT int __stdcall UItextarea_position(gcroot<UI::TextArea^> *textarea) { + return (*textarea)->Position(); +} + +UI_EXPORT void __stdcall UItextarea_selection(gcroot<UI::TextArea^> *textarea, int *begin, int *end) { + // TODO +} + +UI_EXPORT int __stdcall UItextarea_length(gcroot<UI::TextArea^> *textarea) { + return (*textarea)->Length(); +} + +UI_EXPORT void __stdcall UItextarea_remove(gcroot<UI::TextArea^> *textarea, int begin, int end) { + // TODO +} + +UI_EXPORT void __stdcall UIfreestr(char *str) { + Marshal::FreeHGlobal((IntPtr)(void*)str); +} + + +/* ------------------------------ Textfield ------------------------------ */ + +UI_EXPORT void* __stdcall UItextfield(gcroot<UI::Container^> *container, char *text) { + String ^str = nullptr; + if (text) { + str = gcnew String(text); + } + + gcroot<UI::TextArea^> *textfield = new gcroot<UI::TextArea^>(); + *textfield = gcnew UI::TextArea(*container, str, false); + + return textfield; +} \ No newline at end of file