Overview
Examples
Screenshots
Comparisons
Applications
Download
Documentation
Tutorials
UppHub
Status & Roadmap
FAQ
Authors & License
Forums
Funding U++
Search on this site











SourceForge.net Logo

SourceForge.net Logo

GitHub Logo

Discord Logo

CtrlMapper

 

Using CtrlMapper to edit C++ structure in dialog

 

 

main.cpp

 

#include <CtrlLib/CtrlLib.h>

 

using namespace Upp;

 

#define LAYOUTFILE <CtrlMapper/CtrlMapper.lay>

#include <CtrlCore/lay.h>

 

struct MyStruct {

    String text;

    bool   option;

    double distance;

};

 

struct MyDlg : WithMyDlgLayout<TopWindow> {

    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)

        (distance, s.distance, 0.001)

    ;

}

 

GUI_APP_MAIN

{

    MyStruct data;

    data.text = "Some text";

    data.option = true;

    data.distance = 1700;

 

    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 << "]&"

                      << "distance: [* " << data.distance << " m]");

}

 

 

 

CtrlMapper.lay

 

LAYOUT(MyDlgLayout, 200, 120)

    ITEM(Upp::Label, dv___0, SetLabel(t_("Text")).LeftPosZ(8, 32).TopPosZ(8, 19))

    ITEM(Upp::EditString, text, LeftPosZ(64, 132).TopPosZ(8, 19))

    ITEM(Upp::Option, option, SetLabel(t_("Option")).LeftPosZ(64, 108).TopPosZ(32, 20))

    ITEM(Upp::Button, ok, SetLabel(t_("OK")).LeftPosZ(132, 64).TopPosZ(92, 24))

    ITEM(Upp::Label, dv___4, SetLabel(t_("Distance")).LeftPosZ(8, 56).TopPosZ(60, 19))

    ITEM(Upp::EditDouble, distance, LeftPosZ(64, 72).TopPosZ(60, 19))

    ITEM(Upp::Label, dv___6, SetLabel(t_("km")).LeftPosZ(140, 40).TopPosZ(60, 19))

END_LAYOUT

 

 

 

 

CtrlRetriever.lay

 

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

 

 

 

 

 

Do you want to contribute?