diff --git a/headers/os/interface/LayoutBuilder.h b/headers/os/interface/LayoutBuilder.h index 30e8d632b1..482e3b9627 100644 --- a/headers/os/interface/LayoutBuilder.h +++ b/headers/os/interface/LayoutBuilder.h @@ -5,12 +5,15 @@ #ifndef _LAYOUT_BUILDER_H #define _LAYOUT_BUILDER_H + #include #include #include #include +#include #include #include +#include #include @@ -114,6 +117,16 @@ public: int32 columnCount = 1, int32 rowCount = 1); inline ThisBuilder& Add(BLayoutItem* item, int32 column, int32 row, int32 columnCount = 1, int32 rowCount = 1); + inline ThisBuilder& AddMenuField(BMenuField* menuField, + int32 column, int32 row, + alignment labelAlignment + = B_ALIGN_HORIZONTAL_UNSET, + int32 columnCount = 1, int32 rowCount = 1); + inline ThisBuilder& AddTextControl(BTextControl* textControl, + int32 column, int32 row, + alignment labelAlignment + = B_ALIGN_HORIZONTAL_UNSET, + int32 columnCount = 1, int32 rowCount = 1); inline GroupBuilder AddGroup(enum orientation orientation, float spacing, int32 column, int32 row, @@ -492,6 +505,36 @@ Grid::Add(BLayoutItem* item, int32 column, int32 row, } +template +typename Grid::ThisBuilder& +Grid::AddMenuField(BMenuField* menuField, int32 column, + int32 row, alignment labelAlignment, int32 columnCount, int32 rowCount) +{ + BLayoutItem* item = menuField->CreateLabelLayoutItem(); + item->SetExplicitAlignment( + BAlignment(labelAlignment, B_ALIGN_VERTICAL_UNSET)); + fLayout->AddItem(item, column, row, columnCount, rowCount); + fLayout->AddItem(menuField->CreateMenuBarLayoutItem(), column + columnCount, + row, columnCount, rowCount); + return *this; +} + + +template +typename Grid::ThisBuilder& +Grid::AddTextControl(BTextControl* textControl, int32 column, + int32 row, alignment labelAlignment, int32 columnCount, int32 rowCount) +{ + BLayoutItem* item = textControl->CreateLabelLayoutItem(); + item->SetExplicitAlignment( + BAlignment(labelAlignment, B_ALIGN_VERTICAL_UNSET)); + fLayout->AddItem(item, column, row, columnCount, rowCount); + fLayout->AddItem(textControl->CreateTextViewLayoutItem(), + column + columnCount, row, columnCount, rowCount); + return *this; +} + + template typename Grid::GroupBuilder Grid::AddGroup(enum orientation orientation, float spacing,