Vamos criar aqui um simples editor de configuração dos temas do gtk. Sim, o gtk possui diversos temas, copie o código abaixo
e execute, escolha um novo tema e abra o prismacod para ver o resultado.
Para mudar o tema precisamos simplesmente escrever em um arquivo chamado gtkrc dentro da pasta etcgtk-2.0
Segue o código, todo comentado:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 |
//Alterando o tema do gtk inclua'igbr' //importando as funções gráficas dir = inclua'igdir'; temadir = string.troque ( prismadir , 'bin' , 'share\\themes' ); imprima(temadir); tema = dir.liste_somente_pastas( temadir ); //listando os diretorios cujos nomes é o comando de mudar o tema //o arquivo que é reponsavel por mudar o tema é C:PrismaBRetcgtk-2.0gtkrc //sem extensão mesmo só gtkrc //alterando o conteúdo dele podemos mudar o tema do gtk conf_tema_dir = string.troque ( prismadir , "bin" , 'etc\\gtk-2.0\\' ) ; //ainda nao entendi por que depois da bin tem trẽs barras, mas vou consertar futuramente. conf_tema_dir = conf_tema_dir .. 'gtkrc'; imprima( conf_tema_dir ); arq = es.abra(conf_tema_dir , 'leitura' ); tema_definido = arq:leia('*t' ); //lê tudo arq:feche() ; //fechando o arquivo. //note que para ler e fechar precisamos usar os dois pontos, ok //o conteúdo será algo como: gtk-theme-name = "MS-Windows" //temos que processar para extrair somente o que esta entre aspas, //usaremos o string.sub percorrendo todos os caracteres aspa_inicial = 0; aspa_final = 0; para i = 1 , #tema_definido inicio //a funcao string.sub extrai uma sub string de outra maior //sua sintaxe é : string.sub ( string_maior , pos_x , pos_y ); //onde pos_x e pos_y é o número que indica o inicio e o fim da substring dentro //da maior: local c = string.sub ( tema_definido , i , i ); se c == '"' entao //quando chega na aspa ele testa outra condição: se aspa_inicial == 0 entao //se aspa_inicial ainda é zero entao é a primeira aspa. aspa_inicial = i senao //senao for zero, é porque já tem outro valor entao é a vez do aspa_final aspa_final = i fim fim fim //ja sabemos a posicao das duas aspas, basta usar outra vez string.sub //mas com a posical que está entre as aspas //para isso somo 1 na primeira aspa e diminuo 1 da ultima aspa //e aí tenho a posição entre elas, veja: Texto_definido = string.sub( tema_definido , aspa_inicial + 1 , aspa_final - 1 ) ; //criando a janela: janela = ig.janela( 'Alterar Tema Gtk' ); ig.conecte( janela , 'destroy' , 'ig.saia( )' ); //ig.destruido = 'destroy', use qual preferir caixav = ig.caixavertical (falso , 2 ); //criando uma caixa vertical para organizar verticalmente os componentes ig.ad( janela , caixav); //colocando a caixa vertical na janela //criando o combo combo box Texto_padrao = 'padrao'; combo = ig.caixa_combo(Texto_definido ); ig.caixa_combo_anexe_texto( combo , Texto_padrao ); para i = 1 , #tema inicio se tema[i] <> '.' e tema[i] <> '..' entao //deixando de fora o ponto e os dois pontos ig.caixa_combo_anexe_texto ( combo , tema[i] ); fim fim ig.caixa_ad( caixav , combo , falso , falso , 2 ); //colocando combo na caixa vertical ig.caixa_ad ( caixav , ig.rotulo 'Escolha um tema do combo e já estará definido' , falso , falso , 2 ); funcao mude_tema ( combo ) local selecionado = ig.caixa_combo_obt_texto_ativo ( combo ) ; //obtendo o texto atual do combo se selecionado == 'padrao' entao selecionado = 'MS-Windows' fim //garantindo que o tema windows seja o padrao //bom, a linha deve ser assim : gtk-theme-name = "nometema" //entao vamos montar essa linha: local grava_selecionado = "gtk-theme-name = " .. """ .. selecionado .. """ //vamos gravar no arquivo agora: local arq = es.abra( conf_tema_dir , 'escrita' ) ; //abrindo arquivo em modo escita arq:escreva ( grava_selecionado ); arq:feche(); imprima( 'mudado: ' .. selecionado ); fim ig.conecte( combo , ig.modificado , 'mude_tema(%s)' ); //conectando a funcao ao combo //com o evento ig.modificado ("changed"); ig.componente_mostre_todos( janela ); ig.fimprograma( ); |
Para voltar ao tema padrão selecione MS-Windows ou padrao na primeira linha.
Falou pessoal,qualquer dúvida deixe um comentário ou abra um tópico no fórum Prisma.