/*
 * Interface wrapper code.
 *
 * Generated by SIP 6.15.1
 *
 *     Copyright: (c) 2020 by Total Control Software
 *     License:   wxWindows License
 */

#include "sipAPI_core.h"
        #include <wx/menu.h>
        #include <wx/menuitem.h>
        #include <wx/menu.h>
        #include <wx/window.h>
        #include <wx/event.h>
        #include <wx/event.h>
        #include <wx/eventfilter.h>
        #include <wx/object.h>
        #include <wx/object.h>
        #include <wx/object.h>
    wxMenuItem* _wxMenu_FindItemById(const wxMenu* self, int id)
    {
        return self->FindItem(id);
    }


class sipwxMenu : public ::wxMenu
{
public:
    sipwxMenu();
    sipwxMenu(long);
    sipwxMenu(const ::wxString&, long);
    virtual ~sipwxMenu();

    /*
     * There is a public method for every protected method visible from
     * this class.
     */
    bool sipProtectVirt_TryBefore(bool, ::wxEvent&);
    bool sipProtectVirt_TryAfter(bool, ::wxEvent&);

    /*
     * There is a protected method for every virtual method visible from
     * this class.
     */
protected:
    bool ProcessEvent(::wxEvent&) SIP_OVERRIDE;
    bool TryBefore(::wxEvent&) SIP_OVERRIDE;
    bool TryAfter(::wxEvent&) SIP_OVERRIDE;

public:
    sipSimpleWrapper *sipPySelf;

private:
    sipwxMenu(const sipwxMenu &);
    sipwxMenu &operator = (const sipwxMenu &);

    char sipPyMethods[3];
};

sipwxMenu::sipwxMenu(): ::wxMenu(), sipPySelf(SIP_NULLPTR)
{
    memset(sipPyMethods, 0, sizeof (sipPyMethods));
}

sipwxMenu::sipwxMenu(long style): ::wxMenu(style), sipPySelf(SIP_NULLPTR)
{
    memset(sipPyMethods, 0, sizeof (sipPyMethods));
}

sipwxMenu::sipwxMenu(const ::wxString& title, long style): ::wxMenu(title, style), sipPySelf(SIP_NULLPTR)
{
    memset(sipPyMethods, 0, sizeof (sipPyMethods));
}

sipwxMenu::~sipwxMenu()
{
    sipInstanceDestroyedEx(&sipPySelf);
}

bool sipwxMenu::ProcessEvent(::wxEvent& event)
{
    sip_gilstate_t sipGILState;
    PyObject *sipMeth;

    sipMeth = sipIsPyMethod(&sipGILState, &sipPyMethods[0], &sipPySelf, SIP_NULLPTR, sipName_ProcessEvent);

    if (!sipMeth)
        return ::wxMenu::ProcessEvent(event);

    extern bool sipVH__core_102(sip_gilstate_t, sipVirtErrorHandlerFunc, sipSimpleWrapper *, PyObject *, ::wxEvent&);

    return sipVH__core_102(sipGILState, 0, sipPySelf, sipMeth, event);
}

bool sipwxMenu::TryBefore(::wxEvent& event)
{
    sip_gilstate_t sipGILState;
    PyObject *sipMeth;

    sipMeth = sipIsPyMethod(&sipGILState, &sipPyMethods[1], &sipPySelf, SIP_NULLPTR, sipName_TryBefore);

    if (!sipMeth)
        return ::wxMenu::TryBefore(event);

    extern bool sipVH__core_102(sip_gilstate_t, sipVirtErrorHandlerFunc, sipSimpleWrapper *, PyObject *, ::wxEvent&);

    return sipVH__core_102(sipGILState, 0, sipPySelf, sipMeth, event);
}

bool sipwxMenu::TryAfter(::wxEvent& event)
{
    sip_gilstate_t sipGILState;
    PyObject *sipMeth;

    sipMeth = sipIsPyMethod(&sipGILState, &sipPyMethods[2], &sipPySelf, SIP_NULLPTR, sipName_TryAfter);

    if (!sipMeth)
        return ::wxMenu::TryAfter(event);

    extern bool sipVH__core_102(sip_gilstate_t, sipVirtErrorHandlerFunc, sipSimpleWrapper *, PyObject *, ::wxEvent&);

    return sipVH__core_102(sipGILState, 0, sipPySelf, sipMeth, event);
}

bool sipwxMenu::sipProtectVirt_TryBefore(bool sipSelfWasArg, ::wxEvent& event)
{
    return (sipSelfWasArg ? ::wxEvtHandler::TryBefore(event) : TryBefore(event));
}

bool sipwxMenu::sipProtectVirt_TryAfter(bool sipSelfWasArg, ::wxEvent& event)
{
    return (sipSelfWasArg ? ::wxEvtHandler::TryAfter(event) : TryAfter(event));
}


PyDoc_STRVAR(doc_wxMenu_TryBefore, "TryBefore(event) -> bool\n"
"\n"
"Method called by ProcessEvent() before examining this object event\n"
"tables.");

