Biblioteca FLTK, Tentando entender! [RESOLVIDO]

1. Biblioteca FLTK, Tentando entender! [RESOLVIDO]

Nick Us
Nick-us

(usa Slackware)

Enviado em 02/06/2020 - 22:02h

Conheci a FLTK após minha enorme decepção com a wxWidgets.
Nem preciso dizer que AMEI o Potencial imediato da FLTK, extremamente pequena, leve e disparadamente mais poderosa que a wxWidgets. Comparando eu diria que a FLTK é um Mini-Revólver com o Poder de uma Bomba Nuclear enquanto a wxWidgets é um Porta Aviões que atira bolinhas de sabão!

Anexei uma Imagem para terem uma idéia da Linda Janela que montei na FLTK e que é impossível fazer na wxWidgets, pq a wxWidgtes nem consegue pintar o fundo de um simples TextCtrl.

Espero que alguém consiga me ajudar, porque minha pouca experiência me limita!

Estou tentando montar um Grid Simples, porém os exemplos existentes são complexos para meu pouco conhecimento de C++, motivo que quero minimizar ao máximo o meu exemplo para estudar e entender! O Meu exemplo trata-se de um exemplo que vi na Internet Gigantesco, onde eu removi 90% do código e reduzi ele ao máximo pra eu entender.

No exemplo abaixo, repare que fui obrigado a criar uma classe para fazer meu Grid, o caso, é que eu quero criar o Grid dentro do main, sem criar nenhuma classe! E sem usar função. Como faço ao declarar o FrmMain. Em outras bibliotecas eu sempre fiz isso removia a classe, e criava o constructor dentro do main. Acontece que não sou experiente e não sei fazer isso com a FLTK

Exemplo:
#include <FL/Fl_Window.H>
#include <FL/fl_draw.H>
#include <FL/Fl_Table_Row.H>

class Grid_Class: public Fl_Table_Row { // Aqui foi criado uma Classe, não queria fazer isso!
protected:
void draw_cell(TableContext context, int R=0, int C=0, int X=0, int Y=0, int W=0, int H=0);

public:
Grid_Class(int x, int y, int w, int h, const char *l=0): Fl_Table_Row(x,y,w,h,l) { end(); }
~Grid_Class() {}
};

// Quero também essa função no main, pois não quero uma função pra isso!
void Grid_Class::draw_cell(TableContext context, int R, int C, int X, int Y, int W, int H) {
static char s[40];
sprintf(s, "%d/%d", R, C);

switch(context) {
case CONTEXT_STARTPAGE:
fl_font(FL_SCREEN, 12);
return;

case CONTEXT_ROW_HEADER:
case CONTEXT_COL_HEADER:
fl_push_clip(X, Y, W, H);
fl_draw_box(FL_FLAT_BOX, X, Y, W, H, 219);
fl_color(FL_WHITE);
fl_draw(s, X, Y, W, H, FL_ALIGN_CENTER);
fl_pop_clip();
return;

case CONTEXT_CELL:
fl_push_clip(X, Y, W, H);

// BG COLOR
fl_color(row_selected(R) ? selection_color(): FL_WHITE);
fl_rectf(X, Y, W, H);

// TEXT
fl_color(219);
fl_draw(s, X, Y, W, H, FL_ALIGN_CENTER);

// BORDER
fl_color(FL_LIGHT2);
fl_rect(X, Y, W, H);

fl_pop_clip();
return;

default:
return;
}
}

int main() {
Fl_Window FrmMain(325, 150);

Grid_Class table1(0, 0, 325, 150);
table1.color((Fl_Color)53);
table1.selection_color(53);
table1.rows(5);
table1.cols(4);
table1.col_header(1);
table1.end();

FrmMain.show();
return(Fl::run());
}

Se alguém puder corrigir o meu código sem a Classe e sem a função, isso ajuda muito! Pois me servirá como base para outros!
Ou Claro não precisa ser esse meu. Se alguém tiver um código de um Fl_Table (GRID) em FLTK com 2 colunas e 2 linhas apenas, que esteja escrito somente no Main, sem funções, também ajuda muito! Pois tudo o que quero e preciso é de um exemplo extremamente super simples de um Fl_Table. Pois será a partir desse super básico exemplo que irei evoluir para outras funções dele.


  


2. MELHOR RESPOSTA

Paulo
paulo1205

(usa Ubuntu)

Enviado em 03/06/2020 - 01:32h

Nick-us escreveu:

Apenas para acrescentar:
Dentre tantas bibliotecas existentes, mas conheço umas poucas, Ainda não quero usar QT.
Eu sei que a QT faz tudo o que conheço, não tem as falhas básicas da wxWidgets. O Meu problema com a QT é que nunca gostei dela, mas talvez um dia posso trocar esse sentimento, acho que talvez eu não confie nela, não pela capacidade dela, mas sim com medo de encontrar alguma coisa que me incomode muito. E estudar QT não é uma tarefa rápida.

