[haiku-commits] Change in haiku[master]: WIP: StyledEdit: convert main view to layout api

  • From: Gerrit <review@xxxxxxxxxxxxxxxxxxx>
  • To: waddlesplash <waddlesplash@xxxxxxxxx>, haiku-commits@xxxxxxxxxxxxx
  • Date: Sat, 19 Dec 2020 08:16:53 +0000

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

Other related posts:

  • » [haiku-commits] Change in haiku[master]: WIP: StyledEdit: convert main view to layout api - Gerrit