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











SourceForge.net 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;

};

 

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)

    ;

}

 

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);

}

 

 

 

CtrlMapper.lay

 

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

 

 

 

 

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?