Olhando esse POST do Paulo https://www.vivaolinux.com.br/topico/C-C++/Como-criar-um-SoftWare-com-CC
Foi uma pancada pra mim, embora eu também não tenha gostado da GTK, ainda assim tentaria uma GTK da vida antes da QT, mas ao ler o que o Paulo escreveu sobre GTK me assustou muito, o que retirou qualquer vontade minha de testar ou mesmo olhar mais a fundo a GTK, depois disso, se eu testar GTK não será a sério!

paulo1205 escreveu: NÃO RECOMENDO Gtk DE JEITO NENHUM.


Olha, eu não sou nenhuma autoridade em programação com GUI. Eu raramente uso GUI nos meus programas, porque meus programas são voltados para administração de rede. Em quase todos eles, a interface de entrada é a linha de comando ou dados recebidos na entrada padrão, não raro via pipeline, e a saída vai para a saída padrão ou para arquivo.

Minha implicância com o GTK é por uma questão de gosto pessoal e por conta da evolução que o produto teve desde que foi criado. Já expliquei isso melhor em postagens anteriores, mas basicamente se resume ao seguinte problema: usar orientação a objetos com uma linguagem que não tem suporte a orientação a objetos (uma coisa é permitir um estilo de programação — dá para programa em OO até em Assembly, se você se esforçar o suficiente —, outra coisa é suportar tal estilo) acaba se tornando desnecessariamente árduo de fazer direito.

Aí, nesse caso, não é opinião apenas minha: diversos projetos open source migraram de GTK/GTKmm para Qt em anos recentes, entre eles o Wireshark, o LXDE (que passou a se chamar LXQt), Subsurface estão entre os mais famosos.

Qt tem a questão da licença mais restritiva de redistribuição na versão gratuita, que também não inclui algumas funcionalidades avançadas da versão paga. Para alguns, esse aspecto não-técnico faz toda a diferença. E foi ele, aliás, que provocou a criação do GNOME. Se a Qt fosse mais livre desde o início, talvez hoje todo mundo usasse KDE.

Por outro lado, a documentação e o suporte da comunidade do Qt costumam dar um banho nos do GTK. Um dos desenvolvedores do Subsurface inclusive listou a falta de educação da comunidade GTK como um dos fatores que deu fôlego à migração de GTK para Qt.

Você pode ler sobre isso tudo na Internet. Por mais imparcial que eu tente ser, eu tenho uma preferência totalmente óbvia. Procure ver outros pontos de vista, principalmente de gente que programa com GUI incomparavelmente mais do que eu.

Agora, se for para ficar com alguma informação minha, prefiro que você veja este tópico: https://www.vivaolinux.com.br/topico/C-C++/GUI-em-GTK-e-codigo-puro-e-no-QT-e-so-desenhar-no-QTcreat....


... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)

3. Re: Biblioteca FLTK, Tentando entender! [RESOLVIDO]

Nick Us
Nick-us

(usa Slackware)

Enviado em 02/06/2020 - 22:54h

Apenas para acrescentar:
Dentre tantas bibliotecas existentes, mas conheço umas poucas, Ainda não quero usar QT.
Eu sei que a QT faz tudo o que conheço, não tem as falhas básicas da wxWidgets. O Meu problema com a QT é que nunca gostei dela, mas talvez um dia posso trocar esse sentimento, acho que talvez eu não confie nela, não pela capacidade dela, mas sim com medo de encontrar alguma coisa que me incomode muito. E estudar QT não é uma tarefa rápida.

Olhando esse POST do Paulo https://www.vivaolinux.com.br/topico/C-C++/Como-criar-um-SoftWare-com-CC
Foi uma pancada pra mim, embora eu também não tenha gostado da GTK, ainda assim tentaria uma GTK da vida antes da QT, mas ao ler o que o Paulo escreveu sobre GTK me assustou muito, o que retirou qualquer vontade minha de testar ou mesmo olhar mais a fundo a GTK, depois disso, se eu testar GTK não será a sério!

paulo1205 escreveu: NÃO RECOMENDO Gtk DE JEITO NENHUM.


O que levo em conta quando penso na QT é que o Paulo usa, ela realmente parece fazer tudo o que eu conheço de janelas. Mas não curti limitações de licença, não curti QML pois me lembra Java que não gosto, é tipo assim: Sei que ela faz o que preciso, mas não confio nela! E não me sinto bem com ferramentas que não posso controlar!

Eu escolhi a FLTK porque ela realmente me impressionou muito em tudo! Pequena, Veloz, Simples, Poder de Personalização Acima do Normal, AMEI ela tanto quanto o C, C++.

Embora me decepcionei muito mesmo com a wxWidgets por não fazer coisas básicas, Widgets enganosas que me pareceram um meio de fingir serem importantes, embora perdi sim um enorme tempo estudando ela, ainda assim me serviu como uma boa base para aprendizado, pois seu fórum é ótimo! E claro graças ao que aprendi com ela, ficou mais fácil para mim entender muitas outras coisas, inclusive entender FLTK fica mais fácil pra mim agora do que antes.

Fiquei com peninha da GTK depois do que o Paulo falou! Puxa! Mas um dia ainda vou entender isso.


4. Re: Biblioteca FLTK, Tentando entender! [RESOLVIDO]

Nick Us
Nick-us

(usa Slackware)

Enviado em 06/06/2020 - 07:00h

Resolvi, após aprender sobre Classes!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts