From Adrien Destugues <pulkomandy@xxxxxxxxx>:
Adrien Destugues has uploaded this change for review. (
https://review.haiku-os.org/c/haiku/+/3537 ;)
Change subject: WIP: StyledEdit: convert main view to layout api
......................................................................
WIP: StyledEdit: convert main view to layout api
This is marked WIP because of a regression with this patch where pressing OPT+A
does not select the text in the textview
---
M src/apps/stylededit/StyledEditWindow.cpp
M src/apps/stylededit/StyledEditWindow.h
2 files changed, 103 insertions(+), 120 deletions(-)
git pull ssh://git.haiku-os.org:22/haiku refs/changes/37/3537/1
diff --git a/src/apps/stylededit/StyledEditWindow.cpp
b/src/apps/stylededit/StyledEditWindow.cpp
index cdf6119..5e87271 100644
--- a/src/apps/stylededit/StyledEditWindow.cpp
+++ b/src/apps/stylededit/StyledEditWindow.cpp
@@ -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>
@@ -1122,18 +1123,10 @@
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 +1138,58 @@
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* kOpenItem = 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));
+ kOpenItem->SetShortcut('O', 0);
+ kOpenItem->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);
+ BMenuItem* kPasteItem = new BMenuItem(B_TRANSLATE("Paste"),
+ new BMessage(B_PASTE), 'V');
+ kPasteItem->SetTarget(fTextView);
- menu->AddSeparatorItem();
- menu->AddItem(menuItem = new BMenuItem(B_TRANSLATE("Select all"),
- new BMessage(B_SELECT_ALL), 'A'));
- menuItem->SetTarget(fTextView);
+ BMenuItem* kSelectItem = new BMenuItem(B_TRANSLATE("Select all"),
+ new BMessage(B_SELECT_ALL), 'A');
+ kSelectItem->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'));
+ 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,35 +1202,20 @@
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;
@@ -1311,47 +1241,101 @@
}
}
- // 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* kAlignMenu = new BMenu(B_TRANSLATE("Align"));
+ kAlignMenu->SetRadioMode(true);
- subMenu->AddItem(fAlignLeft = new BMenuItem(B_TRANSLATE("Left"),
+ kAlignMenu->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"),
+ kAlignMenu->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"),
+ kAlignMenu->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* kMainMenu = new BMenuBar("mainMenu");
+
+ BLayoutBuilder::Menu<>(kMainMenu)
+ .AddMenu(B_TRANSLATE("File"))
+ .AddItem(B_TRANSLATE("New"), MENU_NEW, 'N')
+ .AddItem(kOpenItem)
+ .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(kPasteItem)
+ .AddSeparator()
+ .AddItem(kSelectItem)
+ .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()
+ .AddMenu(B_TRANSLATE("Font"))
+ .AddItem(fFontSizeMenu)
+ .AddItem(fFontColorMenu)
+ .AddSeparator()
+ .AddItem(B_TRANSLATE("Increase size"), kMsgSetFontUp,
'+')
+ .AddItem(B_TRANSLATE("Decrease size"), kMsgSetFontDown,
'-')
+ .AddItem(fBoldItem)
+ .AddItem(fItalicItem)
+ .AddSeparator()
+ .AddItem(fFontMenu)
+ .End()
+ .AddMenu(B_TRANSLATE("Document"))
+ .AddItem(kAlignMenu)
+ .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(kMainMenu);
+ layout->AddView(fScrollView);
+ layout->SetInsets(0, 0, -1, -1);
+ SetKeyMenuBar(kMainMenu);
+
}
diff --git a/src/apps/stylededit/StyledEditWindow.h
b/src/apps/stylededit/StyledEditWindow.h
index a5547e6..e19c26f 100644
--- a/src/apps/stylededit/StyledEditWindow.h
+++ b/src/apps/stylededit/StyledEditWindow.h
@@ -104,7 +104,6 @@
entry_ref* ref = NULL);
private:
- BMenuBar* fMenuBar;
BMessage* fPrintSettings;
BMessage* fSaveMessage;
--
To view, visit https://review.haiku-os.org/c/haiku/+/3537
To unsubscribe, or for help writing mail filters, visit
https://review.haiku-os.org/settings
Gerrit-Project: haiku
Gerrit-Branch: master
Gerrit-Change-Id: I913c8f559faf09654b0e249f512858ed24fe1ffe
Gerrit-Change-Number: 3537
Gerrit-PatchSet: 1
Gerrit-Owner: Adrien Destugues <pulkomandy@xxxxxxxxx>
Gerrit-MessageType: newchange