Automaçãode Aplicativos:scripting com PythonProf. Fabio AlexandreSpanhol
Linguagem de ScriptLinguagem que permite controlar aplicaçõesTambém chamada de linguagem de extensãoNormalmente distinta do código principal da aplicaçãoUsada por usuários finaisInterpretada  a partir do código-fonte ou bytecodesProf. Fabio Alexandre Spanhol, M.Sc.2
Tipos de Linguagens de ScriptControle de Lote e shellAppleScript+Cocoa, Command, bash, powershell, etc.GUILinguagens de macroEspecíficas de AplicaçãoAutolisp, QuakeC, etc.Prof. Fabio Alexandre Spanhol, M.Sc.3
Tipos de Linguagens de ScriptNavegadores WebJavascript, XUL (Mozilla)Processamento de TextoAWK, Perl, re, etc.Propósito GeralPython, Perl, Ruby, etc.Prof. Fabio Alexandre Spanhol, M.Sc.4
Tipos de Linguagens de ScriptExtensão/EmbarcáveisSubstituir linguagens de script específicas de aplicaçãoflexibilizaçãoO desenvolvedor da aplicação inclui hooks para que a linguagem de script externa possa controlar a aplicação alvoPython, Lua, Javascript, Tcl, MEL (AutodeskMaya 3D)Prof. Fabio Alexandre Spanhol, M.Sc.5
Python?é uma linguagem interpretada interativa funcionalorientada a objetos dinamicamente tipadacom gerenciamento automático de memória Similar, em certos aspectos, a Perl, Ruby, Scheme, Smalltalk e Tcl6Prof. Fabio Alexandre Spanhol, M.Sc.
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/ 7Prof. Fabio Alexandre Spanhol, M.Sc.
AplicaçãoWeb e Internet DatabaseGUIsCientífico e processamento numéricoEducaçãoProgramação de rede Construção e teste de softwareDesenvolvimento de jogos e renderização 3DOnde mais sua imaginação mandar!Prof. Fabio Alexandre Spanhol, M.Sc.8
Quem usa?http://www.python.org/about/success/GoogleNASAYahooInfoSeekMCI WorldcomIBM HigwayIndustrial Light and MagicAstraZenecaHoneywell9Prof. Fabio Alexandre Spanhol, M.Sc.
Também no BrasilGoverno FederalPetrobrasSerproEmbratelGlobo.comStarOneConectivaCPqDAsyncHaxentUTFPR10Prof. Fabio Alexandre Spanhol, M.Sc.
Por que Python?De altíssimo nível e poderosaElegante, com sintaxe simples e concisaFácil de aprender, “cabe” no seu cérebro Multiparadigma: Funcional, Procedural e Orientado a ObjetosPossui suporte nativo a estruturas de dados complexas11Prof. Fabio Alexandre Spanhol, M.Sc.
Extensa biblioteca padrãoUm módulo para o que você precisarsys, 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”!12Prof. Fabio Alexandre Spanhol, M.Sc.
O GIMPGNU ImageManipulationProgramFerramentas para edição e processamento de imagensGPLMultiplataformaTrata múltiplas camadasProcessamento em lote de imagensRetoque de fotos digitaisComposiçãoConversão de formatosAutoraçãoEtc.Prof. Fabio Alexandre Spanhol, M.Sc.13
O GIMPProf. Fabio Alexandre Spanhol, M.Sc.14
O GIMPExpansível e extensívelProjetado para ser estendido com plug-ins e extensões para praticamente qualquer propósitoDe tarefas simples a processamento complexo de imagemProf. Fabio Alexandre Spanhol, M.Sc.15
Console script-fuA customização “tradicional” é com um dialeto de SchemeDisponível a console script-fuProf. Fabio Alexandre Spanhol, M.Sc.16
GIMP & PythonProf. Fabio Alexandre Spanhol, M.Sc.17O GIMP pode ser customizado com python tambémDisponível uma console pythonTambém permite a execução de scripts que podem ser registrados e incorporados ao aplicativo
Console Python no GIMPProf. Fabio Alexandre Spanhol, M.Sc.18
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)PyObjectPyCairo (http://www.cairographics.org/pycairo/)Prof. Fabio Alexandre Spanhol, M.Sc.19
GTKGTK é um toolkitmulti-plataforma para a criação de interfaces gráficasdesenvolvido para o GIMPJuntamente com QT são os dois conjuntos de widgets mais usados no XÉ GPL e muito popular, p.ex. GNOMEEscrito em C, mas com projeto OOBindings para C, C++, Pascal, Perl, Java, Ruby, PHP, Lua, C#; e claro, PythonProf. Fabio Alexandre Spanhol, M.Sc.20
PyGTKProf. Fabio Alexandre Spanhol, M.Sc.21PyGTK é um wrapperpara pythoncriado por James Henstridgeconstruído sobre o GTKPermite facilmente a criação de GUI usando pythonMultiplataformaótimo desempenho elementos ricos visual agradávelLicença LGPL
PyCairoPyCairo é um conjunto de bindings python para a bibliotecagráficacairoCairo é uma biblioteca gráfica 2D com suporte para múltiplos dispositivos de saídaAtualmente suporta X Window System, Quartz, Win32, image buffers, PostScript, PDF, e arquivo SVGProf. Fabio Alexandre Spanhol, M.Sc.22
Importando módulos o módulo gimpfu provê uma interface simples para escrever plugins, similar ao script-fuFornece a GUI paraentrada de parâmetros no modointerativo e realizaalgumaschecagens no registro do pluginCom "from gimpfu import *", é um modo simples de obtertodosossímbolos no namespaceProf. Fabio Alexandre Spanhol, M.Sc.23
Importando módulosA maior parte da extensão está em gimp, importando junto com gimpfugimpenums é um conjunto de constantes úteis também importadas automaticamente com gimpfuA variável pdb é a variável para acessar a procedural databaseÉ importada para o namespace do plugin juntamente com o gimpfuProf. Fabio Alexandre Spanhol, M.Sc.24
A Procedural DataBase (PDB)A PDB é um registro de coisasque o gimp e ospluginspodemfazerQuando 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 retornosPDB Browser plugin (no menu Help) consulta a documentaçãoProf. Fabio Alexandre Spanhol, M.Sc.25
A Procedural DataBase (PDB)Prof. Fabio Alexandre Spanhol, M.Sc.26
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-regularRetorna 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 PDBProf. Fabio Alexandre Spanhol, M.Sc.27
A Procedural DataBase (PDB)Procedures podem ser acessadascomo procedures outratandopdbcomo um objeto de mapeamentogimp_edit_fillpode ser acessadacomopdb.gimp_edit_filloucomopdb[‘gimp_edit_fill’]A segunda forma é principalmenteutilizadaparanomesinválidosem PythonProf. Fabio Alexandre Spanhol, M.Sc.28
Plug-insOs pluginsescritosem python podem ser armazenadosem~/.gimp-2.n/plug-ins Setar o script comoexecutávelProf. Fabio Alexandre Spanhol, M.Sc.29
Plug-insTipos de entradaProf. Fabio Alexandre Spanhol, M.Sc.30
Estrutura do Plug-inPythonProf. Fabio Alexandre Spanhol, M.Sc.31
Questões????Prof. Fabio Alexandre Spanhol, M.Sc.32
Prof. Fabio Alexandre Spanhol, M.Sc.33
ContatoProf. Fabio Alexandre Spanholfaspanhol@gmail.comfaspanhol@utfpr.edu.brProf. Fabio Alexandre Spanhol, M.Sc.34

Automação de Aplicativos: Scripting com Python

  • 1.
    Automaçãode Aplicativos:scripting comPythonProf. Fabio AlexandreSpanhol
  • 2.
    Linguagem de ScriptLinguagemque permite controlar aplicaçõesTambém chamada de linguagem de extensãoNormalmente distinta do código principal da aplicaçãoUsada por usuários finaisInterpretada a partir do código-fonte ou bytecodesProf. Fabio Alexandre Spanhol, M.Sc.2
  • 3.
    Tipos de Linguagensde ScriptControle de Lote e shellAppleScript+Cocoa, Command, bash, powershell, etc.GUILinguagens de macroEspecíficas de AplicaçãoAutolisp, QuakeC, etc.Prof. Fabio Alexandre Spanhol, M.Sc.3
  • 4.
    Tipos de Linguagensde ScriptNavegadores WebJavascript, XUL (Mozilla)Processamento de TextoAWK, Perl, re, etc.Propósito GeralPython, Perl, Ruby, etc.Prof. Fabio Alexandre Spanhol, M.Sc.4
  • 5.
    Tipos de Linguagensde ScriptExtensão/EmbarcáveisSubstituir linguagens de script específicas de aplicaçãoflexibilizaçãoO desenvolvedor da aplicação inclui hooks para que a linguagem de script externa possa controlar a aplicação alvoPython, Lua, Javascript, Tcl, MEL (AutodeskMaya 3D)Prof. Fabio Alexandre Spanhol, M.Sc.5
  • 6.
    Python?é uma linguageminterpretada interativa funcionalorientada a objetos dinamicamente tipadacom gerenciamento automático de memória Similar, em certos aspectos, a Perl, Ruby, Scheme, Smalltalk e Tcl6Prof. Fabio Alexandre Spanhol, M.Sc.
  • 7.
    Python, onde obter?Pythonfoi 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/ 7Prof. Fabio Alexandre Spanhol, M.Sc.
  • 8.
    AplicaçãoWeb e InternetDatabaseGUIsCientífico e processamento numéricoEducaçãoProgramação de rede Construção e teste de softwareDesenvolvimento de jogos e renderização 3DOnde mais sua imaginação mandar!Prof. Fabio Alexandre Spanhol, M.Sc.8
  • 9.
    Quem usa?http://www.python.org/about/success/GoogleNASAYahooInfoSeekMCI WorldcomIBMHigwayIndustrial Light and MagicAstraZenecaHoneywell9Prof. Fabio Alexandre Spanhol, M.Sc.
  • 10.
    Também no BrasilGovernoFederalPetrobrasSerproEmbratelGlobo.comStarOneConectivaCPqDAsyncHaxentUTFPR10Prof. Fabio Alexandre Spanhol, M.Sc.
  • 11.
    Por que Python?Dealtíssimo nível e poderosaElegante, com sintaxe simples e concisaFácil de aprender, “cabe” no seu cérebro Multiparadigma: Funcional, Procedural e Orientado a ObjetosPossui suporte nativo a estruturas de dados complexas11Prof. Fabio Alexandre Spanhol, M.Sc.
  • 12.
    Extensa biblioteca padrãoUmmódulo para o que você precisarsys, 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”!12Prof. Fabio Alexandre Spanhol, M.Sc.
  • 13.
    O GIMPGNU ImageManipulationProgramFerramentaspara edição e processamento de imagensGPLMultiplataformaTrata múltiplas camadasProcessamento em lote de imagensRetoque de fotos digitaisComposiçãoConversão de formatosAutoraçãoEtc.Prof. Fabio Alexandre Spanhol, M.Sc.13
  • 14.
    O GIMPProf. FabioAlexandre Spanhol, M.Sc.14
  • 15.
    O GIMPExpansível eextensívelProjetado para ser estendido com plug-ins e extensões para praticamente qualquer propósitoDe tarefas simples a processamento complexo de imagemProf. Fabio Alexandre Spanhol, M.Sc.15
  • 16.
    Console script-fuA customização“tradicional” é com um dialeto de SchemeDisponível a console script-fuProf. Fabio Alexandre Spanhol, M.Sc.16
  • 17.
    GIMP & PythonProf.Fabio Alexandre Spanhol, M.Sc.17O GIMP pode ser customizado com python tambémDisponível uma console pythonTambém permite a execução de scripts que podem ser registrados e incorporados ao aplicativo
  • 18.
    Console Python noGIMPProf. Fabio Alexandre Spanhol, M.Sc.18
  • 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)PyObjectPyCairo (http://www.cairographics.org/pycairo/)Prof. Fabio Alexandre Spanhol, M.Sc.19
  • 20.
    GTKGTK é umtoolkitmulti-plataforma para a criação de interfaces gráficasdesenvolvido para o GIMPJuntamente com QT são os dois conjuntos de widgets mais usados no XÉ GPL e muito popular, p.ex. GNOMEEscrito em C, mas com projeto OOBindings para C, C++, Pascal, Perl, Java, Ruby, PHP, Lua, C#; e claro, PythonProf. Fabio Alexandre Spanhol, M.Sc.20
  • 21.
    PyGTKProf. Fabio AlexandreSpanhol, M.Sc.21PyGTK é um wrapperpara pythoncriado por James Henstridgeconstruído sobre o GTKPermite facilmente a criação de GUI usando pythonMultiplataformaótimo desempenho elementos ricos visual agradávelLicença LGPL
  • 22.
    PyCairoPyCairo é umconjunto de bindings python para a bibliotecagráficacairoCairo é uma biblioteca gráfica 2D com suporte para múltiplos dispositivos de saídaAtualmente suporta X Window System, Quartz, Win32, image buffers, PostScript, PDF, e arquivo SVGProf. Fabio Alexandre Spanhol, M.Sc.22
  • 23.
    Importando módulos omódulo gimpfu provê uma interface simples para escrever plugins, similar ao script-fuFornece a GUI paraentrada de parâmetros no modointerativo e realizaalgumaschecagens no registro do pluginCom "from gimpfu import *", é um modo simples de obtertodosossímbolos no namespaceProf. Fabio Alexandre Spanhol, M.Sc.23
  • 24.
    Importando módulosA maiorparte da extensão está em gimp, importando junto com gimpfugimpenums é um conjunto de constantes úteis também importadas automaticamente com gimpfuA variável pdb é a variável para acessar a procedural databaseÉ importada para o namespace do plugin juntamente com o gimpfuProf. Fabio Alexandre Spanhol, M.Sc.24
  • 25.
    A Procedural DataBase(PDB)A PDB é um registro de coisasque o gimp e ospluginspodemfazerQuando 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 retornosPDB Browser plugin (no menu Help) consulta a documentaçãoProf. Fabio Alexandre Spanhol, M.Sc.25
  • 26.
    A Procedural DataBase(PDB)Prof. Fabio Alexandre Spanhol, M.Sc.26
  • 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-regularRetorna 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 PDBProf. Fabio Alexandre Spanhol, M.Sc.27
  • 28.
    A Procedural DataBase(PDB)Procedures podem ser acessadascomo procedures outratandopdbcomo um objeto de mapeamentogimp_edit_fillpode ser acessadacomopdb.gimp_edit_filloucomopdb[‘gimp_edit_fill’]A segunda forma é principalmenteutilizadaparanomesinválidosem PythonProf. Fabio Alexandre Spanhol, M.Sc.28
  • 29.
    Plug-insOs pluginsescritosem pythonpodem ser armazenadosem~/.gimp-2.n/plug-ins Setar o script comoexecutávelProf. Fabio Alexandre Spanhol, M.Sc.29
  • 30.
    Plug-insTipos de entradaProf.Fabio Alexandre Spanhol, M.Sc.30
  • 31.
    Estrutura do Plug-inPythonProf.Fabio Alexandre Spanhol, M.Sc.31
  • 32.
  • 33.
    Prof. Fabio AlexandreSpanhol, M.Sc.33
  • 34.
    ContatoProf. Fabio AlexandreSpanholfaspanhol@gmail.comfaspanhol@utfpr.edu.brProf. Fabio Alexandre Spanhol, M.Sc.34