extern "C" {static PyObject *meth_wxMenu_TryBefore(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxMenu_TryBefore(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;
    bool sipSelfWasArg = (!sipSelf || sipIsDerivedClass((sipSimpleWrapper *)sipSelf));

    {
        ::wxEvent* event;
        sipwxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_event,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "BJ9", &sipSelf, sipType_wxMenu, &sipCpp, sipType_wxEvent, &event))
        {
            bool sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->sipProtectVirt_TryBefore(sipSelfWasArg, *event);
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            return PyBool_FromLong(sipRes);
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_TryBefore, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_TryAfter, "TryAfter(event) -> bool\n"
"\n"
"Method called by ProcessEvent() as last resort.");

extern "C" {static PyObject *meth_wxMenu_TryAfter(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxMenu_TryAfter(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;
    bool sipSelfWasArg = (!sipSelf || sipIsDerivedClass((sipSimpleWrapper *)sipSelf));

    {
        ::wxEvent* event;
        sipwxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_event,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "BJ9", &sipSelf, sipType_wxMenu, &sipCpp, sipType_wxEvent, &event))
        {
            bool sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->sipProtectVirt_TryAfter(sipSelfWasArg, *event);
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            return PyBool_FromLong(sipRes);
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_TryAfter, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_GetMenuItems, "GetMenuItems() -> MenuItemList\n"
"\n"
"Returns the list of items in the menu.");

extern "C" {static PyObject *meth_wxMenu_GetMenuItems(PyObject *, PyObject *);}
static PyObject *meth_wxMenu_GetMenuItems(PyObject *sipSelf, PyObject *sipArgs)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        ::wxMenu *sipCpp;

        if (sipParseArgs(&sipParseErr, sipArgs, "B", &sipSelf, sipType_wxMenu, &sipCpp))
        {
            ::wxMenuItemList*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = &sipCpp->GetMenuItems();
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            return sipConvertFromType(sipRes, sipType_wxMenuItemList, SIP_NULLPTR);
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_GetMenuItems, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_Append, "Append(id, item='', helpString='', kind=ITEM_NORMAL) -> MenuItem\n"
"Append(id, item, subMenu, helpString='') -> MenuItem\n"
"Append(menuItem) -> MenuItem\n"
"\n"
"Adds a menu item.\n"
"\n"
"");

extern "C" {static PyObject *meth_wxMenu_Append(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxMenu_Append(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        int id;
        const ::wxString& itemdef = wxEmptyString;
        const ::wxString* item = &itemdef;
        int itemState = 0;
        const ::wxString& helpStringdef = wxEmptyString;
        const ::wxString* helpString = &helpStringdef;
        int helpStringState = 0;
        ::wxItemKind kind = wxITEM_NORMAL;
        ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_id,
            sipName_item,
            sipName_helpString,
            sipName_kind,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "Bi|J1J1E", &sipSelf, sipType_wxMenu, &sipCpp, &id, sipType_wxString, &item, &itemState, sipType_wxString, &helpString, &helpStringState, sipType_wxItemKind, &kind))
        {
            ::wxMenuItem*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->Append(id, *item, *helpString, kind);
            Py_END_ALLOW_THREADS
            sipReleaseType(const_cast< ::wxString *>(item), sipType_wxString, itemState);
            sipReleaseType(const_cast< ::wxString *>(helpString), sipType_wxString, helpStringState);

            if (PyErr_Occurred())
                return 0;

            return sipConvertFromType(sipRes, sipType_wxMenuItem, SIP_NULLPTR);
        }
    }

    {
        int id;
        const ::wxString* item;
        int itemState = 0;
        ::wxMenu* subMenu;
        const ::wxString& helpStringdef = wxEmptyString;
        const ::wxString* helpString = &helpStringdef;
        int helpStringState = 0;
        ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_id,
            sipName_item,
            sipName_subMenu,
            sipName_helpString,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "BiJ1J:|J1", &sipSelf, sipType_wxMenu, &sipCpp, &id, sipType_wxString, &item, &itemState, sipType_wxMenu, &subMenu, sipType_wxString, &helpString, &helpStringState))
        {
            ::wxMenuItem*sipRes;

            if (sipDeprecated(sipName_Menu, sipName_Append) < 0)
                return SIP_NULLPTR;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->Append(id, *item, subMenu, *helpString);
            Py_END_ALLOW_THREADS
            sipReleaseType(const_cast< ::wxString *>(item), sipType_wxString, itemState);
            sipReleaseType(const_cast< ::wxString *>(helpString), sipType_wxString, helpStringState);

            if (PyErr_Occurred())
                return 0;

            return sipConvertFromType(sipRes, sipType_wxMenuItem, SIP_NULLPTR);
        }
    }

    {
        ::wxMenuItem* menuItem;
        ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_menuItem,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "BJ:", &sipSelf, sipType_wxMenu, &sipCpp, sipType_wxMenuItem, &menuItem))
        {
            ::wxMenuItem*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->Append(menuItem);
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            return sipConvertFromType(sipRes, sipType_wxMenuItem, SIP_NULLPTR);
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_Append, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_AppendCheckItem, "AppendCheckItem(id, item, help='') -> MenuItem\n"
"\n"
"Adds a checkable item to the end of the menu.");

extern "C" {static PyObject *meth_wxMenu_AppendCheckItem(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxMenu_AppendCheckItem(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        int id;
        const ::wxString* item;
        int itemState = 0;
        const ::wxString& helpdef = wxEmptyString;
        const ::wxString* help = &helpdef;
        int helpState = 0;
        ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_id,
            sipName_item,
            sipName_help,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "BiJ1|J1", &sipSelf, sipType_wxMenu, &sipCpp, &id, sipType_wxString, &item, &itemState, sipType_wxString, &help, &helpState))
        {
            ::wxMenuItem*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->AppendCheckItem(id, *item, *help);
            Py_END_ALLOW_THREADS
            sipReleaseType(const_cast< ::wxString *>(item), sipType_wxString, itemState);
            sipReleaseType(const_cast< ::wxString *>(help), sipType_wxString, helpState);

            if (PyErr_Occurred())
                return 0;

            return sipConvertFromType(sipRes, sipType_wxMenuItem, SIP_NULLPTR);
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_AppendCheckItem, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_AppendRadioItem, "AppendRadioItem(id, item, help='') -> MenuItem\n"
"\n"
"Adds a radio item to the end of the menu.");

extern "C" {static PyObject *meth_wxMenu_AppendRadioItem(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxMenu_AppendRadioItem(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        int id;
        const ::wxString* item;
        int itemState = 0;
        const ::wxString& helpdef = wxEmptyString;
        const ::wxString* help = &helpdef;
        int helpState = 0;
        ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_id,
            sipName_item,
            sipName_help,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "BiJ1|J1", &sipSelf, sipType_wxMenu, &sipCpp, &id, sipType_wxString, &item, &itemState, sipType_wxString, &help, &helpState))
        {
            ::wxMenuItem*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->AppendRadioItem(id, *item, *help);
            Py_END_ALLOW_THREADS
            sipReleaseType(const_cast< ::wxString *>(item), sipType_wxString, itemState);
            sipReleaseType(const_cast< ::wxString *>(help), sipType_wxString, helpState);

            if (PyErr_Occurred())
                return 0;

            return sipConvertFromType(sipRes, sipType_wxMenuItem, SIP_NULLPTR);
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_AppendRadioItem, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_AppendSeparator, "AppendSeparator() -> MenuItem\n"
"\n"
"Adds a separator to the end of the menu.");

extern "C" {static PyObject *meth_wxMenu_AppendSeparator(PyObject *, PyObject *);}
static PyObject *meth_wxMenu_AppendSeparator(PyObject *sipSelf, PyObject *sipArgs)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        ::wxMenu *sipCpp;

        if (sipParseArgs(&sipParseErr, sipArgs, "B", &sipSelf, sipType_wxMenu, &sipCpp))
        {
            ::wxMenuItem*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->AppendSeparator();
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            return sipConvertFromType(sipRes, sipType_wxMenuItem, SIP_NULLPTR);
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_AppendSeparator, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_AppendSubMenu, "AppendSubMenu(submenu, text, help='') -> MenuItem\n"
"\n"
"Adds the given submenu to this menu.");

extern "C" {static PyObject *meth_wxMenu_AppendSubMenu(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxMenu_AppendSubMenu(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        ::wxMenu* submenu;
        const ::wxString* text;
        int textState = 0;
        const ::wxString& helpdef = wxEmptyString;
        const ::wxString* help = &helpdef;
        int helpState = 0;
        ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_submenu,
            sipName_text,
            sipName_help,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "BJ:J1|J1", &sipSelf, sipType_wxMenu, &sipCpp, sipType_wxMenu, &submenu, sipType_wxString, &text, &textState, sipType_wxString, &help, &helpState))
        {
            ::wxMenuItem*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->AppendSubMenu(submenu, *text, *help);
            Py_END_ALLOW_THREADS
            sipReleaseType(const_cast< ::wxString *>(text), sipType_wxString, textState);
            sipReleaseType(const_cast< ::wxString *>(help), sipType_wxString, helpState);

            if (PyErr_Occurred())
                return 0;

            return sipConvertFromType(sipRes, sipType_wxMenuItem, SIP_NULLPTR);
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_AppendSubMenu, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_Break, "Break() -> None\n"
"\n"
"Inserts a break in a menu, causing the next appended item to appear in\n"
"a new column.");

extern "C" {static PyObject *meth_wxMenu_Break(PyObject *, PyObject *);}
static PyObject *meth_wxMenu_Break(PyObject *sipSelf, PyObject *sipArgs)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        ::wxMenu *sipCpp;

        if (sipParseArgs(&sipParseErr, sipArgs, "B", &sipSelf, sipType_wxMenu, &sipCpp))
        {
            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipCpp->Break();
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            Py_INCREF(Py_None);
            return Py_None;
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_Break, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_Check, "Check(id, check) -> None\n"
"\n"
"Checks or unchecks the menu item.");

extern "C" {static PyObject *meth_wxMenu_Check(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxMenu_Check(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        int id;
        bool check;
        ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_id,
            sipName_check,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "Bib", &sipSelf, sipType_wxMenu, &sipCpp, &id, &check))
        {
            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipCpp->Check(id, check);
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            Py_INCREF(Py_None);
            return Py_None;
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_Check, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_Delete, "Delete(id) -> bool\n"
"Delete(item) -> bool\n"
"\n"
"Deletes the menu item from the menu.\n"
"");

extern "C" {static PyObject *meth_wxMenu_Delete(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxMenu_Delete(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        int id;
        ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_id,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "Bi", &sipSelf, sipType_wxMenu, &sipCpp, &id))
        {
            bool sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->Delete(id);
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            return PyBool_FromLong(sipRes);
        }
    }

    {
        ::wxMenuItem* item;
        ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_item,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "BJ8", &sipSelf, sipType_wxMenu, &sipCpp, sipType_wxMenuItem, &item))
        {
            bool sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->Delete(item);
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            return PyBool_FromLong(sipRes);
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_Delete, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_DestroyItem, "DestroyItem(id) -> bool\n"
"DestroyItem(item) -> bool\n"
"\n"
"Deletes the menu item from the menu.\n"
"");

extern "C" {static PyObject *meth_wxMenu_DestroyItem(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxMenu_DestroyItem(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        int id;
        ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_id,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "Bi", &sipSelf, sipType_wxMenu, &sipCpp, &id))
        {
            bool sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->Destroy(id);
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            return PyBool_FromLong(sipRes);
        }
    }

    {
        ::wxMenuItem* item;
        ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_item,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "BJ8", &sipSelf, sipType_wxMenu, &sipCpp, sipType_wxMenuItem, &item))
        {
            bool sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->Destroy(item);
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            return PyBool_FromLong(sipRes);
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_DestroyItem, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_Enable, "Enable(id, enable) -> None\n"
"\n"
"Enables or disables (greys out) a menu item.");

extern "C" {static PyObject *meth_wxMenu_Enable(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxMenu_Enable(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        int id;
        bool enable;
        ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_id,
            sipName_enable,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "Bib", &sipSelf, sipType_wxMenu, &sipCpp, &id, &enable))
        {
            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipCpp->Enable(id, enable);
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            Py_INCREF(Py_None);
            return Py_None;
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_Enable, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_FindChildItem, "FindChildItem(id) -> Tuple[MenuItem, int]\n"
"\n"
"Finds the menu item object associated with the given menu item\n"
"identifier and, optionally, the position of the item in the menu.");

extern "C" {static PyObject *meth_wxMenu_FindChildItem(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxMenu_FindChildItem(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        int id;
        size_t pos;
        const ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_id,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "Bi", &sipSelf, sipType_wxMenu, &sipCpp, &id))
        {
            ::wxMenuItem*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->FindChildItem(id, &pos);
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            PyObject *sipResObj = sipConvertFromType(sipRes, sipType_wxMenuItem, SIP_NULLPTR);
            return sipBuildResult(0, "(R=)", sipResObj, pos);
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_FindChildItem, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_FindItem, "FindItem(itemString) -> int\n"
"FindItem(id) -> Tuple[MenuItem, Menu]\n"
"\n"
"Finds the menu id for a menu item string.\n"
"");

extern "C" {static PyObject *meth_wxMenu_FindItem(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxMenu_FindItem(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        const ::wxString* itemString;
        int itemStringState = 0;
        const ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_itemString,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "BJ1", &sipSelf, sipType_wxMenu, &sipCpp, sipType_wxString, &itemString, &itemStringState))
        {
            int sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->FindItem(*itemString);
            Py_END_ALLOW_THREADS
            sipReleaseType(const_cast< ::wxString *>(itemString), sipType_wxString, itemStringState);

            if (PyErr_Occurred())
                return 0;

            return PyLong_FromLong(sipRes);
        }
    }

    {
        int id;
        ::wxMenu* menu;
        const ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_id,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "Bi", &sipSelf, sipType_wxMenu, &sipCpp, &id))
        {
            ::wxMenuItem*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->FindItem(id, &menu);
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            PyObject *sipResObj = sipConvertFromType(sipRes, sipType_wxMenuItem, SIP_NULLPTR);
            return sipBuildResult(0, "(RD)", sipResObj, menu, sipType_wxMenu, SIP_NULLPTR);
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_FindItem, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_FindItemByPosition, "FindItemByPosition(position) -> MenuItem\n"
"\n"
"Returns the wxMenuItem given a position in the menu.");

extern "C" {static PyObject *meth_wxMenu_FindItemByPosition(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxMenu_FindItemByPosition(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        size_t position;
        const ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_position,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "B=", &sipSelf, sipType_wxMenu, &sipCpp, &position))
        {
            ::wxMenuItem*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->FindItemByPosition(position);
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            return sipConvertFromType(sipRes, sipType_wxMenuItem, SIP_NULLPTR);
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_FindItemByPosition, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_GetHelpString, "GetHelpString(id) -> str\n"
"\n"
"Returns the help string associated with a menu item.");

extern "C" {static PyObject *meth_wxMenu_GetHelpString(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxMenu_GetHelpString(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        int id;
        const ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_id,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "Bi", &sipSelf, sipType_wxMenu, &sipCpp, &id))
        {
            ::wxString*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = new ::wxString(sipCpp->GetHelpString(id));
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            return sipConvertFromNewType(sipRes, sipType_wxString, SIP_NULLPTR);
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_GetHelpString, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_GetLabel, "GetLabel(id) -> str\n"
"\n"
"Returns a menu item label.");

extern "C" {static PyObject *meth_wxMenu_GetLabel(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxMenu_GetLabel(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        int id;
        const ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_id,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "Bi", &sipSelf, sipType_wxMenu, &sipCpp, &id))
        {
            ::wxString*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = new ::wxString(sipCpp->GetLabel(id));
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            return sipConvertFromNewType(sipRes, sipType_wxString, SIP_NULLPTR);
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_GetLabel, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_GetLabelText, "GetLabelText(id) -> str\n"
"\n"
"Returns a menu item label, without any of the original mnemonics and\n"
"accelerators.");

extern "C" {static PyObject *meth_wxMenu_GetLabelText(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxMenu_GetLabelText(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        int id;
        const ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_id,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "Bi", &sipSelf, sipType_wxMenu, &sipCpp, &id))
        {
            ::wxString*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = new ::wxString(sipCpp->GetLabelText(id));
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            return sipConvertFromNewType(sipRes, sipType_wxString, SIP_NULLPTR);
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_GetLabelText, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_GetMenuItemCount, "GetMenuItemCount() -> int\n"
"\n"
"Returns the number of items in the menu.");

extern "C" {static PyObject *meth_wxMenu_GetMenuItemCount(PyObject *, PyObject *);}
static PyObject *meth_wxMenu_GetMenuItemCount(PyObject *sipSelf, PyObject *sipArgs)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        const ::wxMenu *sipCpp;

        if (sipParseArgs(&sipParseErr, sipArgs, "B", &sipSelf, sipType_wxMenu, &sipCpp))
        {
            size_t sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->GetMenuItemCount();
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            return PyLong_FromUnsignedLong(sipRes);
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_GetMenuItemCount, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_GetTitle, "GetTitle() -> str\n"
"\n"
"Returns the title of the menu.");

extern "C" {static PyObject *meth_wxMenu_GetTitle(PyObject *, PyObject *);}
static PyObject *meth_wxMenu_GetTitle(PyObject *sipSelf, PyObject *sipArgs)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        const ::wxMenu *sipCpp;

        if (sipParseArgs(&sipParseErr, sipArgs, "B", &sipSelf, sipType_wxMenu, &sipCpp))
        {
            ::wxString*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = new ::wxString(sipCpp->GetTitle());
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            return sipConvertFromNewType(sipRes, sipType_wxString, SIP_NULLPTR);
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_GetTitle, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_Insert, "Insert(pos, menuItem) -> MenuItem\n"
"Insert(pos, id, item='', helpString='', kind=ITEM_NORMAL) -> MenuItem\n"
"Insert(pos, id, text, submenu, help='') -> MenuItem\n"
"\n"
"Inserts the given item before the position pos.\n"
"\n"
"");

extern "C" {static PyObject *meth_wxMenu_Insert(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxMenu_Insert(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        size_t pos;
        ::wxMenuItem* menuItem;
        ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_pos,
            sipName_menuItem,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "B=J:", &sipSelf, sipType_wxMenu, &sipCpp, &pos, sipType_wxMenuItem, &menuItem))
        {
            ::wxMenuItem*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->Insert(pos, menuItem);
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            return sipConvertFromType(sipRes, sipType_wxMenuItem, SIP_NULLPTR);
        }
    }

    {
        size_t pos;
        int id;
        const ::wxString& itemdef = wxEmptyString;
        const ::wxString* item = &itemdef;
        int itemState = 0;
        const ::wxString& helpStringdef = wxEmptyString;
        const ::wxString* helpString = &helpStringdef;
        int helpStringState = 0;
        ::wxItemKind kind = wxITEM_NORMAL;
        ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_pos,
            sipName_id,
            sipName_item,
            sipName_helpString,
            sipName_kind,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "B=i|J1J1E", &sipSelf, sipType_wxMenu, &sipCpp, &pos, &id, sipType_wxString, &item, &itemState, sipType_wxString, &helpString, &helpStringState, sipType_wxItemKind, &kind))
        {
            ::wxMenuItem*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->Insert(pos, id, *item, *helpString, kind);
            Py_END_ALLOW_THREADS
            sipReleaseType(const_cast< ::wxString *>(item), sipType_wxString, itemState);
            sipReleaseType(const_cast< ::wxString *>(helpString), sipType_wxString, helpStringState);

            if (PyErr_Occurred())
                return 0;

            return sipConvertFromType(sipRes, sipType_wxMenuItem, SIP_NULLPTR);
        }
    }

    {
        size_t pos;
        int id;
        const ::wxString* text;
        int textState = 0;
        ::wxMenu* submenu;
        const ::wxString& helpdef = wxEmptyString;
        const ::wxString* help = &helpdef;
        int helpState = 0;
        ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_pos,
            sipName_id,
            sipName_text,
            sipName_submenu,
            sipName_help,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "B=iJ1J:|J1", &sipSelf, sipType_wxMenu, &sipCpp, &pos, &id, sipType_wxString, &text, &textState, sipType_wxMenu, &submenu, sipType_wxString, &help, &helpState))
        {
            ::wxMenuItem*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->Insert(pos, id, *text, submenu, *help);
            Py_END_ALLOW_THREADS
            sipReleaseType(const_cast< ::wxString *>(text), sipType_wxString, textState);
            sipReleaseType(const_cast< ::wxString *>(help), sipType_wxString, helpState);

            if (PyErr_Occurred())
                return 0;

            return sipConvertFromType(sipRes, sipType_wxMenuItem, SIP_NULLPTR);
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_Insert, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_InsertCheckItem, "InsertCheckItem(pos, id, item, helpString='') -> MenuItem\n"
"\n"
"Inserts a checkable item at the given position.");

extern "C" {static PyObject *meth_wxMenu_InsertCheckItem(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxMenu_InsertCheckItem(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        size_t pos;
        int id;
        const ::wxString* item;
        int itemState = 0;
        const ::wxString& helpStringdef = wxEmptyString;
        const ::wxString* helpString = &helpStringdef;
        int helpStringState = 0;
        ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_pos,
            sipName_id,
            sipName_item,
            sipName_helpString,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "B=iJ1|J1", &sipSelf, sipType_wxMenu, &sipCpp, &pos, &id, sipType_wxString, &item, &itemState, sipType_wxString, &helpString, &helpStringState))
        {
            ::wxMenuItem*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->InsertCheckItem(pos, id, *item, *helpString);
            Py_END_ALLOW_THREADS
            sipReleaseType(const_cast< ::wxString *>(item), sipType_wxString, itemState);
            sipReleaseType(const_cast< ::wxString *>(helpString), sipType_wxString, helpStringState);

            if (PyErr_Occurred())
                return 0;

            return sipConvertFromType(sipRes, sipType_wxMenuItem, SIP_NULLPTR);
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_InsertCheckItem, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_InsertRadioItem, "InsertRadioItem(pos, id, item, helpString='') -> MenuItem\n"
"\n"
"Inserts a radio item at the given position.");

extern "C" {static PyObject *meth_wxMenu_InsertRadioItem(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxMenu_InsertRadioItem(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        size_t pos;
        int id;
        const ::wxString* item;
        int itemState = 0;
        const ::wxString& helpStringdef = wxEmptyString;
        const ::wxString* helpString = &helpStringdef;
        int helpStringState = 0;
        ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_pos,
            sipName_id,
            sipName_item,
            sipName_helpString,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "B=iJ1|J1", &sipSelf, sipType_wxMenu, &sipCpp, &pos, &id, sipType_wxString, &item, &itemState, sipType_wxString, &helpString, &helpStringState))
        {
            ::wxMenuItem*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->InsertRadioItem(pos, id, *item, *helpString);
            Py_END_ALLOW_THREADS
            sipReleaseType(const_cast< ::wxString *>(item), sipType_wxString, itemState);
            sipReleaseType(const_cast< ::wxString *>(helpString), sipType_wxString, helpStringState);

            if (PyErr_Occurred())
                return 0;

            return sipConvertFromType(sipRes, sipType_wxMenuItem, SIP_NULLPTR);
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_InsertRadioItem, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_InsertSeparator, "InsertSeparator(pos) -> MenuItem\n"
"\n"
"Inserts a separator at the given position.");

extern "C" {static PyObject *meth_wxMenu_InsertSeparator(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxMenu_InsertSeparator(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        size_t pos;
        ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_pos,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "B=", &sipSelf, sipType_wxMenu, &sipCpp, &pos))
        {
            ::wxMenuItem*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->InsertSeparator(pos);
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            return sipConvertFromType(sipRes, sipType_wxMenuItem, SIP_NULLPTR);
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_InsertSeparator, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_IsChecked, "IsChecked(id) -> bool\n"
"\n"
"Determines whether a menu item is checked.");

extern "C" {static PyObject *meth_wxMenu_IsChecked(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxMenu_IsChecked(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        int id;
        const ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_id,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "Bi", &sipSelf, sipType_wxMenu, &sipCpp, &id))
        {
            bool sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->IsChecked(id);
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            return PyBool_FromLong(sipRes);
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_IsChecked, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_IsEnabled, "IsEnabled(id) -> bool\n"
"\n"
"Determines whether a menu item is enabled.");

extern "C" {static PyObject *meth_wxMenu_IsEnabled(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxMenu_IsEnabled(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        int id;
        const ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_id,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "Bi", &sipSelf, sipType_wxMenu, &sipCpp, &id))
        {
            bool sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->IsEnabled(id);
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            return PyBool_FromLong(sipRes);
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_IsEnabled, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_Prepend, "Prepend(menuItem) -> MenuItem\n"
"Prepend(id, item='', helpString='', kind=ITEM_NORMAL) -> MenuItem\n"
"Prepend(id, text, subMenu, help='') -> MenuItem\n"
"\n"
"Inserts the given item at position 0, i.e. before all the other\n"
"existing items.\n"
"\n"
"");

extern "C" {static PyObject *meth_wxMenu_Prepend(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxMenu_Prepend(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        ::wxMenuItem* menuItem;
        ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_menuItem,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "BJ:", &sipSelf, sipType_wxMenu, &sipCpp, sipType_wxMenuItem, &menuItem))
        {
            ::wxMenuItem*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->Prepend(menuItem);
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            return sipConvertFromType(sipRes, sipType_wxMenuItem, SIP_NULLPTR);
        }
    }

    {
        int id;
        const ::wxString& itemdef = wxEmptyString;
        const ::wxString* item = &itemdef;
        int itemState = 0;
        const ::wxString& helpStringdef = wxEmptyString;
        const ::wxString* helpString = &helpStringdef;
        int helpStringState = 0;
        ::wxItemKind kind = wxITEM_NORMAL;
        ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_id,
            sipName_item,
            sipName_helpString,
            sipName_kind,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "Bi|J1J1E", &sipSelf, sipType_wxMenu, &sipCpp, &id, sipType_wxString, &item, &itemState, sipType_wxString, &helpString, &helpStringState, sipType_wxItemKind, &kind))
        {
            ::wxMenuItem*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->Prepend(id, *item, *helpString, kind);
            Py_END_ALLOW_THREADS
            sipReleaseType(const_cast< ::wxString *>(item), sipType_wxString, itemState);
            sipReleaseType(const_cast< ::wxString *>(helpString), sipType_wxString, helpStringState);

            if (PyErr_Occurred())
                return 0;

            return sipConvertFromType(sipRes, sipType_wxMenuItem, SIP_NULLPTR);
        }
    }

    {
        int id;
        const ::wxString* text;
        int textState = 0;
        ::wxMenu* subMenu;
        const ::wxString& helpdef = wxEmptyString;
        const ::wxString* help = &helpdef;
        int helpState = 0;
        ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_id,
            sipName_text,
            sipName_subMenu,
            sipName_help,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "BiJ1J:|J1", &sipSelf, sipType_wxMenu, &sipCpp, &id, sipType_wxString, &text, &textState, sipType_wxMenu, &subMenu, sipType_wxString, &help, &helpState))
        {
            ::wxMenuItem*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->Prepend(id, *text, subMenu, *help);
            Py_END_ALLOW_THREADS
            sipReleaseType(const_cast< ::wxString *>(text), sipType_wxString, textState);
            sipReleaseType(const_cast< ::wxString *>(help), sipType_wxString, helpState);

            if (PyErr_Occurred())
                return 0;

            return sipConvertFromType(sipRes, sipType_wxMenuItem, SIP_NULLPTR);
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_Prepend, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_PrependCheckItem, "PrependCheckItem(id, item, helpString='') -> MenuItem\n"
"\n"
"Inserts a checkable item at position 0.");

extern "C" {static PyObject *meth_wxMenu_PrependCheckItem(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxMenu_PrependCheckItem(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        int id;
        const ::wxString* item;
        int itemState = 0;
        const ::wxString& helpStringdef = wxEmptyString;
        const ::wxString* helpString = &helpStringdef;
        int helpStringState = 0;
        ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_id,
            sipName_item,
            sipName_helpString,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "BiJ1|J1", &sipSelf, sipType_wxMenu, &sipCpp, &id, sipType_wxString, &item, &itemState, sipType_wxString, &helpString, &helpStringState))
        {
            ::wxMenuItem*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->PrependCheckItem(id, *item, *helpString);
            Py_END_ALLOW_THREADS
            sipReleaseType(const_cast< ::wxString *>(item), sipType_wxString, itemState);
            sipReleaseType(const_cast< ::wxString *>(helpString), sipType_wxString, helpStringState);

            if (PyErr_Occurred())
                return 0;

            return sipConvertFromType(sipRes, sipType_wxMenuItem, SIP_NULLPTR);
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_PrependCheckItem, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_PrependRadioItem, "PrependRadioItem(id, item, helpString='') -> MenuItem\n"
"\n"
"Inserts a radio item at position 0.");

extern "C" {static PyObject *meth_wxMenu_PrependRadioItem(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxMenu_PrependRadioItem(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        int id;
        const ::wxString* item;
        int itemState = 0;
        const ::wxString& helpStringdef = wxEmptyString;
        const ::wxString* helpString = &helpStringdef;
        int helpStringState = 0;
        ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_id,
            sipName_item,
            sipName_helpString,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "BiJ1|J1", &sipSelf, sipType_wxMenu, &sipCpp, &id, sipType_wxString, &item, &itemState, sipType_wxString, &helpString, &helpStringState))
        {
            ::wxMenuItem*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->PrependRadioItem(id, *item, *helpString);
            Py_END_ALLOW_THREADS
            sipReleaseType(const_cast< ::wxString *>(item), sipType_wxString, itemState);
            sipReleaseType(const_cast< ::wxString *>(helpString), sipType_wxString, helpStringState);

            if (PyErr_Occurred())
                return 0;

            return sipConvertFromType(sipRes, sipType_wxMenuItem, SIP_NULLPTR);
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_PrependRadioItem, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_PrependSeparator, "PrependSeparator() -> MenuItem\n"
"\n"
"Inserts a separator at position 0.");

extern "C" {static PyObject *meth_wxMenu_PrependSeparator(PyObject *, PyObject *);}
static PyObject *meth_wxMenu_PrependSeparator(PyObject *sipSelf, PyObject *sipArgs)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        ::wxMenu *sipCpp;

        if (sipParseArgs(&sipParseErr, sipArgs, "B", &sipSelf, sipType_wxMenu, &sipCpp))
        {
            ::wxMenuItem*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->PrependSeparator();
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            return sipConvertFromType(sipRes, sipType_wxMenuItem, SIP_NULLPTR);
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_PrependSeparator, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_Remove, "Remove(id) -> MenuItem\n"
"Remove(item) -> MenuItem\n"
"\n"
"Removes the menu item from the menu but doesn't delete the associated C++ object.\n"
"");

extern "C" {static PyObject *meth_wxMenu_Remove(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxMenu_Remove(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        int id;
        ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_id,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "Bi", &sipSelf, sipType_wxMenu, &sipCpp, &id))
        {
            ::wxMenuItem*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->Remove(id);
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            return sipConvertFromType(sipRes, sipType_wxMenuItem, Py_None);
        }
    }

    {
        ::wxMenuItem* item;
        ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_item,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "BJ8", &sipSelf, sipType_wxMenu, &sipCpp, sipType_wxMenuItem, &item))
        {
            ::wxMenuItem*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->Remove(item);
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            return sipConvertFromType(sipRes, sipType_wxMenuItem, Py_None);
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_Remove, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_SetHelpString, "SetHelpString(id, helpString) -> None\n"
"\n"
"Sets an item's help string.");

extern "C" {static PyObject *meth_wxMenu_SetHelpString(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxMenu_SetHelpString(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        int id;
        const ::wxString* helpString;
        int helpStringState = 0;
        ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_id,
            sipName_helpString,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "BiJ1", &sipSelf, sipType_wxMenu, &sipCpp, &id, sipType_wxString, &helpString, &helpStringState))
        {
            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipCpp->SetHelpString(id, *helpString);
            Py_END_ALLOW_THREADS
            sipReleaseType(const_cast< ::wxString *>(helpString), sipType_wxString, helpStringState);

            if (PyErr_Occurred())
                return 0;

            Py_INCREF(Py_None);
            return Py_None;
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_SetHelpString, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_SetLabel, "SetLabel(id, label) -> None\n"
"\n"
"Sets the label of a menu item.");

extern "C" {static PyObject *meth_wxMenu_SetLabel(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxMenu_SetLabel(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        int id;
        const ::wxString* label;
        int labelState = 0;
        ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_id,
            sipName_label,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "BiJ1", &sipSelf, sipType_wxMenu, &sipCpp, &id, sipType_wxString, &label, &labelState))
        {
            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipCpp->SetLabel(id, *label);
            Py_END_ALLOW_THREADS
            sipReleaseType(const_cast< ::wxString *>(label), sipType_wxString, labelState);

            if (PyErr_Occurred())
                return 0;

            Py_INCREF(Py_None);
            return Py_None;
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_SetLabel, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_SetTitle, "SetTitle(title) -> None\n"
"\n"
"Sets the title of the menu.");

extern "C" {static PyObject *meth_wxMenu_SetTitle(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxMenu_SetTitle(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        const ::wxString* title;
        int titleState = 0;
        ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_title,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "BJ1", &sipSelf, sipType_wxMenu, &sipCpp, sipType_wxString, &title, &titleState))
        {
            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipCpp->SetTitle(*title);
            Py_END_ALLOW_THREADS
            sipReleaseType(const_cast< ::wxString *>(title), sipType_wxString, titleState);

            if (PyErr_Occurred())
                return 0;

            Py_INCREF(Py_None);
            return Py_None;
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_SetTitle, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_UpdateUI, "UpdateUI(source=None) -> None\n"
"\n"
"Update the state of all menu items, recursively, by generating\n"
"wxEVT_UPDATE_UI events for them.");

extern "C" {static PyObject *meth_wxMenu_UpdateUI(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxMenu_UpdateUI(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        ::wxEvtHandler* source = 0;
        ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_source,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "B|J8", &sipSelf, sipType_wxMenu, &sipCpp, sipType_wxEvtHandler, &source))
        {
            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipCpp->UpdateUI(source);
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            Py_INCREF(Py_None);
            return Py_None;
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_UpdateUI, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_SetInvokingWindow, "SetInvokingWindow(win) -> None");

extern "C" {static PyObject *meth_wxMenu_SetInvokingWindow(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxMenu_SetInvokingWindow(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        ::wxWindow* win;
        ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_win,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "BJ8", &sipSelf, sipType_wxMenu, &sipCpp, sipType_wxWindow, &win))
        {
            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipCpp->SetInvokingWindow(win);
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            Py_INCREF(Py_None);
            return Py_None;
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_SetInvokingWindow, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_GetInvokingWindow, "GetInvokingWindow() -> Window");

extern "C" {static PyObject *meth_wxMenu_GetInvokingWindow(PyObject *, PyObject *);}
static PyObject *meth_wxMenu_GetInvokingWindow(PyObject *sipSelf, PyObject *sipArgs)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        const ::wxMenu *sipCpp;

        if (sipParseArgs(&sipParseErr, sipArgs, "B", &sipSelf, sipType_wxMenu, &sipCpp))
        {
            ::wxWindow*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->GetInvokingWindow();
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            return sipConvertFromType(sipRes, sipType_wxWindow, SIP_NULLPTR);
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_GetInvokingWindow, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_GetWindow, "GetWindow() -> Window");

extern "C" {static PyObject *meth_wxMenu_GetWindow(PyObject *, PyObject *);}
static PyObject *meth_wxMenu_GetWindow(PyObject *sipSelf, PyObject *sipArgs)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        const ::wxMenu *sipCpp;

        if (sipParseArgs(&sipParseErr, sipArgs, "B", &sipSelf, sipType_wxMenu, &sipCpp))
        {
            ::wxWindow*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->GetWindow();
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            return sipConvertFromType(sipRes, sipType_wxWindow, SIP_NULLPTR);
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_GetWindow, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_GetStyle, "GetStyle() -> int");

extern "C" {static PyObject *meth_wxMenu_GetStyle(PyObject *, PyObject *);}
static PyObject *meth_wxMenu_GetStyle(PyObject *sipSelf, PyObject *sipArgs)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        const ::wxMenu *sipCpp;

        if (sipParseArgs(&sipParseErr, sipArgs, "B", &sipSelf, sipType_wxMenu, &sipCpp))
        {
            long sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->GetStyle();
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            return PyLong_FromLong(sipRes);
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_GetStyle, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_SetParent, "SetParent(parent) -> None");

extern "C" {static PyObject *meth_wxMenu_SetParent(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxMenu_SetParent(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        ::wxMenu* parent;
        ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_parent,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "BJ8", &sipSelf, sipType_wxMenu, &sipCpp, sipType_wxMenu, &parent))
        {
            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipCpp->SetParent(parent);
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            Py_INCREF(Py_None);
            return Py_None;
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_SetParent, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_GetParent, "GetParent() -> Menu");

extern "C" {static PyObject *meth_wxMenu_GetParent(PyObject *, PyObject *);}
static PyObject *meth_wxMenu_GetParent(PyObject *sipSelf, PyObject *sipArgs)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        const ::wxMenu *sipCpp;

        if (sipParseArgs(&sipParseErr, sipArgs, "B", &sipSelf, sipType_wxMenu, &sipCpp))
        {
            ::wxMenu*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->GetParent();
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            return sipConvertFromType(sipRes, sipType_wxMenu, SIP_NULLPTR);
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_GetParent, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_Attach, "Attach(menubar) -> None");

extern "C" {static PyObject *meth_wxMenu_Attach(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxMenu_Attach(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        ::wxMenuBar* menubar;
        ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_menubar,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "BJ8", &sipSelf, sipType_wxMenu, &sipCpp, sipType_wxMenuBar, &menubar))
        {
            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipCpp->Attach(menubar);
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            Py_INCREF(Py_None);
            return Py_None;
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_Attach, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_Detach, "Detach() -> None");

extern "C" {static PyObject *meth_wxMenu_Detach(PyObject *, PyObject *);}
static PyObject *meth_wxMenu_Detach(PyObject *sipSelf, PyObject *sipArgs)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        ::wxMenu *sipCpp;

        if (sipParseArgs(&sipParseErr, sipArgs, "B", &sipSelf, sipType_wxMenu, &sipCpp))
        {
            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipCpp->Detach();
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            Py_INCREF(Py_None);
            return Py_None;
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_Detach, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_IsAttached, "IsAttached() -> bool");

extern "C" {static PyObject *meth_wxMenu_IsAttached(PyObject *, PyObject *);}
static PyObject *meth_wxMenu_IsAttached(PyObject *sipSelf, PyObject *sipArgs)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        const ::wxMenu *sipCpp;

        if (sipParseArgs(&sipParseErr, sipArgs, "B", &sipSelf, sipType_wxMenu, &sipCpp))
        {
            bool sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = sipCpp->IsAttached();
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            return PyBool_FromLong(sipRes);
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_IsAttached, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxMenu_FindItemById, "FindItemById(id) -> MenuItem\n"
"\n"
"FindItemById(id) -> MenuItem\n"
"\n"
"Finds the menu item object associated with the given menu item\n"
"identifier.");

extern "C" {static PyObject *meth_wxMenu_FindItemById(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxMenu_FindItemById(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        int id;
        const ::wxMenu *sipCpp;

        static const char *sipKwdList[] = {
            sipName_id,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "Bi", &sipSelf, sipType_wxMenu, &sipCpp, &id))
        {
            ::wxMenuItem*sipRes = 0;
            int sipIsErr = 0;
        PyErr_Clear();
        Py_BEGIN_ALLOW_THREADS
        sipRes = _wxMenu_FindItemById(sipCpp, id);
        Py_END_ALLOW_THREADS
        if (PyErr_Occurred()) sipIsErr = 1;

            if (sipIsErr)
                return 0;

            return sipConvertFromType(sipRes, sipType_wxMenuItem, SIP_NULLPTR);
        }
    }

    sipNoMethod(sipParseErr, sipName_Menu, sipName_FindItemById, SIP_NULLPTR);

    return SIP_NULLPTR;
}


/* Cast a pointer to a type somewhere in its inheritance hierarchy. */
extern "C" {static void *cast_wxMenu(void *, const sipTypeDef *);}
static void *cast_wxMenu(void *sipCppV, const sipTypeDef *targetType)
{
    ::wxMenu *sipCpp = reinterpret_cast< ::wxMenu *>(sipCppV);

    if (targetType == sipType_wxMenu)
        return sipCppV;

    sipCppV = ((const sipClassTypeDef *)sipType_wxEvtHandler)->ctd_cast(static_cast< ::wxEvtHandler *>(sipCpp), targetType);
    if (sipCppV)
        return sipCppV;

    return SIP_NULLPTR;
}


/* Call the instance's destructor. */
extern "C" {static void release_wxMenu(void *, int);}
static void release_wxMenu(void *sipCppV, int sipState)
{
    Py_BEGIN_ALLOW_THREADS

    if (sipState & SIP_DERIVED_CLASS)
        delete reinterpret_cast<sipwxMenu *>(sipCppV);
    else
        delete reinterpret_cast< ::wxMenu *>(sipCppV);

    Py_END_ALLOW_THREADS
}


extern "C" {static void *array_wxMenu(Py_ssize_t);}
static void *array_wxMenu(Py_ssize_t sipNrElem)
{
    return new ::wxMenu[sipNrElem];
}


extern "C" {static void array_delete_wxMenu(void *);}
static void array_delete_wxMenu(void *sipCpp)
{
    delete[] reinterpret_cast< ::wxMenu *>(sipCpp);
}


extern "C" {static void dealloc_wxMenu(sipSimpleWrapper *);}
static void dealloc_wxMenu(sipSimpleWrapper *sipSelf)
{
    if (sipIsDerivedClass(sipSelf))
        reinterpret_cast<sipwxMenu *>(sipGetAddress(sipSelf))->sipPySelf = SIP_NULLPTR;

    if (sipIsOwnedByPython(sipSelf))
    {
        release_wxMenu(sipGetAddress(sipSelf), sipIsDerivedClass(sipSelf));
    }
}


extern "C" {static void *init_type_wxMenu(sipSimpleWrapper *, PyObject *, PyObject *, PyObject **, PyObject **, PyObject **);}
static void *init_type_wxMenu(sipSimpleWrapper *sipSelf, PyObject *sipArgs, PyObject *sipKwds, PyObject **sipUnused, PyObject **, PyObject **sipParseErr)
{
    sipwxMenu *sipCpp = SIP_NULLPTR;

    {
        if (sipParseKwdArgs(sipParseErr, sipArgs, sipKwds, SIP_NULLPTR, sipUnused, ""))
        {
        if (!wxPyCheckForApp()) return NULL;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipCpp = new sipwxMenu();
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
            {
                delete sipCpp;
                return SIP_NULLPTR;
            }

            sipCpp->sipPySelf = sipSelf;

            return sipCpp;
        }
    }

    {
        long style;

        static const char *sipKwdList[] = {
            sipName_style,
        };

        if (sipParseKwdArgs(sipParseErr, sipArgs, sipKwds, sipKwdList, sipUnused, "l", &style))
        {
        if (!wxPyCheckForApp()) return NULL;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipCpp = new sipwxMenu(style);
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
            {
                delete sipCpp;
                return SIP_NULLPTR;
            }

            sipCpp->sipPySelf = sipSelf;

            return sipCpp;
        }
    }

    {
        const ::wxString* title;
        int titleState = 0;
        long style = 0;

        static const char *sipKwdList[] = {
            sipName_title,
            sipName_style,
        };

        if (sipParseKwdArgs(sipParseErr, sipArgs, sipKwds, sipKwdList, sipUnused, "J1|l", sipType_wxString, &title, &titleState, &style))
        {
        if (!wxPyCheckForApp()) return NULL;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipCpp = new sipwxMenu(*title, style);
            Py_END_ALLOW_THREADS
            sipReleaseType(const_cast< ::wxString *>(title), sipType_wxString, titleState);

            if (PyErr_Occurred())
            {
                delete sipCpp;
                return SIP_NULLPTR;
            }

            sipCpp->sipPySelf = sipSelf;

            return sipCpp;
        }
    }

    return SIP_NULLPTR;
}


/* Define this type's super-types. */
static sipEncodedTypeDef supers_wxMenu[] = {{158, 255, 1}};


static PyMethodDef methods_wxMenu[] = {
    {sipName_Append, SIP_MLMETH_CAST(meth_wxMenu_Append), METH_VARARGS|METH_KEYWORDS, doc_wxMenu_Append},
    {sipName_AppendCheckItem, SIP_MLMETH_CAST(meth_wxMenu_AppendCheckItem), METH_VARARGS|METH_KEYWORDS, doc_wxMenu_AppendCheckItem},
    {sipName_AppendRadioItem, SIP_MLMETH_CAST(meth_wxMenu_AppendRadioItem), METH_VARARGS|METH_KEYWORDS, doc_wxMenu_AppendRadioItem},
    {sipName_AppendSeparator, meth_wxMenu_AppendSeparator, METH_VARARGS, doc_wxMenu_AppendSeparator},
    {sipName_AppendSubMenu, SIP_MLMETH_CAST(meth_wxMenu_AppendSubMenu), METH_VARARGS|METH_KEYWORDS, doc_wxMenu_AppendSubMenu},
    {sipName_Attach, SIP_MLMETH_CAST(meth_wxMenu_Attach), METH_VARARGS|METH_KEYWORDS, doc_wxMenu_Attach},
    {sipName_Break, meth_wxMenu_Break, METH_VARARGS, doc_wxMenu_Break},
    {sipName_Check, SIP_MLMETH_CAST(meth_wxMenu_Check), METH_VARARGS|METH_KEYWORDS, doc_wxMenu_Check},
    {sipName_Delete, SIP_MLMETH_CAST(meth_wxMenu_Delete), METH_VARARGS|METH_KEYWORDS, doc_wxMenu_Delete},
    {sipName_DestroyItem, SIP_MLMETH_CAST(meth_wxMenu_DestroyItem), METH_VARARGS|METH_KEYWORDS, doc_wxMenu_DestroyItem},
    {sipName_Detach, meth_wxMenu_Detach, METH_VARARGS, doc_wxMenu_Detach},
    {sipName_Enable, SIP_MLMETH_CAST(meth_wxMenu_Enable), METH_VARARGS|METH_KEYWORDS, doc_wxMenu_Enable},
    {sipName_FindChildItem, SIP_MLMETH_CAST(meth_wxMenu_FindChildItem), METH_VARARGS|METH_KEYWORDS, doc_wxMenu_FindChildItem},
    {sipName_FindItem, SIP_MLMETH_CAST(meth_wxMenu_FindItem), METH_VARARGS|METH_KEYWORDS, doc_wxMenu_FindItem},
    {sipName_FindItemById, SIP_MLMETH_CAST(meth_wxMenu_FindItemById), METH_VARARGS|METH_KEYWORDS, doc_wxMenu_FindItemById},
    {sipName_FindItemByPosition, SIP_MLMETH_CAST(meth_wxMenu_FindItemByPosition), METH_VARARGS|METH_KEYWORDS, doc_wxMenu_FindItemByPosition},
    {sipName_GetHelpString, SIP_MLMETH_CAST(meth_wxMenu_GetHelpString), METH_VARARGS|METH_KEYWORDS, doc_wxMenu_GetHelpString},
    {sipName_GetInvokingWindow, meth_wxMenu_GetInvokingWindow, METH_VARARGS, doc_wxMenu_GetInvokingWindow},
    {sipName_GetLabel, SIP_MLMETH_CAST(meth_wxMenu_GetLabel), METH_VARARGS|METH_KEYWORDS, doc_wxMenu_GetLabel},
    {sipName_GetLabelText, SIP_MLMETH_CAST(meth_wxMenu_GetLabelText), METH_VARARGS|METH_KEYWORDS, doc_wxMenu_GetLabelText},
    {sipName_GetMenuItemCount, meth_wxMenu_GetMenuItemCount, METH_VARARGS, doc_wxMenu_GetMenuItemCount},
    {sipName_GetMenuItems, meth_wxMenu_GetMenuItems, METH_VARARGS, doc_wxMenu_GetMenuItems},
    {sipName_GetParent, meth_wxMenu_GetParent, METH_VARARGS, doc_wxMenu_GetParent},
    {sipName_GetStyle, meth_wxMenu_GetStyle, METH_VARARGS, doc_wxMenu_GetStyle},
    {sipName_GetTitle, meth_wxMenu_GetTitle, METH_VARARGS, doc_wxMenu_GetTitle},
    {sipName_GetWindow, meth_wxMenu_GetWindow, METH_VARARGS, doc_wxMenu_GetWindow},
    {sipName_Insert, SIP_MLMETH_CAST(meth_wxMenu_Insert), METH_VARARGS|METH_KEYWORDS, doc_wxMenu_Insert},
    {sipName_InsertCheckItem, SIP_MLMETH_CAST(meth_wxMenu_InsertCheckItem), METH_VARARGS|METH_KEYWORDS, doc_wxMenu_InsertCheckItem},
    {sipName_InsertRadioItem, SIP_MLMETH_CAST(meth_wxMenu_InsertRadioItem), METH_VARARGS|METH_KEYWORDS, doc_wxMenu_InsertRadioItem},
    {sipName_InsertSeparator, SIP_MLMETH_CAST(meth_wxMenu_InsertSeparator), METH_VARARGS|METH_KEYWORDS, doc_wxMenu_InsertSeparator},
    {sipName_IsAttached, meth_wxMenu_IsAttached, METH_VARARGS, doc_wxMenu_IsAttached},
    {sipName_IsChecked, SIP_MLMETH_CAST(meth_wxMenu_IsChecked), METH_VARARGS|METH_KEYWORDS, doc_wxMenu_IsChecked},
    {sipName_IsEnabled, SIP_MLMETH_CAST(meth_wxMenu_IsEnabled), METH_VARARGS|METH_KEYWORDS, doc_wxMenu_IsEnabled},
    {sipName_Prepend, SIP_MLMETH_CAST(meth_wxMenu_Prepend), METH_VARARGS|METH_KEYWORDS, doc_wxMenu_Prepend},
    {sipName_PrependCheckItem, SIP_MLMETH_CAST(meth_wxMenu_PrependCheckItem), METH_VARARGS|METH_KEYWORDS, doc_wxMenu_PrependCheckItem},
    {sipName_PrependRadioItem, SIP_MLMETH_CAST(meth_wxMenu_PrependRadioItem), METH_VARARGS|METH_KEYWORDS, doc_wxMenu_PrependRadioItem},
    {sipName_PrependSeparator, meth_wxMenu_PrependSeparator, METH_VARARGS, doc_wxMenu_PrependSeparator},
    {sipName_Remove, SIP_MLMETH_CAST(meth_wxMenu_Remove), METH_VARARGS|METH_KEYWORDS, doc_wxMenu_Remove},
    {sipName_SetHelpString, SIP_MLMETH_CAST(meth_wxMenu_SetHelpString), METH_VARARGS|METH_KEYWORDS, doc_wxMenu_SetHelpString},
    {sipName_SetInvokingWindow, SIP_MLMETH_CAST(meth_wxMenu_SetInvokingWindow), METH_VARARGS|METH_KEYWORDS, doc_wxMenu_SetInvokingWindow},
    {sipName_SetLabel, SIP_MLMETH_CAST(meth_wxMenu_SetLabel), METH_VARARGS|METH_KEYWORDS, doc_wxMenu_SetLabel},
    {sipName_SetParent, SIP_MLMETH_CAST(meth_wxMenu_SetParent), METH_VARARGS|METH_KEYWORDS, doc_wxMenu_SetParent},
    {sipName_SetTitle, SIP_MLMETH_CAST(meth_wxMenu_SetTitle), METH_VARARGS|METH_KEYWORDS, doc_wxMenu_SetTitle},
    {sipName_TryAfter, SIP_MLMETH_CAST(meth_wxMenu_TryAfter), METH_VARARGS|METH_KEYWORDS, SIP_NULLPTR},
    {sipName_TryBefore, SIP_MLMETH_CAST(meth_wxMenu_TryBefore), METH_VARARGS|METH_KEYWORDS, SIP_NULLPTR},
    {sipName_UpdateUI, SIP_MLMETH_CAST(meth_wxMenu_UpdateUI), METH_VARARGS|METH_KEYWORDS, doc_wxMenu_UpdateUI}
};

sipVariableDef variables_wxMenu[] = {
    {PropertyVariable, sipName_Window, &methods_wxMenu[25], SIP_NULLPTR, SIP_NULLPTR, SIP_NULLPTR},
    {PropertyVariable, sipName_Title, &methods_wxMenu[24], &methods_wxMenu[42], SIP_NULLPTR, SIP_NULLPTR},
    {PropertyVariable, sipName_Style, &methods_wxMenu[23], SIP_NULLPTR, SIP_NULLPTR, SIP_NULLPTR},
    {PropertyVariable, sipName_Parent, &methods_wxMenu[22], &methods_wxMenu[41], SIP_NULLPTR, SIP_NULLPTR},
    {PropertyVariable, sipName_MenuItems, &methods_wxMenu[21], SIP_NULLPTR, SIP_NULLPTR, SIP_NULLPTR},
    {PropertyVariable, sipName_MenuItemCount, &methods_wxMenu[20], SIP_NULLPTR, SIP_NULLPTR, SIP_NULLPTR},
    {PropertyVariable, sipName_InvokingWindow, &methods_wxMenu[17], &methods_wxMenu[39], SIP_NULLPTR, SIP_NULLPTR},
};

PyDoc_STRVAR(doc_wxMenu, "Menu() -> None\n"
"Menu(style) -> None\n"
"Menu(title, style=0) -> None\n"
"\n"
"A menu is a popup (or pull down) list of items, one of which may be\n"
"selected before the menu goes away (clicking elsewhere dismisses the\n"
"menu).");


sipClassTypeDef sipTypeDef__core_wxMenu = {
    {
        -1,
        SIP_NULLPTR,
        SIP_NULLPTR,
        SIP_TYPE_SCC|SIP_TYPE_CLASS,
        sipNameNr_wxMenu,
        SIP_NULLPTR,
        SIP_NULLPTR,
    },
    {
        sipNameNr_Menu,
        {0, 0, 1},
        46, methods_wxMenu,
        0, SIP_NULLPTR,
        7, variables_wxMenu,
        {SIP_NULLPTR, SIP_NULLPTR, SIP_NULLPTR, SIP_NULLPTR, SIP_NULLPTR, SIP_NULLPTR, SIP_NULLPTR, SIP_NULLPTR, SIP_NULLPTR, SIP_NULLPTR},
    },
    doc_wxMenu,
    -1,
    -1,
    supers_wxMenu,
    SIP_NULLPTR,
    init_type_wxMenu,
    SIP_NULLPTR,
    SIP_NULLPTR,
    SIP_NULLPTR,
    SIP_NULLPTR,
    dealloc_wxMenu,
    SIP_NULLPTR,
    array_wxMenu,
    SIP_NULLPTR,
    release_wxMenu,
    cast_wxMenu,
    SIP_NULLPTR,
    SIP_NULLPTR,
    SIP_NULLPTR,
    SIP_NULLPTR,
    SIP_NULLPTR,
    SIP_NULLPTR,
    array_delete_wxMenu,
    sizeof (::wxMenu),
};
