Ticket #3651: 3651-2.patch

File 3651-2.patch, 2.8 KB (added by cyberguijarro, 15 years ago)

Second enhancement (font list as a dropdown menu).

  • CharacterWindow.cpp

     
    1616#include <GroupLayoutBuilder.h>
    1717#include <ListView.h>
    1818#include <Menu.h>
     19#include <PopUpMenu.h>
     20#include <MenuField.h>
    1921#include <MenuBar.h>
    2022#include <MenuItem.h>
    2123#include <MessageFilter.h>
     
    192194    fCodeView->SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED,
    193195        fCodeView->PreferredSize().Height()));
    194196
     197    BMenuField* fontField = new BMenuField(BRect(0.0, 0.0, 200.0, 15.0),
     198        "FontMenu", "Font:", _CreateFontMenu(), false);
     199    fontField->SetAlignment(B_ALIGN_RIGHT);
     200
    195201    AddChild(BGroupLayoutBuilder(B_VERTICAL)
    196202        .Add(menuBar)
    197203        .Add(BGroupLayoutBuilder(B_HORIZONTAL, 10)//BSplitLayoutBuilder()
     
    201207                    .Add(clearButton))
    202208                .Add(unicodeScroller))
    203209            .Add(BGroupLayoutBuilder(B_VERTICAL, 10)
     210                .Add(fontField)
    204211                .Add(characterScroller)
    205212                .Add(fFontSizeSlider)
    206213                .Add(fCodeView))
     
    234241#endif
    235242    menuBar->AddItem(menu);
    236243
    237     menuBar->AddItem(_CreateFontMenu());
    238 
    239244    AddCommonFilter(new EscapeMessageFilter(kMsgClearFilter));
    240245    AddCommonFilter(new RedirectUpAndDownFilter(fUnicodeBlockView));
    241246
     
    463468}
    464469
    465470
    466 BMenu*
     471BPopUpMenu*
    467472CharacterWindow::_CreateFontMenu()
    468473{
    469     BMenu* menu = new BMenu("Font");
     474    BPopUpMenu* menu = new BPopUpMenu("Font");
    470475
    471476    font_family currentFamily;
    472477    font_style currentStyle;
     
    478483    for (int32 i = 0; i < numFamilies; i++) {
    479484        font_family family;
    480485        if (get_font_family(i, &family) == B_OK) {
    481             BMenu* subMenu = new BMenu(family);
    482             menu->AddItem(new BMenuItem(subMenu,
    483                 new BMessage(kMsgFontSelected)));
     486            int numStyles = count_font_styles(family);
    484487
    485             int numStyles = count_font_styles(family);
    486488            for (int32 j = 0; j < numStyles; j++) {
    487489                font_style style;
    488490                uint32 flags;
    489491                if (get_font_style(family, j, &style, &flags) == B_OK) {
    490                     BMenuItem* item = new BMenuItem(style,
     492                    BString displayName;
     493                    displayName << family << " " << style;
     494
     495                    BMenuItem* item = new BMenuItem(displayName,
    491496                        new BMessage(kMsgFontSelected));
    492                     subMenu->AddItem(item);
     497                    menu->AddItem(item);
    493498
    494499                    if (!strcmp(family, currentFamily)
    495500                        && !strcmp(style, currentStyle)) {
  • CharacterWindow.h

     
    1111
    1212class BFile;
    1313class BListView;
    14 class BMenu;
     14class BPopUpMenu;
    1515class BMenuItem;
    1616class BSlider;
    1717class BStringView;
     
    3434            status_t        _SaveSettings();
    3535
    3636            void            _SetFont(const char* family, const char* style);
    37             BMenu*          _CreateFontMenu();
     37            BPopUpMenu*     _CreateFontMenu();
    3838
    3939private:
    4040            BTextControl*   fFilterControl;