%% %% %CopyrightBegin% %% %% Copyright Ericsson AB 2011-2021. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. %% You may obtain a copy of the License at %% %% http://www.apache.org/licenses/LICENSE-2.0 %% %% Unless required by applicable law or agreed to in writing, software %% distributed under the License is distributed on an "AS IS" BASIS, %% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. %% See the License for the specific language governing permissions and %% limitations under the License. %% %% %CopyrightEnd% %% <> <newPtr((void *) Result, 0, memenv); wxeReturn rt = wxeReturn(memenv, Ecmd.caller, true); rt.send( rt.make_ref(app->getRef((void *)Result,memenv), "wxListCtrl")); } wxListCtrl_new_0>> <> <getPtr(env, argv[0], "This"); wxWindow *parent; parent = (wxWindow *) memenv->getPtr(env, argv[1], "parent"); ERL_NIF_TERM lstHead, lstTail; lstTail = argv[2]; if(!enif_is_list(env, lstTail)) Badarg("Options"); const ERL_NIF_TERM *tpl; int tpl_sz; while(!enif_is_empty_list(env, lstTail)) { if(!enif_get_list_cell(env, lstTail, &lstHead, &lstTail)) Badarg("Options"); if(!enif_get_tuple(env, lstHead, &tpl_sz, &tpl) || tpl_sz != 2) Badarg("Options"); if(enif_is_identical(tpl[0], enif_make_atom(env, "winid"))) { if(!enif_get_int(env, tpl[1], &winid)) Badarg("winid"); // "wxWindowID" } else if(enif_is_identical(tpl[0], enif_make_atom(env, "pos"))) { const ERL_NIF_TERM *pos_t; int pos_sz; if(!enif_get_tuple(env, tpl[1], &pos_sz, &pos_t)) Badarg("pos"); int posX; if(!enif_get_int(env, pos_t[0], &posX)) Badarg("pos"); int posY; if(!enif_get_int(env, pos_t[1], &posY)) Badarg("pos"); pos = wxPoint(posX,posY); } else if(enif_is_identical(tpl[0], enif_make_atom(env, "size"))) { const ERL_NIF_TERM *size_t; int size_sz; if(!enif_get_tuple(env, tpl[1], &size_sz, &size_t)) Badarg("size"); int sizeW; if(!enif_get_int(env, size_t[0], &sizeW)) Badarg("size"); int sizeH; if(!enif_get_int(env, size_t[1], &sizeH)) Badarg("size"); size = wxSize(sizeW,sizeH); } else if(enif_is_identical(tpl[0], enif_make_atom(env, "style"))) { if(!enif_get_long(env, tpl[1], &style)) Badarg("style"); } else if(enif_is_identical(tpl[0], enif_make_atom(env, "validator"))) { validator = (wxValidator *) memenv->getPtr(env, tpl[1], "validator"); } else if(enif_is_identical(tpl[0], enif_make_atom(env, "onGetItemText"))) { if(!enif_get_int(env, tpl[1], &onGetItemText)) Badarg("onGetItemText"); } else if(enif_is_identical(tpl[0], enif_make_atom(env, "onGetItemAttr"))) { if(!enif_get_int(env, tpl[1], &onGetItemAttr)) Badarg("onGetItemAttr"); } else if(enif_is_identical(tpl[0], enif_make_atom(env, "onGetItemColumnImage"))) { if(!enif_get_int(env, tpl[1], &onGetItemColumnImage)) Badarg("onGetItemColumnImage"); } else Badarg("Options"); }; if(!This) throw wxe_badarg(0); bool Result = This->Create(parent,winid,pos,size,style,*validator); This->onGetItemText = onGetItemText; This->onGetItemAttr = onGetItemAttr; This->onGetItemColumnImage = onGetItemColumnImage; This->me_ref = memenv->me_ref; wxeReturn rt = wxeReturn(memenv, Ecmd.caller, true); rt.send( rt.make_bool(Result)); } Create>> <getPtr(env, argv[0], "This"); // wxListCtrlCompare *fn; // fn = (wxListCtrlCompare *) memenv->getPtr(env, argv[1]); callbackInfo cb = callbackInfo(); cb.me_ref = memenv->me_ref; if(!enif_get_int(env, argv[1], &cb.callbackID)) Badarg("CallBack"); // long data; // if(!enif_get_long(env, argv[2], &data)) Badarg("data"); if(!This) throw wxe_badarg(0); bool Result = This->SortItems(wxEListCtrlCompare, (wxeIntPtr) &cb); wxeReturn rt = wxeReturn(memenv, Ecmd.caller, true); rt.send( rt.make_bool(Result)); wxeReturn rt2 = wxeReturn(memenv, memenv->owner, false); rt2.send( enif_make_tuple2(rt2.env, rt2.make_atom("wx_delete_cb"), rt2.make_int(cb.callbackID))); } SortItems>>