📄 listdlg.c
字号:
mlfGet(
mlfScalar(0.0), mxCreateString("defaultuicontrolfontsize"), NULL),
mlfScalar(1.5)));
/*
* % uicontrol text, in pixels (approximate)
*
* fp = get(0,'defaultfigureposition');
*/
mlfAssign(
&fp,
mlfGet(
mlfScalar(0.0), mxCreateString("defaultfigureposition"), NULL));
/*
* w = 2*(fus+ffs)+listsize(1);
*/
mlfAssign(
&w,
mlfPlus(
mlfMtimes(mlfScalar(2.0), mlfPlus(fus, ffs)),
mlfIndexRef(listsize, "(?)", mlfScalar(1.0))));
/*
* h = 2*ffs+6*fus+ex*length(promptstring)+listsize(2)+uh+(smode==2)*(fus+uh);
*/
mlfAssign(
&h,
mlfPlus(
mlfPlus(
mlfPlus(
mlfPlus(
mlfPlus(
mlfMtimes(mlfScalar(2.0), ffs),
mlfMtimes(mlfScalar(6.0), fus)),
mlfMtimes(ex, mlfLength(promptstring))),
mlfIndexRef(listsize, "(?)", mlfScalar(2.0))),
uh),
mlfMtimes(mlfEq(smode, mlfScalar(2.0)), mlfPlus(fus, uh))));
/*
* fp = [fp(1) fp(2)+fp(4)-h w h]; % keep upper left corner fixed
*/
mlfAssign(
&fp,
mlfHorzcat(
mlfIndexRef(fp, "(?)", mlfScalar(1.0)),
mlfMinus(
mlfPlus(
mlfIndexRef(fp, "(?)", mlfScalar(2.0)),
mlfIndexRef(fp, "(?)", mlfScalar(4.0))),
h),
w,
h,
NULL));
/*
*
* fig_props = { ...
*/
mlfAssign(
&fig_props,
mlfCellhcat(
mxCreateString("name"),
figname,
mxCreateString("resize"),
mxCreateString("off"),
mxCreateString("numbertitle"),
mxCreateString("off"),
mxCreateString("windowstyle"),
mxCreateString("modal"),
mxCreateString("createfcn"),
mxCreateString(""),
mxCreateString("position"),
fp,
mxCreateString("closerequestfcn"),
mxCreateString("set(gcf,'userdata','cancel')"),
NULL));
/*
* 'name' figname ...
* 'resize' 'off' ...
* 'numbertitle' 'off' ...
* 'windowstyle' 'modal' ...
* 'createfcn' '' ...
* 'position' fp ...
* 'closerequestfcn' 'set(gcf,''userdata'',''cancel'')' ...
* };
*
* fig = figure(fig_props{:});
*/
mlfAssign(
&fig,
mlfNFigure(
1, mlfIndexRef(fig_props, "{?}", mlfCreateColonIndex()), NULL));
/*
*
* uicontrol('style','frame',...
*/
mclPrintAns(
&ans,
mlfNUicontrol(
0,
mxCreateString("style"),
mxCreateString("frame"),
mxCreateString("position"),
mlfHorzcat(
mlfScalar(0.0),
mlfScalar(0.0),
mlfIndexRef(fp, "(?)", mlfDoubleMatrix(1, 2, __Array1_r, NULL)),
NULL),
NULL));
/*
* 'position',[0 0 fp([3 4])])
* uicontrol('style','frame',...
*/
mclPrintAns(
&ans,
mlfNUicontrol(
0,
mxCreateString("style"),
mxCreateString("frame"),
mxCreateString("position"),
mlfHorzcat(
ffs,
ffs,
mlfPlus(
mlfMtimes(mlfScalar(2.0), fus),
mlfIndexRef(listsize, "(?)", mlfScalar(1.0))),
mlfPlus(mlfMtimes(mlfScalar(2.0), fus), uh),
NULL),
NULL));
/*
* 'position',[ffs ffs 2*fus+listsize(1) 2*fus+uh])
* uicontrol('style','frame',...
*/
mclPrintAns(
&ans,
mlfNUicontrol(
0,
mxCreateString("style"),
mxCreateString("frame"),
mxCreateString("position"),
mlfHorzcat(
ffs,
mlfPlus(mlfPlus(ffs, mlfMtimes(mlfScalar(3.0), fus)), uh),
mlfPlus(
mlfMtimes(mlfScalar(2.0), fus),
mlfIndexRef(listsize, "(?)", mlfScalar(1.0))),
mlfPlus(
mlfPlus(
mlfPlus(
mlfIndexRef(listsize, "(?)", mlfScalar(2.0)),
mlfMtimes(mlfScalar(3.0), fus)),
mlfMtimes(ex, mlfLength(promptstring))),
mlfMtimes(mlfPlus(uh, fus), mlfEq(smode, mlfScalar(2.0)))),
NULL),
NULL));
/*
* 'position',[ffs ffs+3*fus+uh 2*fus+listsize(1) ...
* listsize(2)+3*fus+ex*length(promptstring)+(uh+fus)*(smode==2)])
*
* if length(promptstring)>0
*/
if (mlfTobool(mlfGt(mlfLength(promptstring), mlfScalar(0.0)))) {
/*
* prompt_text = uicontrol('style','text','string',promptstring,...
*/
mlfAssign(
&prompt_text,
mlfNUicontrol(
1,
mxCreateString("style"),
mxCreateString("text"),
mxCreateString("string"),
promptstring,
mxCreateString("horizontalalignment"),
mxCreateString("left"),
mxCreateString("units"),
mxCreateString("pixels"),
mxCreateString("position"),
mlfHorzcat(
mlfPlus(ffs, fus),
mlfMinus(
mlfIndexRef(fp, "(?)", mlfScalar(4.0)),
mlfPlus(
mlfPlus(ffs, fus),
mlfMtimes(ex, mlfLength(promptstring)))),
mlfIndexRef(listsize, "(?)", mlfScalar(1.0)),
mlfMtimes(ex, mlfLength(promptstring)),
NULL),
NULL));
/*
* 'horizontalalignment','left','units','pixels',...
* 'position',[ffs+fus fp(4)-(ffs+fus+ex*length(promptstring)) ...
* listsize(1) ex*length(promptstring)]);
* end
*/
}
/*
*
* btn_wid = (fp(3)-2*(ffs+fus)-fus)/2;
*/
mlfAssign(
&btn_wid,
mlfMrdivide(
mlfMinus(
mlfMinus(
mlfIndexRef(fp, "(?)", mlfScalar(3.0)),
mlfMtimes(mlfScalar(2.0), mlfPlus(ffs, fus))),
fus),
mlfScalar(2.0)));
/*
* ok_btn = uicontrol('style','pushbutton',...
*/
mlfAssign(
&ok_btn,
mlfNUicontrol(
1,
mxCreateString("style"),
mxCreateString("pushbutton"),
mxCreateString("string"),
okstring,
mxCreateString("position"),
mlfHorzcat(mlfPlus(ffs, fus), mlfPlus(ffs, fus), btn_wid, uh, NULL),
mxCreateString("callback"),
mxCreateString("listdlg(0)"),
NULL));
/*
* 'string',okstring,...
* 'position',[ffs+fus ffs+fus btn_wid uh],...
* 'callback','listdlg(0)');
* cancel_btn = uicontrol('style','pushbutton',...
*/
mlfAssign(
&cancel_btn,
mlfNUicontrol(
1,
mxCreateString("style"),
mxCreateString("pushbutton"),
mxCreateString("string"),
cancelstring,
mxCreateString("position"),
mlfHorzcat(
mlfPlus(mlfPlus(ffs, mlfMtimes(mlfScalar(2.0), fus)), btn_wid),
mlfPlus(ffs, fus),
btn_wid,
uh,
NULL),
mxCreateString("callback"),
mxCreateString("listdlg(1)"),
NULL));
/*
* 'string',cancelstring,...
* 'position',[ffs+2*fus+btn_wid ffs+fus btn_wid uh],...
* 'callback','listdlg(1)');
*
* liststring=cellstr(liststring);
*/
mlfAssign(&liststring, mlfCellstr(liststring));
/*
* listbox = uicontrol('style','listbox',...
*/
mlfAssign(
&listbox,
mlfNUicontrol(
1,
mxCreateString("style"),
mxCreateString("listbox"),
mxCreateString("position"),
mlfHorzcat(
mlfPlus(ffs, fus),
mlfPlus(
mlfPlus(mlfPlus(ffs, uh), mlfMtimes(mlfScalar(4.0), fus)),
mlfMtimes(mlfEq(smode, mlfScalar(2.0)), mlfPlus(fus, uh))),
listsize,
NULL),
mxCreateString("string"),
liststring,
mxCreateString("backgroundcolor"),
mxCreateString("w"),
mxCreateString("max"),
smode,
mxCreateString("tag"),
mxCreateString("listbox"),
mxCreateString("value"),
initialvalue,
mxCreateString("callback"),
mxCreateString("listdlg(4)"),
NULL));
/*
* 'position',[ffs+fus ffs+uh+4*fus+(smode==2)*(fus+uh) listsize],...
* 'string',liststring,...
* 'backgroundcolor','w',...
* 'max',smode,...
* 'tag','listbox',...
* 'value',initialvalue, ...
* 'callback', 'listdlg(4)');
*
* if smode == 2
*/
if (mlfTobool(mlfEq(smode, mlfScalar(2.0)))) {
/*
* selectall_btn = uicontrol('style','pushbutton',...
*/
mlfAssign(
&selectall_btn,
mlfNUicontrol(
1,
mxCreateString("style"),
mxCreateString("pushbutton"),
mxCreateString("string"),
mxCreateString("Select all"),
mxCreateString("position"),
mlfHorzcat(
mlfPlus(ffs, fus),
mlfPlus(mlfPlus(mlfMtimes(mlfScalar(4.0), fus), ffs), uh),
mlfIndexRef(listsize, "(?)", mlfScalar(1.0)),
uh,
NULL),
mxCreateString("tag"),
mxCreateString("selectall_btn"),
mxCreateString("callback"),
mxCreateString("listdlg(2)"),
NULL));
/*
* 'string','Select all',...
* 'position',[ffs+fus 4*fus+ffs+uh listsize(1) uh],...
* 'tag','selectall_btn',...
* 'callback','listdlg(2)');
*
* if length(initialvalue) == length(liststring)
*/
if (mlfTobool(
mlfEq(mlfLength(initialvalue), mlfLength(liststring)))) {
/*
* set(selectall_btn,'enable','off')
*/
mclPrintAns(
&ans,
mlfNSet(
0,
selectall_btn,
mxCreateString("enable"),
mxCreateString("off"),
NULL));
/*
* end
*/
}
/*
* set(listbox,'callback',['listdlg(3); listdlg(4)'])
*/
mclPrintAns(
&ans,
mlfNSet(
0,
listbox,
mxCreateString("callback"),
mlfHorzcat(mxCreateString("listdlg(3); listdlg(4)"), NULL),
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -