Existem funções no Scripter do Scribus (interpretador Python do Scribus) que permitem grande controle sobre as propriedades dos objetos. Para se saber todas as propriedades, usa-se a função:
propriedades = scribus.getPropertyNames(getSelectedObject())
Isto devolve a lista de todas as propriedades dos objetos:
- objectName
- itemName
- fillColor
- lineColor
- fillShade
- lineShade
- fillTransparency
- lineTransparency
- m_Locked
- m_SizeLocked
- m_ImageIsFlippedV
- m_ImageIsFlippedH
- lineWidth
- customLineStyle
- startArrowIndex
- endArrowIndex
- m_PrintEnabled
- xPos
- yPos
- width
- height
- rotation
- imageXScale. Escala relativa a 72 pt por polegada.
- imageYScale
- imageXOffset
- imageYOffset
- reversed
- cornerRadius
- textToFrameDistLeft
- textToFrameDistRight
- textToFrameDistTop
- textToFrameDistBottom
- ColGap
- Cols
- firstLineOffset
- itemType
Nem todas estas propriedades são aplicáveis a todos os objetos. Algumas são específicas de objetos de texto, ou de objetos gráficos, quadros de fotos etc.
Para obter o deslocamento de uma foto, por exemplo, usa-se a função:
x = scribus.getProperty(getSelectedObject(),'imageXOffset') y = scribus.getProperty(getSelectedObject(),'imageYOffset')
Para listar todas as propriedades, posso usar o seguiinte código Python:
props=scribus.getPropertyNames(getSelectedObject()) for propriedade in props: try: print propriedade,":",scribus.getProperty(getSelectedObject(),propriedade) except: print ''
Isto gera a lista:
objectName : itemName : Texto1 fillColor : None lineColor : None fillShade : 100.0 lineShade : 100.0 fillTransparency : 0.0 lineTransparency : 0.0 m_Locked : False m_SizeLocked : False m_ImageIsFlippedV : False m_ImageIsFlippedH : False lineWidth : 0.0 customLineStyle : startArrowIndex : 0 endArrowIndex : 0 m_PrintEnabled : True xPos : 142.52 yPos : 62.52 width : 255.117795276 height : 187.086299213 rotation : 0.0 imageXScale : 1.0 imageYScale : 1.0 imageXOffset : 0.0 imageYOffset : 0.0 reversed : False cornerRadius : 0.0 textToFrameDistLeft : 0.0 textToFrameDistRight : 0.0 textToFrameDistTop : 0.0 textToFrameDistBottom : 0.0 ColGap : 0.0 Cols : 1 firstLineOffset : itemType : 4
O comando try/except é para o código continuar após um bug do Scripter ( TypeError: Não foi possível converter o tipo de resultado ”.) que acontece quando se usa a função:
scribus.getProperty(getSelectedObject(),'firstLineOffset')
Modificando proprieidades
Também é possível se definir as propriedades de um objeto selecionado:
scribus.setProperty(getSelectedObject(),'imageYOffset',72.0)
Neste exemplo, defino o deslocamento Y (vertical) de uma imagem em relação ao seu quadro de imagem. O valor deve ser número tipo double, por isso deve ter ponto decimal. Caso contrário, seria considerado inteiro e geraria erro. Este valor é relativo aos dots per inch (DPI) da imagem, não relativo ao documento Scribus. Por exemplo, o valor 72 irá deslocar a imagem uma polegada se a imagem estiver a 72 DPI, e meia polegada se a imagem estiver a 144 DPI.
Um atributo de objeto importante, que foi deixado de fora, é o ponto de rotação dos objetos. Ele parece ser um atributo global do documento Scribus, não do objeto. Isto pode levar a comportamentos indesejáveis dos scripts, se for modificado do default (canto superior esquerdo). Isto acontece no meu script para criar foto+legenda+crédito.
Bibliografia
- Discovering an Item’s Properties. Scribus Wiki. Site: <http://wiki.scribus.net/index.php/Discovering_an_Item%27s_Properties>
Leave a Reply