Página 1 de 1

Conhece WxWidgets? Tá na hora de conhecer!

MensagemEnviado: 02 Fev 2009 10:50
por joao
Ola pessoal!

Olha, a alguns meses atrás eu pedi conselho sobre qual GUI seria boa para trabalhar em multiplataform. E eu acho que foi o xultz ou outra boa alma que me indicou o wxWidgets.

Eu só tenho a dizer que gostei muito da linguagem! Fácil, rápida e realmente funciona facilmente em Linux e Windows usando quase que o mesmo código!

Deixo um link de um livro que é gratuito e completo sobre o wxWidgets:
http://www.informit.com/content/images/ ... 6_book.pdf

E aconselho vocês a lerem sobre essa GUI que pode ajudar e muito vocês!!!

Qualquer dúvida, podem perguntar!

[]'s

MensagemEnviado: 02 Fev 2009 12:52
por msamsoniuk
eh compativel com gnome ou kde?

compativel que eu digo eh do ponto de vista de visual e integracao... quem usa gnome quer o ambiente inteiro com cara de gnome, quem usa kde quer o ambiente inteiro com cara de kde. nao eh raro existirem projetos paralelos e concorrentes de aplicacoes inteiras embaixo de kde e embaixo de gnome, de modo existir uma coerencia no ambiente como um todo.

se nao existe essa coerencia, seria o mesmo q rodar o office no OSX e ele ter interface de windows. ninguem iria querer usar pq eh uma interface porcaria e nao segue os padroes usados no resto do sistema operacional...seria absurdo, no mac usa-se command+c para copy, no windows usa-se control+c para a mesma coisa, daih o usuario se embanana todo... e coisas como drag-and-drop simplesmente param de funcionar!

chutando por alto, se nao for compativel eu diria q eh meio furada ter q poluir a maquina com bibliotecas para motif, xview e outros ambientes obsoletos soh por causa de uma ou outra aplicacao... eh a receita para o completo caos, perda de performance, perda de funcionalidade e a principal fonte de defeitos e reclamacoes contra o linux! :)

no windows, provavelmente a mesma coisa. pelo que tenho estudado, o melhor mesmo ainda eh usar os ambientes nativos de cada sistema operacional e isso acho que vale tambem para o windows. mistrurar bibliotecas opensource de linux no windows eh furada e soh tenho visto aplicacao porcaria com defeito quando fazem isso.

eh uma critica dura, mas parece que qualidade e flexibidade nao sao objetivos convergentes. para ter qualidade tem q ter versoes dedicadas para cada sistema, senao realmente fica ruim.

MensagemEnviado: 02 Fev 2009 13:07
por enigmabox
Outro ambiente multiplataforma foi o Kylix (Linux) da borland compativel com o c++Builder e Delphi do windows.
No inicio parecia que seria o melhor instrumento de transição do windows pra Linux, mas depois vendo como a coisa fica, não dá. Se for fazer programas simples que não trabalhem com I/O até que vai.
Usar uma interface para duas plataformas diferentes acho que não dá certo, sempre tem que implantar um pedaço de uma plataforma na outra.

MensagemEnviado: 02 Fev 2009 13:22
por joao
Ola Marcelo,

Respondendo diretamente a sua pergunta, copio aqui o que eu achei na página principal do projeto, que por sinal acabei esquecendo de colocar o post original:
http://www.wxwidgets.org/

wxWidgets lets developers create applications for Win32, Mac OS X, GTK+, X11, Motif, WinCE, and more using one codebase. It can be used from languages such as C++, Python, Perl, and C#/.NET. Unlike other cross-platform toolkits, wxWidgets applications look and feel native. This is because wxWidgets uses the platform's own native controls rather than emulating them. It's also extensive, free, open-source, and mature. Why not give it a try, like many others have?


Como escrito na terceira frase, pode-se ver que ele é feito exatamente para se parecer como um programa nativo. E mais, existe o wxUniversal no qual vc pode deixar o seu programa com a mesma cara em todos os sistemas.

Não puxando a sardinha para o lado deles, mas já puxando:
- O Kicad é baseado nele.
- O Audacity também é baseado nele
- O SymLab também é baseado nele.
Mais alguns exemplos:
http://www.wxwidgets.org/about/screensh.htm

Lá vc poderá ver que o ambiente para Linux e para Windows são diferentes, mas as funcionalidades são as mesmas.

