トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

version_shade8sdk

バージョン情報(get_info)について

Shade8.1.1プラグインSDKでは、グローバル関数の「get_info」にて以下のように記載しても、product_name / author/company/commentsの記述が無効になるようです(それ以外は効いている)。

extern "C" void STDCALL get_info (shade_plugin_info &info,
   shade_interface *shade, void *) {
   
   const bool japanese = shade->is_japanese_mode();
   
   info.sdk_version = SHADE_BUILD_NUMBER;
   info.recommended_shade_version = 390000;
   info.major_version = 1;
   info.minor_version = 0;
   info.micro_version = 1;
   info.build_number = 0;

   // 以下はShade8.1.1では無効になる?
   info.product_name = "HelloShade";
   info.author = (char *)"shade plugin book.";
   info.company = "";
   info.comments = japanese ? (char *)"簡単なプラグイン" : (char *)"simple plugin.";
}

では、反映されない部分を反映させるにはどうすればいいでしょうか?答えはSXULにあります。

Windowsの場合は「sample\resources\sxuls」内の「text.ja.sxul」「text.en.sxul」がバージョン情報のリソースです。実際はVC++ .NET2003のリソースファイル(script2.rc)にて以下のように定義されています。

// 日本語 resources
...
TEXT   SXUL        "..\\..\\sample\\resources\\sxuls\\text.ja.sxul"
...

// 英語 (米国) resources
...
TEXT   SXUL        "..\\..\\sample\\resources\\sxuls\\text.en.sxul"

リソース名は「TEXT」です。実際はSDK内部でバージョン情報として利用しているようです。

OSXの場合は、「macos/plugins/ja.lproj/sxuls/text.sxul」「macos/plugins/en.lproj/sxuls/text.sxul」がXcodeでリソースとして参照されています(詳しくは「SXUL」を参照)。

このSXULファイル「text.ja.sxul(OSXではtext.sxul)」を見てみましょう。

バージョンのSXULファイル

<?xml version='1.0' encoding='UTF-8'?>
<strings>
    <string id='major_version' value='1'/>
    <string id='minor_version' value='0'/>
    <string id='micro_version' value='0'/>
    <string id='build_number' value='1000'/>
    <string id='product_name' value='simple plugin'/>
    <string id='author' value='e-frontier, Inc.'/>
    <string id='company' value='e-frontier, Inc.'/>
    <string id='comments' value='simple plugin'/>
</strings>

1行目を見ると、このファイルがUTF-8のXMLファイル形式であることが分かります。get_infoグローバル関数の内容と同じですね。どうやらこれがget_infoで失われた文字列部分のリソースとなりそうです。

「product_name」「author」「company」「comments」のvalueとして、日本語リソース(SXULファイル)の場合は日本語で、英語リソースの場合は英語で記述します。後はShade自身が自動判別して言語による切り替えはしてくれます。

ただし、「major_version」「minor_version」「micro_version」「build_number」は、SXULのが参照されずget_infoのが使われます。

まぁ、Shadeのバグでしょうかねぇ。

Future's Laboratory 技術格納庫 2004-2013 Yutaka Yoshisaka.