struct CCL::IMenu

Overview

Menu interface. More…

#include <imenu.h>

struct IMenu: public CCL::IUnknown
{
    // enums

    enum MenuAttribute;

    // fields

    static const String strSeparator = CCLSTR ("-");
    static const String strLargeVariant = CCLSTR ("large");
    static const String strFollowIndicator = CCLSTR ("...");

    // methods

    virtual UIDRef CCL_API getMenuClass () const = 0;
    virtual IMenu*CCL_API createMenu () const = 0;
    virtual IUnknown*CCL_API getParentUnknown () const = 0;
    virtual tbool CCL_API getMenuAttribute (Variant& value, MenuAttribute id) const = 0;
    virtual tbool CCL_API setMenuAttribute (MenuAttribute id, VariantRef value) = 0;
    virtual int CCL_API countItems () const = 0;
    virtual IMenuItem*CCL_API getItem (int index) const = 0;
    virtual int CCL_API getItemIndex (const IMenuItem* item) const = 0;
    virtual void CCL_API setInsertPosition (int index) = 0;

    virtual IMenuItem*CCL_API addCommandItem (
        StringRef title,
        CStringRef category = nullptr,
        CStringRef name = nullptr,
        ICommandHandler* handler = nullptr
    ) = 0;

    virtual IMenuItem*CCL_API findICommandItem (
        CStringRef category = nullptr,
        CStringRef name = nullptr,
        tbool deep = false
    ) const = 0;

    virtual void CCL_API addSeparatorItem () = 0;
    virtual IMenuItem*CCL_API addMenu (IMenu* menu) = 0;
    virtual void CCL_API removeItem (IMenuItem* item) = 0;
    virtual void CCL_API removeAll () = 0;

    virtual tbool CCL_API loadItems (
        UrlRef path,
        ICommandHandler* handler = nullptr,
        IMenuExtension* extension = nullptr,
        ITranslationTable* stringTable = nullptr
    ) = 0;

    virtual tbool CCL_API loadItems (const IAttributeList& a) = 0;
    virtual tbool CCL_API saveItems (IAttributeList& a) const = 0;
    virtual void CCL_API initWithHandler (ICommandHandler* handler) = 0;
    bool isNativeMenu () const;
    bool isExtendedMenu () const;

    IMenuItem* addCommandItem (
        const CommandWithTitle& cwt,
        ICommandHandler* handler = nullptr,
        bool followIndicator = false
    );
};

Inherited Members

public:
    // methods

    virtual tresult CCL_API queryInterface (UIDRef iid, void** ptr) = 0;
    virtual unsigned int CCL_API retain () = 0;
    virtual unsigned int CCL_API release () = 0;

Detailed Documentation

Menu interface.

Fields

static const String strSeparator = CCLSTR ("-")

menu separator

static const String strLargeVariant = CCLSTR ("large")

large menu variant

static const String strFollowIndicator = CCLSTR ("...")

menu follow indicator

Methods

virtual UIDRef CCL_API getMenuClass () const = 0

Get menu implementation class.

virtual IMenu*CCL_API createMenu () const = 0

Create compatible menu instance.

Call addMenu() to use it as sub menu.

virtual IUnknown*CCL_API getParentUnknown () const = 0

Get parent of this menu (could be IMenu or IMenuBar).

virtual tbool CCL_API getMenuAttribute (Variant& value, MenuAttribute id) const = 0

Get menu attribute.

virtual tbool CCL_API setMenuAttribute (MenuAttribute id, VariantRef value) = 0

Set menu attribute.

virtual int CCL_API countItems () const = 0

Get number of menu items.

virtual IMenuItem*CCL_API getItem (int index) const = 0

Get menu item at index.

virtual int CCL_API getItemIndex (const IMenuItem* item) const = 0

Get index of given menu item.

virtual void CCL_API setInsertPosition (int index) = 0

Set position for adding new items (incremented automatically, set to -1 when done).

virtual IMenuItem*CCL_API addCommandItem (
    StringRef title,
    CStringRef category = nullptr,
    CStringRef name = nullptr,
    ICommandHandler* handler = nullptr
) = 0

Add an item that fires a command.

virtual IMenuItem*CCL_API findICommandItem (
    CStringRef category = nullptr,
    CStringRef name = nullptr,
    tbool deep = false
) const = 0

Find existing command item.

virtual void CCL_API addSeparatorItem () = 0

Add separator item.

Separators are managed internally to avoid consecutive occurances.

virtual IMenuItem*CCL_API addMenu (IMenu* menu) = 0

Add sub menu.

virtual void CCL_API removeItem (IMenuItem* item) = 0

Remove menu item.

virtual void CCL_API removeAll () = 0

Remove all menu items.

virtual tbool CCL_API loadItems (
    UrlRef path,
    ICommandHandler* handler = nullptr,
    IMenuExtension* extension = nullptr,
    ITranslationTable* stringTable = nullptr
) = 0

Load menu items from XML description (optional: handler, extensions, translations).

virtual tbool CCL_API loadItems (const IAttributeList& a) = 0

Load menu items from simple attributes.

virtual tbool CCL_API saveItems (IAttributeList& a) const = 0

Save menu items to simple attributes.

virtual void CCL_API initWithHandler (ICommandHandler* handler) = 0

Assign command handler recursively after loadItems().