mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-15 14:16:07 -06:00
53 lines
1.2 KiB
C++
53 lines
1.2 KiB
C++
#include "Layouts.h"
|
|
|
|
#define LAYOUTFILE <Layouts/layoutfile2.lay> // Layouts will be local to main.cpp
|
|
#include <CtrlCore/lay.h>
|
|
|
|
FirstTabDlg::FirstTabDlg() // Constructor needs to be in .cpp
|
|
{
|
|
CtrlLayout(*this); // Places widgets into positions
|
|
}
|
|
|
|
struct SecondTabDlg : WithSecondTabLayout<ParentCtrl> { // Local to main.cpp
|
|
typedef SecondTabDlg CLASSNAME;
|
|
SecondTabDlg();
|
|
};
|
|
|
|
SecondTabDlg::SecondTabDlg()
|
|
{
|
|
CtrlLayout(*this);
|
|
}
|
|
|
|
struct MainDlg : WithMainLayout<TopWindow> { // Local to main.cpp
|
|
typedef MainDlg CLASSNAME;
|
|
|
|
FirstTabDlg tab1;
|
|
SecondTabDlg tab2;
|
|
|
|
void DoDialog();
|
|
|
|
MainDlg();
|
|
};
|
|
|
|
void MainDlg::DoDialog()
|
|
{
|
|
WithDialogLayout<TopWindow> dlg; // Variant without class, good for simple modal dialogs
|
|
CtrlLayoutOK(dlg, "Dialog"); // OK means dialog has normal 'ok' button that needs setting up
|
|
dlg.info = String().Cat() << "Today is: " << GetSysDate();
|
|
if(dlg.Execute() != IDOK)
|
|
return;
|
|
}
|
|
|
|
MainDlg::MainDlg()
|
|
{
|
|
CtrlLayout(*this, "Layouts");
|
|
tabs.Add(tab1.SizePos(), "Tab1"); // SizePos() means dialog fills the whole are of tab
|
|
tabs.Add(tab2.SizePos(), "Tab2");
|
|
|
|
tab1.dialog << [=] { DoDialog(); }; // When pushing 'dialog' button, DoDialog is invoked
|
|
}
|
|
|
|
GUI_APP_MAIN
|
|
{
|
|
MainDlg().Run();
|
|
}
|