Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Caner Şahan
Caner Şahan
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
24 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: (string) dikey1.add(new gconf_app_yolu gconf’ gconfa kullanacagimiz metotu pencere public referans static string uygulama verileri window Mono ve .NET Caner Şahan
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Başlangıç
Kategori : Mono ve .NET
Yayınlanma Tarihi : 18.5.2005
Okunma Sayısı : 25285
Yorum Sayısı : 0     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 29.3.2024
Turhal Temizer
Mac OS/X Removing CUDA 29.3.2024
Burak Selim Şenyurt
Kurumsal Yazılımcının Oyun Geliştirme ile İmtihanı 29.3.2024
Burak Selim Şenyurt
Matematik ve Oyun Programlama - Missile Command - Final 29.3.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
GConf ile Mono Bölüm-2
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Bir önceki makalemizde (Gconf-1) Gconf’ un ne olduğundan detaylı bir şekilde bahsetmiştik. GConf’ un verileri sakalayan bir database olduğundan ve bu database’ den bize referans veri döndüğünden bahsettik. Şimdi ise GConf ile programlama dilinde nasıl işlem yapacağımızı işleyeceğiz. Tahmin edersiniz ki kullanacağımız dil C# ve platformumuz tabi ki mono olacak. GConf’ un  C# ile kullanılmak üzere hazırlanmış gtk-sharp isimli hazır bir kütüphanesi vardır. Bu kütüphaneyi mono sanal makinasını kurarken yüklediğinizden emin olunuz yoksa yazmış olduğumuz uygulama çalışmayacaktır. Eğer opsiyonel bir yükleme yapmadıysanız meraklanmayın çünkü gconf-sharp beraberinde geliyor. GConf’ u kullanarak öğrenmenin en iyi yol olacağı kanısındayım ve bu yüzden örnek bir form uygulamasındaki verileri Gconf’ a aktaran ve Gconf’ tan bu verileri geri alan bir uygulama geliştirdim. uygulama isimuzayı’ı  içinde iki tane sınıf yarattım. Bu sınıflardan pencere isimli sınıfımız pencere şablonunu (yani form arayüzünü) ve kontrollerin olaylarını içeriyor. Diğer sınıf ise uygulamamızın başlayacağı nokta olan sınıfımız. Oluşturacağımız arayüz aşadaki şekildeki gibi olacak ;



Şekil-1 Oluşturacağımız pencere

Bu pencereyi oluşturmak için gerekli kodları inceleyelim:

using System;
using Gtk;
using GConf;

namespace uygulama
{
   public class pencere:Window
    {
      Entry isim;
      Entry soyad;
      Entry evtel;
      Entry yas;
      Entry okul;
      Entry meslek;
      CheckButton evlimi;
      Entry mail;
      Entry serialno;
      Button quit;
      GConf.Client client;

      //GConf’a referans vereceğimiz değerlerin lokasyon hiyararşisi
      static string GCONF_APP_YOLU = "/apps/form";
      static string ISIM_KEY = GCONF_APP_YOLU + "/isim";
      static string SOYAD_KEY = GCONF_APP_YOLU + "/soyad";
      static string EVTEL_KEY = GCONF_APP_YOLU + "/evtel";
      static string YAS_KEY = GCONF_APP_YOLU + "/yas";
      static string OKUL_KEY = GCONF_APP_YOLU + "/okul";
      static string MESLEK_KEY = GCONF_APP_YOLU +"/meslek";
      static string EVLIMI_KEY = GCONF_APP_YOLU + "/evlimi";
      static string MAIL_KEY = GCONF_APP_YOLU + "/mail";
      static string SERIAL_NO_KEY = GCONF_APP_YOLU + "/serialno";
      //
      public pencere():base("GConf-Mono")
        {
            //nesne referansları yaratılıyor;
            quit = new Button("Quit");
            isim = new Entry("");
            soyad = new Entry("");
            evtel = new Entry("");
            yas = new Entry("");
            okul = new Entry("");
            meslek = new Entry("");
            evlimi = new CheckButton("Evli");
            mail = new Entry("");
            serialno = new Entry("");
            // nesnelerinin window üzerine yerleştirilmesi yapılıyor
            HBox yatay = new HBox(false,1);
            VBox dikey1 = new VBox(false,1);
            dikey1.Add(new Label("isim"));
            dikey1.Add(new Label("soyad"));
            dikey1.Add(new Label("evtel"));
            dikey1.Add(new Label("yas"));
            dikey1.Add(new Label("okul"));
            dikey1.Add(new Label("meslek"));
            dikey1.Add(new Label("Evlimi"));
            dikey1.Add(new Label("Mail"));
            dikey1.Add(new Label("Serial-No"));
            yatay.Add(dikey1);
            //
            VBox dikey2 = new VBox(false,1);
            dikey2.Add(isim);
            dikey2.Add(soyad);
            dikey2.Add(evtel);
            dikey2.Add(yas);
            dikey2.Add(okul);
            dikey2.Add(meslek);
            dikey2.Add(evlimi);
            dikey2.Add(mail);
            dikey2.Add(serialno);
            yatay.Add(dikey2);
            //
            VBox dikey3 = new VBox(false,1);
            dikey3.Add(quit);
            yatay.Add(dikey3);
            this.Add(yatay);
            //
            this.ShowAll();
            //
            quit.Clicked += new EventHandler(EXIT);
            //GConf ile bağlantıyı sağlıyoruz
            client = new GConf.Client();
            GconftanGelenUpdateVeriler();//eğer değişen keyler varsa bu değerleri update etmek için kullanılır
            //
            //Entryler değiştiği anda GConfa bildirilmelerini sağlayan eventler
            isim.Changed += on_isim;
            soyad.Changed += on_soyad;
            evtel.Changed += on_evtel;
            yas.Changed += on_yas;
            okul.Changed += on_okul;
            meslek.Changed += on_meslek;
            evlimi.Toggled += on_evlimi;
            mail.Changed += on_mail;
            serialno.Changed += on_serialno;
            //
}
Yukarıdaki kodları adım adım incelemeye başlarsak; ilk olarak kullanacağımız isimuzayları dikkatimiz çekiyor. Gtk isimuzayını kullandığımız kompanentler için ekliyoruz. Gconf isimuzayını ise Gconf ile çalışırken kullacağımız sınıfları belirtmek için ekliyoruz. Daha sonra ise pencere sınıfımızı Window temel sınıfından türeterek window sınıfının çeşitli fonksiyonlarını pencere sınıfımıza aktarıyoruz. static olarak belirtmiş olduğumuz yollar ise Gconf ile bağlantı yaparken kullanacağımız adreslerin yolları. Yatay ve dikey taşıyıcıların içine kompanentlerimizi koyarak pencere arayüzünü tamamlıyoruz. Gconf-sharp tasarlanırken her bir kullanıcı bir client gibi düşünülmüş ve kullanıcıların Gconf ile yapacakları işlemler için GConf.Client() isimli sınıf tasarlanmıştır. Daha sonra bizim yaratmış olduğumuz GconftanGelenUpdateVeriler() isimli metotu çağırıyoruz. Gconf ile yapacağımız tüm işlemleri bu metot içine dizayn ettim. Şimdi bu metodun kodlarını inceleyelim.

public void GconftanGelenUpdateVeriler()
{
      try
      {
         isim.Text = (string) client.Get(ISIM_KEY);
         soyad.Text = (string) client.Get(SOYAD_KEY);
         evtel.Text = (string) client.Get(EVTEL_KEY);
         yas.Text = (string) client.Get(YAS_KEY);
         okul.Text = (string) client.Get(OKUL_KEY);
         meslek.Text = (string) client.Get(MESLEK_KEY);
         evlimi.Active = (bool) client.Get(EVLIMI_KEY);
         mail.Text = (string) client.Get(MAIL_KEY);
         serialno.Text = (string) client.Get(SERIAL_NO_KEY);
     }
     catch(GConf.NoSuchKeyException e)
     {
         Console.WriteLine("Hata:Boyle bir key daha yaratılmamis");
     }
     catch
     {
         Console.WriteLine("Hata olustu");
     }
}
Daha önce yaratmış olduğumuz client nesnesinin Get metotu ile Gconf’ tan veriyi çekiyoruz ve bilinçli bir tür dönüşümüne sokuyoruz. try-catch mekanizması ise bu tarz IO işlemlerinde çok önemlidir. Çünkü belirttiğiniz yoldaki dosya olmayabilir ve buda bir hataya yol açar. Bunun için Gconf’ un ApplicationException sınıfından türetilmiş ve dizayn edilmiş hata nesnesi NoSuchKeyException’ ı kullanıyoruz. Son olarak penceremizi yaratırken eklemiş olduğumuz Entry ve CheckButton’ ların değiştiği andaki eventlerine bakarsak (isim(entry) ve evlimi(ckeckbutton) ikisine bakmamız yeterli)

void on_isim(object o,EventArgs args)
{
   client.Set(ISIM_KEY,isim.Text);
   Console.WriteLine("isim GConfa islendi.");
}void on_evlimi(object o,EventArgs args)
{
   client.Set(EVLIMI_KEY,evlimi.Active);
   Console.WriteLine("Bu deger boolean olarak Gconfa aktarildi");
}
client nesnesi bu sefer Set metotu ile belirtilen kompanentten veriyi alıyor ve belirlenen adrese ulaştırıyor. Daha sonrada konsol ekranına işlemin yapıldığını bildiren bir mesaj yolluyor. Birde makelenin başında diğer bir sınıftan bahsetmiştik. Bu sınıfta doğrusu anlatılacak bir şey yok diyebilirim sizlere. Bu sınıf sadece uygulamayı yükleyip,başlangıç adresini verip çalışmasını sağlıyor.

using System;
using Gtk;
using GConf;
namespace uygulama
{
   class anaclass
   {
     public static void Main()
     {
        Application.Init();
        new pencere();
        Application.Run();
     }
   }
}
Bunca kodu yazdıktan sonra derleme işlemi artık çocuk oyuncağı. Programı derlerken gconf-sharp ve gtk-sharp kütüphanelerini referans vermeyi sakın ama sakın unutmayınız!



Şekil - 2 Program kodlarını derleme işlemi



Şekil - 3 Uygulama sonuçları-1 (Büyük resimlerin için resmin üzerine tıklayınız!);



Şekil - 4 Uygulama sonuçları -2 (Büyük resimlerin için resmin üzerine tıklayınız!)

Kaynak kodlar için tıklayınız.

Kaynaklar:

www.go-mono.com
http://gnome.org

Makale:
GConf ile Mono Bölüm-2 Mono - Linux'ta .NET Caner Şahan
  • Yazılan Yorumlar
  • Yorum Yaz
Bu konu hakkında yayınlanan yorum bulunmamaktadır.
"Yorum Yaz" tabını kullanarak sizde yorumlarınızı yazabilirsiniz.
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor