Добавить меню в ListModel

Как добавить меню в список моделей с приличными действиями?

Я видел такой код:

list menu: [ :menu |
  menu
    add: 'Name'
    action: [ "some action" ].

но когда я делаю это, я получаю ошибку, потому что блок не оценивается, а отправляется как сообщение чему-то другому...

Есть ли какие-либо рекомендации для меню?

1 ответ

Решение

Меню были переделаны.

Теперь вы должны сделать что-то вроде

list menu: [ :menu | aMenu addGroup: [:aGroup |
    aGroup addItem: [ :item |
        item
            name: 'Inspect' translated;
            action: [ self inspectSelectedObjectInNewWindow ];
            shortcut: $i command mac | $i alt win | $i alt unix ].
    aGroup addItem: [ :item |
        item
            name: 'Explore' translated;
            action: [ self exploreSelectedObject ];
            shortcut: $i shift command mac | $i shift alt win | $i shift alt unix ] ].

НТН,

Бенджамин Ван Ризегем

#

РЕДАКТИРОВАТЬ: ListModel по-прежнему использует старые меню (по причине совместимости в Pharo 3.0). Рабочий пример

ListModel new
    menu: [:m | 
        m 
            add: 'test' 
            target: [self halt ] 
            action: #value. 
        m ];
    openWithSpec

Обратите внимание, что блок меню должен возвращать меню (ограничение от PluggableListMorph, которое должно быть инкапсулировано)

Другие вопросы по тегам