GtkD ile Görsel Programlama
Mengü Kağan ve Can Alpay Çiftçi



İngilizce Kaynaklar


Diğer




Pencere Kurma İşlemleri

Daha önceki dersimizde başlığı olan boş bir pencere yapmasını öğrenmiştik. Bu dersimizde pencere kurma ile ilgili işlemler yapacağız.

Anlatılacak bütün işlevler gtk.Window modülünde tanımlı olan Window sınıfının üye işlevleridir.

Pencere Boyutunu Ayarlamak resize(int en, int boy)

gtkD ile oluşturulan pencerenin öntanımlı boyutu 200x200 piksel boyutundadır. Eğer öntanımlı piksel boyutunu değiştirmek isterseniz, resize işlevini kullanabilirsiniz. resize iki tane int türünde parametre alır. Bunlar sırasıyla en ve boydur.

Örnek :

import gtk.Window;
import gtk.Main;

int main(string[] args)
{
    Main.init(args);
    auto pencere =
              new Window("450 eninde ve 570 boyunda resize.");
    pencere.resize(450,570) ; // Pencere 450 piksel eninde
                              // ve 570 boyundadır.
    pencere.show();
    Main.run;
    return 0;
}
Pencereyi Tam Ekran Yapmak maximize()

Eğer pencerenin tam ekran olmasını istiyorsanız maximize() işlevini kullanabilirsiniz.

Örnek :

import gtk.Window;
import gtk.Main;

int main(string[] args)
{
    Main.init(args);
    auto pencere = new Window("maximize");
    pencere.maximize(); // Pencereyi tam ekran yapar.
    pencere.show();
    Main.run;

    return 0;
}
Pencereyi Tam Ekrandan Çıkartmak unmaximize()

Eğer pencerenin tam ekran kipinden çıkmasını istiyorsanız unmaximize() işlevini kullanabilirsiniz.

Örnek :

import gtk.Window;
import gtk.Main;

int main(string[] args)
{
    Main.init(args);
    auto pencere = new Window("unmaximize");
    pencere.maximize(); // Pencereyi tam ekran yapar.
    pencere.unmaximize();/*Pencereyi tam ekran kipinden çıkarır
                           ve öntanımlı boyutuna getirir. */
    pencere.show();
    Main.run;
    return 0;
}
Pencereyi Ekranda Konumlandırmak move(int sağa, int aşağıya)

Eğer pencerenin ekranda konumunu ayarlamak isterseniz, move işlevini kullanabilirsiniz. move işlevi 2 parametre alır, parametre türü olarak int değeri alır ve birimi pikseldir. Ekranın nereye yerleşeceğini de sol üst köşeden başlayarak girilen değer kadar sağa(en), ve aşağıya(boy) taşır.

Örnek :

import gtk.Window;
import gtk.Main;

int main(string[] args)
{
    Main.init(args);
    auto pencere = new Window("move");
    pencere.move(450,570) ; // 450 piksel sağa ve 570 piksel
                            // aşağıya taşır.
    pencere.show();
    Main.run;
    return 0;
}
Pencereyi Piksel Değeri Girmeden Konumlandırmak setPosition(GtkWindowPosition nereye)

Eğer pencerenin konumunu piksel olarak değer vermeden örneğin ortala diyerek belirtmek istersek setPosition() işlevini kullanabiliriz.

setPosition() işlevi parametre olarak şu değerleri alır:

GtkWindowPosition.POS_NONE: Pencere konumu üzerinde herhangi bir değişiklik yapılmayacağını belirtir.

GtkWindowPosition.POS_CENTER: Pencereyi ekranın ortasına yerleştirir.

GtkWindowPosition.POS_MOUSE: Pencere, farenin o anda bulunduğu konumda açılır.

GtkWindowPosition.POS_CENTER_ALWAYS: Pencerenin boyutu değişse de, pencereyi hep ekranın ortasında tutar.

GtkWindowPosition.POS_CENTER_ON_PARENT: Eğer ikinci bir pencere varsa bu pencerenin ana pencereyi ortalamasını sağlar.

Örnek :

import gtk.Window;
import gtk.Main;

