Terminal: use BPopUpMenu in BMenuFields.

Using a BMenu works, but it doesn't look as good.
Thanks to Diver for noticing this.
This commit is contained in:
Adrien Destugues
2014-11-27 10:53:16 +01:00
parent f4e8886fae
commit 5211ae5d68
3 changed files with 29 additions and 28 deletions
+11 -4
View File
@@ -102,12 +102,19 @@ AppearancePrefView::AppearancePrefView(const char* name,
PrefHandler::Default()->getString(PREF_HALF_FONT_STYLE)); PrefHandler::Default()->getString(PREF_HALF_FONT_STYLE));
fFontField = new BMenuField(B_TRANSLATE("Font:"), fontMenu); fFontField = new BMenuField(B_TRANSLATE("Font:"), fontMenu);
BMenu* sizeMenu = TermWindow::MakeWindowSizeMenu(); BMenu* sizeMenu = new (std::nothrow) BPopUpMenu(
sizeMenu->SetLabelFromMarked(true); B_TRANSLATE_COMMENT("Custom", "Window size"));
if (sizeMenu != NULL) {
TermWindow::MakeWindowSizeMenu(sizeMenu);
sizeMenu->SetLabelFromMarked(true);
}
fWindowSizeField = new BMenuField(B_TRANSLATE("Window size:"), sizeMenu); fWindowSizeField = new BMenuField(B_TRANSLATE("Window size:"), sizeMenu);
BMenu* encodingMenu = TermWindow::MakeEncodingMenu(); BMenu* encodingMenu = new (std::nothrow) BPopUpMenu("Text encoding");
encodingMenu->SetLabelFromMarked(true); if (encodingMenu != NULL) {
TermWindow::MakeEncodingMenu(encodingMenu);
encodingMenu->SetLabelFromMarked(true);
}
fEncodingField = new BMenuField(B_TRANSLATE("Encoding:"), encodingMenu); fEncodingField = new BMenuField(B_TRANSLATE("Encoding:"), encodingMenu);
BPopUpMenu* schemesPopUp = _MakeColorSchemeMenu(MSG_COLOR_SCHEME_CHANGED, BPopUpMenu* schemesPopUp = _MakeColorSchemeMenu(MSG_COLOR_SCHEME_CHANGED,
+16 -22
View File
@@ -425,14 +425,9 @@ TermWindow::MenusBeginning()
} }
/* static */ /* static */ void
BMenu* TermWindow::MakeEncodingMenu(BMenu* menu)
TermWindow::MakeEncodingMenu()
{ {
BMenu* menu = new (std::nothrow) BMenu(B_TRANSLATE("Text encoding"));
if (menu == NULL)
return NULL;
BCharacterSetRoster roster; BCharacterSetRoster roster;
BCharacterSet charset; BCharacterSet charset;
while (roster.GetNextCharacterSet(&charset) == B_OK) { while (roster.GetNextCharacterSet(&charset) == B_OK) {
@@ -457,8 +452,6 @@ TermWindow::MakeEncodingMenu()
} }
menu->SetRadioMode(true); menu->SetRadioMode(true);
return menu;
} }
@@ -475,10 +468,17 @@ TermWindow::_SetupMenu()
fFontSizeMenu->AddItem(fIncreaseFontSizeMenuItem); fFontSizeMenu->AddItem(fIncreaseFontSizeMenuItem);
fFontSizeMenu->AddItem(fDecreaseFontSizeMenuItem); fFontSizeMenu->AddItem(fDecreaseFontSizeMenuItem);
BMenu* windowSize = MakeWindowSizeMenu(); BMenu* windowSize = new(std::nothrow) BMenu(B_TRANSLATE("Widow size"));
windowSize->AddSeparatorItem(); if (windowSize != NULL) {
windowSize->AddItem(new BMenuItem(B_TRANSLATE("Full screen"), MakeWindowSizeMenu(windowSize);
new BMessage(FULLSCREEN), B_ENTER)); windowSize->AddSeparatorItem();
windowSize->AddItem(new BMenuItem(B_TRANSLATE("Full screen"),
new BMessage(FULLSCREEN), B_ENTER));
}
fEncodingMenu = new(std::nothrow) BMenu(B_TRANSLATE("Text encoding"));
if (fEncodingMenu != NULL)
MakeEncodingMenu(fEncodingMenu);
BLayoutBuilder::Menu<>(fMenuBar = new BMenuBar(Bounds(), "mbar")) BLayoutBuilder::Menu<>(fMenuBar = new BMenuBar(Bounds(), "mbar"))
// Terminal // Terminal
@@ -522,7 +522,7 @@ TermWindow::_SetupMenu()
// Settings // Settings
.AddMenu(B_TRANSLATE("Settings")) .AddMenu(B_TRANSLATE("Settings"))
.AddItem(windowSize) .AddItem(windowSize)
.AddItem(fEncodingMenu = MakeEncodingMenu()) .AddItem(fEncodingMenu)
.AddItem(fFontSizeMenu) .AddItem(fFontSizeMenu)
.AddSeparator() .AddSeparator()
.AddItem(B_TRANSLATE("Settings" B_UTF8_ELLIPSIS), MENU_PREF_OPEN) .AddItem(B_TRANSLATE("Settings" B_UTF8_ELLIPSIS), MENU_PREF_OPEN)
@@ -1659,13 +1659,9 @@ TermWindow::_ResizeView(TermView *view)
} }
/* static */ BMenu* /* static */ void
TermWindow::MakeWindowSizeMenu() TermWindow::MakeWindowSizeMenu(BMenu* menu)
{ {
BMenu* menu = new (std::nothrow) BMenu(B_TRANSLATE("Window size"));
if (menu == NULL)
return NULL;
const int32 windowSizes[4][2] = { const int32 windowSizes[4][2] = {
{ 80, 25 }, { 80, 25 },
{ 80, 40 }, { 80, 40 },
@@ -1685,8 +1681,6 @@ TermWindow::MakeWindowSizeMenu()
message->AddInt32("rows", rows); message->AddInt32("rows", rows);
menu->AddItem(new BMenuItem(label, message)); menu->AddItem(new BMenuItem(label, message));
} }
return menu;
} }
+2 -2
View File
@@ -62,8 +62,8 @@ public:
void SessionChanged(); void SessionChanged();
static BMenu* MakeEncodingMenu(); static void MakeEncodingMenu(BMenu*);
static BMenu* MakeWindowSizeMenu(); static void MakeWindowSizeMenu(BMenu*);
protected: protected:
virtual bool QuitRequested(); virtual bool QuitRequested();