パラメータ関連

INX Parametersの簡易まとめです。

inxとpyの関係

inxファイルのnameとpyファイルの--とdestの関係が分からず手間取ったので覚書。

<!--.inx-->
<param name="AAA" type="string">Some String</param> <!--(1)-->
#.py
class SampleClass(inkex.Effect):
    def __init__(self):
        self.OptionParser.add_option(
            '--AAA', #...(2)
            type = 'string',
            dest = 'BBB') #...(3)
    def effect(self):
        CCC = self.options.BBB #...(4)
  • inxファイルのname属性の値(1)とpyファイルの--オプションの識別子(2)は同じにしなければならない。
  • pyファイルのdest名(3)はself.options辞書のキー名に相当する。
    よって、取り出す際に(4)のような記述をする。

共通属性

type

パラメータの型を指定します。

(int|float|string|boolean|enum|notebook|description|optiongroup|color)。

name

パラメータの識別子です。

_gui-text

パラメータの説明文です。

notebook型には使われません。(設定できますが表示されません)。

以上3つは必須項目です。

gui-tip

パラメータのツールチップです。

notebook型で使われる際にクラッシュするので、今あるエクステンションではほとんど使われていません。

gui-hidden

trueを指定するとパラメータがGUIに表示にされなくなります。(指定がない場合はfalseです)。

使用例
string
<!--.inx-->
<param name="some_name" type="string">Some default text</param>
#.py
class SampleClass(inkex.Effect):
    def __init__(self):
        self.OptionParser.add_option(
            '--some_name',
            type = 'string',
            dest='some_nameA')
    def effect(self):
        some_nameB = self.options.some_nameA #some_nameB = 'Some default text'
int
<!--.inx-->
<param name="some_name" type="int" min='-10' max='999'>1</param>

min属性で最小値を、max属性で最大値を指定できます。指定がなければ最小値は0、最大値は10です。

#.py
class SampleClass(inkex.Effect):
    def __init__(self):
        self.OptionParser.add_option(
            '--some_name',
            type = 'int',
            dest='some_nameA')
    def effect(self):
        some_nameB = self.options.some_nameA #some_nameB = 1
float
<!--.inx-->
<param name="some_name" type="float" min='-10.00' max='999.00' precision='2'>1.00</param>

min属性で最小値を、max属性で最大値を指定できます。指定がない場合は最小値は0.0、最大値は10.0です。
precision属性で小数点以下の桁数を指定します。指定がない場合は1桁です。

#.py
class SampleClass(inkex.Effect):
    def __init__(self):
        self.OptionParser.add_option(
            '--some_name',
            type = 'float',
            dest='some_nameA')
    def effect(self):
        some_nameB = self.options.some_nameA #some_nameB = 1.0
boolean
<!--.inx-->
<param name="some_name" type="boolean">true</param>

trueか1またはfalseか0で指定します。

#.py
class SampleClass(inkex.Effect):
    def __init__(self):
        self.OptionParser.add_option(
            '--some_name',
            type = 'inkbool',
            dest='some_nameA')
    def effect(self):
        some_nameB = self.options.some_nameA #some_nameB = True

typeにinkboolを使います。現在はboolとかbooleanだとエラーになります。

enum
<!--.inx-->
<param name="some_name" type="enum">
   <_item value="1">First option</_item>
   <_item value="2">Second option</_item>
</param>

初期値は一番最初のアイテムです。

#.py
class SampleClass(inkex.Effect):
    def __init__(self):
        self.OptionParser.add_option(
            '--some_name',
            type = 'string',
            dest='some_nameA')
    def effect(self):
        some_nameB = self.options.some_nameA #some_nameB = '1'

戻り値に選択アイテムのvalueが文字列で返ってくるので、typeにstringを指定します。
intではないので注意が必要です。

optiongroup
<!--.inx-->
<param name="some_name" type="string">
    <_option value='1'>First option</_option>
    <_option value='2'>First option</_option>
</param>

初期状態ではラジオボックスですが、appearance="minimal"属性を追加するとドロップダウンリストになります。

#.py
class SampleClass(inkex.Effect):
    def __init__(self):
        self.OptionParser.add_option(
            '--some_name',
            type = 'string',
            dest='some_nameA')
    def effect(self):
        some_nameB = self.options.some_nameA #some_nameB = '1'

戻り値に選択アイテムのvalueが文字列で返ってくるので、typeにstringを指定します。
intではないので注意が必要です。

color

※現在は起動時にクラッシュします。

他のエクステンションでも使われていないので(Stringで直接指定させるものはある)おそらく使えないのだと思います。

description
<!--.inx-->
<param name="some_name" type="description">Some text here.</param>

GUIにテキストが表示されるだけです。

notebook
<!--.inx-->
<param name="some_name" type="notebook">
    <page name='page1' _gui-text='Page Title1'>
        <param ...>...</param>
        ...
    </page>
    <page name='page2' _gui-text='Page Title2'>
        <param ...>...</param>
        ...
    </page>
</param>
#.py
class SampleClass(inkex.Effect):
    def __init__(self):
        self.OptionParser.add_option(
            '--some_name',
            type = 'string',
            dest='some_nameA')
    def effect(self):
        some_nameB = self.options.some_nameA #some_nameB = '"page1"'

戻り値がダブルクォートで囲まれていますが理由は分かりません。
バグなら修正される可能性があります。

出力サンプル

self.options = {'int': 10, 'enum': '1', 'optiongroup': '1', 'ids': [], 'inkbool': True, 'notebook': '"page_1"', 'string': 'String', 'float': 10.0}

update:14/02/26