wiki-framework-sekme-menu-kernel

SEKME MENU KERNEL

Konu başlıkları

SEKME_MENU Kernel Nedir ?

Sekme Menu Kernel , Abstract Kernel sınıfından türetilmiş , farklı menuler oluşturulmak için abstract yapılmış bir sınıftır.Programcının üzerinden menü hazırlama işlemlerini alıp halleder.Programcıya sadece alt menüsü olmayan bir seçenek seçildiğinde ne yapılacağını kodlamak kalır.Böylece programcının menü oluşturma , ekrandaki yerini ayarlama gibi işlemleri düşünmeyerek üzerindeki iş yükünü azaltmış olur ve programcıya yapması gerekene yoğunlaşmak kalır.

Sekme Menu Kernel Sınıfı

Bu sınıf abstract bir sınıftır.Yapacağımız programlar için ana menü ve alt menüler hazırlayan bir kernel'dır.Çalıştığımız sekmeleri kapatmadan sekme menü kernel vasıtasıyla ana menüye dönerek farklı işlemlere geçiş yapmamızıda sağlar.

  • Örnek olarak bir menü kernel hazırlayalım.Kernel'ımız içerisinde 5 tane seçenek olan bir menü oluştursun.Ve her seçeneğe tıklandığında ekranda tıklanan seçeneği bilgi mesajı şeklinde gösterelim.Bu bilgi mesajları yerine her seçenek için tıklanınca farklı işlemler yapılabilir.Sınıfı bu örnek üzerinden inceleyelim..
  • Seçeneklerimiz için tanımladığımız enumaration.. Bu MENU_STRUCT ve SHOW_MENU_ITEM fonksiyonu için gereklidir.. :
enum {
       TEST_MENU_SECENEK1       =  100,
       TEST_MENU_SECENEK2       =  200,
       TEST_MENU_SECENEK3       =  300,
       TEST_MENU_SECENEK4       =  400,
       TEST_MENU_SECENEK5       =  500
};
  • Menünün her seçenği için bir MENU_STRUCT nesnesi oluşturuyoruz.Bunun için global bir fonksiyon yazıp , bu fonksiyonun içerisinde bu struct nesnelerini bir dizi içinde oluşturup return ediyoruz.Bu struct nesnesi , her menü seçeneğinin , görüntülenmesini istediğimiz adı( Sayı Toplama , Seçim 1 , … gibi ) , klavye kısayolu , başlık olup olmadığı ,.. gibi bilgilerini içerir.
MENU_STRUCT *TEST_GET_MENU_STRUCT_GLOBAL()
{
   static struct MENU_STRUCT TEST_MENU_STRUCT[] = {
           { TEST_MENU_SECENEK1            , QObject::tr ( "Seçim 1" )     , "",  ""   , "",  false,  1, 0 },
           { TEST_MENU_SECENEK2            , QObject::tr ( "Seçim 2" )     , "",  ""   , "",  false,  1, 0 },
           { TEST_MENU_SECENEK3            , QObject::tr ( "Seçim 3 " )     , "",  ""   , "",  false,  1, 0 },
           { TEST_MENU_SECENEK4            , QObject::tr ( "Seçim 4 " )     , "",  ""   , "",  false,  1, 0 },
           { TEST_MENU_SECENEK5            , QObject::tr ( "Seçim 5 " )     , "",  ""   , "",  false,  1, 0 },
           { MENU_END                      , ""                                   , "",  ""   , "",  false, 1, 0 }
   };
   return TEST_MENU_STRUCT;
}
  • Menü oluşturulurken , kernel bu akış şemasını izler..

MENU_KERNEL_ACILIS_AKISSEMASI

Zorunlu Fonksiyonlar

GET_MENU_STRUCT()

Bu fonksiyon , program çalıştırıldığında kernel tarafından çağırılır.

Bu fonksiyonda , menü bilgilerimizi oluşturan global fonksiyonumuzu çağırarak , global fonksiyonumuzun return değerini return ederiz.

  • Örneğimizde global fonksiyonumuzu çağırarak , menümüzün seçenekleri için struct dizimi oluşturuyor ve bu fonksiyondan return ediyoruz.
MENU_STRUCT *   TEST_MENU_KERNEL::GET_MENU_STRUCT( int parent_enum_id )
{
   switch( parent_enum_id )
   {
       case MENU_ROOT :
           return TEST_GET_MENU_STRUCT_GLOBAL();
       case MENU_END :
           MSG_INFO("MENU_END",this);
           return NULL ;
       case MENU_SEPERATOR :
           MSG_INFO("MENU_SEPERATOR",this);
           return NULL ;
       default :
           MSG_INFO("DEFAULT",this);
           return NULL ;
   }
}
PREPARE_PROGRAM_FOR_USER()

Bu fonksiyon , menü seçenekleri oluşturulduktan sonra kernel tarafından çağrılır.

Bu fonksiyonda , oluşturduğumuz seçeneklerimizin ana menü ekranında görüntülenmesi sağlanır.Ayrıca giriş yapan kullanıcının yetkilerine göre menü bu fonksiyonda düzenlenir.

  • Burda kullanıcı yetkilerini ayarla fonksiyonunu çağırdık.Burada oluşturduğumuz seçeneklere göre ve kullanıcı yetkilerine göre menü hazırlanır.
