向模型编辑器菜单中添加项目
您可以为Simulink的菜单栏和上下文菜单添加命令和子菜单金宝app®编辑器和状态流®编辑器。
向菜单中添加一项:
添加菜单项的代码
以下sl_customization.m
文件向a中添加了四项工具显示在Simulink工具条下方的菜单。金宝app
函数sl_customization (cm)注册自定义菜单功能。cm.addCustomMenuFcn (“金宝app模型:ToolsMenu”, @getMyMenuItems);结束定义自定义菜单函数。函数schemaFcns = getMyMenuItems(callbackInfo) schemaFcns = {@getItem1,...@getItem2,...{@getItem3 3},...将3作为用户数据传递给getItem3。@getItem4};结束为第一个菜单项定义模式函数。函数schema = getItem1(callbackInfo);模式。标签=“项目一”;模式。用户数据=“项目一”;模式。callback = @myCallback1;结束函数myCallback1 (callbackInfo) disp (['Callback for item 'callbackInfo.userdata' was called']);结束函数schema = getItem2(callbackInfo)制作一个子菜单标签“Item Two”%菜单项超过三次。Schema = sl_container_schema;模式。标签=“两项”;模式。childrenFcns = {@getItem1, @getItem1, @getItem1};结束函数schema = getItem3(callbackInfo)创建一个标签为的菜单项% 'Item Three: 3',其中3被传递%从上面的getMyItems。Schema = sl_action_schema;模式。标签=[“第三项:”num2str (callbackInfo.userdata)];结束函数myToggleCallback (callbackInfo)如果比较字符串(get_param (gcs,“ScreenColor”),“红色”set_param(gcs,“ScreenColor”,“红色”);其他的set_param (gcs,“ScreenColor”,“白色”);结束结束为切换菜单项定义模式函数。函数schema = getItem4(callbackInfo) schema = sl_toggle_schema;模式。标签=“红色屏幕”;如果比较字符串(get_param (gcs,“ScreenColor”),“红色”) == 1模式。检查=“检查”;其他的模式。检查=“不”;结束模式。callback = @myToggleCallback;结束
定义菜单项
定义菜单项的方法是创建一个函数,该函数返回一个名为模式对象,它指定创建菜单项所需的信息。您定义的菜单项可以触发自定义操作或显示自定义子菜单。有关更多信息,请参阅以下部分。
定义触发自定义命令的菜单项
要定义触发自定义命令的项,模式函数必须接受回调信息对象(请参阅回调信息对象)并创建并返回一个操作模式对象(参见操作模式对象),指定项目标签和一个函数,称为回调,在用户选择项时调用。例如,下面的模式函数定义了一个菜单项,该菜单项在用户选择时显示一条消息。
function schema = getItem1(callbackInfo)Schema = sl_action_schema;指定菜单项标签。模式。标签='My Item 1'; schema.userdata = 'item1'; %% Specify the menu item callback function. schema.callback = @myCallback1; end function myCallback1(callbackInfo) disp(['Callback for item ' callbackInfo.userdata ' was called']); end
操作架构对象。该对象指定有关触发您定义的命令的菜单项的信息,包括出现在菜单项上的标签以及当用户选择菜单项时要调用的函数。使用函数sl_action_schema
在模式函数中创建此对象的实例。其特性包括:
标签
例如,标识此操作的可选字符向量,以便筛选器函数可以引用它。
标签
字符向量,指定出现在触发此操作的菜单项上的标签。
状态
属性,该属性指定此操作的状态。有效值为
“启用”
(默认),“禁用”
,“隐藏”
.statustip
字符向量,指定当用户选择触发此操作的菜单项时出现在编辑器状态栏中的文本。
用户数据
您指定的数据。可能是任何类型。
加速器
字符向量,指定Ctrl和用于触发此操作的键组合。您只能为出现在菜单栏菜单上的自定义菜单项添加键盘快捷键,不能重定义Simulink编辑器附带的加速器。金宝app例如,Ctrl + D是一种加速器更新图在Simuli金宝appnk编辑器中,因此不能重新定义它。
要指定此值,请使用表单
“Ctrl +
K
'
,在那里K
是快捷键。例如,使用“Ctrl + Alt + T”
用于按下启动的加速器Ctrl而且Alt和紧迫T.回调
字符向量,指定要计算的MATLAB表达式或当用户选择触发此操作的菜单项时要调用的函数句柄。这个函数必须接受一个参数:一个回调信息对象。
autoDisableWhen
属性,该属性控制何时自动禁用菜单项。
设置 当菜单项被禁用时 “锁定”
(默认)当活动编辑器被锁定或模型繁忙时
“忙”
只有在模特忙的时候
“永远”
从来没有
切换架构对象。该对象指定关于打开或关闭某个对象的菜单项的信息。使用函数sl_toggle_schema
在模式函数中创建此对象的实例。其特性包括:
标签
例如,标识此切换操作的可选字符向量,以便筛选器函数可以引用它。
标签
字符向量,指定出现在触发此切换操作的菜单项上的标签。
检查
指定菜单项是否显示复选标记。有效值为
“不”
(默认),“检查”
状态
此切换操作的状态,指定为
“启用”
(默认),“禁用”
,“隐藏”
.statustip
字符向量,指定当用户选择触发此切换操作的菜单项时出现在编辑器状态栏中的文本。
用户数据
您指定的数据。可能是任何类型。
加速器
字符向量,指定Ctrl和用于触发此操作的键组合。您只能为出现在菜单栏菜单上的自定义菜单项添加键盘快捷键,不能重定义Simulink编辑器附带的加速器。金宝app例如,Ctrl + D是一种加速器更新图在Simuli金宝appnk编辑器中,因此不能重新定义它。
要指定此值,请使用表单
“Ctrl +
K
'
,在那里K
是快捷键。例如,使用“Ctrl + Alt + T”
用于按下启动的加速器Ctrl而且Alt和紧迫T.回调
字符向量,指定要计算的MATLAB表达式或当用户选择触发此操作的菜单项时要调用的函数句柄。这个函数必须接受一个参数:一个回调信息对象。
autoDisableWhen
属性,该属性控制何时自动禁用菜单项。
设置 当菜单项被禁用时 “锁定”
(默认)当活动编辑器被锁定或模型繁忙时
“忙”
只有在模特忙的时候
“永远”
从来没有
定义自定义子菜单
若要定义子菜单,请创建一个模式函数,该函数接受回调信息对象并返回容器模式对象(参见容器架构对象),指定定义子菜单项的模式。例如,下面的模式函数定义了一个子菜单,其中包含示例中定义的菜单项的三个实例定义触发自定义命令的菜单项.
函数模式= getItem2(callbackInfo)模式= sl_container_schema模式。标签=“两项”;模式。childrenFcns = {@getItem1, @getItem1, @getItem1};结束
容器架构对象。容器模式对象指定子菜单标签及其内容。使用函数sl_container_schema
在模式函数中创建此对象的实例。对象的属性包括
标签
标识此子菜单的可选字符向量。
标签
指定子菜单标签的字符向量。
状态
指定此子菜单状态的字符向量。有效值为
“启用”
(默认),“禁用”
,“隐藏”
.statustip
字符向量,指定当用户选择此子菜单时出现在编辑器状态栏中的文本。
childrenFcns
单元格数组,它指定子菜单的内容。单元格数组中的每个条目都可以是
例如,下面的单元格数组指定了两个子菜单项:
{@getItem1, 'separator', {@getItem2, 1}}
在本例中,1被传递给
getItem2
通过回调信息对象。generateFcn
指向一个函数的指针,该函数返回定义子菜单内容的单元格数组。单元格数组必须与容器模式对象指定的格式相同
childrenFcns
财产。请注意
的
generateFcn
属性优先于childrenFcns
财产。如果同时设置,则childrenFcns
属性返回的单元格数组generateFcn
用于创建子菜单。用户数据
传递给的任何类型的数据
generateFcn
.autoDisableWhen
属性,该属性控制何时自动禁用菜单项。
设置 当菜单项被禁用时 “锁定”
(默认)当活动编辑器被锁定或模型繁忙时
“忙”
只有在模特忙的时候
“永远”
从来没有
注册菜单自定义
必须向自定义管理器注册要包含在Simulink菜单中的自定义项。金宝app使用sl_customization.m
文件用于Simulin金宝appk安装(请参见用Simulink注册自定义金宝app)来执行这项任务。特别是,对于您想要自定义的每个菜单,您的系统sl_customization
函数必须调用自定义管理器addCustomMenuFcn
方法。每次调用都应该传递菜单的标记(参见菜单标签)和指定要添加到菜单中的项目的自定义菜单函数(请参阅创建自定义菜单功能).例如sl_customization
函数将自定义项添加到Simulink工具菜单。金宝app
注册自定义菜单函数。cm.addCustomMenuFcn (“金宝app模型:ToolsMenu”,@getMyItems);
创建自定义菜单功能
自定义菜单函数返回模式函数的单元格数组,这些模式函数定义了您希望出现在模型编辑器菜单上的自定义项(请参阅定义菜单项).方法返回的单元格数组类似于generateFcn
函数。
您的自定义菜单函数应该接受回调信息对象(参见回调信息对象)并返回一个列出模式函数的单元格数组。单元格数组的每个元素可以是模式函数的句柄,也可以是两个元素的单元格数组,其中第一个元素是模式函数的句柄,第二个元素是要传递给模式函数的用户定义数据。例如,下面的自定义菜单函数返回一个单元格数组,其中列出了三个模式函数。
函数schema = getMyItems(callbackInfo) schema = {@getItem1,…@getItem2,……{@getItem3 3}};将3作为用户数据传递给getItem3。结束
回调信息对象
这些对象的实例被传递给菜单自定义函数。这些对象的方法和属性包括:
uiObject
方法获取该回调函数所针对的菜单的所有者的句柄。所有者可以是Simulink编辑器或状态流金宝app编辑器。
模型
方法获取在编辑器窗口中显示的模型的句柄。
用户数据
用户数据属性。此属性的值可以是任何类型的数据。
调试自定义菜单回调
在使用微软的系统上®窗户®在操作系统中,选择回调包含断点的自定义菜单项可能导致鼠标失去响应或菜单保持打开状态并位于其他窗口之上。要修复这些问题,请使用MATLAB代码调试器键盘命令继续执行回调。
菜单标签
菜单标记标识Simulink编辑器或状态流编辑器金宝app菜单栏或菜单。您需要知道菜单的标记,以便向其中添加自定义项(请参阅注册菜单自定义).
标签 | 它增加了什么 |
---|---|
金宝app动态仿真模块标签 | |
金宝app动态仿真模块:菜单条 |
菜单到Simulink编金宝app辑器菜单栏 |
金宝app仿真软件:PreContextMenu |
项到Simulink Editor上下文菜单的开头金宝app |
金宝app仿真软件:快捷菜单 |
项到Simulink Editor上下文菜金宝app单的末尾 |
金宝app仿真软件:FileMenu |
项目到Simulink编辑器的末尾金宝app文件菜单 |
金宝app动态仿真模块:菜单程序 |
项目到Simulink编辑器的末尾金宝app编辑菜单 |
金宝app仿真软件:ViewMenu |
项目到Simulink编辑器的末尾金宝app视图菜单 |
金宝app仿真软件:DisplayMenu |
项目到Simulink编辑器的末尾金宝app显示菜单 |
金宝app仿真软件:DiagramMenu |
项目到Simulink编辑器的末尾金宝app图菜单 |
金宝app仿真软件:SimulationMenu |
项目到Simulink编辑器的末尾金宝app模拟菜单 |
金宝app仿真软件:AnalysisMenu |
项目到Simulink编辑器的末尾金宝app分析菜单 |
金宝app仿真软件:CodeMenu |
项目到Simulink编辑器的末尾金宝app代码菜单 |
金宝app仿真软件:ToolsMenu |
项目到Simulink编辑器的末尾金宝app工具菜单 |
金宝app仿真软件:HelpMenu |
项目到Simulink编辑器的末尾金宝app帮助菜单 |
Stateflow标签 | |
Stateflow:菜单条 |
菜单中的“状态流编辑器”菜单栏 |
Stateflow: PreContextMenu |
项添加到状态流编辑器上下文菜单的开头。 |
Stateflow:快捷菜单 |
状态流编辑器上下文菜单末尾的项。 |
Stateflow: FileMenu |
项到状态流编辑器的末尾文件菜单 |
Stateflow:菜单程序 |
项到状态流编辑器的末尾编辑菜单 |
Stateflow: ViewMenu |
项到状态流编辑器的末尾视图菜单 |
Stateflow: DisplayMenu |
项到状态流编辑器的末尾显示菜单 |
Stateflow: ChartMenu |
项到状态流编辑器的末尾图表菜单 |
Stateflow: SimulationMenu |
项到状态流编辑器的末尾模拟菜单 |
Stateflow: AnalysisMenu |
项到状态流编辑器的末尾分析菜单 |
Stateflow: CodeMenu |
项到状态流编辑器的末尾代码菜单 |
Stateflow: ToolsMenu |
项到状态流编辑器的末尾工具菜单 |
Stateflow: HelpMenu |
项到状态流编辑器的末尾帮助菜单 |
金宝app而且Stateflow编辑器菜单定制
使用与用于Simulink Editor相同的通用过程来自定义状态流编辑器菜单。金宝app在顶级菜单的末尾添加自定义菜单函数取决于活动编辑器:
绑定的菜单
金宝app仿真软件:FileMenu
仅在Simulink编辑器处于活动状态时显金宝app示。绑定的菜单
Stateflow: FileMenu
仅在状态流编辑器处于活动状态时出现。若要在两个编辑器中都显示菜单,请调用
addCustomMenuFcn
两次,每个标签一次。检查代码是否在两个编辑器中都可以工作。