• Showing Page History #105995

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

新しいコントリビューションの追加

1. コントリビューションクラスの追加

  1. namespace nft.contributions.ui
  2. {
  3. /// <summary>
  4. /// CtbMenuItem の概要の説明です。
  5. /// </summary>
  6. public class CtbMenuItem : Contribution
  7. {
  8. /// <summary>
  9. /// Contributes a menu and submenu items to mainmenu.
  10. ///
  11. /// This contribution can add several items at once.
  12. /// </summary>
  13. public CtbMenuItem(Plugin p, ParamsReader e)
  14. : base(p, e)
  15. {
  16. // 実装を定義
  17. }
  18. }
  19. }

2. コントリビューションタイプの宣言 plugin.xmlに以下のような記述を追加する

  1. <declare-contribution type="MenuItem">
  2. <name>Menu items</name>
  3. <class name="nft.contributions.ui.CtbMenuItem"/>
  4. <!--<factory-class name="nft.framework.plugin.DefaultContributionFactory"/> 省略化-->
  5. </declare-contribution>

3. コントリビューションの追加 plugin.xmlに以下のような記述を追加する。 任意の数だけ記述することが出来る。2 とは別のplugin.xmlに書くこともできる。

  1. <contribution type="MenuItem" id="hogehoge">
  2. <name>Sample Menu Item</name>
  3. <description>サンプルのメニュー項目</description>
  4. <!--その他固有のパラメータ-->
  5. </contribution>

4. NeoFT起動 起動時にCtbMenuItemのコンストラクタが呼ばれるようになる。 引数 ParamsReader には 3 に記述したノードの内容が含まれる。

特殊例

匿名コントリビューション

CtbAnonymous クラスを継承して作る

  <contribution type="Anonymous" id="Test_CtbAnonymous">
    <name>匿名コントリビューション</name>
    <description>ファクトリ宣言を必要としない、孤立したコントリビューションのサンプル(CtbAnonymousを継承すべし)</description>
    <class name="nft.debug.TestAnonymousCtb" codebase=".Core"/>
  </contribution>
実際には type=Anonymous の宣言がメインのplugin.xmlに書いてある シングルトンのような孤立したコントリビューションを気軽に追加できるように作ったが、 そういう物は基本コードで成り立つので、BinaryModule として定義する方がよい。 (各プラグインの初期化順に影響するため)