Glade. hitokiri. Eylül, 2012

Benzer belgeler
GtkD ile Görsel Programlama

Teknikleri. Önsöz. iskender atasoy

Python GELECEK. Barış Metin Linux Sistemleri. Python Programlama Dili

Android Ders Notları

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6

in d ekil Sayı 45 EYLÜL Farklı Bir Metin Düzenleyici: VİM Linux üzerinde kullanabileceğimiz birçok metin Özgür Yazılım Tehdidi 30

Linux Grafiksel Arayüz Kütüphaneleri

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

Proje 1. Arayüz Tasarımı

Burak Kıymaz JAVA FX

Bolum 9. Konu Başlıkları

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

ile Python gibi kod yazma

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

PyQt ile İş Uygulaması Geliştirimi

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

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.

Üst Düzey Programlama

Nesne Tabanlı Programlama Dersi Edirne Kız Teknik ve Meslek Lisesi

TÜİK e-vt. Web Servis Kılavuzu

Nasıl Pardus Geliştiricisi Olunur?

19 Şubat 2016 Cuma

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

BOOTLOADER MANUAL DOCUMENT

HSancak Nesne Tabanlı Programlama I Ders Notları

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ

PYTHON PROGRAMLAMA DİLİ

PYTHON PROGRAMLAMA DİLİ

Top level widget. 1 Kaynak kodları yazarken widgetlerin özgün (original) adlarını kullanmak zorundayız.

Kaya Oğuz.

Üst Düzey Programlama

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.

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi

Öğr. Gör. Serkan AKSU 1

C++ Dersi: Nesne Tabanlı Programlama

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

AHTAPOT Merkezi Güvenlik Duvarı Yönetim Sistemi Kontrol Paneli

Qt ile Programlama. İşbaran Akçayır

BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi KULLANICI ARAYÜZ. BLM401 Dr.Refik SAMET

C#(Sharp) Programlama Dili

2.Eclipse açıldıktan sonra Workspace alanı seçilmesi gerekir. Workspace alanı projelerinizin fiziksel olarak bulunduğu kısımdır.

2003 yılında P.D.C. de WPF in duyurulması ile beraber yazılım alanında farklılaşmanın başladığını gördük. İlk değişim, tasarım kodlama alanının

Karşılaştırma İşlemleri ve Koşullu İfadeler

Pardus 2013 te Metin Editörleri


İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

Nesne Yönelimli Programlama

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER,

YZM 2105 Nesneye Yönelik Programlama

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 3. Bölüm Veri Tipleri ve Değişkenler

Karabük Üniversitesi, Mühendislik Fakültesi... WEB TEKNOLOJİLERİ

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

İsimler ve Kapsam. Hafta 4 Ders 2 BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

Görsel Programlama DERS 08. Görsel Programlama - Ders08/ 1

YZM 2105 Nesneye Yönelik Programlama

Dr. Fatih AY Tel: fatihay@fatihay.net

HSancak Nesne Tabanlı Programlama I Ders Notları

Bölüm 6. Karma. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 31

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

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

OTURUM AÇMA ADLARI. Tavsiye Edilen Önhazırlık Enterprise Manager'i kullanabilmek.

Metotlar. d e f metot_adı [ ( [ arg [= d e f a u l t ] ]... [, arg [, &expr ] ] ) ] deyim ( l e r ) end

YAZILIM VE PROGRAMLAMA DİLİ. Donanım ve yazılım nedir? Yazılım nedir? Yazılım çeşitleri nelerdir? Programlama dili nedir

Sunum Planı. Django Nedir? Django projesi oluşturmak Basit bir blog uygulaması. Şablon Kullanımı Diğer özellikleri

Dizi türündeki referanslar, dizi nesnelerine bağlanmaktadır. Dizi referansları tanımlamak bu dizinin hemen kullanılacağı anlamına gelmez...

JAVASCRIPT JAVASCRIPT DİLİ

