UI 命令模板

 
 
 

命令模板是一种为 ELF 命令指定默认参数的方法。这些模板旨在为应用程序用户界面外观的一致性提供支持。通过指定默认的文字对齐、边框样式、缩进等参数,应用程序将具有更一致的外观。通过修改命令模板中的默认参数,可以在一个位置修改应用程序的外观。

单个模板可以保留任意数量的 ELF 命令的默认值。多个模板可以保留不同的默认参数集。在执行期间,默认参数将透明地添加到属于当前模板一部分的命令的参数列表中。参数列表中明示指定的任何参数将覆盖模板中的默认参数。默认值仅在创建模板时解析一次,随后将保持已解析状态,以供以后使用。

若要创建新的空白命令模板,应使用“uiTemplate”命令。每个命令都可以使用“-dt/defineTemplate”标志将其默认值添加到一个模板,连同其指定的特定模板和要作为默认值的参数。使用“setUITemplate”命令可以将模板指定为当前模板。

每个模板都有自己的名称,并且可以推入和弹出,以更改脚本某些部分的当前模板。通常,脚本编写器将在过程开始时“推入”所需的命令模板,并在过程结束时“弹出”模板,以恢复之前模板的设定。如果没有需要的模板,则谨慎的做法是将当前模板设定为“无”(该关键字表示无当前模板)。无论何时创建了新窗口,命令模板堆栈都将清空,因此必须在创建窗口以后推入模板才能生效。命令还可以通过使用“-ut/useTemplate”标志,在不更改当前模板的情况下利用任何现有模板。

脚本 4. 命令模板

// Create a new template object.
//
if (!`uiTemplate -exists TestTemplate`) {
 uiTemplate TestTemplate;
}
// Add the command default parameters to the template.
//
frameLayout -defineTemplate TestTemplate 
 -borderVisible true -labelVisible true -labelAlign "center"
 -marginWidth 5 -marginHeight 5;
button -defineTemplate TestTemplate -width 150 -label "Default Text";
// Now make a window.
//
window -title "Test Window" ExampleWindow4;
 // Make our template current
 //
 setUITemplate -pushTemplate TestTemplate;
 frameLayout -label "Buttons" TestFrameLayout;
 columnLayout TestColumnLayout;
 button;
 button -label "Not Default Text";
 button;
 // Restore previous, if any template to clean up.
 //
 setUITemplate -popTemplate;
showWindow ExampleWindow4;

该窗口显示脚本的结果。请注意为模板定义的默认参数添加到后续命令的方式。例如,我们添加了标签文本“默认文字”作为按钮命令的默认参数,则第一个和第三个按钮无需明示指定,便采用该参数作为默认参数。但是第二个按钮的默认参数过多,因为它为标签文本标志指定了自己的参数“非默认文字”。

命令的默认参数可以随时更改,只需使用指定模板的“-dt/defineTemplate”标志重新执行命令即可。尝试更改上述模板中按钮命令的默认标签字符串,然后重新执行上述示例的窗口创建部分。

button -defineTemplate TestTemplate -label "New Default Text";

为了防止意外使用仍然处于活动状态的模板,在创建窗口时 "window" 命令将清除当前模板。请在 "window" 命令之后使用 "setUITemplate" 命令,否则该命令将没有效果。