Gimp script: gimpfu3.py

Esta nueva versión de gimpfu añade tres objetos nuevos y varias opciones extra para ayudar con el diseño de la interfaz.

Nuevos objetos

  • PF_TAB: gimpfu3 PF_TAB Este componente añade un objeto Notebook a la interfaz, el quinto valor que le pasamos al crearlo es una lista de los títulos de las páginas, el notebook tendrá tantas páginas como valores pasemos a esa lista. Por ejemplo:
    (
       PF_TAB, # 1er valor: tipo de objeto
       "ptab",  # 2o valor: nombre de la variable
       "tabs",  # 3er valor: sin uso
       0,       # 4o valor: página seleccionada
       # 5º valor lista de titulos de las páginas
       (_('Position, rotation & scale'),_('Opacity, blur & color'))
    ),
    
    Para añadir objetos a una página concreta usaremos la opción extra: tab, en este ejemplo añadimos un PF_SPINNER a la 2ª página:
    (
        PF_SPINNER, "lightERnd", _("To:"), 0, (-100, +100, 1),
        {'newLine':1,'tab':1} # página del notebook, si se omite se
                              # añade en la 0 (1ª página)
    ),
    
  • PF_TITLE: gimpfu3 PF_TITLE Añade un Label a la interfaz, el cuarto valor es una lista de dos números decimales de 0.0 a 1.0, donde el primero es la alineación horizontal (0.0 alineado a la izquierda, 0.5 centrado, 0.1 alineado a la derecha) y el segundo la vertical (0.0 alineado arriba, 0,5 centrado, 1.0 abajo). Ejemplo de uso:
    (PF_TITLE, "anchorTit", _("Anchor: (Center for layer transforms)"), (0.0,0.0),None,{'cols':8,'iniCol':3,'newLine':1}),
    
  • PF_DRAW: gimpfu3 PF_DRAW Añade un DrawingArea a la interfaz en la que podremos usar las funciones de dibujo de gtk, el 5 valor que le pasamos es una lista con el ancho y alto:
    (
        PF_DRAW,
        "preview",
        _("P\nR\nE\nV\nI\nE\nW"),
        0,
        (300,300) # ancho y alto del DrawingArea
    ),

Nuevas opciones extra

A todos los objetos podemos añadirle un array con valores extra que afectan a su posición, tamaño, página en el notebook en la que se añaden o vincularlo a una función (def), estas opciones extra se añaden como un sexto valor en la función, por ejemplo para añadirle indicar a un PF_TITLE que queremos que aparezca en la segunda página del notebook:
(PF_TITLE, "blurTit", _("Blur:")),
Como un PF_TITLE solo necesita 3 valores añadimos dos nulos para que el sexto valor que le pasamos sea el array de opciones extra:
(PF_TITLE, "blurTit", _("Blur:"), None, None,{'tab':1}),
Estas opciones extra son:
  • newLine: Por defecto al añadir objetos a la interfaz cada uno se añade en una nueva fila, para poder tener varios objetos en la misma fila le pasaremos el valor 0 a esta opción.
    (
       PF_SPINNER,"oparndP",_("Random from "), 0, (0, +100, 1),
       {
         'newLine':'0', # el siguiente objeto estará en la misma línea
         'tab':1
       }
    ),
  • cols: cols Establece la cantidad de columnas que ocupará un objeto, teniendo en cuenta que cada objeto que crea gimpfu ocupa dos columnas, una para la etiqueta y otra para el objeto editable, si establecemos este valor a 2 el objeto en total ocupará 3 columnas
  • iniCol Establece en que columna añadimos el objeto, si no establecemos el valor se añadiría en la primera columna.
  • rows Cantidad de filas para el objeto
  • tab Determina en que página del notebook queremos añadir el objeto
  • connect Conecta una acción al objeto actual, necesita dos parámetros, la señal a la que se vincula y una función, por ejemplo para que se ejecute función testFn al cambiar nuestro objeto usaríamos este código:
    (
       PF_SPINNER,"scIniX","X from:", 100, (1, +200,    1),
       {
         'newLine':'0',
         'iniCol':2,
         'connect':{'signal':'changed','function':testFn}
       }
    ),
    
    El valor para ‘signal’ dependerá del objeto al que se lo asignamos

Download/Descarga

gimpfu3

2 thoughts on “Gimp script: gimpfu3.py

  1. Your modification of class StringEntry crashes a plugin which uses PF_STRING :

    # define a mapping of param types to edit objects …
    class StringEntry(gtk.Entry):
    def __init__(self, default=””):
    gtk.Entry.__init__(self)
    self.set_text(str(default))
    # self.set_line_wrap(True)
    # self.set_single_line_mode(False)

    The last two lines, which I commented out, cause the crash.

    • Hi peter, you can try to surround the error line with a “try catch” block to see what is the error message that returns, the source could be like this:
      try:
      self.set_line_wrap(True)
      self.set_single_line_mode(False)
      catch Exception, e:
      gimp.message(str(e))
      pass

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *