diff --git a/reference/CtrlMapper/CtrlMapper.lay b/reference/CtrlMapper/CtrlMapper.lay new file mode 100644 index 000000000..d22c05e1f --- /dev/null +++ b/reference/CtrlMapper/CtrlMapper.lay @@ -0,0 +1,7 @@ +LAYOUT(MyDlgLayout, 200, 88) + ITEM(Label, dv___0, SetLabel(t_("Text")).LeftPosZ(8, 32).TopPosZ(8, 19)) + ITEM(EditString, text, LeftPosZ(44, 152).TopPosZ(8, 19)) + ITEM(Option, option, SetLabel(t_("Option")).LeftPosZ(44, 108).TopPosZ(36, 15)) + ITEM(Button, ok, SetLabel(t_("OK")).LeftPosZ(132, 64).TopPosZ(60, 24)) +END_LAYOUT + diff --git a/reference/CtrlMapper/CtrlMapper.upp b/reference/CtrlMapper/CtrlMapper.upp new file mode 100644 index 000000000..9bdd98ae4 --- /dev/null +++ b/reference/CtrlMapper/CtrlMapper.upp @@ -0,0 +1,12 @@ +description "Using CtrlMapper to edit C++ structure in dialog\377"; + +uses + CtrlLib; + +file + main.cpp, + CtrlMapper.lay; + +mainconfig + "" = "GUI"; + diff --git a/reference/CtrlMapper/CtrlRetriever.lay b/reference/CtrlMapper/CtrlRetriever.lay new file mode 100644 index 000000000..c89951831 --- /dev/null +++ b/reference/CtrlMapper/CtrlRetriever.lay @@ -0,0 +1,7 @@ +LAYOUT(CtrlRetrieverLayout, 200, 88) + ITEM(Label, dv___0, SetLabel(t_("Text")).LeftPosZ(8, 32).TopPosZ(8, 19)) + ITEM(EditString, text, LeftPosZ(44, 152).TopPosZ(8, 19)) + ITEM(Option, option, SetLabel(t_("Option")).LeftPosZ(44, 108).TopPosZ(36, 15)) + ITEM(Button, ok, SetLabel(t_("OK")).LeftPosZ(132, 64).TopPosZ(60, 24)) +END_LAYOUT + diff --git a/reference/CtrlMapper/main.cpp b/reference/CtrlMapper/main.cpp new file mode 100644 index 000000000..47244c9a5 --- /dev/null +++ b/reference/CtrlMapper/main.cpp @@ -0,0 +1,47 @@ +#include + +using namespace Upp; + +#define LAYOUTFILE +#include + +struct MyStruct { + String text; + bool option; +}; + +struct MyDlg : WithMyDlgLayout { + typedef MyDlg CLASSNAME; + + void Map(CtrlMapper& m, MyStruct& s); + + MyDlg(); +}; + +MyDlg::MyDlg() +{ + CtrlLayoutOK(*this, "My Dialog"); +} + +void MyDlg::Map(CtrlMapper& m, MyStruct& s) +{ + m + (text, s.text) + (option, s.option) + ; +} + +GUI_APP_MAIN +{ + MyStruct data; + data.text = "Some text"; + data.option = true; + + MyDlg dlg; + dlg.Map(CtrlMapper().ToCtrls(), data); + if(dlg.Run() == IDOK) + dlg.Map(CtrlMapper().ToValues(), data); + + PromptOK(String() << "text: [* \1" << data.text << "\1]&" + << "option: [* " << data.option); +}