int main(string[] args)
{
    Main.init(args);
    auto pencere = new Window("maximize");
    pencere.setPosition(GtkWindowPosition.POS_CENTER_ALWAYS); 
    // ekranın ortasında açılmasını sağlar
    pencere.show();
    Main.run;
    return 0;
}
Pencereye Simge Eklemek setIconFromFile

Eğer pencereye simge(icon) eklemek isterseniz setIconFromFile işlevini kullanabilirsiniz. int türünde değer döndürür ve string türünde parametre alır. Parametre olarak ekleyeceğiniz resmin yolunu yazarsınız.

Örnek :

import gtk.Window;
import gtk.Main;

int main(string[] args)
{
    Main.init(args);
    auto pencere = new Window("deneme");
    pencere.setIconFromFile("/home/canalpay/den.png"); 
    // Pencereye simge koymaya yarar.
    pencere.show();
    Main.run;
    return 0;
}
Pencereyi Saydamlaştırmak setOpacity(double değer)

Pencereyi saydamlaştırmak için setOpacity işlevi kullanılır. 0 ile 1 arasındaki double değerler alır. Değer 1'e yaklaştıkça saydamlığı azalır.

Örnek :

import gtk.Window;
import gtk.Main;

int main(string[] args)
{
    Main.init(args);
    auto pencere = new Window("Saydam Pencere Yapımı");
    pencere.setOpacity(0.9); //Pencerenin saydamlığı oldukça azdır.
    pencere.show();
    Main.run;
    return 0;
}
Pencere Boyutlandırma setSizeRequest(int en, int boy)

Kullanımı resize() ile aynıdır. Tek farkı fare imleci ile pencerenin boyutu büyütülebilir ama öntanımlı boyuttan daha küçük yapılamaz.

Ayrıca bir sonraki işlev için resize yerine bunun kullanılması gerekecektir.

import gtk.Window;
import gtk.Main;

int main(string[] args)
{
    Main.init(args);
    auto pencere = new Window("setSizeRequest örneği");
    pencere.setSizeRequest(450, 450);
    pencere.show();
    Main.run;
    return 0;
}
Boyutlandırılamayan Pencereler setResizable(bool değer)

Pencere boyutlandırılabilsin mi yoksa boyutlandırılamasın mı diye ayarlamak için setResizable() işlevi kullanılır. "Resizable" sözcük anlamı "tekrar boyutlandırılabilir"dir. Parametre olarak bool değer alır. Eğer parametre olarak false değeri girilirse boyutlandırılamaz. Eğer true değeri girilirse boyutlandırılabilir.

UYARI:  setResizable işlevini doğru kullanabilmek için boyutlandırmayı setSizeRequest işlevi ile yapmak zorundasınız.

Örnek :

import gtk.Window;
import gtk.Main;

int main(string[] args)
{
    Main.init(args);
    auto pencere = new Window("Boyutlandırılamayan Pencere");
    pencere.setSizeRequest(450, 450);
    pencere.setResizable(false); 
    //false değeri girerek boyutlandırılamayacağını belirtmiş olduk
    pencere.show();
    Main.run;
    return 0;
}
X Düğmesine Kapama Görevi Verme

Eğer daha önceki örnekleri konsol üzerinde çalıştırdıysanız X düğmesine bastığınızda hala programın çalışmaya devam ettiğini görmüşsünüzdür. Programdan çıkmak için de Ctrl + C tuşuna basmış olmalısınız. Ama biz X düğmesine bastığımızda programın çıkmasını istiyoruz.

X düğmesine bastığımızda çıkmamız için şu kod parçacığını eklememiz gerekiyor.

    pencere.addOnHide( delegate void(Widget aux){ exit(0); });

Bu kod parçacığının çalışması için de std.c.process ve gtk.Widget modüllerini eklememiz gerekiyor.

Örnek :

import gtk.Window;
import gtk.Main;
import gtk.Widget;
import std.c.process;

int main(string[] args)
{
    Main.init(args);
    auto pencere = new Window
    ("[X] Düğmesine Bas ve Program Sonlandırılsın!");
    pencere.setSizeRequest(450, 450);
    pencere.setResizable(false);
    pencere.addOnHide( delegate void(Widget aux){ exit(0); });

    pencere.show();
    Main.run;
    return 0;
}