sábado, 14 de abril de 2007

Ajuda com Interface Gráfica

Estou reescrevendo a Interface do Editor Musical para que ela rode nas novas versões do Sugar como atividade, o que não acontecia antes.
Já que estava com a mão na massa, resolvi melhorar o código. O problema é que não consigo melhorar a grade de composição.

Qual o meu problema?

Preciso criar dentro de um gtk.Viewport a imagem de uma grade, sendo que esta grade deve ter a possibilidade de aumentar o número de colunas. Também precisa ser um método que economiza memória, pois o número de colunas pode passar fácil de 200.

Bom, o que consegui por enquanto:

Duas idéias:

1. Criar uma tabela e um eventbox colorido. A tabela teria cor na borda, mostrando bem as colunas e as linhas. O problema é que não consigo colorir a borda da tabela. Esta é a melhor solução. Se alguém souber colorir as bordas da tabela, por favor me diga como!

2. Pegar um image buffer, tipo o gtk.gdk.pixbuf e colocar nele a imagem de uma coluna e duplicar esta imagem várias vezes pela grade. Eu ainda não fui muito longe com esta idéia, então não tenho certeza se irá funcionar.

Sugestões, Dicas, Soluções. Se alguém puder ajudar, agradeço muito!


####### UPDATE DO POST ########
Acho que o Cairo vai salvar minha vida. Ainda hoje devo postar o que consegui a respeito da interface gráfica.


###### UPDATE DO POST #########

################ A GRADE FUNCIONOU #################################
Bom, depois de pensar e procurar bastante na internet, vi que é possível criar widgets com cairogtk. Mais tarde vou postar uma pequena explicação sobre como fazer isto, comentando alguns problemas que eu tive e algumas dicas-chave.

A solução do problema então foi criar um widget Grid.

Enfim, coloquei o código do que fiz da grade em:
http://www.4shared.com/file/14164281/1e3b795a/musical.html

Esta foi a melhor grade que consegui fazer e é construída muito mais rápida do que as anteriores. É uma pena que apesar de ser construída rapidamente no XO, o scroll não fica muito bom. Mas isto vou pensar mais na fase final de desenvolvimento.

O código não roda direto no XO, é necessário fazer algumas alterações. Se quiserem testar no laptop, eu envio o código final também.

Nenhum comentário: