1212 lines
32 KiB
C++
1212 lines
32 KiB
C++
/* DO NOT EDIT THIS FILE. */
|
|
/* This file was generated by xctocc from "wxs_menu.xc". */
|
|
|
|
|
|
#if defined(_MSC_VER)
|
|
# include "wx.h"
|
|
#endif
|
|
#if defined(OS_X)
|
|
# include "common.h"
|
|
#endif
|
|
|
|
#include "wx_menu.h"
|
|
|
|
#include "wxscheme.h"
|
|
#include "wxs_menu.h"
|
|
|
|
#ifdef MZ_PRECISE_GC
|
|
START_XFORM_SKIP;
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef wx_x
|
|
# define BM_SELECTED(map) ((map)->selectedTo)
|
|
#endif
|
|
#if defined(wx_mac) || defined(wx_msw)
|
|
# define BM_SELECTED(map) ((map)->selectedInto)
|
|
#endif
|
|
# define BM_IN_USE(map) ((map)->selectedIntoDC)
|
|
|
|
|
|
|
|
|
|
#define ESCAPE_NO_RET_VAL /*empty*/
|
|
|
|
|
|
#ifdef wx_mac
|
|
# define MAC_UNUSED(x) /**/
|
|
#else
|
|
# define MAC_UNUSED(x) x
|
|
#endif
|
|
#ifdef wx_xt
|
|
# define WINMAC_UNUSED(x) x
|
|
#else
|
|
# define WINMAC_UNUSED(x) /**/
|
|
#endif
|
|
|
|
static void menuSelect(wxMenu *MAC_UNUSED(m), wxMenuBar *WINMAC_UNUSED(mb))
|
|
{
|
|
#ifdef wx_msw
|
|
m->SelectMenu();
|
|
#endif
|
|
#ifdef wx_xt
|
|
mb->SelectAMenu(m);
|
|
#endif
|
|
}
|
|
|
|
// @CLASSBASE wxMenuItem "menu-item" : "object"
|
|
// @END
|
|
|
|
// wxMenu is really derived from wxItem
|
|
// but that makes no sense. Enforce different hierarchy here
|
|
|
|
|
|
#define CB_FUNCTYPE wxFunction
|
|
|
|
|
|
#undef CALLBACKCLASS
|
|
#undef CB_REALCLASS
|
|
#undef CB_UNBUNDLE
|
|
#undef CB_USER
|
|
|
|
#define CALLBACKCLASS os_wxMenu
|
|
#define CB_REALCLASS wxMenu
|
|
#define CB_UNBUNDLE objscheme_unbundle_wxMenu
|
|
#define CB_USER METHODNAME("menu%","initialization")
|
|
|
|
#undef CB_TOSCHEME
|
|
#undef CB_TOC
|
|
#define CB_TOSCHEME wxMenuCallbackToScheme
|
|
#define CB_TOC wxMenuCallbackToC
|
|
|
|
|
|
class CALLBACKCLASS;
|
|
|
|
|
|
|
|
|
|
|
|
extern wxCommandEvent *objscheme_unbundle_wxCommandEvent(Scheme_Object *,const char *,int);
|
|
extern Scheme_Object *objscheme_bundle_wxCommandEvent(wxCommandEvent *);
|
|
|
|
static void CB_TOSCHEME(CB_REALCLASS *obj, wxCommandEvent *event);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class os_wxMenu : public wxMenu {
|
|
public:
|
|
Scheme_Object *callback_closure;
|
|
|
|
os_wxMenu CONSTRUCTOR_ARGS((nstring x0 = NULL, wxFunction x1 = NULL, class wxFont* x2 = NULL));
|
|
~os_wxMenu();
|
|
#ifdef MZ_PRECISE_GC
|
|
void gcMark();
|
|
void gcFixup();
|
|
#endif
|
|
};
|
|
|
|
#ifdef MZ_PRECISE_GC
|
|
void os_wxMenu::gcMark() {
|
|
wxMenu::gcMark();
|
|
gcMARK_TYPED(Scheme_Object *, callback_closure);
|
|
}
|
|
void os_wxMenu::gcFixup() {
|
|
wxMenu::gcFixup();
|
|
gcFIXUP_TYPED(Scheme_Object *, callback_closure);
|
|
}
|
|
#endif
|
|
|
|
static Scheme_Object *os_wxMenu_class;
|
|
|
|
os_wxMenu::os_wxMenu CONSTRUCTOR_ARGS((nstring x0, wxFunction x1, class wxFont* x2))
|
|
CONSTRUCTOR_INIT(: wxMenu(x0, x1, x2))
|
|
{
|
|
}
|
|
|
|
os_wxMenu::~os_wxMenu()
|
|
{
|
|
objscheme_destroy(this, (Scheme_Object *) __gc_external);
|
|
}
|
|
|
|
static Scheme_Object *os_wxMenumenuSelect(int n, Scheme_Object *p[])
|
|
{
|
|
WXS_USE_ARGUMENT(n) WXS_USE_ARGUMENT(p)
|
|
REMEMBER_VAR_STACK();
|
|
objscheme_check_valid(os_wxMenu_class, "select in menu%", n, p);
|
|
class wxMenuBar* x0 INIT_NULLED_OUT;
|
|
|
|
SETUP_VAR_STACK_REMEMBERED(2);
|
|
VAR_STACK_PUSH(0, p);
|
|
VAR_STACK_PUSH(1, x0);
|
|
|
|
|
|
x0 = WITH_VAR_STACK(objscheme_unbundle_wxMenuBar(p[POFFSET+0], "select in menu%", 1));
|
|
|
|
|
|
WITH_VAR_STACK(menuSelect(((wxMenu *)((Scheme_Class_Object *)p[0])->primdata), x0));
|
|
|
|
|
|
|
|
READY_TO_RETURN;
|
|
return scheme_void;
|
|
}
|
|
|
|
static Scheme_Object *os_wxMenuGetFont(int n, Scheme_Object *p[])
|
|
{
|
|
WXS_USE_ARGUMENT(n) WXS_USE_ARGUMENT(p)
|
|
REMEMBER_VAR_STACK();
|
|
class wxFont* r;
|
|
objscheme_check_valid(os_wxMenu_class, "get-font in menu%", n, p);
|
|
|
|
SETUP_VAR_STACK_REMEMBERED(1);
|
|
VAR_STACK_PUSH(0, p);
|
|
|
|
|
|
|
|
|
|
r = WITH_VAR_STACK(((wxMenu *)((Scheme_Class_Object *)p[0])->primdata)->GetFont());
|
|
|
|
|
|
|
|
READY_TO_RETURN;
|
|
return WITH_REMEMBERED_STACK(objscheme_bundle_wxFont(r));
|
|
}
|
|
|
|
static Scheme_Object *os_wxMenuSetWidth(int n, Scheme_Object *p[])
|
|
{
|
|
WXS_USE_ARGUMENT(n) WXS_USE_ARGUMENT(p)
|
|
REMEMBER_VAR_STACK();
|
|
objscheme_check_valid(os_wxMenu_class, "set-width in menu%", n, p);
|
|
int x0;
|
|
|
|
SETUP_VAR_STACK_REMEMBERED(1);
|
|
VAR_STACK_PUSH(0, p);
|
|
|
|
|
|
x0 = WITH_VAR_STACK(objscheme_unbundle_integer(p[POFFSET+0], "set-width in menu%"));
|
|
|
|
|
|
WITH_VAR_STACK(((wxMenu *)((Scheme_Class_Object *)p[0])->primdata)->SetWidth(x0));
|
|
|
|
|
|
|
|
READY_TO_RETURN;
|
|
return scheme_void;
|
|
}
|
|
|
|
static Scheme_Object *os_wxMenuSetTitle(int n, Scheme_Object *p[])
|
|
{
|
|
WXS_USE_ARGUMENT(n) WXS_USE_ARGUMENT(p)
|
|
REMEMBER_VAR_STACK();
|
|
objscheme_check_valid(os_wxMenu_class, "set-title in menu%", n, p);
|
|
string x0 INIT_NULLED_OUT;
|
|
|
|
SETUP_VAR_STACK_REMEMBERED(2);
|
|
VAR_STACK_PUSH(0, p);
|
|
VAR_STACK_PUSH(1, x0);
|
|
|
|
|
|
x0 = (string)WITH_VAR_STACK(objscheme_unbundle_string(p[POFFSET+0], "set-title in menu%"));
|
|
|
|
|
|
WITH_VAR_STACK(((wxMenu *)((Scheme_Class_Object *)p[0])->primdata)->SetTitle(x0));
|
|
|
|
|
|
|
|
READY_TO_RETURN;
|
|
return scheme_void;
|
|
}
|
|
|
|
static Scheme_Object *os_wxMenuSetLabel(int n, Scheme_Object *p[])
|
|
{
|
|
WXS_USE_ARGUMENT(n) WXS_USE_ARGUMENT(p)
|
|
REMEMBER_VAR_STACK();
|
|
objscheme_check_valid(os_wxMenu_class, "set-label in menu%", n, p);
|
|
ExactLong x0;
|
|
string x1 INIT_NULLED_OUT;
|
|
|
|
SETUP_VAR_STACK_REMEMBERED(2);
|
|
VAR_STACK_PUSH(0, p);
|
|
VAR_STACK_PUSH(1, x1);
|
|
|
|
|
|
x0 = WITH_VAR_STACK(objscheme_unbundle_ExactLong(p[POFFSET+0], "set-label in menu%"));
|
|
x1 = (string)WITH_VAR_STACK(objscheme_unbundle_string(p[POFFSET+1], "set-label in menu%"));
|
|
|
|
|
|
WITH_VAR_STACK(((wxMenu *)((Scheme_Class_Object *)p[0])->primdata)->SetLabel(x0, x1));
|
|
|
|
|
|
|
|
READY_TO_RETURN;
|
|
return scheme_void;
|
|
}
|
|
|
|
static Scheme_Object *os_wxMenuSetHelpString(int n, Scheme_Object *p[])
|
|
{
|
|
WXS_USE_ARGUMENT(n) WXS_USE_ARGUMENT(p)
|
|
REMEMBER_VAR_STACK();
|
|
objscheme_check_valid(os_wxMenu_class, "set-help-string in menu%", n, p);
|
|
ExactLong x0;
|
|
nstring x1 INIT_NULLED_OUT;
|
|
|
|
SETUP_VAR_STACK_REMEMBERED(2);
|
|
VAR_STACK_PUSH(0, p);
|
|
VAR_STACK_PUSH(1, x1);
|
|
|
|
|
|
x0 = WITH_VAR_STACK(objscheme_unbundle_ExactLong(p[POFFSET+0], "set-help-string in menu%"));
|
|
x1 = (nstring)WITH_VAR_STACK(objscheme_unbundle_nullable_string(p[POFFSET+1], "set-help-string in menu%"));
|
|
|
|
|
|
WITH_VAR_STACK(((wxMenu *)((Scheme_Class_Object *)p[0])->primdata)->SetHelpString(x0, x1));
|
|
|
|
|
|
|
|
READY_TO_RETURN;
|
|
return scheme_void;
|
|
}
|
|
|
|
static Scheme_Object *os_wxMenuNumber(int n, Scheme_Object *p[])
|
|
{
|
|
WXS_USE_ARGUMENT(n) WXS_USE_ARGUMENT(p)
|
|
REMEMBER_VAR_STACK();
|
|
int r;
|
|
objscheme_check_valid(os_wxMenu_class, "number in menu%", n, p);
|
|
|
|
SETUP_VAR_STACK_REMEMBERED(1);
|
|
VAR_STACK_PUSH(0, p);
|
|
|
|
|
|
|
|
|
|
r = WITH_VAR_STACK(((wxMenu *)((Scheme_Class_Object *)p[0])->primdata)->Number());
|
|
|
|
|
|
|
|
READY_TO_RETURN;
|
|
return scheme_make_integer(r);
|
|
}
|
|
|
|
static Scheme_Object *os_wxMenuEnable(int n, Scheme_Object *p[])
|
|
{
|
|
WXS_USE_ARGUMENT(n) WXS_USE_ARGUMENT(p)
|
|
REMEMBER_VAR_STACK();
|
|
objscheme_check_valid(os_wxMenu_class, "enable in menu%", n, p);
|
|
ExactLong x0;
|
|
Bool x1;
|
|
|
|
SETUP_VAR_STACK_REMEMBERED(1);
|
|
VAR_STACK_PUSH(0, p);
|
|
|
|
|
|
x0 = WITH_VAR_STACK(objscheme_unbundle_ExactLong(p[POFFSET+0], "enable in menu%"));
|
|
x1 = WITH_VAR_STACK(objscheme_unbundle_bool(p[POFFSET+1], "enable in menu%"));
|
|
|
|
|
|
WITH_VAR_STACK(((wxMenu *)((Scheme_Class_Object *)p[0])->primdata)->Enable(x0, x1));
|
|
|
|
|
|
|
|
READY_TO_RETURN;
|
|
return scheme_void;
|
|
}
|
|
|
|
static Scheme_Object *os_wxMenuCheck(int n, Scheme_Object *p[])
|
|
{
|
|
WXS_USE_ARGUMENT(n) WXS_USE_ARGUMENT(p)
|
|
REMEMBER_VAR_STACK();
|
|
objscheme_check_valid(os_wxMenu_class, "check in menu%", n, p);
|
|
ExactLong x0;
|
|
Bool x1;
|
|
|
|
SETUP_VAR_STACK_REMEMBERED(1);
|
|
VAR_STACK_PUSH(0, p);
|
|
|
|
|
|
x0 = WITH_VAR_STACK(objscheme_unbundle_ExactLong(p[POFFSET+0], "check in menu%"));
|
|
x1 = WITH_VAR_STACK(objscheme_unbundle_bool(p[POFFSET+1], "check in menu%"));
|
|
|
|
|
|
WITH_VAR_STACK(((wxMenu *)((Scheme_Class_Object *)p[0])->primdata)->Check(x0, x1));
|
|
|
|
|
|
|
|
READY_TO_RETURN;
|
|
return scheme_void;
|
|
}
|
|
|
|
static Scheme_Object *os_wxMenuChecked(int n, Scheme_Object *p[])
|
|
{
|
|
WXS_USE_ARGUMENT(n) WXS_USE_ARGUMENT(p)
|
|
REMEMBER_VAR_STACK();
|
|
Bool r;
|
|
objscheme_check_valid(os_wxMenu_class, "checked? in menu%", n, p);
|
|
ExactLong x0;
|
|
|
|
SETUP_VAR_STACK_REMEMBERED(1);
|
|
VAR_STACK_PUSH(0, p);
|
|
|
|
|
|
x0 = WITH_VAR_STACK(objscheme_unbundle_ExactLong(p[POFFSET+0], "checked? in menu%"));
|
|
|
|
|
|
r = WITH_VAR_STACK(((wxMenu *)((Scheme_Class_Object *)p[0])->primdata)->Checked(x0));
|
|
|
|
|
|
|
|
READY_TO_RETURN;
|
|
return (r ? scheme_true : scheme_false);
|
|
}
|
|
|
|
static Scheme_Object *os_wxMenuAppendSeparator(int n, Scheme_Object *p[])
|
|
{
|
|
WXS_USE_ARGUMENT(n) WXS_USE_ARGUMENT(p)
|
|
REMEMBER_VAR_STACK();
|
|
objscheme_check_valid(os_wxMenu_class, "append-separator in menu%", n, p);
|
|
|
|
SETUP_VAR_STACK_REMEMBERED(1);
|
|
VAR_STACK_PUSH(0, p);
|
|
|
|
|
|
|
|
|
|
WITH_VAR_STACK(((wxMenu *)((Scheme_Class_Object *)p[0])->primdata)->AppendSeparator());
|
|
|
|
|
|
|
|
READY_TO_RETURN;
|
|
return scheme_void;
|
|
}
|
|
|
|
static Scheme_Object *os_wxMenuDeleteByPosition(int n, Scheme_Object *p[])
|
|
{
|
|
WXS_USE_ARGUMENT(n) WXS_USE_ARGUMENT(p)
|
|
REMEMBER_VAR_STACK();
|
|
Bool r;
|
|
objscheme_check_valid(os_wxMenu_class, "delete-by-position in menu%", n, p);
|
|
int x0;
|
|
|
|
SETUP_VAR_STACK_REMEMBERED(1);
|
|
VAR_STACK_PUSH(0, p);
|
|
|
|
|
|
x0 = WITH_VAR_STACK(objscheme_unbundle_integer(p[POFFSET+0], "delete-by-position in menu%"));
|
|
|
|
|
|
r = WITH_VAR_STACK(((wxMenu *)((Scheme_Class_Object *)p[0])->primdata)->DeleteByPosition(x0));
|
|
|
|
|
|
|
|
READY_TO_RETURN;
|
|
return (r ? scheme_true : scheme_false);
|
|
}
|
|
|
|
static Scheme_Object *os_wxMenuDelete(int n, Scheme_Object *p[])
|
|
{
|
|
WXS_USE_ARGUMENT(n) WXS_USE_ARGUMENT(p)
|
|
REMEMBER_VAR_STACK();
|
|
Bool r;
|
|
objscheme_check_valid(os_wxMenu_class, "delete in menu%", n, p);
|
|
ExactLong x0;
|
|
|
|
SETUP_VAR_STACK_REMEMBERED(1);
|
|
VAR_STACK_PUSH(0, p);
|
|
|
|
|
|
x0 = WITH_VAR_STACK(objscheme_unbundle_ExactLong(p[POFFSET+0], "delete in menu%"));
|
|
|
|
|
|
r = WITH_VAR_STACK(((wxMenu *)((Scheme_Class_Object *)p[0])->primdata)->Delete(x0));
|
|
|
|
|
|
|
|
READY_TO_RETURN;
|
|
return (r ? scheme_true : scheme_false);
|
|
}
|
|
|
|
static Scheme_Object *os_wxMenuAppend(int n, Scheme_Object *p[])
|
|
{
|
|
WXS_USE_ARGUMENT(n) WXS_USE_ARGUMENT(p)
|
|
SETUP_PRE_VAR_STACK(1);
|
|
PRE_VAR_STACK_PUSH(0, p);
|
|
REMEMBER_VAR_STACK();
|
|
objscheme_check_valid(os_wxMenu_class, "append in menu%", n, p);
|
|
if ((n >= (POFFSET+3)) && WITH_REMEMBERED_STACK(objscheme_istype_ExactLong(p[POFFSET+0], NULL)) && WITH_REMEMBERED_STACK(objscheme_istype_string(p[POFFSET+1], NULL)) && WITH_REMEMBERED_STACK(objscheme_istype_wxMenu(p[POFFSET+2], NULL, 0))) {
|
|
ExactLong x0;
|
|
string x1 INIT_NULLED_OUT;
|
|
class wxMenu* x2 INIT_NULLED_OUT;
|
|
nstring x3 INIT_NULLED_OUT;
|
|
|
|
SETUP_VAR_STACK_PRE_REMEMBERED(4);
|
|
VAR_STACK_PUSH(0, p);
|
|
VAR_STACK_PUSH(1, x1);
|
|
VAR_STACK_PUSH(2, x2);
|
|
VAR_STACK_PUSH(3, x3);
|
|
|
|
|
|
if ((n < (POFFSET+3)) || (n > (POFFSET+4)))
|
|
WITH_VAR_STACK(scheme_wrong_count_m("append in menu% (submenu case)", POFFSET+3, POFFSET+4, n, p, 1));
|
|
x0 = WITH_VAR_STACK(objscheme_unbundle_ExactLong(p[POFFSET+0], "append in menu% (submenu case)"));
|
|
x1 = (string)WITH_VAR_STACK(objscheme_unbundle_string(p[POFFSET+1], "append in menu% (submenu case)"));
|
|
x2 = WITH_VAR_STACK(objscheme_unbundle_wxMenu(p[POFFSET+2], "append in menu% (submenu case)", 0));
|
|
if (n > (POFFSET+3)) {
|
|
x3 = (nstring)WITH_VAR_STACK(objscheme_unbundle_nullable_string(p[POFFSET+3], "append in menu% (submenu case)"));
|
|
} else
|
|
x3 = NULL;
|
|
|
|
|
|
WITH_VAR_STACK(((wxMenu *)((Scheme_Class_Object *)p[0])->primdata)->Append(x0, x1, x2, x3));
|
|
|
|
|
|
|
|
READY_TO_PRE_RETURN;
|
|
} else {
|
|
ExactLong x0;
|
|
string x1 INIT_NULLED_OUT;
|
|
nstring x2 INIT_NULLED_OUT;
|
|
Bool x3;
|
|
|
|
SETUP_VAR_STACK_PRE_REMEMBERED(3);
|
|
VAR_STACK_PUSH(0, p);
|
|
VAR_STACK_PUSH(1, x1);
|
|
VAR_STACK_PUSH(2, x2);
|
|
|
|
|
|
if ((n < (POFFSET+2)) || (n > (POFFSET+4)))
|
|
WITH_VAR_STACK(scheme_wrong_count_m("append in menu% (string item case)", POFFSET+2, POFFSET+4, n, p, 1));
|
|
x0 = WITH_VAR_STACK(objscheme_unbundle_ExactLong(p[POFFSET+0], "append in menu% (string item case)"));
|
|
x1 = (string)WITH_VAR_STACK(objscheme_unbundle_string(p[POFFSET+1], "append in menu% (string item case)"));
|
|
if (n > (POFFSET+2)) {
|
|
x2 = (nstring)WITH_VAR_STACK(objscheme_unbundle_nullable_string(p[POFFSET+2], "append in menu% (string item case)"));
|
|
} else
|
|
x2 = NULL;
|
|
if (n > (POFFSET+3)) {
|
|
x3 = WITH_VAR_STACK(objscheme_unbundle_bool(p[POFFSET+3], "append in menu% (string item case)"));
|
|
} else
|
|
x3 = FALSE;
|
|
|
|
|
|
WITH_VAR_STACK(((wxMenu *)((Scheme_Class_Object *)p[0])->primdata)->Append(x0, x1, x2, x3));
|
|
|
|
|
|
|
|
READY_TO_PRE_RETURN;
|
|
}
|
|
|
|
return scheme_void;
|
|
}
|
|
|
|
static Scheme_Object *os_wxMenu_ConstructScheme(int n, Scheme_Object *p[])
|
|
{
|
|
SETUP_PRE_VAR_STACK(1);
|
|
PRE_VAR_STACK_PUSH(0, p);
|
|
os_wxMenu *realobj INIT_NULLED_OUT;
|
|
REMEMBER_VAR_STACK();
|
|
nstring x0 INIT_NULLED_OUT;
|
|
wxFunction x1;
|
|
class wxFont* x2 INIT_NULLED_OUT;
|
|
|
|
SETUP_VAR_STACK_PRE_REMEMBERED(4);
|
|
VAR_STACK_PUSH(0, p);
|
|
VAR_STACK_PUSH(1, realobj);
|
|
VAR_STACK_PUSH(2, x0);
|
|
VAR_STACK_PUSH(3, x2);
|
|
|
|
int cb_pos = 0;
|
|
if ((n > (POFFSET+3)))
|
|
WITH_VAR_STACK(scheme_wrong_count_m("initialization in menu%", POFFSET+POFFSET, POFFSET+3, n, p, 1));
|
|
if (n > (POFFSET+0)) {
|
|
x0 = (nstring)WITH_VAR_STACK(objscheme_unbundle_nullable_string(p[POFFSET+0], "initialization in menu%"));
|
|
} else
|
|
x0 = NULL;
|
|
if (n > (POFFSET+1)) {
|
|
x1 = (SCHEME_NULLP(p[POFFSET+1]) ? NULL : (WITH_REMEMBERED_STACK(objscheme_istype_proc2(p[POFFSET+1], CB_USER)), cb_pos = 1, (CB_FUNCTYPE)CB_TOSCHEME));
|
|
} else
|
|
x1 = NULL;
|
|
if (n > (POFFSET+2)) {
|
|
x2 = WITH_VAR_STACK(objscheme_unbundle_wxFont(p[POFFSET+2], "initialization in menu%", 1));
|
|
} else
|
|
x2 = NULL;
|
|
|
|
|
|
realobj = WITH_VAR_STACK(new os_wxMenu CONSTRUCTOR_ARGS((x0, x1, x2)));
|
|
#ifdef MZ_PRECISE_GC
|
|
WITH_VAR_STACK(realobj->gcInit_wxMenu(x0, x1, x2));
|
|
#endif
|
|
realobj->__gc_external = (void *)p[0];
|
|
|
|
realobj->callback_closure = p[POFFSET+cb_pos];
|
|
READY_TO_RETURN;
|
|
((Scheme_Class_Object *)p[0])->primdata = realobj;
|
|
((Scheme_Class_Object *)p[0])->primflag = 1;
|
|
WITH_REMEMBERED_STACK(objscheme_register_primpointer(p[0], &((Scheme_Class_Object *)p[0])->primdata));
|
|
return scheme_void;
|
|
}
|
|
|
|
void objscheme_setup_wxMenu(Scheme_Env *env)
|
|
{
|
|
SETUP_VAR_STACK(1);
|
|
VAR_STACK_PUSH(0, env);
|
|
|
|
wxREGGLOB(os_wxMenu_class);
|
|
|
|
os_wxMenu_class = WITH_VAR_STACK(objscheme_def_prim_class(env, "menu%", "object%", (Scheme_Method_Prim *)os_wxMenu_ConstructScheme, 14));
|
|
|
|
WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMenu_class, "select" " method", (Scheme_Method_Prim *)os_wxMenumenuSelect, 1, 1));
|
|
WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMenu_class, "get-font" " method", (Scheme_Method_Prim *)os_wxMenuGetFont, 0, 0));
|
|
WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMenu_class, "set-width" " method", (Scheme_Method_Prim *)os_wxMenuSetWidth, 1, 1));
|
|
WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMenu_class, "set-title" " method", (Scheme_Method_Prim *)os_wxMenuSetTitle, 1, 1));
|
|
WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMenu_class, "set-label" " method", (Scheme_Method_Prim *)os_wxMenuSetLabel, 2, 2));
|
|
WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMenu_class, "set-help-string" " method", (Scheme_Method_Prim *)os_wxMenuSetHelpString, 2, 2));
|
|
WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMenu_class, "number" " method", (Scheme_Method_Prim *)os_wxMenuNumber, 0, 0));
|
|
WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMenu_class, "enable" " method", (Scheme_Method_Prim *)os_wxMenuEnable, 2, 2));
|
|
WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMenu_class, "check" " method", (Scheme_Method_Prim *)os_wxMenuCheck, 2, 2));
|
|
WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMenu_class, "checked?" " method", (Scheme_Method_Prim *)os_wxMenuChecked, 1, 1));
|
|
WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMenu_class, "append-separator" " method", (Scheme_Method_Prim *)os_wxMenuAppendSeparator, 0, 0));
|
|
WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMenu_class, "delete-by-position" " method", (Scheme_Method_Prim *)os_wxMenuDeleteByPosition, 1, 1));
|
|
WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMenu_class, "delete" " method", (Scheme_Method_Prim *)os_wxMenuDelete, 1, 1));
|
|
WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMenu_class, "append" " method", (Scheme_Method_Prim *)os_wxMenuAppend, 2, 4));
|
|
|
|
|
|
WITH_VAR_STACK(scheme_made_class(os_wxMenu_class));
|
|
|
|
|
|
READY_TO_RETURN;
|
|
}
|
|
|
|
int objscheme_istype_wxMenu(Scheme_Object *obj, const char *stop, int nullOK)
|
|
{
|
|
REMEMBER_VAR_STACK();
|
|
if (nullOK && XC_SCHEME_NULLP(obj)) return 1;
|
|
obj = objscheme_unwrap(obj, os_wxMenu_class);
|
|
if (objscheme_is_a(obj, os_wxMenu_class))
|
|
return 1;
|
|
else {
|
|
if (!stop)
|
|
return 0;
|
|
WITH_REMEMBERED_STACK(scheme_wrong_type(stop, nullOK ? "menu% object or " XC_NULL_STR: "menu% object", -1, 0, &obj));
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
Scheme_Object *objscheme_bundle_wxMenu(class wxMenu *realobj)
|
|
{
|
|
Scheme_Class_Object *obj INIT_NULLED_OUT;
|
|
Scheme_Object *sobj INIT_NULLED_OUT;
|
|
|
|
if (!realobj) return XC_SCHEME_NULL;
|
|
|
|
if (realobj->__gc_external)
|
|
return (Scheme_Object *)realobj->__gc_external;
|
|
|
|
SETUP_VAR_STACK(2);
|
|
VAR_STACK_PUSH(0, obj);
|
|
VAR_STACK_PUSH(1, realobj);
|
|
|
|
if ((sobj = WITH_VAR_STACK(objscheme_bundle_by_type(realobj, realobj->__type))))
|
|
{ READY_TO_RETURN; return sobj; }
|
|
obj = (Scheme_Class_Object *)WITH_VAR_STACK(scheme_make_uninited_object(os_wxMenu_class));
|
|
|
|
obj->primdata = realobj;
|
|
WITH_VAR_STACK(objscheme_register_primpointer(obj, &obj->primdata));
|
|
obj->primflag = 0;
|
|
|
|
realobj->__gc_external = (void *)obj;
|
|
READY_TO_RETURN;
|
|
return (Scheme_Object *)obj;
|
|
}
|
|
|
|
class wxMenu *objscheme_unbundle_wxMenu(Scheme_Object *obj, const char *where, int nullOK)
|
|
{
|
|
if (nullOK && XC_SCHEME_NULLP(obj)) return NULL;
|
|
|
|
REMEMBER_VAR_STACK();
|
|
|
|
obj = objscheme_unwrap(obj, os_wxMenu_class);
|
|
(void)objscheme_istype_wxMenu(obj, where, nullOK);
|
|
Scheme_Class_Object *o = (Scheme_Class_Object *)obj;
|
|
WITH_REMEMBERED_STACK(objscheme_check_valid(NULL, NULL, 0, &obj));
|
|
if (o->primflag)
|
|
return (os_wxMenu *)o->primdata;
|
|
else
|
|
return (wxMenu *)o->primdata;
|
|
}
|
|
|
|
|
|
|
|
static void CB_TOSCHEME(CB_REALCLASS *realobj, wxCommandEvent *event)
|
|
{
|
|
Scheme_Object *p[2];
|
|
Scheme_Class_Object *obj;
|
|
mz_jmp_buf savebuf;
|
|
Scheme_Thread *thread;
|
|
SETUP_VAR_STACK(4);
|
|
VAR_STACK_PUSH(0, obj);
|
|
VAR_STACK_PUSH(1, event);
|
|
VAR_STACK_PUSH(2, p[0]);
|
|
VAR_STACK_PUSH(3, p[1]);
|
|
|
|
p[0] = NULL;
|
|
p[1] = NULL;
|
|
|
|
obj = (Scheme_Class_Object *)realobj->__gc_external;
|
|
|
|
if (!obj) {
|
|
// scheme_signal_error("bad callback object");
|
|
return;
|
|
}
|
|
|
|
p[0] = (Scheme_Object *)obj;
|
|
p[1] = WITH_VAR_STACK(objscheme_bundle_wxCommandEvent(event));
|
|
|
|
thread = scheme_get_current_thread();
|
|
COPY_JMPBUF(savebuf, *(thread->error_buf));
|
|
|
|
if (!scheme_setjmp(*(thread->error_buf)))
|
|
WITH_VAR_STACK(scheme_apply_multi(((CALLBACKCLASS *)obj->primdata)->callback_closure, 2, p));
|
|
|
|
thread = scheme_get_current_thread();
|
|
COPY_JMPBUF(*(thread->error_buf), savebuf);
|
|
|
|
READY_TO_RETURN;
|
|
}
|
|
|
|
// wxMenuBar is really derived from wxItem
|
|
// but that makes no sense. Enforce different hierarchy here
|
|
|
|
|
|
|
|
|
|
|
|
class os_wxMenuBar : public wxMenuBar {
|
|
public:
|
|
|
|
os_wxMenuBar CONSTRUCTOR_ARGS(());
|
|
~os_wxMenuBar();
|
|
#ifdef MZ_PRECISE_GC
|
|
void gcMark();
|
|
void gcFixup();
|
|
#endif
|
|
};
|
|
|
|
#ifdef MZ_PRECISE_GC
|
|
void os_wxMenuBar::gcMark() {
|
|
wxMenuBar::gcMark();
|
|
}
|
|
void os_wxMenuBar::gcFixup() {
|
|
wxMenuBar::gcFixup();
|
|
}
|
|
#endif
|
|
|
|
static Scheme_Object *os_wxMenuBar_class;
|
|
|
|
os_wxMenuBar::os_wxMenuBar CONSTRUCTOR_ARGS(())
|
|
CONSTRUCTOR_INIT(: wxMenuBar())
|
|
{
|
|
}
|
|
|
|
os_wxMenuBar::~os_wxMenuBar()
|
|
{
|
|
objscheme_destroy(this, (Scheme_Object *) __gc_external);
|
|
}
|
|
|
|
static Scheme_Object *os_wxMenuBarSetLabelTop(int n, Scheme_Object *p[])
|
|
{
|
|
WXS_USE_ARGUMENT(n) WXS_USE_ARGUMENT(p)
|
|
REMEMBER_VAR_STACK();
|
|
objscheme_check_valid(os_wxMenuBar_class, "set-label-top in menu-bar%", n, p);
|
|
int x0;
|
|
string x1 INIT_NULLED_OUT;
|
|
|
|
SETUP_VAR_STACK_REMEMBERED(2);
|
|
VAR_STACK_PUSH(0, p);
|
|
VAR_STACK_PUSH(1, x1);
|
|
|
|
|
|
x0 = WITH_VAR_STACK(objscheme_unbundle_integer(p[POFFSET+0], "set-label-top in menu-bar%"));
|
|
x1 = (string)WITH_VAR_STACK(objscheme_unbundle_string(p[POFFSET+1], "set-label-top in menu-bar%"));
|
|
|
|
if (x0 < 0) { READY_TO_RETURN; return scheme_void; }
|
|
WITH_VAR_STACK(((wxMenuBar *)((Scheme_Class_Object *)p[0])->primdata)->SetLabelTop(x0, x1));
|
|
|
|
|
|
|
|
READY_TO_RETURN;
|
|
return scheme_void;
|
|
}
|
|
|
|
static Scheme_Object *os_wxMenuBarNumber(int n, Scheme_Object *p[])
|
|
{
|
|
WXS_USE_ARGUMENT(n) WXS_USE_ARGUMENT(p)
|
|
REMEMBER_VAR_STACK();
|
|
int r;
|
|
objscheme_check_valid(os_wxMenuBar_class, "number in menu-bar%", n, p);
|
|
|
|
SETUP_VAR_STACK_REMEMBERED(1);
|
|
VAR_STACK_PUSH(0, p);
|
|
|
|
|
|
|
|
|
|
r = WITH_VAR_STACK(((wxMenuBar *)((Scheme_Class_Object *)p[0])->primdata)->Number());
|
|
|
|
|
|
|
|
READY_TO_RETURN;
|
|
return scheme_make_integer(r);
|
|
}
|
|
|
|
static Scheme_Object *os_wxMenuBarEnableTop(int n, Scheme_Object *p[])
|
|
{
|
|
WXS_USE_ARGUMENT(n) WXS_USE_ARGUMENT(p)
|
|
REMEMBER_VAR_STACK();
|
|
objscheme_check_valid(os_wxMenuBar_class, "enable-top in menu-bar%", n, p);
|
|
int x0;
|
|
Bool x1;
|
|
|
|
SETUP_VAR_STACK_REMEMBERED(1);
|
|
VAR_STACK_PUSH(0, p);
|
|
|
|
|
|
x0 = WITH_VAR_STACK(objscheme_unbundle_integer(p[POFFSET+0], "enable-top in menu-bar%"));
|
|
x1 = WITH_VAR_STACK(objscheme_unbundle_bool(p[POFFSET+1], "enable-top in menu-bar%"));
|
|
|
|
if (x0 < 0) { READY_TO_RETURN; return scheme_void; }
|
|
WITH_VAR_STACK(((wxMenuBar *)((Scheme_Class_Object *)p[0])->primdata)->EnableTop(x0, x1));
|
|
|
|
|
|
|
|
READY_TO_RETURN;
|
|
return scheme_void;
|
|
}
|
|
|
|
static Scheme_Object *os_wxMenuBarDelete(int n, Scheme_Object *p[])
|
|
{
|
|
WXS_USE_ARGUMENT(n) WXS_USE_ARGUMENT(p)
|
|
REMEMBER_VAR_STACK();
|
|
Bool r;
|
|
objscheme_check_valid(os_wxMenuBar_class, "delete in menu-bar%", n, p);
|
|
class wxMenu* x0 INIT_NULLED_OUT;
|
|
int x1;
|
|
|
|
SETUP_VAR_STACK_REMEMBERED(2);
|
|
VAR_STACK_PUSH(0, p);
|
|
VAR_STACK_PUSH(1, x0);
|
|
|
|
|
|
x0 = WITH_VAR_STACK(objscheme_unbundle_wxMenu(p[POFFSET+0], "delete in menu-bar%", 1));
|
|
if (n > (POFFSET+1)) {
|
|
x1 = WITH_VAR_STACK(objscheme_unbundle_integer(p[POFFSET+1], "delete in menu-bar%"));
|
|
} else
|
|
x1 = 0;
|
|
|
|
|
|
r = WITH_VAR_STACK(((wxMenuBar *)((Scheme_Class_Object *)p[0])->primdata)->Delete(x0, x1));
|
|
|
|
|
|
|
|
READY_TO_RETURN;
|
|
return (r ? scheme_true : scheme_false);
|
|
}
|
|
|
|
static Scheme_Object *os_wxMenuBarAppend(int n, Scheme_Object *p[])
|
|
{
|
|
WXS_USE_ARGUMENT(n) WXS_USE_ARGUMENT(p)
|
|
REMEMBER_VAR_STACK();
|
|
objscheme_check_valid(os_wxMenuBar_class, "append in menu-bar%", n, p);
|
|
class wxMenu* x0 INIT_NULLED_OUT;
|
|
string x1 INIT_NULLED_OUT;
|
|
|
|
SETUP_VAR_STACK_REMEMBERED(3);
|
|
VAR_STACK_PUSH(0, p);
|
|
VAR_STACK_PUSH(1, x0);
|
|
VAR_STACK_PUSH(2, x1);
|
|
|
|
|
|
x0 = WITH_VAR_STACK(objscheme_unbundle_wxMenu(p[POFFSET+0], "append in menu-bar%", 0));
|
|
x1 = (string)WITH_VAR_STACK(objscheme_unbundle_string(p[POFFSET+1], "append in menu-bar%"));
|
|
|
|
|
|
WITH_VAR_STACK(((wxMenuBar *)((Scheme_Class_Object *)p[0])->primdata)->Append(x0, x1));
|
|
|
|
|
|
|
|
READY_TO_RETURN;
|
|
return scheme_void;
|
|
}
|
|
|
|
static Scheme_Object *os_wxMenuBar_ConstructScheme(int n, Scheme_Object *p[])
|
|
{
|
|
SETUP_PRE_VAR_STACK(1);
|
|
PRE_VAR_STACK_PUSH(0, p);
|
|
os_wxMenuBar *realobj INIT_NULLED_OUT;
|
|
REMEMBER_VAR_STACK();
|
|
|
|
SETUP_VAR_STACK_PRE_REMEMBERED(2);
|
|
VAR_STACK_PUSH(0, p);
|
|
VAR_STACK_PUSH(1, realobj);
|
|
|
|
|
|
if (n != (POFFSET+0))
|
|
WITH_VAR_STACK(scheme_wrong_count_m("initialization in menu-bar%", POFFSET+0, POFFSET+0, n, p, 1));
|
|
|
|
|
|
realobj = WITH_VAR_STACK(new os_wxMenuBar CONSTRUCTOR_ARGS(()));
|
|
#ifdef MZ_PRECISE_GC
|
|
WITH_VAR_STACK(realobj->gcInit_wxMenuBar());
|
|
#endif
|
|
realobj->__gc_external = (void *)p[0];
|
|
|
|
|
|
READY_TO_RETURN;
|
|
((Scheme_Class_Object *)p[0])->primdata = realobj;
|
|
((Scheme_Class_Object *)p[0])->primflag = 1;
|
|
WITH_REMEMBERED_STACK(objscheme_register_primpointer(p[0], &((Scheme_Class_Object *)p[0])->primdata));
|
|
return scheme_void;
|
|
}
|
|
|
|
void objscheme_setup_wxMenuBar(Scheme_Env *env)
|
|
{
|
|
SETUP_VAR_STACK(1);
|
|
VAR_STACK_PUSH(0, env);
|
|
|
|
wxREGGLOB(os_wxMenuBar_class);
|
|
|
|
os_wxMenuBar_class = WITH_VAR_STACK(objscheme_def_prim_class(env, "menu-bar%", "object%", (Scheme_Method_Prim *)os_wxMenuBar_ConstructScheme, 5));
|
|
|
|
WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMenuBar_class, "set-label-top" " method", (Scheme_Method_Prim *)os_wxMenuBarSetLabelTop, 2, 2));
|
|
WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMenuBar_class, "number" " method", (Scheme_Method_Prim *)os_wxMenuBarNumber, 0, 0));
|
|
WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMenuBar_class, "enable-top" " method", (Scheme_Method_Prim *)os_wxMenuBarEnableTop, 2, 2));
|
|
WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMenuBar_class, "delete" " method", (Scheme_Method_Prim *)os_wxMenuBarDelete, 1, 2));
|
|
WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMenuBar_class, "append" " method", (Scheme_Method_Prim *)os_wxMenuBarAppend, 2, 2));
|
|
|
|
|
|
WITH_VAR_STACK(scheme_made_class(os_wxMenuBar_class));
|
|
|
|
|
|
READY_TO_RETURN;
|
|
}
|
|
|
|
int objscheme_istype_wxMenuBar(Scheme_Object *obj, const char *stop, int nullOK)
|
|
{
|
|
REMEMBER_VAR_STACK();
|
|
if (nullOK && XC_SCHEME_NULLP(obj)) return 1;
|
|
obj = objscheme_unwrap(obj, os_wxMenuBar_class);
|
|
if (objscheme_is_a(obj, os_wxMenuBar_class))
|
|
return 1;
|
|
else {
|
|
if (!stop)
|
|
return 0;
|
|
WITH_REMEMBERED_STACK(scheme_wrong_type(stop, nullOK ? "menu-bar% object or " XC_NULL_STR: "menu-bar% object", -1, 0, &obj));
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
Scheme_Object *objscheme_bundle_wxMenuBar(class wxMenuBar *realobj)
|
|
{
|
|
Scheme_Class_Object *obj INIT_NULLED_OUT;
|
|
Scheme_Object *sobj INIT_NULLED_OUT;
|
|
|
|
if (!realobj) return XC_SCHEME_NULL;
|
|
|
|
if (realobj->__gc_external)
|
|
return (Scheme_Object *)realobj->__gc_external;
|
|
|
|
SETUP_VAR_STACK(2);
|
|
VAR_STACK_PUSH(0, obj);
|
|
VAR_STACK_PUSH(1, realobj);
|
|
|
|
if ((sobj = WITH_VAR_STACK(objscheme_bundle_by_type(realobj, realobj->__type))))
|
|
{ READY_TO_RETURN; return sobj; }
|
|
obj = (Scheme_Class_Object *)WITH_VAR_STACK(scheme_make_uninited_object(os_wxMenuBar_class));
|
|
|
|
obj->primdata = realobj;
|
|
WITH_VAR_STACK(objscheme_register_primpointer(obj, &obj->primdata));
|
|
obj->primflag = 0;
|
|
|
|
realobj->__gc_external = (void *)obj;
|
|
READY_TO_RETURN;
|
|
return (Scheme_Object *)obj;
|
|
}
|
|
|
|
class wxMenuBar *objscheme_unbundle_wxMenuBar(Scheme_Object *obj, const char *where, int nullOK)
|
|
{
|
|
if (nullOK && XC_SCHEME_NULLP(obj)) return NULL;
|
|
|
|
REMEMBER_VAR_STACK();
|
|
|
|
obj = objscheme_unwrap(obj, os_wxMenuBar_class);
|
|
(void)objscheme_istype_wxMenuBar(obj, where, nullOK);
|
|
Scheme_Class_Object *o = (Scheme_Class_Object *)obj;
|
|
WITH_REMEMBERED_STACK(objscheme_check_valid(NULL, NULL, 0, &obj));
|
|
if (o->primflag)
|
|
return (os_wxMenuBar *)o->primdata;
|
|
else
|
|
return (wxMenuBar *)o->primdata;
|
|
}
|
|
|
|
|
|
#ifdef MZ_PRECISE_GC
|
|
END_XFORM_SKIP;
|
|
#endif
|
|
|
|
class wxsMenuItem : public wxObject
|
|
{
|
|
#ifdef MZ_PRECISE_GC
|
|
void *my_id;
|
|
#endif
|
|
public:
|
|
wxsMenuItem(void);
|
|
~wxsMenuItem();
|
|
|
|
ExactLong Id(void) {
|
|
#ifdef MZ_PRECISE_GC
|
|
return (ExactLong)my_id;
|
|
#else
|
|
return (ExactLong)this;
|
|
#endif
|
|
}
|
|
};
|
|
|
|
wxsMenuItem::wxsMenuItem(void)
|
|
#ifndef MZ_PRECISE_GC
|
|
: wxObject(WXGC_NO_CLEANUP)
|
|
#endif
|
|
{
|
|
#ifdef MZ_PRECISE_GC
|
|
void *mid;
|
|
mid = GC_malloc_immobile_box(GC_malloc_weak_box(gcOBJ_TO_PTR(this), NULL, 0));
|
|
my_id = mid;
|
|
#endif
|
|
}
|
|
|
|
wxsMenuItem::~wxsMenuItem()
|
|
{
|
|
#ifdef MZ_PRECISE_GC
|
|
GC_free_immobile_box((void **)my_id);
|
|
#endif
|
|
}
|
|
|
|
#ifdef MZ_PRECISE_GC
|
|
START_XFORM_SKIP;
|
|
#endif
|
|
|
|
wxsMenuItem* wxsIdToMenuItem(ExactLong id)
|
|
{
|
|
#ifdef MZ_PRECISE_GC
|
|
if (!id)
|
|
return NULL;
|
|
else
|
|
return (wxsMenuItem *)gcPTR_TO_OBJ(GC_weak_box_val(*(void **)id));
|
|
#else
|
|
return (wxsMenuItem *)id;
|
|
#endif
|
|
}
|
|
|
|
|
|
|
|
|
|
class os_wxsMenuItem : public wxsMenuItem {
|
|
public:
|
|
|
|
os_wxsMenuItem CONSTRUCTOR_ARGS(());
|
|
~os_wxsMenuItem();
|
|
#ifdef MZ_PRECISE_GC
|
|
void gcMark();
|
|
void gcFixup();
|
|
#endif
|
|
};
|
|
|
|
#ifdef MZ_PRECISE_GC
|
|
void os_wxsMenuItem::gcMark() {
|
|
wxsMenuItem::gcMark();
|
|
}
|
|
void os_wxsMenuItem::gcFixup() {
|
|
wxsMenuItem::gcFixup();
|
|
}
|
|
#endif
|
|
|
|
static Scheme_Object *os_wxsMenuItem_class;
|
|
|
|
os_wxsMenuItem::os_wxsMenuItem CONSTRUCTOR_ARGS(())
|
|
CONSTRUCTOR_INIT(: wxsMenuItem())
|
|
{
|
|
}
|
|
|
|
os_wxsMenuItem::~os_wxsMenuItem()
|
|
{
|
|
objscheme_destroy(this, (Scheme_Object *) __gc_external);
|
|
}
|
|
|
|
static Scheme_Object *os_wxsMenuItemId(int n, Scheme_Object *p[])
|
|
{
|
|
WXS_USE_ARGUMENT(n) WXS_USE_ARGUMENT(p)
|
|
REMEMBER_VAR_STACK();
|
|
ExactLong r;
|
|
objscheme_check_valid(os_wxsMenuItem_class, "id in menu-item%", n, p);
|
|
|
|
SETUP_VAR_STACK_REMEMBERED(1);
|
|
VAR_STACK_PUSH(0, p);
|
|
|
|
|
|
|
|
|
|
r = WITH_VAR_STACK(((wxsMenuItem *)((Scheme_Class_Object *)p[0])->primdata)->Id());
|
|
|
|
|
|
|
|
READY_TO_RETURN;
|
|
return WITH_REMEMBERED_STACK(scheme_make_integer_value(r));
|
|
}
|
|
|
|
static Scheme_Object *os_wxsMenuItem_ConstructScheme(int n, Scheme_Object *p[])
|
|
{
|
|
SETUP_PRE_VAR_STACK(1);
|
|
PRE_VAR_STACK_PUSH(0, p);
|
|
os_wxsMenuItem *realobj INIT_NULLED_OUT;
|
|
REMEMBER_VAR_STACK();
|
|
|
|
SETUP_VAR_STACK_PRE_REMEMBERED(2);
|
|
VAR_STACK_PUSH(0, p);
|
|
VAR_STACK_PUSH(1, realobj);
|
|
|
|
|
|
if (n != (POFFSET+0))
|
|
WITH_VAR_STACK(scheme_wrong_count_m("initialization in menu-item%", POFFSET+0, POFFSET+0, n, p, 1));
|
|
|
|
|
|
realobj = WITH_VAR_STACK(new os_wxsMenuItem CONSTRUCTOR_ARGS(()));
|
|
#ifdef MZ_PRECISE_GC
|
|
WITH_VAR_STACK(realobj->gcInit_wxsMenuItem());
|
|
#endif
|
|
realobj->__gc_external = (void *)p[0];
|
|
|
|
|
|
READY_TO_RETURN;
|
|
((Scheme_Class_Object *)p[0])->primdata = realobj;
|
|
((Scheme_Class_Object *)p[0])->primflag = 1;
|
|
WITH_REMEMBERED_STACK(objscheme_register_primpointer(p[0], &((Scheme_Class_Object *)p[0])->primdata));
|
|
return scheme_void;
|
|
}
|
|
|
|
void objscheme_setup_wxsMenuItem(Scheme_Env *env)
|
|
{
|
|
SETUP_VAR_STACK(1);
|
|
VAR_STACK_PUSH(0, env);
|
|
|
|
wxREGGLOB(os_wxsMenuItem_class);
|
|
|
|
os_wxsMenuItem_class = WITH_VAR_STACK(objscheme_def_prim_class(env, "menu-item%", "object%", (Scheme_Method_Prim *)os_wxsMenuItem_ConstructScheme, 1));
|
|
|
|
WITH_VAR_STACK(scheme_add_method_w_arity(os_wxsMenuItem_class, "id" " method", (Scheme_Method_Prim *)os_wxsMenuItemId, 0, 0));
|
|
|
|
|
|
WITH_VAR_STACK(scheme_made_class(os_wxsMenuItem_class));
|
|
|
|
|
|
READY_TO_RETURN;
|
|
}
|
|
|
|
int objscheme_istype_wxsMenuItem(Scheme_Object *obj, const char *stop, int nullOK)
|
|
{
|
|
REMEMBER_VAR_STACK();
|
|
if (nullOK && XC_SCHEME_NULLP(obj)) return 1;
|
|
obj = objscheme_unwrap(obj, os_wxsMenuItem_class);
|
|
if (objscheme_is_a(obj, os_wxsMenuItem_class))
|
|
return 1;
|
|
else {
|
|
if (!stop)
|
|
return 0;
|
|
WITH_REMEMBERED_STACK(scheme_wrong_type(stop, nullOK ? "menu-item% object or " XC_NULL_STR: "menu-item% object", -1, 0, &obj));
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
Scheme_Object *objscheme_bundle_wxsMenuItem(class wxsMenuItem *realobj)
|
|
{
|
|
Scheme_Class_Object *obj INIT_NULLED_OUT;
|
|
Scheme_Object *sobj INIT_NULLED_OUT;
|
|
|
|
if (!realobj) return XC_SCHEME_NULL;
|
|
|
|
if (realobj->__gc_external)
|
|
return (Scheme_Object *)realobj->__gc_external;
|
|
|
|
SETUP_VAR_STACK(2);
|
|
VAR_STACK_PUSH(0, obj);
|
|
VAR_STACK_PUSH(1, realobj);
|
|
|
|
if ((sobj = WITH_VAR_STACK(objscheme_bundle_by_type(realobj, realobj->__type))))
|
|
{ READY_TO_RETURN; return sobj; }
|
|
obj = (Scheme_Class_Object *)WITH_VAR_STACK(scheme_make_uninited_object(os_wxsMenuItem_class));
|
|
|
|
obj->primdata = realobj;
|
|
WITH_VAR_STACK(objscheme_register_primpointer(obj, &obj->primdata));
|
|
obj->primflag = 0;
|
|
|
|
realobj->__gc_external = (void *)obj;
|
|
READY_TO_RETURN;
|
|
return (Scheme_Object *)obj;
|
|
}
|
|
|
|
class wxsMenuItem *objscheme_unbundle_wxsMenuItem(Scheme_Object *obj, const char *where, int nullOK)
|
|
{
|
|
if (nullOK && XC_SCHEME_NULLP(obj)) return NULL;
|
|
|
|
REMEMBER_VAR_STACK();
|
|
|
|
obj = objscheme_unwrap(obj, os_wxsMenuItem_class);
|
|
(void)objscheme_istype_wxsMenuItem(obj, where, nullOK);
|
|
Scheme_Class_Object *o = (Scheme_Class_Object *)obj;
|
|
WITH_REMEMBERED_STACK(objscheme_check_valid(NULL, NULL, 0, &obj));
|
|
if (o->primflag)
|
|
return (os_wxsMenuItem *)o->primdata;
|
|
else
|
|
return (wxsMenuItem *)o->primdata;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static Scheme_Object *wxsMenuItemGlobalwxsIdToMenuItem(int n, Scheme_Object *p[])
|
|
{
|
|
WXS_USE_ARGUMENT(n) WXS_USE_ARGUMENT(p)
|
|
REMEMBER_VAR_STACK();
|
|
class wxsMenuItem* r;
|
|
ExactLong x0;
|
|
|
|
SETUP_VAR_STACK_REMEMBERED(1);
|
|
VAR_STACK_PUSH(0, p);
|
|
|
|
|
|
x0 = WITH_VAR_STACK(objscheme_unbundle_ExactLong(p[0+0], "id-to-menu-item in menu-item%"));
|
|
|
|
|
|
r = WITH_VAR_STACK(wxsIdToMenuItem(x0));
|
|
|
|
|
|
|
|
READY_TO_RETURN;
|
|
return WITH_REMEMBERED_STACK(objscheme_bundle_wxsMenuItem(r));
|
|
}
|
|
|
|
void objscheme_setup_wxsMenuItemGlobal(Scheme_Env *env)
|
|
{
|
|
Scheme_Object *functmp INIT_NULLED_OUT;
|
|
SETUP_VAR_STACK(1);
|
|
VAR_STACK_PUSH(0, env);
|
|
functmp = WITH_VAR_STACK(scheme_make_prim_w_arity((Scheme_Prim *)wxsMenuItemGlobalwxsIdToMenuItem, "id-to-menu-item", 1, 1));
|
|
WITH_VAR_STACK(scheme_install_xc_global("id-to-menu-item", functmp, env));
|
|
READY_TO_RETURN;
|
|
}
|
|
|