Criar  Editar  FrontPage  Índices  Buscar  Alterações  History  RSS  Back  Login

tut-gconf Diff - Ruby-GNOME2 Project Website

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

= Tutorial de Ruby/GConf2
GConf é um mecanismo de armazenamento de dados de configuração. É uma das maneiras mais fáceis de armazenar dados de configuração. E suas funcionalidades são tão legais e elegantes.
Se você está pensando em adicionar funcionalidade de personalização a sua aplicação, dê uma olhada nele !

Veja ((<a Introdução a biblioteca GConf|URL:http://developer.gnome.org/feature/archive/gconf/gconf.html>)). É uma boa introdução a GConf.

== Primeiro Passo
Este é um exemplo fácil mas completo.

require 'gconf2'
client = GConf::Client.new

#Lê dados
p client["/apps/hoge/stage"]
p client["/apps/hoge/name"]

#Escreve dados
client["/apps/hoge/stage"] = 1
client["/apps/hoge/name"] = ARGV[0]

Salve esse exemplo como "test.rb" e o execute duas vezes.

$ruby test.rb "hoge"
$ruby test.rb "fuga"

Primeiramente, ele retorna valores nil porque nenhum dado estava armazenado.

Da segunda vez, ele retorna 1 e "hoge".

(('#')) Se você executá-lo mais uma vez, você obterá 1 e "fuga".

Isso é tudo!
Você não precisa fazer nada mais. Você pode serializar os dados e ler/escrever dados a qualquer hora!

=== Onde os dados são armazenados ?
Os dados são armazenados pelo gconfd, que é um servidor ("daemon") por usuário. E eles são salvos para $HOME/.gconf/apps/hoge/%gconf.xml assincronamente. Nesse caso, ambos os "/apps/hoge/stage" e "/apps/hoge/name" são chaves. E os valores são String, Numeric, true/false.

== Notificação de Alterações
GConf::Client usa o sistema de sinal de GTK. Em vez de usar a função ("API") "custom" de "callback" da GConf para notificação, você pode simplesmente conectar a um sinal "value_changed".
Tente seguir o exemplo em dois terminais e executar cada um em um terminal.

require 'gconf2'

client = GConf::Client.new
client.add_dir("/apps/hoge")
client.notify_add("/apps/hoge/name") do |client, entry|
   p entry.value
end

Gtk.main

== Log de Alterações
:2003-09-11 ((<lone-star>))
Pequenos consertos de linguagem.
:2003-09-11 ((<Masao>))
Traduzido para Inglês.

:2003-06-19 ((<Masao>))
Versão Inicial(Japanese)

Autor da Tradução para Português: ((<João Pedrosa|jpedrosa>))