MOBİL UYGULAMA GELİŞTİRME

Python Programlama Dili

AHTAPOT Güvenlik Duvarı Yönetim Sistemi Kullanımı

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

Bu gün dersimizde değişik web kontrollerinin kullanımını gösteren birkaç web sitesi hazırlayacağız. Önce Visual Studio 2005 i açalım.

SİNOP ÜNİVERSİTESİ MESLEK YÜKSEKOKULU MEKATRONİK PROGRAMI

3 Sql Veri Tipleri. Veritabanı 1

Java da. ve AWT ve SWING Kütüphaneleri. BBS-515 Nesneye Yönelik Programlama. Ders #8 (9 Aralık 2009)

Yukarıdaki kod aksi belirtilmediği sürece sürekli çalışır. Yani ekrana sürekli Bilgisayar çıldırdı! yazısı gelir. Ancak;

Python Programlama Dili

Arasınav Sınavı Soruları Güz 2017 Süre: 90 Dakika

Android e Giriş. Öğr.Gör. Utku SOBUTAY

Programlama Dilleri III 1

KOD PARÇACIKLARI 1 / 5

MTK467 Nesneye Yönelik Programlama. Hafta 4 - Döngüler Zümra Kavafoğlu

ORM & Hibernate. Ahmet Demirelli. SCJP 5.0, SCWCD 1.4 ahmetdemirelli@sabanciuniv.edu

MVC. Görüldüğü üzere 2 adet cs. Dosyası oluşturdum. Birincisi çok satır kodu (20-25) içeren büyük işlerin yapılacağı class. İsmi buyuk_isler.

Üst Düzey Programlama

Döngüler. Tablo 15.1: Ruby de Başlıca Döngü Yapıları

BÖLÜM 04. Çalışma Unsurları

Mantıksal Kontrol ve Döngü Komutları

Paket Erişimleri. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 1

Pardus. S.Çağlar Onur, 21 Aralık Pardus Projesi [TÜBİTAK / UEKAE] Linux Kullanıcıları Derneği

HESAP MAKİNASI YAPIMI

Pardus. A. Murat Eren, 25 Mart Pardus Geliştiricisi. Pardus Yenilikleri Sık Sorulan Sorular

1 JAVASCRIPT NEDİR? 1

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

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN

Kılgılayan Sınıflar: AbstractMap, Attributes, HashMap, Hashtable, IdentityHashMap, RenderingHints, TreeMap, WeakHashMap

İçindekiler. KISIM 1 Temel Programlama 1. Bölüm 1: Programlama ve Python 3. Bölüm 2: Değişkenler, İfadeler ve Deyimler 13. Giriş 4

Ş Ş Ö Ö Ü Ö Ö»

Transkript:

Glade hitokiri Eylül, 2012

İçindekiler 1 Glade Nedir?............................................... 2 2 Gtk Builder?................................................ 3 3 GtkBuilder İşlevleri............................................ 4 4 ÖRNEKLER................................................ 5 1

1 Glade Nedir? Glade, Gnome Masaüstü ortamına, GTK+ araç kiti için hızlı ve kolay arayüzler sağlamak üzere geliştirlmiş bir RAD aracıdır. Glade ile tasarlanmış kullanıcı arayüzleri XML biçeminde kaydedilir ve GtkBuilder nesnesi GTK arayüzü olarak biçemin dinamikleşmesini sağlar. GtkBuilder kullanarak Glade dosyalarını kullanan sayısız programlama dili vardır. Başta C olmak üzere C++, C#, Vala, Perl, Python, Java Glade, özgür bir yazılımdır ve GNU/GPL ile lisanslanmıştır. 2

2 Gtk Builder? Glade tasarımcısıyla arayüzler oluşturmak şöyle bir kenarda dursun, peki ama bu dosyalar programda nasıl yer alır? Bunun için öncelikle dikkat etmemiz gereken GtkBuilder dır. GtkBuilder, kaydedilen Glade.xml arayüz dosyalarının, programcı tarafından widget, window, dialog gibi gtk araçları olarak kullanılmasına imkân verir. 3

