Vala + GTK + 3 ve Granite (değerleri dconf olarak kaydedin)

Vala ve GTK + 'da programlama, hepimiz Vala ve GTK + ile yazılmış bir uygulamanın pencere boyutu parametrelerinin ve diğerlerinin durumlarını kaydedebilmesini nasıl sağlayacağını merak ettik mi? Bunlar kullandığımız bu tipik durumlardandır şemalar Bu şemaları grafiksel olarak yöneten bu değerleri (bu iyi bilinen uygulama dconf editörü) kaydetmek için.

Şimdi size Granite kütüphanesinden Granite.Services.Settings sınıfını kullanarak bunu basit adımlarla ve karmaşıklık olmadan nasıl yapacağınızı göstereceğim.

Neye ihtiyacımız var?

Kodumuzu derlemek için öncelikle GTK +, Granite ve Vala kitaplıklarını kurmamız gerekiyor. Bunu Ubuntu / ElementaryOS'ta yapmak için şu komutu kullanıyoruz:

sudo apt-get install libgtk-3-dev libgranite-dev granite-demo valac

Ayrıca, Scratch Text Editor (ElementaryOS varsayılan), GEdit, Sublime Text + Plugins, vb. Gibi Vala / GTK + sözdizimini ve XML'yi destekleyen herhangi bir metin düzenleyicisine de ihtiyacımız olacak.

Kod

İşte Örnek dosyalar. Daha iyi anlamak için kodu PASTE içinde ve yorumlarla birlikte bırakıyorum:

ana.vala
öğretici.vala
ayarlar.vala
org.tutorial.gschema.xml

Açıklamalar

Şema dosyası, eğer XML olması gerekiyorsa veya gerekiyorsa ve ORG.APLICACION.GSCHEMA.XML olarak adlandırılmalıdır. Yani, hem ORG hem de GSCHEMA.XML, dconf'un onu bir şema olarak tanıması için orada olmalıdır. Ayrıca, bu diyagramlar rotaya kopyalanmalıdır:

/usr/share/glib-2.0/schemas/

ve DCONF'un bunları alması için derlenmeleri gerekir, bunun için şu komutu çalıştırıyoruz:

sudo glib-compile-schemas /usr/share/glib-2.0/schemas/

Derleme

Programımızı derlemek için bir terminalde aşağıdaki komutu çalıştırmalıyız:

valac --pkg gtk+-3.0 --pkg granite main.vala tutorial.vala settings.vala

Ve ikiliyi şu komutla çalıştırın:

./main

Sonuçlar

Uygulamamızın durumunu GLIB kullanarak GSCHEMA'da kaydetmek için en iyi yöntemlerden biridir. Her türlü soruyu cevaplamaktan memnuniyet duyarım.

İşte Ubuntu'mun bir ekran görüntüsü ve Örnek:

anlık eğitim


Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.

  1.   Raul P. dijo

    İyi makale, C ++ 'da birkaç GTK öğreticisi iyidir. İşler çok değişti, resmi GTK sitesi 2002'den kalma kitapları tavsiye ediyor, satın alma hatası yaptım.

    DevHelp herhangi bir kitaptan daha fazla yardımcı oluyor.

    1.    Raul P. dijo

      Üzgünüm C'yi kastetmiştim, C ++ değil. Kod bloklarını açtığımda her zaman "C ++ 'da bir proje" seçiyorum, ancak C ile programlıyorum.

  2.   tehdit dijo

    İyi bir öğretmen, bilmek istiyorum ve durumun böyle olmadığını biliyorum, ancak gerçekte bu yaklaşımı uygulayabilmek için kendime yeterince kafa vurdum, arka planı ve giriş ekranını kurumsal bir şekilde özelleştirmem gerekiyor kullanıcıların ekiplerinde çalıştığım yerin görüntüsü, Debian 7 Wheezy tabanlı Canaima adlı bir Venezuela dağıtımına sahipler, kullanıcılar LDAP aracılığıyla kimlik doğrulaması yapıyor ve birkaç kullanıcı aynı bilgisayarda çalışabiliyor, bu nedenle birkaç Duvar kağıdına sahip olmaları gereken oturumlarda, ekipler teknisyenlerin işini kolaylaştırmak için senaryo tarafından özelleştirilir ve ardından politikalar puppetmaster sunucusu tarafından enjekte edilir.

    Gsettings ile denedim, ancak sadece oturum açan kullanıcıyla çalışıyor, görünüşe göre bilgileri henüz elde edemediğim kullanıcı başına yerel bir veritabanına kaydediyor, tüm sistem için geçerli olan bazı yapılandırmalar arıyorum. tek bir kullanıcı.

    Ulusal tarihler ve başka herhangi bir nedenle görüntünün sürekli değiştiğini belirtmekte fayda var, bu nedenle bu sadece bir görüntü değil, kukla ustası tarafından her müşteriye yükleniyor.

    Benim durumuma böyle bir şey uygulanabilir mi hiçbir fikrim yok.
    Selamlar.