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:
@@ -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,
|
||||||
|
|||||||
@@ -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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user