3 GtkBuilder İşlevleri - add_from_file UI tanımını içeren dosyayı ayrıştırır. - add_from_string UI tanımını içeren karakter grubunu ayrıştırır. - add_objects_from_file UI tanımını içeren dosya içinden belirtilen gtk araçlarını ayrıştırır. - add_objects_from_string UI tanımını içeren karakter dizesi içinden belirtilen gtk araçlarını ayrıştırır. - get_object Ayrıştırılmış dosya veya karakter dizesi içinden ismi tanımlanan gtk aracını verir. - get_objects Ayrıştırılmış dosya veya karakter dizesi içinde bulunan tüm gtk araçlarının bir liste olarak bilgisini verir. **_connect_signals** Adlandırılmış sinyallerin gtk aracının yeniden tanımlanmasına gerek duyulmadan uygulama tarafından erişilmesini sağlar. Başlıca GtkBuilder işlevleri bunlardır. Tüm diğer seçenekler için gerekli bilgiye şuradan ulaşabilisiniz: \ http://www.pygtk.org/docs/pygtk/class-gtkbuilder.html 4

4 ÖRNEKLER Glade ile oluşturulan basit bir pencere Python ile şu şekilde kullanılabilir: 1 $ python 2 >>> import gtk 3 >>> builder = gtk. Builder ( ) 4 # add_from_string ö z e l l i ğ i n i kullanabilmek i ç i n uygulamamız i ç i n b i r 5 # UI tanımı oluşturuyoruz. 6 7 >>> buffer = < interface > 8... <object class = GtkWindow id = window1 > 9... <property name= can_focus > False </ property > 10... <property name= has_ resize_ grip > False </ property > 11... < c h i l d > 12... <object class = GtkButton id = button1 > 13... <property name= label translatable = yes >button </ property > 14... <property name= v i s i b l e >True </ property > 15... <property name= can_focus >True </ property > 16... <property name= receives_ default >True </ property > 17... <property name= use_action_appearance > False </ property > 18... </ object > 19... </ c h i l d > 20... </ object > 21... </ i n t e r f a c e > 22 23 #Oluşturduğumuz UI tanımını Builder e ekliyoruz. 24 25 >>> builder. add_from_string ( buffer ) 26 >>> win = builder. get_object ( window1 ) 27 >>> win. connect ( delete event, gtk. main_quit ) 28 >>> win. show_all ( ) Şimdi gelelim Glade i kullanarak yapıcağımız örnek uygulamacığımıza. Bu bakımdan kamu yararını göz önünde tutarak şöyle boy-kilo indeksini hesaplayan bir uygulamacık tasarlayacağız. Öncelikle Glade yi açalım. Bunun için Alt+F2 ye basıp glade yazıyoruz. İşte karşımızda: Container ana başlığı altından bir kutucuk eklemek ile işe başladık. Gtk araçlarımızı yerleştirdikten sonra şimdi gelelim sinyal yönetimine. Sinyalleri Glade üzerindeyken adlandırabilir ve daha sonrası için uygulamacığımızdan _connect_signals ile ayrrıştırarak gtk aracını yeniden tanımlamadan kullanabiliriz. Şimdi gelelim Python betiğimizin içeriğine. Öncelikle gtk kütüphanelerini yükleyelim. 12.04 ün ruhuna uygun olarak Glade, gtk3 ün yapılandırmalarıyla geliyor. Bu yüzden Python için gi deposu üzerinden gtk kütüphanelerini yüklemek sorun yaşamamamızı sağlayacaktır. 1 #! / usr / bin / env python 2 # * coding : utf 8 * 3 # vim : t s =4:sw=4 4 from gi. repository import Gtk as gtk 5 #oran a d l ı b i r s ı n ı f o l u ş t u r a l ı m ve i n i t değer olarak B u i l d e r a r a c ı n ı t a n ı m l ı y a l ı m : 6 class oran ( gtk. Builder ) : 7 def i n i t ( s e l f ) : 8 gtk. Builder. i n i t ( s e l f ) 9 #Şimdi s e l f haznesi üzerinden B u i l d e r a r a c ı n ı r a h a t l ı k l a k u l l a n a b i l i r i z. 10 #Dosyamızı _add_from_file i l e Builder e ekleyelim. 11 s e l f. add_from_file (. / boykilo. glade ) 12 # Hesap i ş l e m l e r i i ç i n gerek duyduğumuz gtk a r a ç l a r ı n ı 13 # uygulamamıza Builder üzerinden davet edelim. 14 15 s e l f. l a b e l = s e l f. get_object ( label1 ) 16 s e l f. boy = s e l f. get_object ( scale1 ) 17 s e l f. k i l o = s e l f. get_object ( scale2 ) 5

Şekil 1: Şekil 2: 6

18 #Şimdiyse a d l a n d ı r d ı ğ ı m ı z s i n y a l i s i m l e r i n e f o n k s i y o n l a r ı m ı z ı n h a n g i l e r i 19 #olduğu c o n n e c t _ s i g n a l s i l e b e l i r t e l i m. 20 s e l f. connect_signals ( { t i k l a : s e l f. islem, 21 kapat : gtk. main_quit } ) 22 #Pencerimiz gösterilmeye hazır. 23 s e l f. get_object ( window1 ). show_all ( ) 24 #Kabaca basit b i r işlemle şimdi hesaplamaya geldi s ı r a. 25 def islem ( self, data ) : 26 # Tanımladığımız gtk a r a ç l a r ı n d a g e r e k l i boy ve k i l o b i l g i s i n i 27 # aldıktan sonra bilgilendirme hazır a r t ı k. 28 boy = s e l f. boy. get_value ( ) 29 k i l o = s e l f. k i l o. get_value ( ) 30 x = boy * boy 31 sonuc = float ( k i l o ) / float ( x ) 32 i f sonuc > 25: 33 while True : 34 k i l o = 1.0 35 xx = float ( k i l o ) / float ( x ) 36 i f xx <= 25: 37 i d e a l = k i l o 38 ver = s e l f. k i l o. get_value ( ) i d e a l 39 break 40 s e l f. l a b e l. set_markup ( \ 41 Boy Kilo oranınız <span foreground = red ><b><big>%s </ big ></b></span>.. 42 S a ğ l ı k l ı k i l o s ı n ı r ı n ı z olan <span foreground = red ><b><big >25</ big ></b></span > i geçmiş durumda. 43 S a ğ l ı k l ı b i r yaşam i ç i n olmanız gereken k i l o <span foreground = red ><b><big>%s </ big ></b></span >, 44 Vermeniz gereken k i l o i s e yaklaşık <span foreground = red ><b><big>%s </ big ></b></span> kadar.. 45 % ( str ( sonuc ) [ 0 : 4 ], int ( i d e a l ), int ( ver ) ) ) 46 else : 47 s e l f. l a b e l. set_markup ( \ 48 Boy Kilo oranınız <span foreground= #009021 > <b><big>%s </ big ></b></span>.. 49 S a ğ l ı k l ı k i l o s ı n ı r ı n ı z olan <span foreground = #009021 ><b><big >25</ big ></b></span > i n a l t ı n d a.. 50 % ( int ( sonuc ) ) ) 51 oran ( ) 52 gtk. main ( ) Python ve C için örneklere ekten ulaşabilirsiniz.. 1 gcc mixer. c o mixer pkg config l i b s cflags gtk+ 2.0 2 gcc mixer. c o mixer pkg config l i b s cflags gtk+ 3.0 komutları ile c için derleme işlemini gerçekleştirebilirsiniz. 7

Şekil 3: 8