StyledEdit: convert main view to layout api
Change-Id: I913c8f559faf09654b0e249f512858ed24fe1ffe Reviewed-on: https://review.haiku-os.org/c/haiku/+/3537 Reviewed-by: John Scipione <jscipione@gmail.com>
This commit is contained in:
parent
80a920f65d
commit
d6005b727c
@ -33,6 +33,7 @@
|
||||
#include <File.h>
|
||||
#include <FilePanel.h>
|
||||
#include <fs_attr.h>
|
||||
#include <LayoutBuilder.h>
|
||||
#include <Locale.h>
|
||||
#include <Menu.h>
|
||||
#include <MenuBar.h>
|
||||
@ -230,13 +231,10 @@ StyledEditWindow::MessageReceived(BMessage* message)
|
||||
fTextView->Undo(be_clipboard);
|
||||
break;
|
||||
case B_CUT:
|
||||
fTextView->Cut(be_clipboard);
|
||||
break;
|
||||
case B_COPY:
|
||||
fTextView->Copy(be_clipboard);
|
||||
break;
|
||||
case B_PASTE:
|
||||
fTextView->Paste(be_clipboard);
|
||||
case B_SELECT_ALL:
|
||||
fTextView->MessageReceived(message);
|
||||
break;
|
||||
case MENU_CLEAR:
|
||||
fTextView->Clear();
|
||||
@ -1122,18 +1120,10 @@ StyledEditWindow::_InitWindow(uint32 encoding)
|
||||
|
||||
fNagOnNodeChange = true;
|
||||
|
||||
// add menubar
|
||||
fMenuBar = new BMenuBar(BRect(0, 0, 0, 0), "menubar");
|
||||
AddChild(fMenuBar);
|
||||
|
||||
// add textview and scrollview
|
||||
|
||||
BRect viewFrame = Bounds();
|
||||
viewFrame.top = fMenuBar->Bounds().Height() + 1;
|
||||
viewFrame.right -= B_V_SCROLL_BAR_WIDTH;
|
||||
viewFrame.left = 0;
|
||||
viewFrame.bottom -= B_H_SCROLL_BAR_HEIGHT;
|
||||
|
||||
BRect textBounds = viewFrame;
|
||||
textBounds.OffsetTo(B_ORIGIN);
|
||||
textBounds.InsetBy(TEXT_INSET, TEXT_INSET);
|
||||
@ -1145,106 +1135,51 @@ StyledEditWindow::_InitWindow(uint32 encoding)
|
||||
|
||||
fScrollView = new BScrollView("scrollview", fTextView, B_FOLLOW_ALL, 0,
|
||||
true, true, B_PLAIN_BORDER);
|
||||
AddChild(fScrollView);
|
||||
fTextView->MakeFocus(true);
|
||||
|
||||
fStatusView = new StatusView(fScrollView);
|
||||
fScrollView->AddChild(fStatusView);
|
||||
|
||||
// Add "File"-menu:
|
||||
BMenu* menu = new BMenu(B_TRANSLATE("File"));
|
||||
fMenuBar->AddItem(menu);
|
||||
|
||||
BMenuItem* menuItem;
|
||||
menu->AddItem(menuItem = new BMenuItem(B_TRANSLATE("New"),
|
||||
new BMessage(MENU_NEW), 'N'));
|
||||
menuItem->SetTarget(be_app);
|
||||
|
||||
menu->AddItem(menuItem = new BMenuItem(BRecentFilesList::NewFileListMenu(
|
||||
BMenuItem* openItem = new BMenuItem(BRecentFilesList::NewFileListMenu(
|
||||
B_TRANSLATE("Open" B_UTF8_ELLIPSIS), NULL, NULL, be_app, 9, true,
|
||||
NULL, APP_SIGNATURE), new BMessage(MENU_OPEN)));
|
||||
menuItem->SetShortcut('O', 0);
|
||||
menuItem->SetTarget(be_app);
|
||||
menu->AddSeparatorItem();
|
||||
NULL, APP_SIGNATURE), new BMessage(MENU_OPEN));
|
||||
openItem->SetShortcut('O', 0);
|
||||
openItem->SetTarget(be_app);
|
||||
|
||||
menu->AddItem(fSaveItem = new BMenuItem(B_TRANSLATE("Save"),
|
||||
new BMessage(MENU_SAVE), 'S'));
|
||||
fSaveItem = new BMenuItem(B_TRANSLATE("Save"),new BMessage(MENU_SAVE), 'S');
|
||||
fSaveItem->SetEnabled(false);
|
||||
menu->AddItem(menuItem = new BMenuItem(
|
||||
B_TRANSLATE("Save as" B_UTF8_ELLIPSIS), new BMessage(MENU_SAVEAS)));
|
||||
menuItem->SetShortcut('S', B_SHIFT_KEY);
|
||||
menuItem->SetEnabled(true);
|
||||
|
||||
menu->AddItem(fReloadItem
|
||||
= new BMenuItem(B_TRANSLATE("Reload" B_UTF8_ELLIPSIS),
|
||||
new BMessage(MENU_RELOAD), 'L'));
|
||||
fReloadItem = new BMenuItem(B_TRANSLATE("Reload" B_UTF8_ELLIPSIS),
|
||||
new BMessage(MENU_RELOAD), 'L');
|
||||
fReloadItem->SetEnabled(false);
|
||||
|
||||
menu->AddItem(new BMenuItem(B_TRANSLATE("Close"),
|
||||
new BMessage(MENU_CLOSE), 'W'));
|
||||
|
||||
menu->AddSeparatorItem();
|
||||
menu->AddItem(new BMenuItem(B_TRANSLATE("Page setup" B_UTF8_ELLIPSIS),
|
||||
new BMessage(MENU_PAGESETUP)));
|
||||
menu->AddItem(new BMenuItem(B_TRANSLATE("Print" B_UTF8_ELLIPSIS),
|
||||
new BMessage(MENU_PRINT), 'P'));
|
||||
|
||||
menu->AddSeparatorItem();
|
||||
menu->AddItem(new BMenuItem(B_TRANSLATE("Quit"),
|
||||
new BMessage(MENU_QUIT), 'Q'));
|
||||
|
||||
// Add the "Edit"-menu:
|
||||
menu = new BMenu(B_TRANSLATE("Edit"));
|
||||
fMenuBar->AddItem(menu);
|
||||
|
||||
menu->AddItem(fUndoItem = new BMenuItem(B_TRANSLATE("Can't undo"),
|
||||
new BMessage(B_UNDO), 'Z'));
|
||||
fUndoItem = new BMenuItem(B_TRANSLATE("Can't undo"),
|
||||
new BMessage(B_UNDO), 'Z');
|
||||
fUndoItem->SetEnabled(false);
|
||||
|
||||
menu->AddSeparatorItem();
|
||||
menu->AddItem(fCutItem = new BMenuItem(B_TRANSLATE("Cut"),
|
||||
new BMessage(B_CUT), 'X'));
|
||||
fCutItem = new BMenuItem(B_TRANSLATE("Cut"),
|
||||
new BMessage(B_CUT), 'X');
|
||||
fCutItem->SetEnabled(false);
|
||||
fCutItem->SetTarget(fTextView);
|
||||
|
||||
menu->AddItem(fCopyItem = new BMenuItem(B_TRANSLATE("Copy"),
|
||||
new BMessage(B_COPY), 'C'));
|
||||
fCopyItem = new BMenuItem(B_TRANSLATE("Copy"),
|
||||
new BMessage(B_COPY), 'C');
|
||||
fCopyItem->SetEnabled(false);
|
||||
fCopyItem->SetTarget(fTextView);
|
||||
|
||||
menu->AddItem(menuItem = new BMenuItem(B_TRANSLATE("Paste"),
|
||||
new BMessage(B_PASTE), 'V'));
|
||||
menuItem->SetTarget(fTextView);
|
||||
|
||||
menu->AddSeparatorItem();
|
||||
menu->AddItem(menuItem = new BMenuItem(B_TRANSLATE("Select all"),
|
||||
new BMessage(B_SELECT_ALL), 'A'));
|
||||
menuItem->SetTarget(fTextView);
|
||||
|
||||
menu->AddSeparatorItem();
|
||||
menu->AddItem(new BMenuItem(B_TRANSLATE("Find" B_UTF8_ELLIPSIS),
|
||||
new BMessage(MENU_FIND), 'F'));
|
||||
menu->AddItem(fFindAgainItem= new BMenuItem(B_TRANSLATE("Find again"),
|
||||
new BMessage(MENU_FIND_AGAIN), 'G'));
|
||||
fFindAgainItem = new BMenuItem(B_TRANSLATE("Find again"),
|
||||
new BMessage(MENU_FIND_AGAIN), 'G');
|
||||
fFindAgainItem->SetEnabled(false);
|
||||
|
||||
menu->AddItem(new BMenuItem(B_TRANSLATE("Find selection"),
|
||||
new BMessage(MENU_FIND_SELECTION), 'H'));
|
||||
menu->AddItem(fReplaceItem = new BMenuItem(B_TRANSLATE("Replace" B_UTF8_ELLIPSIS),
|
||||
new BMessage(MENU_REPLACE), 'R'));
|
||||
menu->AddItem(fReplaceSameItem = new BMenuItem(B_TRANSLATE("Replace next"),
|
||||
new BMessage(MENU_REPLACE_SAME), 'T'));
|
||||
fReplaceItem = new BMenuItem(B_TRANSLATE(B_UTF8_ELLIPSIS),
|
||||
new BMessage(MENU_REPLACE), 'R');
|
||||
|
||||
fReplaceSameItem = new BMenuItem(B_TRANSLATE("Replace next"),
|
||||
new BMessage(MENU_REPLACE_SAME), 'T');
|
||||
fReplaceSameItem->SetEnabled(false);
|
||||
|
||||
// Add the "Font"-menu:
|
||||
fFontMenu = new BMenu(B_TRANSLATE("Font"));
|
||||
fMenuBar->AddItem(fFontMenu);
|
||||
|
||||
// "Size"-subMenu
|
||||
fFontSizeMenu = new BMenu(B_TRANSLATE("Size"));
|
||||
fFontSizeMenu->SetRadioMode(true);
|
||||
fFontMenu->AddItem(fFontSizeMenu);
|
||||
|
||||
BMenuItem* menuItem;
|
||||
for (uint32 i = 0; i < sizeof(fontSizes) / sizeof(fontSizes[0]); i++) {
|
||||
BMessage* fontMessage = new BMessage(FONT_SIZE);
|
||||
fontMessage->AddFloat("size", fontSizes[i]);
|
||||
@ -1257,38 +1192,35 @@ StyledEditWindow::_InitWindow(uint32 encoding)
|
||||
menuItem->SetMarked(true);
|
||||
}
|
||||
|
||||
// "Color"-subMenu
|
||||
fFontColorMenu = new BMenu(B_TRANSLATE("Color"), 0, 0);
|
||||
fFontColorMenu->SetRadioMode(true);
|
||||
fFontMenu->AddItem(fFontColorMenu);
|
||||
|
||||
_BuildFontColorMenu(fFontColorMenu);
|
||||
|
||||
fFontMenu->AddSeparatorItem();
|
||||
|
||||
BMenuItem* fontSizeUpItem = new BMenuItem(B_TRANSLATE("Increase size"),
|
||||
new BMessage(kMsgSetFontUp));
|
||||
BMenuItem* fontSizeDownItem = new BMenuItem(B_TRANSLATE("Decrease size"),
|
||||
new BMessage(kMsgSetFontDown));
|
||||
fFontMenu->AddItem(fontSizeUpItem);
|
||||
fFontMenu->AddItem(fontSizeDownItem);
|
||||
fontSizeUpItem->SetShortcut('+', 0);
|
||||
fontSizeDownItem->SetShortcut('-', 0);
|
||||
|
||||
// "Bold" & "Italic" menu items
|
||||
fFontMenu->AddItem(fBoldItem = new BMenuItem(B_TRANSLATE("Bold"),
|
||||
new BMessage(kMsgSetBold)));
|
||||
fFontMenu->AddItem(fItalicItem = new BMenuItem(B_TRANSLATE("Italic"),
|
||||
new BMessage(kMsgSetItalic)));
|
||||
fBoldItem = new BMenuItem(B_TRANSLATE("Bold"),
|
||||
new BMessage(kMsgSetBold));
|
||||
fBoldItem->SetShortcut('B', 0);
|
||||
|
||||
fItalicItem = new BMenuItem(B_TRANSLATE("Italic"),
|
||||
new BMessage(kMsgSetItalic));
|
||||
fItalicItem->SetShortcut('I', 0);
|
||||
fFontMenu->AddSeparatorItem();
|
||||
|
||||
// Available fonts
|
||||
|
||||
fFontMenu = new BMenu(B_TRANSLATE("Font"));
|
||||
fCurrentFontItem = 0;
|
||||
fCurrentStyleItem = 0;
|
||||
|
||||
// premake font menu since we cant add members dynamically later
|
||||
BLayoutBuilder::Menu<>(fFontMenu)
|
||||
.AddItem(fFontSizeMenu)
|
||||
.AddItem(fFontColorMenu)
|
||||
.AddSeparator()
|
||||
.AddItem(B_TRANSLATE("Increase size"), kMsgSetFontUp, '+')
|
||||
.AddItem(B_TRANSLATE("Decrease size"), kMsgSetFontDown, '-')
|
||||
.AddItem(fBoldItem)
|
||||
.AddItem(fItalicItem)
|
||||
.AddSeparator()
|
||||
.End();
|
||||
|
||||
BMenu* subMenu;
|
||||
int32 numFamilies = count_font_families();
|
||||
for (int32 i = 0; i < numFamilies; i++) {
|
||||
@ -1311,47 +1243,88 @@ StyledEditWindow::_InitWindow(uint32 encoding)
|
||||
}
|
||||
}
|
||||
|
||||
// Add the "Document"-menu:
|
||||
menu = new BMenu(B_TRANSLATE("Document"));
|
||||
fMenuBar->AddItem(menu);
|
||||
|
||||
// "Align"-subMenu:
|
||||
subMenu = new BMenu(B_TRANSLATE("Align"));
|
||||
subMenu->SetRadioMode(true);
|
||||
BMenu* alignMenu = new BMenu(B_TRANSLATE("Align"));
|
||||
alignMenu->SetRadioMode(true);
|
||||
|
||||
subMenu->AddItem(fAlignLeft = new BMenuItem(B_TRANSLATE("Left"),
|
||||
alignMenu->AddItem(fAlignLeft = new BMenuItem(B_TRANSLATE("Left"),
|
||||
new BMessage(ALIGN_LEFT)));
|
||||
fAlignLeft->SetMarked(true);
|
||||
fAlignLeft->SetShortcut('L', B_OPTION_KEY);
|
||||
|
||||
subMenu->AddItem(fAlignCenter = new BMenuItem(B_TRANSLATE("Center"),
|
||||
alignMenu->AddItem(fAlignCenter = new BMenuItem(B_TRANSLATE("Center"),
|
||||
new BMessage(ALIGN_CENTER)));
|
||||
fAlignCenter->SetShortcut('C', B_OPTION_KEY);
|
||||
|
||||
subMenu->AddItem(fAlignRight = new BMenuItem(B_TRANSLATE("Right"),
|
||||
alignMenu->AddItem(fAlignRight = new BMenuItem(B_TRANSLATE("Right"),
|
||||
new BMessage(ALIGN_RIGHT)));
|
||||
fAlignRight->SetShortcut('R', B_OPTION_KEY);
|
||||
|
||||
menu->AddItem(subMenu);
|
||||
menu->AddItem(fWrapItem = new BMenuItem(B_TRANSLATE("Wrap lines"),
|
||||
new BMessage(WRAP_LINES)));
|
||||
fWrapItem = new BMenuItem(B_TRANSLATE("Wrap lines"),
|
||||
new BMessage(WRAP_LINES));
|
||||
fWrapItem->SetMarked(true);
|
||||
fWrapItem->SetShortcut('W', B_OPTION_KEY);
|
||||
|
||||
BMessage *message = new BMessage(MENU_RELOAD);
|
||||
message->AddString("encoding", "auto");
|
||||
menu->AddItem(fEncodingItem = new BMenuItem(_PopulateEncodingMenu(
|
||||
fEncodingItem = new BMenuItem(_PopulateEncodingMenu(
|
||||
new BMenu(B_TRANSLATE("Text encoding")), "UTF-8"),
|
||||
message));
|
||||
message);
|
||||
fEncodingItem->SetEnabled(false);
|
||||
|
||||
menu->AddSeparatorItem();
|
||||
menu->AddItem(new BMenuItem(B_TRANSLATE("Statistics" B_UTF8_ELLIPSIS),
|
||||
new BMessage(SHOW_STATISTICS)));
|
||||
BMenuBar* mainMenu = new BMenuBar("mainMenu");
|
||||
|
||||
BLayoutBuilder::Menu<>(mainMenu)
|
||||
.AddMenu(B_TRANSLATE("File"))
|
||||
.AddItem(B_TRANSLATE("New"), MENU_NEW, 'N')
|
||||
.AddItem(openItem)
|
||||
.AddSeparator()
|
||||
.AddItem(fSaveItem)
|
||||
.AddItem(B_TRANSLATE("Save as" B_UTF8_ELLIPSIS),
|
||||
MENU_SAVEAS, 'S', B_SHIFT_KEY)
|
||||
.AddItem(fReloadItem)
|
||||
.AddItem(B_TRANSLATE("Close"), MENU_CLOSE, 'W')
|
||||
.AddSeparator()
|
||||
.AddItem(B_TRANSLATE("Page setup" B_UTF8_ELLIPSIS), MENU_PAGESETUP)
|
||||
.AddItem(B_TRANSLATE("Print" B_UTF8_ELLIPSIS), MENU_PRINT, 'P')
|
||||
.AddSeparator()
|
||||
.AddItem(B_TRANSLATE("Quit"), MENU_QUIT, 'Q')
|
||||
.End()
|
||||
.AddMenu(B_TRANSLATE("Edit"))
|
||||
.AddItem(fUndoItem)
|
||||
.AddSeparator()
|
||||
.AddItem(fCutItem)
|
||||
.AddItem(fCopyItem)
|
||||
.AddItem(B_TRANSLATE("Paste"), B_PASTE, 'V')
|
||||
.AddSeparator()
|
||||
.AddItem(B_TRANSLATE("Select all"), B_SELECT_ALL, 'A')
|
||||
.AddSeparator()
|
||||
.AddItem(B_TRANSLATE("Find" B_UTF8_ELLIPSIS), MENU_FIND, 'F')
|
||||
.AddItem(fFindAgainItem)
|
||||
.AddItem(B_TRANSLATE("Find selection"), MENU_FIND_SELECTION, 'H')
|
||||
.AddItem(B_TRANSLATE("Replace" B_UTF8_ELLIPSIS), MENU_REPLACE, 'R')
|
||||
.AddItem(fReplaceSameItem)
|
||||
.End()
|
||||
.AddItem(fFontMenu)
|
||||
.AddMenu(B_TRANSLATE("Document"))
|
||||
.AddItem(alignMenu)
|
||||
.AddItem(fWrapItem)
|
||||
.AddItem(fEncodingItem)
|
||||
.AddSeparator()
|
||||
.AddItem(B_TRANSLATE("Statistics" B_UTF8_ELLIPSIS), SHOW_STATISTICS)
|
||||
.End();
|
||||
|
||||
|
||||
fSavePanel = NULL;
|
||||
fSavePanelEncodingMenu = NULL;
|
||||
// build lazily
|
||||
|
||||
BGroupLayout* layout = new BGroupLayout(B_VERTICAL, 0);
|
||||
SetLayout(layout);
|
||||
layout->AddView(mainMenu);
|
||||
layout->AddView(fScrollView);
|
||||
layout->SetInsets(0, 0, -1, -1);
|
||||
SetKeyMenuBar(mainMenu);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -104,7 +104,6 @@ private:
|
||||
entry_ref* ref = NULL);
|
||||
|
||||
private:
|
||||
BMenuBar* fMenuBar;
|
||||
BMessage* fPrintSettings;
|
||||
BMessage* fSaveMessage;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user