2017-05-28 6 views
0

GIMP用のPython-Fuプラグインを作成しようとしていますが、4つ以上の入力パラメータ(ImageおよびDrawableパラメータを含む)まったく実行する。私はこれを様々な入力パラメータ型で試してみましたが、それらはすべて同じ結果を生成します。誰がなぜこれが起こっているのかについてのいくつかの洞察力を持っていますか?私は明白な何かを欠いていますかGIMP Python-Fuスクリプトが4つ以上のパラメータで実行されない

register(
"python_fu_guide_maker", 
"Guide Maker", 
"Creates guides with specified spacing.", 
"MrKagouris", "", "2017", 
"Guide Maker", 
"*", 
[ 
    (PF_IMAGE, "image", "Input Image", None), 
    (PF_DRAWABLE, "drawable", "Input Layer", None), 
    (PF_INT, "hspace", "Horizontal Spacing", None), 
    (PF_INT, "vspace", "Vertical Spacing", None), 
    (PF_BOOL, "percent", "By percent?", None) 
], 
[], 
guide_maker, 
menu="<Image>/Image/Guides" 
) 

EDIT:

の下には、Pythonのコードを含む完全な、完全に機能するスクリプトです。あなたが登録、ないNoneで整数のデフォルト値を使用する必要が

#!/usr/bin/env python 

from gimpfu import * 

def guide_by_num(image, hspace, vspace): 
    imageHeight = pdb.gimp_image_height(image) 
    imageWidth = pdb.gimp_image_width(image) 
    if (hspace <= 0 or vspace <= 0): 
     return       # Input validity check. 
    hGuides = int(imageHeight/hspace) # Calculates the 
    vGuides = int(imageWidth/vspace) # number of guides. 
    for i in range(2): 
     pdb.gimp_image_add_hguide(image, i * imageHeight) # Adds guides to 
     pdb.gimp_image_add_vguide(image, i * imageWidth) # image edges. 
    for i in range(1, hGuides):       # Adds the horizontal 
     pdb.gimp_image_add_hguide(image, i * hspace) # guides. 
    for i in range(1, vGuides):       # Adds the vertical 
     pdb.gimp_image_add_vguide(image, i * vspace) # guides. 

def guide_by_percent(image, hspace, vspace): #Not used. 
    imageHeight = pdb.gimp_image_height(image) 
    imageWidth = pdb.gimp_image_width(image) 
    hspace = int(hspace * (imageWidth * 0.01)) 
    vspace = int(vspace * (imageHeight * 0.01)) 
    if (hspace <= 0 or vspace <= 0): 
     return 
    hGuides = int(imageHeight/hspace) 
    vGuides = int(imageWidth/vspace) 
    for i in range(2): 
     pdb.gimp_image_add_hguide(image, i * imageHeight) 
     pdb.gimp_image_add_vguide(image, i * imageWidth) 
    for i in range(1, hGuides): 
     pdb.gimp_image_add_hguide(image, i * hspace) 
    for i in range(1, vGuides): 
     pdb.gimp_image_add_vguide(image, i * vspace) 

def guide_maker(image, drawable, hspace, vspace): 
    guide_by_num(image, hspace, vspace) 

register(
    "python_fu_guide_maker", 
    "Guide Maker", 
    "Creates guides with specified spacing.", 
    "MrKagouris", "", "2017", 
    "Guide Maker", 
    "*", 
    [ 
     (PF_IMAGE, "image", "Input Image", None), 
     (PF_DRAWABLE, "drawable", "Input Layer", None), 
     (PF_INT, "hspace", "Horizontal Spacing", None), 
     (PF_INT, "vspace", "Vertical Spacing", None), 
     #(PF_BOOL, "percent", "By percent?", None) 
    ], 
    [], 
    guide_maker, 
    menu="<Image>/Image/Guides" 
    ) 

main() 
+0

ない、あまりにも多くのパラメータの問題を、あまりにも多くのパラメータを持つ周りのスクリプトがあります画面に合わせてください。しかし実際には、私はあなたのコードをPF_IMAGE(btw、このスクリプトのためにPF_DRAWABLEは必要ありません)を保持するだけでも動作させることができませんでした。登録が失敗する(または全く起こらない)ような微妙なものがなければなりません。質問を編集して、正しく登録されたコードを追加できますか? – xenoid

+0

@xenoid完了。しかし、機能コードと非機能コードの唯一の違いは、ちょうどその1つの余分な入力パラメータです。 – MrKagouris

+0

あなたはあなたの実際のPython関数( 'guide_maker')があなたが登録するために渡した署名と一致しなければならないことを知っていますか? – jsbueno

答えて

1

そう
[ 
    (PF_IMAGE, "image", "Input Image", None), 
    (PF_DRAWABLE, "drawable", "Input Layer", None), 
    (PF_INT, "hspace", "Horizontal Spacing", 0), 
    (PF_INT, "vspace", "Vertical Spacing", 0), 
    (PF_BOOL, "percent", "By percent?", 1) 
], 

enter image description here

+0

ありがとうございました!それは知っていると非常に便利です。 – MrKagouris

関連する問題