O documento discute linguagens de script e o uso de Python para automatizar aplicativos. Python pode ser usado para controlar o aplicativo de edição de imagem GIMP, através de plug-ins registrados na base de dados procedural do GIMP. Os plug-ins em Python podem acessar as ferramentas e funcionalidades do GIMP para automatizar tarefas.
2. Linguagem de Script Linguagem que permite controlar aplicações Também chamada de linguagem de extensão Normalmente distinta do código principal da aplicação Usada por usuários finais Interpretada a partir do código-fonte ou bytecodes Prof. Fabio Alexandre Spanhol, M.Sc. 2
3. Tipos de Linguagens de Script Controle de Lote e shell AppleScript+Cocoa, Command, bash, powershell, etc. GUI Linguagens de macro Específicas de Aplicação Autolisp, QuakeC, etc. Prof. Fabio Alexandre Spanhol, M.Sc. 3
4. Tipos de Linguagens de Script Navegadores Web Javascript, XUL (Mozilla) Processamento de Texto AWK, Perl, re, etc. Propósito Geral Python, Perl, Ruby, etc. Prof. Fabio Alexandre Spanhol, M.Sc. 4
5. Tipos de Linguagens de Script Extensão/Embarcáveis Substituir linguagens de script específicas de aplicação flexibilização O desenvolvedor da aplicação inclui hooks para que a linguagem de script externa possa controlar a aplicação alvo Python, Lua, Javascript, Tcl, MEL (AutodeskMaya 3D) Prof. Fabio Alexandre Spanhol, M.Sc. 5
6. Python? é uma linguagem interpretada interativa funcional orientada a objetos dinamicamente tipada com gerenciamento automático de memória Similar, em certos aspectos, a Perl, Ruby, Scheme, Smalltalk e Tcl 6 Prof. Fabio Alexandre Spanhol, M.Sc.
7. Python, onde obter? Python foi desenvolvido como um projeto open source, sem fins lucrativos e gerenciado pela PSF (Python Software Foundation) Para obter o interpretador python acessar http://www.python.org/download/ 7 Prof. Fabio Alexandre Spanhol, M.Sc.
8. Aplicação Web e Internet Database GUIs Científico e processamento numérico Educação Programação de rede Construção e teste de software Desenvolvimento de jogos e renderização 3D Onde mais sua imaginação mandar! Prof. Fabio Alexandre Spanhol, M.Sc. 8
9. Quem usa? http://www.python.org/about/success/ Google NASA Yahoo InfoSeek MCI Worldcom IBM Higway Industrial Light and Magic AstraZeneca Honeywell 9 Prof. Fabio Alexandre Spanhol, M.Sc.
10. Também no Brasil Governo Federal Petrobras Serpro Embratel Globo.com StarOne Conectiva CPqD Async Haxent UTFPR 10 Prof. Fabio Alexandre Spanhol, M.Sc.
11. Por que Python? De altíssimo nível e poderosa Elegante, com sintaxe simples e concisa Fácil de aprender, “cabe” no seu cérebro Multiparadigma: Funcional, Procedural e Orientado a Objetos Possui suporte nativo a estruturas de dados complexas 11 Prof. Fabio Alexandre Spanhol, M.Sc.
12. Extensa biblioteca padrão Um módulo para o que você precisar sys, random, re, datetime, calendar, csv, os, webbrowser, string, urlib, Tkinter, codecs, pickle, types, array, mutex, queue, zlib, gzip, md5, thread, socket, email, xml.dom, locale, etc. Python possui “baterias incluídas”! 12 Prof. Fabio Alexandre Spanhol, M.Sc.
13. O GIMP GNU ImageManipulationProgram Ferramentas para edição e processamento de imagens GPL Multiplataforma Trata múltiplas camadas Processamento em lote de imagens Retoque de fotos digitais Composição Conversão de formatos Autoração Etc. Prof. Fabio Alexandre Spanhol, M.Sc. 13
15. O GIMP Expansível e extensível Projetado para ser estendido com plug-ins e extensões para praticamente qualquer propósito De tarefas simples a processamento complexo de imagem Prof. Fabio Alexandre Spanhol, M.Sc. 15
16. Console script-fu A customização “tradicional” é com um dialeto de Scheme Disponível a console script-fu Prof. Fabio Alexandre Spanhol, M.Sc. 16
17. GIMP & Python Prof. Fabio Alexandre Spanhol, M.Sc. 17 O GIMP pode ser customizado com python também Disponível uma console python Também permite a execução de scripts que podem ser registrados e incorporados ao aplicativo
19. O que é necessário? GIMP 2.4.7 ou superior (www.gimp.org) Python (www.python.org) GTK (www.gtk.org) PyGTK (www.pygtk.org) PyObject PyCairo (http://www.cairographics.org/pycairo/) Prof. Fabio Alexandre Spanhol, M.Sc. 19
20. GTK GTK é um toolkitmulti-plataforma para a criação de interfaces gráficas desenvolvido para o GIMP Juntamente com QT são os dois conjuntos de widgets mais usados no X É GPL e muito popular, p.ex. GNOME Escrito em C, mas com projeto OO Bindings para C, C++, Pascal, Perl, Java, Ruby, PHP, Lua, C#; e claro, Python Prof. Fabio Alexandre Spanhol, M.Sc. 20
21. PyGTK Prof. Fabio Alexandre Spanhol, M.Sc. 21 PyGTK é um wrapperpara python criado por James Henstridge construído sobre o GTK Permite facilmente a criação de GUI usando python Multiplataforma ótimo desempenho elementos ricos visual agradável Licença LGPL
22. PyCairo PyCairo é um conjunto de bindings python para a bibliotecagráficacairo Cairo é uma biblioteca gráfica 2D com suporte para múltiplos dispositivos de saída Atualmente suporta X Window System, Quartz, Win32, image buffers, PostScript, PDF, e arquivo SVG Prof. Fabio Alexandre Spanhol, M.Sc. 22
23. Importando módulos o módulo gimpfu provê uma interface simples para escrever plugins, similar ao script-fu Fornece a GUI paraentrada de parâmetros no modointerativo e realizaalgumaschecagens no registro do plugin Com "from gimpfu import *", é um modo simples de obtertodosossímbolos no namespace Prof. Fabio Alexandre Spanhol, M.Sc. 23
24. Importando módulos A maior parte da extensão está em gimp, importando junto com gimpfu gimpenums é um conjunto de constantes úteis também importadas automaticamente com gimpfu A variável pdb é a variável para acessar a procedural database É importada para o namespace do plugin juntamente com o gimpfu Prof. Fabio Alexandre Spanhol, M.Sc. 24
25. A Procedural DataBase (PDB) A PDB é um registro de coisasque o gimp e ospluginspodemfazer Quando se instala a procedure de um plugin, se estáextendendo a PDB É auto-documentada, quando se instalauma procedure, também se instala a documentaçãodamesma, dos seusparâmetros e retornos PDB Browser plugin (no menu Help) consulta a documentação Prof. Fabio Alexandre Spanhol, M.Sc. 25
27. A Procedural DataBase (PDB) No script a PDB pode ser consultada com o método pdb.query(name, [blurb, [help, [author, [copyright, [date, [type]]]]]]) Cada parâmetro é uma expressão-regular Retorna uma lista com os nomes das procedures com matchings bem sucedido >>> pdb.query(‘rect’) Chamando sem parâmetros, serão devolvidas todas as procedures da PDB Prof. Fabio Alexandre Spanhol, M.Sc. 27
28. A Procedural DataBase (PDB) Procedures podem ser acessadascomo procedures outratandopdbcomo um objeto de mapeamento gimp_edit_fillpode ser acessadacomopdb.gimp_edit_filloucomopdb[‘gimp_edit_fill’] A segunda forma é principalmenteutilizadaparanomesinválidosem Python Prof. Fabio Alexandre Spanhol, M.Sc. 28
29. Plug-ins Os pluginsescritosem python podem ser armazenadosem ~/.gimp-2.n/plug-ins Setar o script comoexecutável Prof. Fabio Alexandre Spanhol, M.Sc. 29