CtrlLib, Tutorial: fixed 16.2 tutorial (Layouts - Upp agnostic implementation).

This commit is contained in:
Zbigniew Rębacz 2022-05-04 17:13:50 +02:00
parent b11938a43c
commit d670725115
7 changed files with 41 additions and 19 deletions

View file

@ -2,7 +2,7 @@
using namespace Upp; using namespace Upp;
#define LAYOUTFILE <Gui16/dlg.lay> #define LAYOUTFILE <Gui16a/dlg.lay>
#include <CtrlCore/lay.h> #include <CtrlCore/lay.h>
struct MyAppWindow : public WithDlgLayout<TopWindow> { struct MyAppWindow : public WithDlgLayout<TopWindow> {

View file

@ -0,0 +1,12 @@
description "Layouts - Upp namespace agnostic\377";
uses
CtrlLib;
file
main.cpp,
dlg.lay;
mainconfig
"" = "GUI";

6
tutorial/Gui16b/dlg.lay Normal file
View file

@ -0,0 +1,6 @@
LAYOUT(DlgLayout, 208, 64)
ITEM(Upp::Label, dv___0, SetLabel(t_("Label")).LeftPosZ(8, 36).TopPosZ(8, 19))
ITEM(Upp::EditString, text, LeftPosZ(48, 92).TopPosZ(8, 19))
ITEM(Upp::Option, option, SetLabel(t_("Option")).LeftPosZ(8, 108).TopPosZ(32, 15))
END_LAYOUT

15
tutorial/Gui16b/main.cpp Normal file
View file

@ -0,0 +1,15 @@
#include <CtrlLib/CtrlLib.h>
#define LAYOUTFILE <Gui16b/dlg.lay>
#include <CtrlCore/lay.h>
struct MyAppWindow : public WithDlgLayout<Upp::TopWindow> {
MyAppWindow() {
CtrlLayout(*this, "MyDialog");
}
};
GUI_APP_MAIN
{
MyAppWindow().Run();
}

View file

@ -928,7 +928,7 @@ is such that it can be directly included into C`+`+:&]
[s7; &] [s7; &]
[s7; using namespace Upp;&] [s7; using namespace Upp;&]
[s7; &] [s7; &]
[s7; [* #define LAYOUTFILE <Gui16/dlg.lay>]&] [s7; [* #define LAYOUTFILE <Gui16a/dlg.lay>]&]
[s7; [* #include <CtrlCore/lay.h>]&] [s7; [* #include <CtrlCore/lay.h>]&]
[s7; &] [s7; &]
[s7; struct MyAppWindow : public [* WithDlgLayout<TopWindow>] `{&] [s7; struct MyAppWindow : public [* WithDlgLayout<TopWindow>] `{&]
@ -1004,17 +1004,16 @@ variable name used for unnamed layout members (0 is index of
member).]&] member).]&]
[s22;:16`.2: 16.2 Upp namespace agnostic implementation&] [s22;:16`.2: 16.2 Upp namespace agnostic implementation&]
[s5; If you prefer to write code that is namespace agnostic, you [s5; If you prefer to write code that is namespace agnostic, you
are not forced to use using namespace Upp in the context of using are not forced to use `"using namespace Upp`" in the context
layouts. Below implementation presents how you can avoid such of using layouts. Below implementation presents how you could
situation:&] avoid such situation:&]
[s0; &] [s0; &]
[s7; #include <CtrlLib/CtrlLib.h>&] [s7; #include <CtrlLib/CtrlLib.h>&]
[s7; &] [s7; &]
[s7; #define LAYOUTFILE <Gui16/dlg.lay>&] [s7; #define LAYOUTFILE <Gui16b/dlg.lay>&]
[s7; #include <CtrlCore/lay.h>&] [s7; #include <CtrlCore/lay.h>&]
[s7; &] [s7; &]
[s7; struct MyAppWindow : public Upp`::WithDlgLayout<Upp`::TopWindow> [s7; struct MyAppWindow : public WithDlgLayout<Upp`::TopWindow> `{&]
`{&]
[s7; -|MyAppWindow() `{&] [s7; -|MyAppWindow() `{&]
[s7; -|-|CtrlLayout(`*this, `"MyDialog`");&] [s7; -|-|CtrlLayout(`*this, `"MyDialog`");&]
[s7; -|`}&] [s7; -|`}&]
@ -1024,17 +1023,7 @@ situation:&]
[s7; `{&] [s7; `{&]
[s7; -|MyAppWindow().Run();&] [s7; -|MyAppWindow().Run();&]
[s7; `}&] [s7; `}&]
[s0; &] [s5; &]
[s5; Please note that from version 2021.1 of U`+`+ framework surrounding
inclusion with namespace is not longer required:&]
[s0; &]
[s7; namespace Upp `{&]
[s7; -|#define LAYOUTFILE <Gui16/dlg.lay>&]
[s7; -|#include <CtrlCore/lay.h>&]
[s7; `}&]
[s0; &]
[s5; However, for backward compatibility above construction is still
valid.&]
[s3;:17: 17. Value of widget&] [s3;:17: 17. Value of widget&]
[s5; Many widgets have some sort of natural value. E.g. the value [s5; Many widgets have some sort of natural value. E.g. the value
of [^`:`:EditString^ EditString] is String entered by user, whereas of [^`:`:EditString^ EditString] is String entered by user, whereas