一半君的总结纸

听话只听一半君

#12 如何保存script的 preferences使得下次运行的时候能够读取设置?

方法是使用下面这个命令:

optionVar

我通常不会在script里定义一堆 global variables . 推荐的方法是使用 ‘optionVar’ command 来保存和恢复所有的用户设置. 这样有以下几个好处:

  1. 不会再script里到处定义 global variables.
  2. 就算Maya关掉再开依然能够恢复设置.
  3. 设置是存在用户的preference目录里的,不同用户之间互不干扰.

下面的例子里演示了如何把用户选择的 filetype 保存到 optionVar ‘MayaDefaultFileType’里:

string $defaultFileType = "MayaAscii";
optionVar -stringValue MayaDefaultFileType $defaultFileType;

Note: 如果你查询一个还没有定义的 optionVar , 那返回值会是 0.  所以你最好总是提供一个合适的默认返回值, 然后在读取optionVar的值之前检查他是否存在.

下面的例子演示了把用户选择的filetype 保存到 string variable $defaultFileType里:

string $defaultFileType = "MayaBinary";

// 确保 optionVar 已经存在

if ( `optionVar -exists MayaDefaultFileType` )
  $defaultFileType = `optionVar -q MayaDefaultFileType`;

// 如果 optionVar 不存在, 设置一个初始默认值

else
  optionVar -stringValue MayaDefaultFileType $defaultFileType;

我平时尽量把所有的 UIs 设计的 user-friendly. 所以我总是把用户使用UI是的状态信息保存下来.

下面演示了使用 ‘optionVar’ 来控制script的UI controls的设置, 具体在例子里是选择了得 tabLayout tab 和 frameLayout 是折叠状态还是展开状态.

// ** 恢复 preferences **

int $tab = 1;
int $collapse = 1;

if ( `optionVar -exists myTab` )
  $tab = `optionVar -q myTab`;
else
  optionVar -intValue myTab $tab;

if ( `optionVar -exists collapseStatus` )
  $collapse = `optionVar -q collapseStatus`;
else
  optionVar -intValue collapseStatus $collapse;

// ** 读取 preferences 用到 UI 上**

tabLayout -e -selectTabIndex $tab myTabLayout;

frameLayout -e -collapse $collapse myFrameLayout;

// ... //

// ** 保存 preferences **

$tab = `tabLayout -q -selectTabIndex myTabLayout`;
$collapse = `frameLayout -q -collapse myFrameLayout`;

optionVar -intValue myTab $tab;
optionVar -intValue collapseStatus $collapse;

Wednesday, July 4, 2001

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: