GtkD ile Görsel Programlama

Benzer belgeler
Glade. hitokiri. Eylül, 2012

T.C. istanbul ÜNiVERSiTESi ÖĞRENCi BiLGi SiSTEMi. ÖĞRETiM ELEMANI KULLANIM KILAVUZU

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

Teknikleri. Önsöz. iskender atasoy

Data Structures Lab Güz

BM-209 Nesne Yönelimli Programlama. Yrd. Doç. Dr. İbrahim Alper Doğru Gazi Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği Bölümü

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

Temel Bilgisayar kullanımı

MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 12: Grafik Kullanıcı Arayüzü (Graphical User Interface-GUI)

HSancak Nesne Tabanlı Programlama I Ders Notları

Android Ders Notları

Java da İstemci Tarafı Uygulamalar

BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta

if (ad == "Sabri") Console.WriteLine("Merhaba Sabri. Ne zamandır gözükmüyodun...");

Yine benzer şekilde hücreler içine yazılan yazıların renklerini değiştirebiliriz. Bunun için tüm satırı veya sütunu yine fareyle seçmek durumundayız.

C#(Sharp) Programlama Dili

Windows 10 için Java JDK 8 ve NetBeans IDE 8.2 Kurulumu Detaylı Anlatım

BİL BİLGİSAYAR PROGRAMLAMA (JAVA)

MICROSOFT OFFICE WORD 2010 ÖRNEK TEST SORULARI

Flash ile Etkileşimli Öğretim Materyali Hazırlama Semineri

Sunu Hazırlama Paket Programı (Microsoft Office PowerPoint 2003)

Nevşehir Hacı Bektaş Veli Üniversitesi Moodle Uzaktan Eğitim Sistemi Öğretim Elemanı Bilgilendirme Kılavuzu

SAB 103 TEMEL BİLGİSAYAR KULLANIMI

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

BEUN VPN Hizmeti. VPN Nedir?

Zaman Ayarlayıcı İşlemler

BİLİŞİM TEKNOLOJİLERİ DERSİ WORD 2007 SORULARI

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

ÖĞRENME FAALİYETİ 1 ÖĞRENME FAALİYETİ 1 1. FORMLAR

Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik.

Proje 1. Arayüz Tasarımı

JAVA PROGRAMLAMAYA GİRİŞ

Gerekli bağlantıları yapıp, ACS420 V3.03 programını çalıştırınız. Program açıldığında, LMS14 ün içindeki parametrelerin okunmasını bekleyiniz.

Nevşehir Hacı Bektaş Veli Üniversitesi. Moodle Uzaktan Eğitim Sistemi. Öğretim Elemanı Bilgilendirme Kılavuzu

Mantıksal İşlemler. 7.1 true, false, nil

EBA Dosya Uygulaması Kullanıcı Kılavuzu ( W eb)

Java da İşleçler, Ders #3 (4 Kasım 2009)

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

İçerik. Java da İşleçler, İşleçler. Aritmetik İşleçler - 1. Aritmetik İşleçler - 2. Geçen ders: Bu ders: BS-515 Nesneye Yönelik Programlama

Seri Numarası Takibi Destek Dökümanı

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Ecat 8. Hakbim Bilgi İşlem A.Ş. Versiyon

İş Akış Yönetimi LOGO Kasım 2014

ÖĞRENME FAALİYETİ 1 ÖĞRENME FAALİYETİ 1

Pygtk Kılavuzu. Sürüm 2.x. Fırat Özgül

Bağlı Dosya Oluşturma Uygulaması

İNTERNET TABANLI PROGRAMLAMA

MUĞLA SITKI KOÇMAN ÜNİVERSİTESİ MUWİS. Web İçerik Sistemi. Bilgi İşlem Daire Başkanlığı-WEB GRUBU

İdari Birimler Yönetim Paneli Kullanma Kılavuzu Bilgi İşlem Daire Başkanlığı Web Tasarım Ve Yazılım Birimi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

AÇILIŞ EKRANI. Açılış ekranı temelde üç pencereye ayrılır:

Lambda İfadeleri (Lambda Expressions)

Programlama Dillerinde Kullanılan Veri Tipleri

PALET TEYİT EKRANI EĞİTİM NOTU

2000 de Programlarla Çalışmalar

Genel görüntüsü yandaki gibi olması planalanan oyunun kodu e.py bağlantısından indirilebilir. Basitçe bir text ed

7 Temmuz Đlgili Versiyon/lar : ETA:SQL, ETA:V.8-SQL. Đlgili Modül/ler : Raporlar

SolidWorks Macro, SolidWorks API. Yusuf MANSUROĞLU Mühendislik Hizmetleri Müdür Yardımcısı

Okul Web Sitesi Yönetim Paneli Kullanımı

1-) Word 2007 nedir? A-) Hesap Programıdır B-) Tablo - Grafik Programıdır C-) Kelime İşlem Programıdır D-) İşletim Sistemidir

KELİME İŞLEMCİ MİCROSOFT OFFİCE WORD KULLANIMI

LİGHTKOD SETUP MAKER KULLANIMI 1- Giriş Programı yükledikten sonra Setup Maker programını açtığımızda aşağıdaki pencereyi görürüz. Burada 1.

Turquaz Windows kurulum dökümanı. ftp://ftp.mirror.ac.uk/sites/ftp.postgresql.org/binary/v7.3.1/windows/pgsql731wina1.exe

PYTHON PROGRAMLAMA DİLİ

PYTHON PROGRAMLAMA DİLİ

Microsoft Word 2010 ara yüzündeki bölümler aşağıda gösterilmiştir.

1. LabVIEW ile Programlama

Klavyeden Basit Giriş/Çıkış İşlemleri

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

SAVİOR OTOMASYON TEKNİK DESTEK BİRİMİ

OKUL HABER EKLEME MODÜLÜ TANITIM DOSYASI. Okul haberlerinizi ilçemiz web sitesinde yayınlayabilmek için aşağıdaki adımları uygulamanız gerekmektedir.

ARLAB ARaştırma LABoratuvar Projesi Kullanım Kılavuzu

C Programlama Dilininin Basit Yapıları

Komut Penceresi ile Çalışmaya Başlamak

1. Admin kullanıcı ile sisteme giriş yapınız. Ekranın sağ üstünde yer alan defter yaprakları ikonuna tıklayınız.

e-imzatr Kurulum Klavuzu

Bakım Yönetimi Logo Nisan 2016

Python Programlama Dili

3D Masa Üstü ve Pencere Efektleri

HSancak Nesne Tabanlı Programlama I Ders Notları

MEB E-Posta Hizmetleri ve Outlook Programı

Merkezi İçerik Yönetim Sistemi Yardım Dokümanı (V1)


İÇERİK 2 Java Kodlaması için Gerekli Programlar JRE, JDK kurulması ve Başlangıç Ayarları Java Kodlamayı Kolaylaştıran IDE ler Java Kod Yapısı İlk Java

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

SPARC v8 İŞLEMCİ SİMÜLASYONU

Kaynak Kodlardan Derleme. Turquaz Muhasebe. Versiyon 0.2. Hüseyin Ergün. 26 Mart 2005

SAÜ BİLGİSAYAR VE BİLİŞİM BİLİMLERİ FAKÜLTESİ ORTAK BİLGİSAYAR DERSLERİ KOORDİNATÖRLÜĞÜ WİNDOWS 7 BÖLÜM SORULARI

MİCROSOFT OFFİCE WORD 2010 ÖRNEK TEST SORULARI

MİCROSOFT OFFİCE WORD SORULARI

Microsoft Office Publisher 2016

1. Kurulum. Tam ekranda iken MENU tuşuna. Başlat sekmesine gelin ve sonra [ / ] basın ve menüye girin. [ / ]

Sunum İçeriği. Programlamaya Giriş

AdverTech Dijital Tabela Yönetim Yazılımı Kullanım Klavuzu

Operatörlerin Aşırı Yüklenmesi

Indeks. Ağ Bulucu ayarları 74 düğmesini 31 komutlar 74 Ağ Bulucu 74 Ağ düğmesini 31 AHOI kısayolları 169 alan dışı 83 araçları klavyeyle kullanma 26

Transkript:

GtkD ile Görsel Programlama Yazar: Mengü KAĞAN & Can Alpay ÇİFTÇİ www.tdsoftware.tr.cx Sıra GtkD'ye geldiğine göre D hakkında ciddi bir bilgiye sahipsiniz demektir. Eğer eksikleriniz varsa mutlaka D derslerini okuyun ve ardından bu derslere başlayın. İsterseniz önce GTK'nın ne olduğundan bahsedelim. GTK, C ile yazılmış, GNU LGPL 2.1 ile lisanslanmış platform bağımsız bir grafik kullanıcı arayüzüdür. Örneğin GNOME masaüstü GTK ile yazılmıştır. GTK C ile yazılmış olmasına rağmen, C++ başta olmak üzere, C#, Java, Python ve hatta PHP bağlayıcıları (binding) bulunmaktadır. GtkD de GTK'nın D bağlayıcısıdır ve GTK gibi GNU LGPL 2.1 lisansına sahiptir. GtkD ile çalışabilmeniz için aşağıdakilere ihtiyacımız var: DMD 2 gtkd 1.3.2 Bir programlama veya metin editörü (örneğin: geany, gedit) Tanıtım için zannediyorum bu kadarı yeter, bir sonraki derste gtkd ile merhaba dünya diyeceğiz. Hazırlanmayı ihmâl etmeyin. Merhaba GtkD Bu dersimizde gtkd ile pencere oluşturabilmek için gerekli modülleri öğreneceğiz. En basit pencere içi boş penceredir. İlk önce içi boş bir pencere nasıl oluşturulur onu öğreneceğiz. Sizce bir pencere oluşturmak için neler yapmak gerekir? Hızlıca düşünürsek: 1. Gtk işlevlerini kullanmadan önce bir işlev çağırmamız gerekiyorsa o işlevi çağırmalıyız. (Sizce gerek var mıdır :o) ) 2. Pencere oluştur demeliyiz. 3. Pencereyi göster demeliyiz. 4. Bu yaptıklarımızı çalıştır demeliyiz. Bunları sağlayan kod parçacığı aşağıda : auto pencere = new Window("deneme"); Örneğimizde neler yaptık bakalım: İlk olarak iki tane modülü programımıza dahil ettik. Bunlar gtk.window ve gtk.main. Sonra D'nin ana işlevi olan main işlevini tanımladık. Ama burada main işlevini tanımlarken string[] türünde bir argüman tanımladık. Burda argümanın hangi türden tanımlandığı önemlidir. Şimdi sıra tanımlanan argümanı kullanmaya geldi. Dersimizin ilk bölümlerinde pencereleri oluşturmadan önce; daha doğrusu gtk'nin işlevlerini kullanmadan önce başka bir işlev çağırmamız

