Para sabermos o tipo de elemento selecionado no programa de editoração Scribus ainda não há um comando específico. No entanto, com os comandos Python existentes podemos criar uma função para fazer isto.
Para testar os comandos desta página, você deve usar o console Python embutido no Scribus. Chame-o pelo menu Script > Show console. O console mostra dois painéis. Os comandos digitados no painel de cima são executados com a tecla F9 e o resultado aparece no painel de baixo.
Existe um comando Python-Scribus para pegar o nome de um objeto:
x = scribus.getSelectedObject()
A variável x conterá uma string com o nome do objeto.
Existem comandos para listar todos os elementos de uma página. Tem o comando que lista só o nome dos objetos:
x = scribus.getAllObjects()
A variável x conterá uma lista com os nomes de todos os objetos na página.
Mas ainda não é isto que nos interessa. Precisamos saber os tipos dos elementos. Para isto, existe o comando:
itens = scribus.getPageItems()
Ele retorna uma lista com tuplas (grupos de parâmetros) com todos os itens da página atual. A tupla é (nome, tipo, ordem).
Para listarmos os elementos, usamos a estrutura Python “for”:
for item in itens: print item
Podemos listar também individualmente cada elemento da tupla:
for item in itens: for elemento in item: print elemento
Ou então podemos listar só os nomes:
for item in itens: print item[0]
Ou os nomes e os tipos:
for item in itens: print item[0], item[1]
O resultado, dependendo que tenha a página, pode ser algo como:
Group10 6 Image14 2 Text15 4 Text16 4 Render17 2 Polygon1827 7 Line19 5
Assim, por tentativa e erro, fico sabendo que os tipos são:
0: nada
1: nada
2: quadro de imagem ou renderização
3: nada
4: quadro de texto
5: linha reta
6: grupo ou retângulo ou polígono regular
7: polígono, curvas ou polilinha
Segundo o Help do Scribus, seção For Developers > Scribus Documento Format, os tipos são:
2 = Image
4 = Text
5 = Line
6 = Polygon
7 = Polyline
8 = Text on a path
Com estes comandos do Python e do Scribus já podemos criar uma função para pegar o tipo de um objeto. Basta descobrirmos o nome de um objeto selecionado, procurarmos a tupla do objeto na lista de objetos da página, e pegarmos o tipo do objeto dentro da tupla. Poderíamos chamar esta nova função de Astolfo Robledo, mas vamos chamá-la apenas de getObjectType, para preservar sua identidade. A função ficaria assim:
def getObjectType(): objtype = 0 obj = scribus.getSelectedObject() itens = scribus.getPageItems() for item in itens: if item[0] == obj: objtype = item[1] break return objtype
Esta função retorna zero se não houver objeto selecionado, e o número que designa o tipo do objeto, se houver algum selecionado.
Bilbiografia
- Arquivo Help do Scribus, For Developer, Scripter API. Acessível pela tecla F1 no Scribus.
- BORGES, Luiz Eduardo. Python para desenvolvedores. Rio de Janeiro: edição do autor, 2009.
Leave a Reply