void TEST_MENU_KERNEL::PREPARE_PROGRAM_FOR_USER()
{
   KULLANICI_YETKILERINI_AYARLA();
}
  • Burda kullanıcı yetkilerine menü ekranını ayarladık.Ekranda gösterilmesi istenen seçenekleri , hazır fonksiyonlar kullanılarak ekranda gösterdik.
void  TEST_MENU_KERNEL::KULLANICI_YETKILERINI_AYARLA()
{
   SHOW_MENU_ITEM(TEST_MENU_SECENEK1);
   SHOW_MENU_ITEM(TEST_MENU_SECENEK2);
   SHOW_MENU_ITEM(TEST_MENU_SECENEK3);
   SHOW_MENU_ITEM(TEST_MENU_SECENEK4);
   SHOW_MENU_ITEM(TEST_MENU_SECENEK5);
}
  • Bu fonksiyondan sonra seçeneklerimiz yüklenerek menümüz oluşturulur. Örneğimizi çalıştırarak menümüze bakalım.. :
MENU_PENCERESI
MENU_ITEM_CLICKED()

Bu fonksiyonda , oluşturduğumuz menüdeki seçeneklerden alt menüsü olmayan tıklandığında çağırılır.Burada programcı alt memüsü olmayan bir seçenek tıklandığında yapılacak işi yapmalıdır.Mesela Döviz Kurları tıklandığında kur bilgilerinin gösterilmesi gibi.

  • Bu fonksiyonda , örneğimize göre seçeneklerimiz tıklandığında , tıklanan seçeneğin bilgisini ekranda mesaj olarak gösterelim.. :
void  TEST_MENU_KERNEL::MENU_ITEM_CLICKED( int parent_item_enum , int menu_item_enum)
{
   switch( parent_item_enum )
   {
      case MENU_ROOT  :
          switch( menu_item_enum )
          {
               case TEST_MENU_SECENEK1 :
                   MSG_INFO("1.Seçeneği seçtiniz..",this);
                   break ;
               case TEST_MENU_SECENEK2 :
                   MSG_INFO("2.Seçeneği seçtiniz..",this);
                   break ;
               case TEST_MENU_SECENEK3 :
                   MSG_INFO("3.Seçeneği seçtiniz..",this);
                   break;
               case TEST_MENU_SECENEK4 :
                   MSG_INFO("4.Seçeneği seçtiniz..",this);
                   break ;
               case TEST_MENU_SECENEK5 :
                   MSG_INFO("5.Seçeneği seçtiniz..",this);
                   break ;
          }
          break ;
   }
}
  • Örneğimizi çalıştırarak fonksiyonumuzu test edelim.. :
MENU_SECENEKLERI_SECME_1
                           
MENU_SECENEKLERI_SECME_2
  • Menu üzerinde bir seçenek tıklandığında , kernel bu akışı izlecektir..

MENU_SECENEKLERI_SECME_AKISSEMASI

Hazır Fonksiyonlar

Bu fonksiyonlar , kernelın çalışması için yazılmış menü ayarlarını yapmaya yarayan fonksiyonlardır.Bazıları kernel tarafından otomatik olarak çağırılırken , bazılarını kendi oluşturduğumuz kernel'ın fonksiyonlarında çağırarak ayarlamalarımızı yapabiliriz.Bunlardan önemli olanlara göz atalım..

SHOW_MENU_ITEM()

Bu fonksiyon , gösterilmesi istenen menu seçeneklerini gösterir.

HIDE_MENU_ITEM()

Bu fonksiyon , gösterilmemesi istenen menu seçeneklerini gizler.

HIDE_ALL()

Bu fonksiyon , menü ekranına yerleştiren her şeyi gizler.

REGISTER_WIDGET()

Bu fonksiyon , menülerin gösterileceği ekranı ayarlar.

REFRESH_MENU_KERNEL()

Bu fonksiyon ekrandaki herşeyi yeniler.

SHOW_REKLAM()

Bu fonksiyon , programda reklam alanın görüntülenmesini sağlar. show fonksiyonundan sonra kullanılamalıdır.

START_MENU_KERNEL()

Menü Kernel'ı başlatır.

MENÜ KERNEL Tasariminda Dikkat Edilmesi Gereken Kurallar

  • Menü Kernel fonksiyonlarının çağrılma sırası dikkate alınarak fonksiyonlar kodlanmalı.
  • İçerisinde menü seçeneklerimizi belirlediğimiz menü struct nesnesi oluşturacak ve return edecek bir fonksiyon yazmalıyız.Bu fonksiyonu GET_MENU_STRUCT() fonksiyonunda çağırmalıyız.
  • Menü seçeneklerimiz için bir enum oluşturmalı ve enumlara göre fonksiyonlarımızı oluşturmalıyız.
  • Programcı menünün hazırlanmasıyla uğraşmayacak şekilde sadece seçim yapıldığında yapılacak iş bırakılarak hazırlanmalıdır.