gerektiğinden söz etmiştik. Bu işlevi her gtk uygulamasında çağırmamız gerekir. Şimdi bu işlev hangi modülde bulunur, adı nedir, parametre alır mı, alırsa hangi türden parametre alır gibi soruların yanıtlarını alacağız. Tanıyacağımız ilk işlev, Main.init. Bu işlev gtk.main modülünde bulunuyor. Parametre olarakta D uygulamasının ana işlevini tanımlarken kullandığımız argümanı kullanıyor. Ve parametre türü olarakta sadece string[] türü kabul ediyor. Kısaca: void Main.init (string[] args); Gtk işlevlerini kullanmak için gtk.main modülünde bulunan Main.init işlevini kullandıktan sonra sıra penceremizi oluşturmaya geldi. Pencereyi oluşturabilmek için ilk önce gtk.window modülündeki Window sınıfını kuruyoruz. Bunun için şu satırı yazmıştık : auto pencere = new Window("deneme"); Koddan anlaşıldığı üzere bu sınıfın kurucusu tanımlı ve parametre türü olarak string değer alıyor. Kurucudaki parametre, oluşturacağımız pencerenin başlığını tanımlar. Artık uygulamamızın sonuna doğru geldik. Bundan sonraki işlev yine gtk.window modülünde tanımlı. Daha önce pencere adı ile kurduğumuz sınıfın show işlevine erişiyoruz. Show sözcüğünün Türkçe anlamı görüntüle, göster demektir. Bizde oluşturduğumuz penceriyi göstermek için pencere.show; kodunu yazıyoruz. Ve sonunda bu gtk uygulamasını çalıştırmak için gtkd ile ilişkili olan son kod satırımızı yazıyoruz. Bu kod satırında gtk uygulamasını çalıştır anlamına gelen kodunu yazıyoruz. Bu kod parçası yine gtk.main modülünde bulunuyor. Peki Bu GtkD Kodlarını Nasıl Çalıştıracağız? Bu örneği merhaba.d adında çalışma alanınıza kaydettikten sonra şu şekilde derleyebilirsiniz: dmd merhaba.d -I/gtkD/yolu/src -L-ldl -L-L/gtkD/yolu/src -L-lgtkd Yukarıda dikkat etmeniz gereken kısım /gtkd/yolu kısmıdır ki onu gtkd'yi nereye kurduysanız, o yol (path) şeklinde değiştirmeniz gerekmektedir. Örneğin ben /home/mengu/projects/gtkd klasörü altında kurduğum için şu şekilde derledim: dmd merhaba.d -I~/projects/gtkD/src -L-ldl -L-L~/projects/gtkD/src -L-lgtkd merhaba.d dosyasını derledikten sonra da terminalde./merhaba yazarak pencerenizi görebilirsiniz: Pencere Kurma İşlemleri Daha önceki dersimizde başlığı olan boş bir pencere yapmasını öğrenmiştik. Bu dersimizde pencerede 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.

auto pencere = new Window("450 eninde ve 570 boyunda resize."); pencere.resize(450,570) ; // Pencere 450 piksel eninde // ve 570 boyundadır. Pencereyi Tam Ekran Yapmak maximize() Eğer pencerenin tam ekran olmasını istiyorsanız maximize() işlevini kullanabilirsiniz. auto pencere = new Window("maximize"); pencere.maximize(); // Pencereyi tam ekran yapar. Pencereyi Tam Ekrandan Çıkartmak unmaximize() Eğer pencerenin tam ekran kipinden çıkmasını istiyorsanız unmaximize() işlevini kullanabilirsiniz. auto pencere = new Window("unmaximize"); pencere.maximize(); // Pencereyi tam ekran yapar. pencere.unmaximize();/*pencereyi tam ekran kipinden çıkarır ve öntanımlı boyutuna getirir. */ 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ğinide sol üst köşeden başlayarak girilen değer kadar sağa(en), ve aşağıya(boy) taşır.

auto pencere = new Window("move"); pencere.move(450,570) ; // 450 piksel sağa ve 570 piksel // aşağıya taşır. 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. auto pencere = new Window("maximize"); pencere.setposition(gtkwindowposition.pos_center_always); // ekranın ortasında açılmasını sağlar 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 resimin yolunu yazarsınız. auto pencere = new Window("deneme"); pencere.seticonfromfile("/home/canalpay/den.png"); // Pencereye simge koymaya yarar.

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. auto pencere = new Window("Saydam Pencere Yapımı"); pencere.setopacity(0.9); //Pencerenin saydamlığı oldukça azdır. setsizerequest İle 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 bu kullanılması gerekecektir. auto pencere = new Window("setSizeRequest örneği"); pencere.setsizerequest(450, 450); Boyutlandırılamayan Pencereler setresizable(bool değer) Pencerenin 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.

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 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çinde 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çinde std.c.process ve gtk.widget modüllerini eklememiz gerekiyor. import gtk.widget; import std.c.process; 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); );