Mais algumas historinhas sobre o wxWidgets:
- Era para se chamar wxWindows, mas a microsoft conseguiu proibir esse nome;
- Ele começou a ser criado em 1992; Mas em 1998 saiu a versão 2.0. Então eles estão trabalhando a mais de 10 anos com a mesma versão, mas agora já se encontra na 2.8. O que está muito estável e funcionando redondo. (Pelo menos para os meus projetos! :) );
- Existe um livro free que eu postei lá em cima com mais de 700 páginas explicando sobre tudo;
- Existe uma vasta gama de código com suporte para periféricos. Um que eu achei muito interessante e funcionou foi a WebCam. Funciona perfeitamente em Windows e Linux, sendo que é necessário usar 2 libraries diferentes(V4L e V4W), mas rodou com o mesmo código na camada mais alta(WxWidgets);
- O fórum funciona! (Experiência própria)
- Eles tem várias ferramentas para se fazer drag and drop, As mais comuns são o wxDev-Cpp(windows somente) e wxDesigner.
- Existe uma IDE que roda tanto Windows como Linux: CodeBlocks.

Problemas que tive com ele:
- Para imagens ele é lerdo, mas é que eu precisava usar outro tipo de objeto e ainda não utilizei. Então, de modo geral, tratamento de imagem é lerdo.(Pelo menos até eu usar um outro objeto que eles me sugeriram)

[]'s

MensagemEnviado: 02 Fev 2009 13:31
por joao
Ola Enigmabox!

Olha, apenas lendo o que vc escreveu, o wxWidgets é para executar exatamente igual toda a parte gráfica, respeitando é claro o estilo de cada sistema.
Mas com o wxUniversal, vc pode criar a sua própria tela e a mesma será identica em todos os sistemas. É para isso que eles criaram ela.

Quanto a I/O, isso sempre será diferente, eu concordo, mas olhando o exemplo da webcam, eu vi que uma gigantesca parte do código ficou exatamente igual em ambos os sistemas, mudando apenas a chamada da I/O. No caso da webcam, eu estava usando ainda duas bibliotecas com finalidades parecidas: Video for linux e video for windows, então os métodos eram iguais em ambas e foi apenas necessário mudar um parametro na compilação para compilar com uma ou com a outra.

Outra vantagem do wxWidgets é em relação a UNICODE. O suporte já está implementado e na maioria das vezes vc não faz nada! Porque eles tem uma string propria deles(wxString) que faz tudo para ti. mesmo quando vc tá declarando uma constante do tipo:
"isso é um texto!!!"
Vc apenas precisa fazer:
wxT("isso é um texto!!!");

E dai quem vai decidir se vc vai usar UNICODE ou não é na compilação do wxWidgets, mas o código será sempre o mesmo. Ou seja, passando UNICODE=1 ou UNICODE=0 na compilação da biblioteca, vc sempre usará:
wxT("isso é um texto!!!");

No fórum existe um monte de perguntas sobre como usar I/O e normalmente existem exemplos. Quem sabe você possa dar uma olhada lá e achar algo que precisa em específico.

[]'s

MensagemEnviado: 02 Fev 2009 14:15
por chipselect
alguém já consegiu instalar o wxSmith no Code:Blocks dentro do linux sem muito sofrimento, pra gerar código pra outra plataforma (será que é meu slackware...)? Pode até ser outra distro...

Estou querendo usar ele no Gumsitx, na distro OpemEmbedded, mas o wxWidgets pro Gumstix só tem o básico...

Bom, pra quem quiser um passo a passo do wxWidgets, tem esse ebook:
http://d.scribd.com/docs/1xh1gxcrf1mjhw57eyij.pdf

MensagemEnviado: 02 Fev 2009 14:26
por joao
Ola Chipselect!

Qual o problema que vc tem? Apenas vendo o wxSmith (que é um drag and drop tool, até onde eu entendi, certo?) ele gera o código e vc apenas compila e pronto.
:)

Claro que temos que levar em consideração as bilbiotecas necessárias, então, você poderia passar a linha de comando?

Você chegou a tentar compilar apenas uma simples aplicação usando o Shell? Só para ver se o wxwidgets está ok.

PS: O livro que vc indicou é o mesmo que eu passei. ;)

[]'s

MensagemEnviado: 02 Fev 2009 15:18
por enigmabox
Joao,

Parece interessante esta interface, vou dar uma estudada pra conhecer.
Bom.. A borland criadora do Kylix não dá mais suporte...Acho que abandonaram o projeto.
Bem lembrado , vi no Kicad, algo dizendo que usa o wxWidgets.

MensagemEnviado: 03 Fev 2009 12:01
por chipselect
pois é joão, eu quero o wxSmith pra "fazer telinha a lá windows..."

o code:blocks que instalei no slackware não tem essa opção, e a versão que instalei no windows tem (ambas versões são 8.02)...

estou procurando montar um ambiente de desenvolvimento, de preferência tipo um RAD, pra fazer software com o Linux embarcado, usando o Gumstix.

Já tenho o sqlite integrado com uma gui no código, utilizo GTK+ e gcc, e pra fazer tela eu uso o glade, mas o tal do glade é muito ruim pra fazer tela quando comparado ao wxSmith (não dá nem pra comparar com ferramentas como o eclipse + vep, netbeans, visual studio, borland developer studio...).

Da maneira que estou fazendo é muito pouco produtivo, lento mesmo pra fazer tela, principalmente porque a aplicação fica mudando as fontes e os campos da tela de lugar e tamanho, além de ter algumas threads e o software ser orientado a eventos...

MensagemEnviado: 03 Fev 2009 12:47
por msamsoniuk
eu já tinha visto o site joão, vi que tem um look-and-feel nativo no windows e OSX, mas ainda assim, eh soh uma casca que imita o ambiente nativo, ele nao tem as funcionalidades completas do ambiente.

mesmo no linux, imitar o visual do gnome ou kde nao eh o mesmo que ter o proprio rodando por baixo... uma hora a funcionalidade quebra, por exemplo, o cara entra no painel de controle, muda fonte e cores do ambiente e tudo muda. menos a aplicacao que usa uma imitacao visual daquele ambiente. mesma coisa no windows ou OSX e isso reflete como sendo uma aplicacao de baixa qualidade, sei lah, eu nao uso software q nao eh integrado com o ambiente, depois comeca dar um monte de problemas e o cara nao sabe pq, fica colocando a culpa no sistema operacional. no OSX as aplicacoes tem display PDF, conversao de texto para voz, etc... se vc usa outras bibliotecas, vc perde tudo.

se vc nao quer esquentar a cabeca, nem pensa duas vezes, esquece essas porcarias obsoletas e adota os tools padronizados de cada sistema. querer fugir disso eh querer inventar moda e sempre dah problema no final.

MensagemEnviado: 03 Fev 2009 13:07
por joao
Mas marcelo,

É exatamente isso que eles fazem. Se vc ver bem, vai ver que eles usam as chamadas de APIs nativas do ambiente. Ou seja, se vc mudar a cor do seu ambiente, ou, pelo menos no windows, mudar o estilo(voltar para o win98 style) ele irá acompanhar a mudança, pq ele usa API's do sistema e não emulação. (Trabalhei muito com o Allegro e sei como é ruim pacas tentar deixar num estilo bonitinho em cada um dos sistemas...)

Esse dai me impressionou logo de cara. Foi apenas instalar as libs necessárias e tudo que eu tinha feito no windows e rodou no linux(Claro, que não tinha implementado nada de I/O, apenas modo gráfico.)

Realmente eu acho ele uma boa solução para quem precisa trabalhar em vários ambientes...

Outra coisa que eu achei legal é que até a impressora vc irá usar o mesmo código. A camada do wxWidgets cuidará de ver o correto acesso...

Tente dar uma zoiada nos exemplos da bilbioteca e vc vai ver que ele é exatamente do jeito que vc deixou a sua máquina. Mude a cor/estilo/fonte e veja que irá mudar também....

[]'s

MensagemEnviado: 03 Fev 2009 13:17
por joao
Ola chipselect!

Não esqueci de vc não!

Olha, eu uso td apenas no editor normal. No caso eu apenas trabalho no windows e testo de vez em quando no Linux para garantir que está compatível.
Maaaaassss...

Eu achei este link que parece ser bem interessante:
http://forums.codeblocks.org/index.php?topic=9884.0

Lá eles ensinam como instalar no Ubuntu, mas eles estào compilando o fonte. Então vc pode usar a mesma idéia no slackware.
Aparentemente, vc tem que compilar o Code::Blocks com a opção para o wxSmith. Acho que ai é que está o seu problema.

[]'s

MensagemEnviado: 21 Fev 2009 11:35
por _blackmore_
Fala joao !!

A algum tempo vc me indicou este software ... ( http://asm51.eng.br/phpBB/viewtopic.php?t=6304 )achei bacana mas por falta de tempo não pude fuçar e aprender muito.
Já peguei o livro indicado neste tópico por vc, parece ser muito completo, mas só para não deixar de ser chato :lol: vc não tem alguma literatura em português que ensine como usar o software não?sou ainda um bocado lerdo no ingrêis ... e poxa ... vou demorar para caramba para entender muito do escrito no livro. :)
Agora para saber um pouco mais ... vc não teria aí alguma aplicação "simples" para que eu possa fuçar e entender algumas coisas nele? tipo ... entra com valores e ele retorna o valor convertido em outra unidade ... não quero nada sofsticado ... apenas entender algumas coisas ... não tenho pretenção de ser especialista .. apenas tentar entender alguma coisa.

abrax!