SlideShare une entreprise Scribd logo
1  sur  15
Télécharger pour lire hors ligne
1 de 15INTRODUÇÃO AO FAST LIGHT TOOLKIT - FLTK
The Fast Light ToolKit
Curso de Verão – Instituto de Computação & CA Computação
Michel Alves dos Santos - UFAL
Bolsista do Centro de Pesquisa em Matemática Computacional
3º Impacto
2 de 15
Componentes oferecidos pelo FLUID
[Paleta de componentes da ferramenta FLUID]
FLUID E SUA PALETA DE COMPONENTES
• Componentes de codificação: Code, Class, …
• “Containers” : Group, Window, Pack, Tile, Tabs, …
• “Buttons”: Button, Return_Button, Light_Button, …
• “Valuators” : Slider, Adjuster, Spinner, Dial, …
• “Text” : Input, Output, Text_Editor, …
• “Menus” : Menu_Bar, MenuButton, Choice, …
• “Browsers” : Browser, Check_Browser, …
3 de 15
Mas antes ...
MAS ANTES VAMOS CODIFICAR UM POUCO MANUALMENTE
4 de 15
Codificação do exemplo “Alô, Mundo !”
#include <FL/Fl.H>
#include <FL/Fl_Box.H>
#include <FL/Fl_Window.H>
int main(int argc, char* argv[])
{
Fl_Window *window = new Fl_Window(300,180);
Fl_Box *box = new Fl_Box(20,40,260,100,“Alô, Mundo!");
box->box(FL_UP_BOX);
box->labelsize(36);
box->labelfont(FL_BOLD+FL_ITALIC);
box->labeltype(FL_SHADOW_LABEL);
window->end();
window->show(argc, argv);
return Fl::run();
}
O CLÁSSICO EXEMPLO HELLO WORLD !
5 de 15
Uso de Callbacks - Exemplo
COMO RESPONDER A EVENTOS DENTRO DO FLTK – USO DE CALLBACKS - EXEMPLO
#include <cstdlib>
#include <FL/Fl.H>
#include <FL/Fl_ask.H>
#include <FL/Fl_Window.H>
void MyCallback(Fl_Widget* mywidget, void* userdata)
{
fl_message(“Saindo …"); exit(0);
}
int main(int argc, char* argv[])
{
Fl_Window *window = new Fl_Window(300,180);
window->callback(MyCallback,0);
window->show(argc, argv);
return Fl::run();
}
6 de 15
Mudando o Scheme
COMO MUDAR O ESQUEMA DAS APLICAÇÕES EM FLTK
Implemente uma classe que herde de Fl_Window e
possua a seguinte aparência :
A janela deve possuir um grupo [Fl_Group] e 3 botões do
tipo Fl_Button [com os rótulos visualizados acima].
#include <FL/Fl.H>
#include <FL/Fl_Group.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Window.H>
[Cabeçalhos necessários]
7 de 15
class WindowChangeSchema : public Fl_Window
{
public:
WindowChangeSchema(const char *L = 0);
WindowChangeSchema(int W, int H, const char *L = 0);
Fl_Group *grpGrupo;
Fl_Button *btnSchemaNativo;
Fl_Button *btnSchemaPlastic;
Fl_Button *btnSchemaGtk;
private:
/*Método que auxilia no desenho da janela*/
void _WindowChangeSchema();
/*Métodos para callback*/
void cb_btnSchemaNativo_i(Fl_Button*, void*);
static void cb_btnSchemaNativo(Fl_Button*, void*);
void cb_btnSchemaPlastic_i(Fl_Button*, void*);
static void cb_btnSchemaPlastic(Fl_Button*, void*);
void cb_btnSchemaGtk_i(Fl_Button*, void*);
static void cb_btnSchemaGtk(Fl_Button*, void*);
};
CÓDIGO DA CLASSE WINDOWCHANGESCHEMA
8 de 15CÓDIGO DO MÉTODO QUE DESENHA A INTERFACE
void WindowChangeSchema::_WindowChangeSchema()
{
grpGrupo = new Fl_Group(25, 15, 300, 50, “GRUPO");
grpGrupo->box(FL_ENGRAVED_FRAME);
grpGrupo->labelsize(20);
grpGrupo->align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
grpGrupo->end();
btnSchemaNativo = new Fl_Button(25, 83, 80, 50, “&Nativo");
btnSchemaNativo->callback((Fl_Callback*)cb_btnSchemaNativo, (void*)(this));
btnSchemaPlastic = new Fl_Button(135, 83, 80, 50, “&Plastic");
btnSchemaPlastic->callback((Fl_Callback*)cb_btnSchemaPlastic, (void*)(this));
btnSchemaGtk = new Fl_Button(245, 83, 80, 50, “&GTK+");
btnSchemaGtk->callback((Fl_Callback*)cb_btnSchemaGtk, (void*)(this));
end();
}
struindo a interface manualmente
9 de 15
Construtores da classe
CONSTRUTORES DA CLASSE
WindowChangeSchema::WindowChangeSchema(const char *L)
:Fl_Window(0, 0, 350, 150, L)
{
clear_flag(16);
_WindowChangeSchema();
}
WindowChangeSchema::WindowChangeSchema(int W, int H, const char *L)
:Fl_Window(0, 0, W, H, L)
{
clear_flag(16);
_WindowChangeSchema();
}
10 de 15
void WindowChangeSchema::cb_btnSchemaNativo_i(Fl_Button* o, void*)
{
Fl::scheme("none");
}
void WindowChangeSchema::cb_btnSchemaPlastic_i(Fl_Button* o, void*)
{
Fl::scheme("plastic");
}
void WindowChangeSchema::cb_btnSchemaGtk_i(Fl_Button* o, void*)
{
Fl::scheme("gtk+");
}
Callbacks internos
CALLBACKS INTERNOS A CLASSE
11 de 15
Callbacks “estáticos”
CALLBACKS “ESTÁTICOS” – MANIPULADOS DIRETAMENTE NOS EVENTOS
void WindowChangeSchema::cb_btnSchemaNativo(Fl_Button* o, void* v)
{
((WindowChangeSchema*)(v))->cb_btnSchemaNativo_i(o,v);
}
void WindowChangeSchema::cb_btnSchemaPlastic(Fl_Button* o, void* v)
{
((WindowChangeSchema*)(v))->cb_btnSchemaPlastic_i(o,v);
}
void WindowChangeSchema::cb_btnSchemaGtk(Fl_Button* o, void* v)
{
((WindowChangeSchema*)(v))->cb_btnSchemaGtk_i(o,v);
}
12 de 15
int main(int argc, char** argv)
{
WindowChangeSchema win("Muda Schema !!!");
win.show(argc,argv);
return Fl::run();
}
Função Principal
FUNÇÃO PRINCIPAL DO PROGRAMA
[Os três schemes suportados pelo pacote FLTK – None (Nativo), Plastic e GTK+]
13 de 15DÚVIDAS ?
Dúvidas ?
14 de 15PENSAMENTO DO DIA !
Provérbio japonês
“É um grande erro não fazer nada, quando se
pode fazer pouco...”
15 de 15FIM !!!

Contenu connexe

En vedette

Code Refactoring - Live Coding Demo (JavaDay 2014)
Code Refactoring - Live Coding Demo (JavaDay 2014)Code Refactoring - Live Coding Demo (JavaDay 2014)
Code Refactoring - Live Coding Demo (JavaDay 2014)
Peter Kofler
 

En vedette (20)

FLTK Summer Course - Part VII - Seventh Impact
FLTK Summer Course - Part VII  - Seventh ImpactFLTK Summer Course - Part VII  - Seventh Impact
FLTK Summer Course - Part VII - Seventh Impact
 
"Git Hooked!" Using Git hooks to improve your software development process
"Git Hooked!" Using Git hooks to improve your software development process"Git Hooked!" Using Git hooks to improve your software development process
"Git Hooked!" Using Git hooks to improve your software development process
 
Advanced Git
Advanced GitAdvanced Git
Advanced Git
 
FLTK Summer Course - Part II - Second Impact - Exercises
FLTK Summer Course - Part II - Second Impact - Exercises FLTK Summer Course - Part II - Second Impact - Exercises
FLTK Summer Course - Part II - Second Impact - Exercises
 
Git hooks For PHP Developers
Git hooks For PHP DevelopersGit hooks For PHP Developers
Git hooks For PHP Developers
 
Manipulating file in Python
Manipulating file in PythonManipulating file in Python
Manipulating file in Python
 
Servicios web con Python
Servicios web con PythonServicios web con Python
Servicios web con Python
 
FLTK Summer Course - Part I - First Impact - Exercises
FLTK Summer Course - Part I - First Impact - ExercisesFLTK Summer Course - Part I - First Impact - Exercises
FLTK Summer Course - Part I - First Impact - Exercises
 
Blisstering drupal module development ppt v1.2
Blisstering drupal module development ppt v1.2Blisstering drupal module development ppt v1.2
Blisstering drupal module development ppt v1.2
 
Code Refactoring - Live Coding Demo (JavaDay 2014)
Code Refactoring - Live Coding Demo (JavaDay 2014)Code Refactoring - Live Coding Demo (JavaDay 2014)
Code Refactoring - Live Coding Demo (JavaDay 2014)
 
TMS - Schedule of Presentations and Reports
TMS - Schedule of Presentations and ReportsTMS - Schedule of Presentations and Reports
TMS - Schedule of Presentations and Reports
 
FLTK Summer Course - Part VIII - Eighth Impact
FLTK Summer Course - Part VIII - Eighth ImpactFLTK Summer Course - Part VIII - Eighth Impact
FLTK Summer Course - Part VIII - Eighth Impact
 
Using Git on the Command Line
Using Git on the Command LineUsing Git on the Command Line
Using Git on the Command Line
 
Introduction to Git Commands and Concepts
Introduction to Git Commands and ConceptsIntroduction to Git Commands and Concepts
Introduction to Git Commands and Concepts
 
EuroPython 2013 - FAST, DOCUMENTED AND RELIABLE JSON BASED WEBSERVICES WITH P...
EuroPython 2013 - FAST, DOCUMENTED AND RELIABLE JSON BASED WEBSERVICES WITH P...EuroPython 2013 - FAST, DOCUMENTED AND RELIABLE JSON BASED WEBSERVICES WITH P...
EuroPython 2013 - FAST, DOCUMENTED AND RELIABLE JSON BASED WEBSERVICES WITH P...
 
Creating Custom Drupal Modules
Creating Custom Drupal ModulesCreating Custom Drupal Modules
Creating Custom Drupal Modules
 
FLTK Summer Course - Part VI - Sixth Impact - Exercises
FLTK Summer Course - Part VI - Sixth Impact - ExercisesFLTK Summer Course - Part VI - Sixth Impact - Exercises
FLTK Summer Course - Part VI - Sixth Impact - Exercises
 
Code of Conduct_formatted
Code of Conduct_formattedCode of Conduct_formatted
Code of Conduct_formatted
 
Python Fuse
Python FusePython Fuse
Python Fuse
 
Linux GIT commands
Linux GIT commandsLinux GIT commands
Linux GIT commands
 

Similaire à FLTK Summer Course - Part III - Third Impact

Lógica de programação com visu alg
Lógica de programação com visu algLógica de programação com visu alg
Lógica de programação com visu alg
Leandro Santos
 

Similaire à FLTK Summer Course - Part III - Third Impact (20)

Desligar pc
Desligar pcDesligar pc
Desligar pc
 
Java10
Java10Java10
Java10
 
CURSO JAVA 02
CURSO JAVA 02CURSO JAVA 02
CURSO JAVA 02
 
Apostila sobre controlador lógico programável avançado
Apostila sobre controlador lógico programável avançadoApostila sobre controlador lógico programável avançado
Apostila sobre controlador lógico programável avançado
 
Lazarus tutor exerc_db_faq_-_v16
Lazarus tutor exerc_db_faq_-_v16Lazarus tutor exerc_db_faq_-_v16
Lazarus tutor exerc_db_faq_-_v16
 
Mantendo a Sanidade com o Glade
Mantendo a Sanidade com o GladeMantendo a Sanidade com o Glade
Mantendo a Sanidade com o Glade
 
Rs logix 5000
Rs logix 5000Rs logix 5000
Rs logix 5000
 
Introdução ao desenvolvimento de aplicativos com interface gráfica
Introdução ao desenvolvimento de aplicativos com interface gráficaIntrodução ao desenvolvimento de aplicativos com interface gráfica
Introdução ao desenvolvimento de aplicativos com interface gráfica
 
Apostila Visualg
Apostila VisualgApostila Visualg
Apostila Visualg
 
Revista programar 21
Revista programar 21Revista programar 21
Revista programar 21
 
Introdução ao gpm(soft) clp metaltex
Introdução ao gpm(soft) clp metaltexIntrodução ao gpm(soft) clp metaltex
Introdução ao gpm(soft) clp metaltex
 
Lógica de programação com visu alg
Lógica de programação com visu algLógica de programação com visu alg
Lógica de programação com visu alg
 
Introdução à Linguagem de Programação C
Introdução à Linguagem de Programação CIntrodução à Linguagem de Programação C
Introdução à Linguagem de Programação C
 
Apostila informativos técnicos clp - ihm
Apostila informativos técnicos   clp - ihmApostila informativos técnicos   clp - ihm
Apostila informativos técnicos clp - ihm
 
Apostila complementar
Apostila complementarApostila complementar
Apostila complementar
 
Linguagem c wellington telles - aula 02
Linguagem c   wellington telles - aula 02Linguagem c   wellington telles - aula 02
Linguagem c wellington telles - aula 02
 
Metodologia e Linguagem de Programação Avançada - Aula 1
Metodologia e Linguagem de Programação Avançada - Aula 1Metodologia e Linguagem de Programação Avançada - Aula 1
Metodologia e Linguagem de Programação Avançada - Aula 1
 
Ns tutorial so
Ns tutorial soNs tutorial so
Ns tutorial so
 
Programação em C
Programação em CProgramação em C
Programação em C
 
Apostila branqs exercicios plc módulo 1
Apostila branqs exercicios plc módulo 1Apostila branqs exercicios plc módulo 1
Apostila branqs exercicios plc módulo 1
 

Plus de Michel Alves

Plus de Michel Alves (20)

Texture Synthesis: An Approach Based on GPU Use
Texture Synthesis: An Approach Based on GPU UseTexture Synthesis: An Approach Based on GPU Use
Texture Synthesis: An Approach Based on GPU Use
 
Intelligent Transfer of Thematic Harmonic Color Palettes
Intelligent Transfer of Thematic Harmonic Color PalettesIntelligent Transfer of Thematic Harmonic Color Palettes
Intelligent Transfer of Thematic Harmonic Color Palettes
 
A Framework for Harmonic Color Measures
A Framework for Harmonic Color MeasuresA Framework for Harmonic Color Measures
A Framework for Harmonic Color Measures
 
Effectiveness of Image Quality Assessment Indexes
Effectiveness of Image Quality Assessment IndexesEffectiveness of Image Quality Assessment Indexes
Effectiveness of Image Quality Assessment Indexes
 
Introduction to Kernel Functions
Introduction to Kernel FunctionsIntroduction to Kernel Functions
Introduction to Kernel Functions
 
About Perception and Hue Histograms in HSV Space
About Perception and Hue Histograms in HSV SpaceAbout Perception and Hue Histograms in HSV Space
About Perception and Hue Histograms in HSV Space
 
Color Harmonization - Results
Color Harmonization - ResultsColor Harmonization - Results
Color Harmonization - Results
 
Wave Simulation Using Perlin Noise
Wave Simulation Using Perlin NoiseWave Simulation Using Perlin Noise
Wave Simulation Using Perlin Noise
 
Similarity Maps Using SSIM Index
Similarity Maps Using SSIM IndexSimilarity Maps Using SSIM Index
Similarity Maps Using SSIM Index
 
Qualifying Exam - Image-Based Reconstruction With Color Harmonization
Qualifying Exam - Image-Based Reconstruction With Color HarmonizationQualifying Exam - Image-Based Reconstruction With Color Harmonization
Qualifying Exam - Image-Based Reconstruction With Color Harmonization
 
Month Presentations Schedule - March/2015 - LCG/UFRJ
Month Presentations Schedule - March/2015 - LCG/UFRJMonth Presentations Schedule - March/2015 - LCG/UFRJ
Month Presentations Schedule - March/2015 - LCG/UFRJ
 
Color Palettes in R
Color Palettes in RColor Palettes in R
Color Palettes in R
 
Sigmoid Curve Erf
Sigmoid Curve ErfSigmoid Curve Erf
Sigmoid Curve Erf
 
Hue Wheel Prototype
Hue Wheel PrototypeHue Wheel Prototype
Hue Wheel Prototype
 
Cosine Curve
Cosine CurveCosine Curve
Cosine Curve
 
Triangle Mesh Plot
Triangle Mesh PlotTriangle Mesh Plot
Triangle Mesh Plot
 
Triangle Plot
Triangle PlotTriangle Plot
Triangle Plot
 
Capacity-Constrained Point Distributions :: Video Slides
Capacity-Constrained Point Distributions :: Video SlidesCapacity-Constrained Point Distributions :: Video Slides
Capacity-Constrained Point Distributions :: Video Slides
 
Capacity-Constrained Point Distributions :: Density Function Catalog
Capacity-Constrained Point Distributions :: Density Function CatalogCapacity-Constrained Point Distributions :: Density Function Catalog
Capacity-Constrained Point Distributions :: Density Function Catalog
 
Capacity-Constrained Point Distributions :: Complementary Results
Capacity-Constrained Point Distributions :: Complementary ResultsCapacity-Constrained Point Distributions :: Complementary Results
Capacity-Constrained Point Distributions :: Complementary Results
 

Dernier

GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfGEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
RavenaSales1
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
TailsonSantos1
 
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptxSlide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
edelon1
 
Apresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptxApresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptx
LusGlissonGud
 
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdfReta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
WagnerCamposCEA
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
HELENO FAVACHO
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
azulassessoria9
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
CleidianeCarvalhoPer
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
LeloIurk1
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
LeloIurk1
 

Dernier (20)

GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfGEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
 
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfplanejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
 
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptxSlide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
 
Apresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptxApresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptx
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
 
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdfReta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! Sertã
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
 
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
 

FLTK Summer Course - Part III - Third Impact

  • 1. 1 de 15INTRODUÇÃO AO FAST LIGHT TOOLKIT - FLTK The Fast Light ToolKit Curso de Verão – Instituto de Computação & CA Computação Michel Alves dos Santos - UFAL Bolsista do Centro de Pesquisa em Matemática Computacional 3º Impacto
  • 2. 2 de 15 Componentes oferecidos pelo FLUID [Paleta de componentes da ferramenta FLUID] FLUID E SUA PALETA DE COMPONENTES • Componentes de codificação: Code, Class, … • “Containers” : Group, Window, Pack, Tile, Tabs, … • “Buttons”: Button, Return_Button, Light_Button, … • “Valuators” : Slider, Adjuster, Spinner, Dial, … • “Text” : Input, Output, Text_Editor, … • “Menus” : Menu_Bar, MenuButton, Choice, … • “Browsers” : Browser, Check_Browser, …
  • 3. 3 de 15 Mas antes ... MAS ANTES VAMOS CODIFICAR UM POUCO MANUALMENTE
  • 4. 4 de 15 Codificação do exemplo “Alô, Mundo !” #include <FL/Fl.H> #include <FL/Fl_Box.H> #include <FL/Fl_Window.H> int main(int argc, char* argv[]) { Fl_Window *window = new Fl_Window(300,180); Fl_Box *box = new Fl_Box(20,40,260,100,“Alô, Mundo!"); box->box(FL_UP_BOX); box->labelsize(36); box->labelfont(FL_BOLD+FL_ITALIC); box->labeltype(FL_SHADOW_LABEL); window->end(); window->show(argc, argv); return Fl::run(); } O CLÁSSICO EXEMPLO HELLO WORLD !
  • 5. 5 de 15 Uso de Callbacks - Exemplo COMO RESPONDER A EVENTOS DENTRO DO FLTK – USO DE CALLBACKS - EXEMPLO #include <cstdlib> #include <FL/Fl.H> #include <FL/Fl_ask.H> #include <FL/Fl_Window.H> void MyCallback(Fl_Widget* mywidget, void* userdata) { fl_message(“Saindo …"); exit(0); } int main(int argc, char* argv[]) { Fl_Window *window = new Fl_Window(300,180); window->callback(MyCallback,0); window->show(argc, argv); return Fl::run(); }
  • 6. 6 de 15 Mudando o Scheme COMO MUDAR O ESQUEMA DAS APLICAÇÕES EM FLTK Implemente uma classe que herde de Fl_Window e possua a seguinte aparência : A janela deve possuir um grupo [Fl_Group] e 3 botões do tipo Fl_Button [com os rótulos visualizados acima]. #include <FL/Fl.H> #include <FL/Fl_Group.H> #include <FL/Fl_Button.H> #include <FL/Fl_Window.H> [Cabeçalhos necessários]
  • 7. 7 de 15 class WindowChangeSchema : public Fl_Window { public: WindowChangeSchema(const char *L = 0); WindowChangeSchema(int W, int H, const char *L = 0); Fl_Group *grpGrupo; Fl_Button *btnSchemaNativo; Fl_Button *btnSchemaPlastic; Fl_Button *btnSchemaGtk; private: /*Método que auxilia no desenho da janela*/ void _WindowChangeSchema(); /*Métodos para callback*/ void cb_btnSchemaNativo_i(Fl_Button*, void*); static void cb_btnSchemaNativo(Fl_Button*, void*); void cb_btnSchemaPlastic_i(Fl_Button*, void*); static void cb_btnSchemaPlastic(Fl_Button*, void*); void cb_btnSchemaGtk_i(Fl_Button*, void*); static void cb_btnSchemaGtk(Fl_Button*, void*); }; CÓDIGO DA CLASSE WINDOWCHANGESCHEMA
  • 8. 8 de 15CÓDIGO DO MÉTODO QUE DESENHA A INTERFACE void WindowChangeSchema::_WindowChangeSchema() { grpGrupo = new Fl_Group(25, 15, 300, 50, “GRUPO"); grpGrupo->box(FL_ENGRAVED_FRAME); grpGrupo->labelsize(20); grpGrupo->align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE); grpGrupo->end(); btnSchemaNativo = new Fl_Button(25, 83, 80, 50, “&Nativo"); btnSchemaNativo->callback((Fl_Callback*)cb_btnSchemaNativo, (void*)(this)); btnSchemaPlastic = new Fl_Button(135, 83, 80, 50, “&Plastic"); btnSchemaPlastic->callback((Fl_Callback*)cb_btnSchemaPlastic, (void*)(this)); btnSchemaGtk = new Fl_Button(245, 83, 80, 50, “&GTK+"); btnSchemaGtk->callback((Fl_Callback*)cb_btnSchemaGtk, (void*)(this)); end(); } struindo a interface manualmente
  • 9. 9 de 15 Construtores da classe CONSTRUTORES DA CLASSE WindowChangeSchema::WindowChangeSchema(const char *L) :Fl_Window(0, 0, 350, 150, L) { clear_flag(16); _WindowChangeSchema(); } WindowChangeSchema::WindowChangeSchema(int W, int H, const char *L) :Fl_Window(0, 0, W, H, L) { clear_flag(16); _WindowChangeSchema(); }
  • 10. 10 de 15 void WindowChangeSchema::cb_btnSchemaNativo_i(Fl_Button* o, void*) { Fl::scheme("none"); } void WindowChangeSchema::cb_btnSchemaPlastic_i(Fl_Button* o, void*) { Fl::scheme("plastic"); } void WindowChangeSchema::cb_btnSchemaGtk_i(Fl_Button* o, void*) { Fl::scheme("gtk+"); } Callbacks internos CALLBACKS INTERNOS A CLASSE
  • 11. 11 de 15 Callbacks “estáticos” CALLBACKS “ESTÁTICOS” – MANIPULADOS DIRETAMENTE NOS EVENTOS void WindowChangeSchema::cb_btnSchemaNativo(Fl_Button* o, void* v) { ((WindowChangeSchema*)(v))->cb_btnSchemaNativo_i(o,v); } void WindowChangeSchema::cb_btnSchemaPlastic(Fl_Button* o, void* v) { ((WindowChangeSchema*)(v))->cb_btnSchemaPlastic_i(o,v); } void WindowChangeSchema::cb_btnSchemaGtk(Fl_Button* o, void* v) { ((WindowChangeSchema*)(v))->cb_btnSchemaGtk_i(o,v); }
  • 12. 12 de 15 int main(int argc, char** argv) { WindowChangeSchema win("Muda Schema !!!"); win.show(argc,argv); return Fl::run(); } Função Principal FUNÇÃO PRINCIPAL DO PROGRAMA [Os três schemes suportados pelo pacote FLTK – None (Nativo), Plastic e GTK+]
  • 13. 13 de 15DÚVIDAS ? Dúvidas ?
  • 14. 14 de 15PENSAMENTO DO DIA ! Provérbio japonês “É um grande erro não fazer nada, quando se pode fazer pouco...”
  • 15. 15 de 15FIM !!!