{"id":719,"date":"2009-06-08T12:48:00","date_gmt":"2009-06-08T15:48:00","guid":{"rendered":"http:\/\/meiradarocha.jor.br\/news\/?p=719"},"modified":"2009-06-08T16:49:07","modified_gmt":"2009-06-08T19:49:07","slug":"scribus-scripting-descobrindo-o-tipo-de-um-objeto-grafico","status":"publish","type":"post","link":"https:\/\/meiradarocha.jor.br\/news\/2009\/06\/08\/scribus-scripting-descobrindo-o-tipo-de-um-objeto-grafico\/","title":{"rendered":"Scribus scripting: descobrindo o tipo de um objeto gr\u00e1fico"},"content":{"rendered":"<p>Para sabermos o tipo de elemento selecionado no programa de editora\u00e7\u00e3o <a href=\"http:\/\/www.scribus.net\"><strong>Scribus<\/strong><\/a> ainda n\u00e3o h\u00e1 um comando espec\u00edfico. No entanto, com os comandos <strong>Python <\/strong>existentes podemos criar uma fun\u00e7\u00e3o para fazer isto.<\/p>\n<p>Para testar os comandos desta p\u00e1gina, voc\u00ea deve usar o console Python embutido no Scribus. Chame-o pelo menu Script &gt; Show console. O console mostra dois pain\u00e9is. Os comandos digitados no painel de cima s\u00e3o executados com a tecla <kbd>F9<\/kbd> e o resultado aparece no painel de baixo.<\/p>\n<p>Existe um comando Python-Scribus para pegar o nome de um objeto:<\/p>\n<pre>x = scribus.getSelectedObject()<\/pre>\n<p>A vari\u00e1vel x conter\u00e1 uma string com o nome do objeto.<\/p>\n<p>Existem comandos para listar todos os elementos de uma p\u00e1gina. Tem o comando que lista s\u00f3 o nome dos objetos:<\/p>\n<pre>x = scribus.getAllObjects()<\/pre>\n<p>A vari\u00e1vel x conter\u00e1 uma lista com os nomes de todos os objetos na p\u00e1gina.<!--more--><\/p>\n<p>Mas ainda n\u00e3o \u00e9 isto que nos interessa. Precisamos saber os tipos dos elementos. Para isto, existe o comando:<\/p>\n<pre>itens = scribus.getPageItems()<\/pre>\n<p>Ele retorna uma lista com tuplas (grupos de par\u00e2metros) com todos os itens da p\u00e1gina atual. A tupla \u00e9\u00a0 (nome, tipo, ordem).<\/p>\n<p>Para listarmos os elementos, usamos a estrutura Python &#8220;for&#8221;:<\/p>\n<pre>for item in itens:\r\n    print item<\/pre>\n<p>Podemos listar tamb\u00e9m individualmente cada elemento da tupla:<\/p>\n<pre>for item in itens:\r\n    for elemento in item:\r\n        print elemento<\/pre>\n<p>Ou ent\u00e3o podemos listar s\u00f3 os nomes:<\/p>\n<pre>for item in itens:\r\n    print item[0]<\/pre>\n<p>Ou os nomes e os tipos:<\/p>\n<pre>for item in itens:\r\n    print item[0], item[1]<\/pre>\n<p>O resultado, dependendo que tenha a p\u00e1gina,\u00a0 pode ser algo como:<\/p>\n<pre>Group10 6\r\nImage14 2\r\nText15 4\r\nText16 4\r\nRender17 2\r\nPolygon1827 7\r\nLine19 5<\/pre>\n<p>Assim, por tentativa e erro, fico sabendo que os tipos s\u00e3o:<\/p>\n<p>0: nada<br \/>\n1: nada<br \/>\n2: quadro de imagem ou renderiza\u00e7\u00e3o<br \/>\n3: nada<br \/>\n4: quadro de texto<br \/>\n5: linha reta<br \/>\n6: grupo ou ret\u00e2ngulo ou pol\u00edgono regular<br \/>\n7: pol\u00edgono, curvas ou polilinha<\/p>\n<p>Segundo o<strong> Help do Scribus<\/strong>, se\u00e7\u00e3o <strong>For Developers &gt; Scribus Documento Format<\/strong>, os tipos s\u00e3o:<\/p>\n<p><span style=\"vertical-align: top;\">2 = Image<br \/>\n4 = Text<br \/>\n5 = Line<br \/>\n6 = Polygon<br \/>\n7 = Polyline<br \/>\n8 = Text on a path<\/span><\/p>\n<p>Com estes comandos do Python e do Scribus j\u00e1 podemos criar uma fun\u00e7\u00e3o 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\u00e1gina, e pegarmos o tipo do objeto dentro da tupla. Poder\u00edamos chamar esta nova fun\u00e7\u00e3o de Astolfo Robledo, mas vamos cham\u00e1-la apenas de <strong>getObjectType<\/strong>, para preservar sua identidade. A fun\u00e7\u00e3o ficaria assim:<\/p>\n<pre>def getObjectType():\r\n    objtype = 0\r\n    obj = scribus.getSelectedObject()\r\n    itens = scribus.getPageItems()\r\n    for item in itens:\r\n        if item[0] == obj:\r\n            objtype = item[1]\r\n            break\r\n    return objtype<\/pre>\n<p>Esta fun\u00e7\u00e3o retorna zero se n\u00e3o houver objeto selecionado, e o n\u00famero que designa o tipo do objeto, se houver algum selecionado.<\/p>\n<h3>Bilbiografia<\/h3>\n<ol>\n<li><strong>Arquivo Help do Scribus<\/strong>, For Developer, Scripter API. Acess\u00edvel pela tecla F1 no Scribus.<\/li>\n<li>BORGES, Luiz Eduardo. <strong>Python para desenvolvedores<\/strong>. Rio de Janeiro: edi\u00e7\u00e3o do autor, 2009.<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Para sabermos o tipo de elemento selecionado no programa de editora\u00e7\u00e3o Scribus ainda n\u00e3o h\u00e1 um comando espec\u00edfico. No entanto, com os comandos Python existentes podemos criar uma fun\u00e7\u00e3o para [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15,14,16],"tags":[],"class_list":["post-719","post","type-post","status-publish","format-standard","hentry","category-editoracao","category-python","category-scribus"],"_links":{"self":[{"href":"https:\/\/meiradarocha.jor.br\/news\/wp-json\/wp\/v2\/posts\/719","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/meiradarocha.jor.br\/news\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/meiradarocha.jor.br\/news\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/meiradarocha.jor.br\/news\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/meiradarocha.jor.br\/news\/wp-json\/wp\/v2\/comments?post=719"}],"version-history":[{"count":0,"href":"https:\/\/meiradarocha.jor.br\/news\/wp-json\/wp\/v2\/posts\/719\/revisions"}],"wp:attachment":[{"href":"https:\/\/meiradarocha.jor.br\/news\/wp-json\/wp\/v2\/media?parent=719"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/meiradarocha.jor.br\/news\/wp-json\/wp\/v2\/categories?post=719"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/meiradarocha.jor.br\/news\/wp-json\/wp\/v2\/tags?post=719"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}