GTK+ ile ilgili temel bilgiler, Bölüm 1: Neden GTK+ kullanılmalı?
Daha iyi GUI tabanlı uygulamalar geliştirme
Düzey: Orta
20 Aralık 2005
Üç bölümden oluşan dizinin ilki olan bu makale, GTK+ dünyasına bir giriş yapmanızı sağlar. Bu makale, GTK+ olanağının ne olduğunu, neden kullanılması gerektiğini ve size ne gibi yararlar sağlayacağını açıklar. Dizinin diğer bölümleriyle birlikte bu kuruluş, GTK+'yi kendi projelerinizde kullanmaya karar verdiğinizde bakabileceğiniz daha ayrıntılı kaynaklar konusunda yeterli giriş bilgisi sağlar.
GTK+, bir grafik kullanıcı arabirimi (GUI) araç takımıdır. Diğer bir deyişle, GUI tabanlı uygulamalar yaratmanıza olanak veren bir kitaplıktır (daha doğrusu birbirleriyle yakından bağlantılı birkaç kitaplıktan oluşan bir gruptur). GTK+ olanağını, çeşitli GUI'ler yaratmak için birçok hazır yapıyı bir arada bulabileceğiniz bir araç kutusu olarak düşünebilirsiniz.
Başlangıçta, GTK+ başka bir tanınmış açık kaynak projesi olan GIMP'nin (GNU Image Manipulation Program; GNU Görüntü Manipülasyon Programı) yan ürünü olarak yaratılmıştı. Daha önceki GIMP sürümlerinde çalışırken Peter Mattis ve Spencer Kimball, o zamanlar ücretsiz olmayan Motif araç takımına bir alternatif olarak GTK'yi (GIMP Toolkit'in kısaltılmışı) yarattılar. (Artı işareti ada daha sonra, araç takımı nesne yönelimli özellikler ve genişletilebilirlik kazandığında eklendi.)
Bu yaklaşık 10 yıl önceydi. Bugün, en son GTK+ sürümü olan 2.8 ile birlikte ürün çok sayıda yeni etkinlik içeriyor ve GIMP hala, GTK+ olanağını kullanan en iyi programlardan biri olmaya devam ederken artık tek değil. GTK+ için tam anlamıyla binlerce uygulama yazıldı ve en az iki büyük masaüstü ortamı ((Xfce ve GNOME) kullanıcılar için eksiksiz bir çalışma ortamı sağlamak için GTK+ ortamını kullanıyor.
GTK+ gibi bir kitaplığın kullanılmasının kendi GUI kodunuzu yazmaya kıyasla birkaç avantajı vardır. Örneğin, geliştirme için harcanan süreden önemli ölçüde tasarruf etmenizi sağlayarak, basit işlevleri yinelemek yerine projeniz için asıl önemli ve özel olan konulara yönelmeniz için size zaman kazandırır. Kullanıcılarınız için bu, kullandıkları uygulamalar üzerinde daha fazla tutarlılık anlamına gelir: Araç takımının çalıştığı her yerde uygulamaları da çalışır. Aynı LEGO'larda olduğu gibi, herkesin tek bir uyumlu boyutu kullanması, tasarımlarınızın nerede kullanılırsa kullanılsın kitaplığı kullanan herkes tarafından paylaşılabilmesi anlamına gelir.
Gerçekte, modern GUI araç takımları yalnızca yinelemenin önlenmesinden daha fazlasını yapar. Bu araç takımları kullanıcıların uygulamalarından bekleyebilecekleri ve bu tür araç takımları için harcanan zaman ve çaba tek bir uygulama için harcayabileceğinizden daha fazla olacağından elde edilmesi zor olacak birçok gelişmiş yetenek sunar. Bu nedenle, uygulamanızda bir GUI kullanılması sizin için önemliyse, bir araç takımı kullanın. Basit bir ifadeyle, bunun başka yolu yok. Artık geri kalan tek soru hangi araç takımını kullanacağınızdır.
Geliştirme ekibinizin gereksinimi ne olursa olsun, GTK+ tam aradığınız yanıt olabilir. GTK+ olanağının sunacağı çok şey vardır:
- Güçlü bir topluluk tarafından desteklenen bu olanak modern ve etkin bir şekilde geliştirilmiş ve geliştirilmeye devam etmektedir.
- Çalışmanızı mümkün olduğunca çok kişiye ulaştırmak için çok geniş seçenekler sunar. Bunlara uluslararasılaştırma, yerelleştirme ve erişilebilirlik için gelişmiş bir çerçeve de dahildir.
- Hem geliştiriciler hem de kullanıcılar için yalın ve kullanımı kolaydır.
- Çok iyi tasarlanmış, esnek ve genişletilebilirdir.
- Serbest bir açık kaynak lisansına sahip ücretsiz bir yazılımdır.
- Hem kullanıcılar, hem de geliştiriciler açısından taşınabilir bir üründür.
GTK+, yazılım geliştirmedeki en yeni yöntemler kullanılarak yazılmıştır ve herhangi bir hata ya da eksiklik bulunduğunda (hiçbir yazılım mükemmel değildir) geliştiriciler bir sonraki sürümde bunları düzeltmek için ellerinden geleni yaparlar. Modern bir yazılım kullanmak, eskimeye terkedilmiş bir ürüne takılıp kalmayacağınız anlamına gelir.
Sürekli bakım ve geliştirme çalışmaları, araç takımının gelecekte gideceği yön konusunda da etkinizin olabileceğini gösterir. Ayrıca, yeni yayın düzeyleri piyasaya çıktıkça, kullanıcıların geribildirimlerine dayanan yeni özellikler ve işlevler eklenir ve eski sorunlar çözülür.
Herkesin kullanabileceği bir yazılım yaratırken, üç sözcüğü aklınızda tutun: uluslararasılaştırma, yerelleştirme ve erişilebilirlik (genellikle sırasıyla i18n, l10n ve a11y şeklinde kısaltılırlar).
Uluslararasılaştırma, programınızı uygulamanın geliştirildiği dilin dışındaki diğer dilleri konuşanların kullanımı için hazırlama sürecidir. Böylece, uygulama herhangi bir dille ilgili varsayımlardan bağımsız olur.
i18n, programınızın kullandığı metni yalnızca çevirmekten daha fazlasıdır. Bu, kullanılan farklı yazma düzeni ve alfabelerin, farklı yazı yönlerinin, birçok dili görüntülemek için gereken özel işlemlerin göz önünde bulundurulması ve kullanıcıların veri girmeleri için uygun yöntemlerin sağlanması anlamına gelir. Bazı dillerde her bir harfin klavye üzerindeki farklı bir tuşla gösterilmediği gibi, hata iletilerinde doğru çoğulun kullanıldığından emin olmak gibi daha geniş karmaşıklıkları da hesaba katmanız gerekir.
Uygulamanızın uluslararası kullanıcılar için hazırlanması yalnızca dillerin değiştirilmesinde öte bir süreç olduğundan, Yerelleştirme uluslararasılaştırma (i18n) ile yakından ilgilidir. Programınızın, tarihler, para birimleri, sayısal gösterimler, metin sıralama için yapılan farklı dönüştürmeleri ve dünyanın farklı yerlerinde uygunsuz ya da kırıcı olabilecek simgelerin kullanımı gibi farkında bile olmayabileceğiniz birçok ince ayrıntıyı anlaması ve bunlara saygı duyabilmesi gerekir.
Uluslararasılaştırma gibi, düzgün yerelleştirme, kod üzerinde, sonradan eklenemeyecek kapsamlı bir hazırlık gerektirir. GTK+, size uluslararasılaştırma ve yerelleştirme için uygun araçları sağlayarak, kodun (ve ikililerin) birçok dilde ve yerel bilgi seçeneğinde değiştirilmeden çalıştırılabilmesine olanak verir. Yapmanız gereken tek şey yerel bilgileri işletim sistemiyle birlikte gönderilen veri setiyle değiştirmek (l10n için) ya da gerçek bir programdan bağımsız olarak dağıtılan ve üzerinde çalışılabilen bir çeviri dosyasıyla değiştirmektir (i18n için). Sonuçta ortaya çıkan esneklik geliştiricilerinizi, çevirmenlerinizi ve kullanıcılarınızı memnun edecektir.
Erişilebilirlik programınızı herkesin kullanılabilmesini sağlayan bir unsurdur. Bazı kullanıcıların görme yetenekleri kısıtlı olabilir, bazıları bir klavye ya da fare kullanamayabilirler, bazıları ise yalnızca gözlerini hareket ettirebilirler. İsteyen herkesin uygulamanızı kullanabilmesini sağlamak çok fazla çaba ister. Neyse ki GTK+, sizin açınızdan neredeyse yok denebilecek kadar az çaba gerektiren gelişmiş bir kullanılabilirlik çerçevesi aracılığıyla anında destek alabileceğiniz bir yöntem sağlar. Bu çerçeve sayesinde (UNIX® sistemlerinde standart bir seçenek olarak bulunur), uygulamanızı her tür kullanıcıya sunabilirsiniz.
Siz de kullanılabilirlik özelliğinin sunduğu birçok avantajdan (otomatik GUI testleri gerçekleştirebilmek gibi) yararlanabilirsiniz. Uygulamanızın özel gereksinimleri olan kullanıcıların kullandıkları erişilebilirlik yazılımları tarafından okunabilmesini sağlayarak, örneğin doğru davranış biçimlerini denetleyen (bu işlem, geleneksel GUI programlamasında büyük sorunlara neden olur) test yazılımları tarafından da erişilebilir olmasını sağlayabilirsiniz. (Ayrıca erişilebilirlik son zamanlarda yalnızca "hoş" bir özellik olmaktan çıkmıştır. Birçok düzenleme, örneğin A.B.D. devleti kullanıcıları tarafından kullanılan yazılımlara ilişkin kurallar, yazılımların özel gereksinimi olan kullanıcılar için uygun desteği sağlamasını gerektirmektedir.)
Yukarıdaki üç unsur, bir araç takımı (özellikle de tüm bu alanlarda mükemmel destek sağlayan GTK+ araç takımını) kullanmak için büyük olasılıkla yeterli bir gerekçe oluşturur. GTK+ araç takımının sağladığı destek mükemmel olduğu kadar, çağdaş yazılımlarla edinebilecekleriniz arasında en iyisidir ve bu unsurların uygulamanıza eklenmesinin önemi ne kadar vurgulansa azdır. Bilgisayarların hemen her yerde olduğu ve bunlarla çalışan kullanıcıların sayısız ve benzersiz olduğu günümüz dünyasında, bazı kullanıcı gruplarını göz ardı eden bir uygulamayı eksiksiz bir ürün olarak nitelemek mümkün değildir.
Bu özelliğin gereği açıkça ortada olsa da, bu çok şey ifade eder. Bir araç takımı, acemi kullanıcılar için bile kullanımı kolay, rahat ve zevkli olmalıdır. İnsan ve bilgisayar arasındaki etkileşim için uygun bir model oluşturmak önemsiz bir görev değildir. GTK+, uzun süren çalışmaların yanı sıra, sayısız ve bazen zor alınmış kararların da sonucunda ortaya çıkan bir üründür.
GTK+ ürünü, sizin gibi geliştiriciler için de kullanımı kolay bir üründür. Söylemek istediğiniz şeyi doğrudan söylemenize olanak verir; bilgisayarların doğaları gereği yoksun oldukları hayal gücünü telafi etmek üzere insanlara yükledikleri kurallarla sizi sıkıntıya sokmaz.
GTK+, ürüne bakım yapanlara, yeni özellikler ekleyebilme ve kullanıcılarına, temel tasarımı zorlamadan bu işlevselliği kullanabilme ve gereksinimlerine en uygun şekilde kullanabilme olanağı verecek biçimde yazılmıştır. Araç takımı ayrıca genişletilebilme özelliğine sahiptir; ürüne kendi parçalarınızı ekleyebilir ve bunları yerleşik parçaları kullandığınız gibi kullanabilirsiniz. Örneğin, uygulamanızın birlikte çalıştığı bilimsel verileri görüntülemesi ve kullanıcının seçtiği görsel biçimi düzgün bir şekilde izlemesi için kendi denetim öğenizi yazabilirsiniz.
Ayrıca, GTK+ uyarlanabilme özelliğine sahiptir ve bu özellik, ürünü kendi gereksinimlerinize uygun hale getirebilmenizi sağlar. GTK+, bir tema seçimi de dahil, ayarların tüm uygulamalara yayılabilmesini sağlayan bir sistem içerir. Tema, GTK+ ürününün kullandığı temel denetimlerin nasıl göründüğünü ve belli bir dereceye kadar nasıl işlediğini etkileyen ve toplu olarak dağıtılan uyarlamalar grubudur. Temaları kullanarak, örneğin başka bir işletim sisteminin görünümünü taklit edebilirsiniz (bkz. Şekil 1).
Şekil 1. GTK+ uygulamaları için örnek görünümler
Ücretsiz yazılım, herkesin, belirli koşullara uyulması kaydıyla, araç takımını yalnızca alıp kullanmakla kalmayıp aynı zamanda değiştirmek ve yeniden dağıtmak üzere de serbest olduğu anlamına gelir. Serbest açık kaynak lisansı, bu koşulların çok sınırlayıcı olmadığı ve önemli ölçüde özgürlük düzeyine sahip olduğunuz anlamına gelir. En önemlisi, GTK+, GNU lisansları arasında en az sınırlayıcı olan Lesser General Public License (LGPL) lisansını almıştır. LGPL, yaptığınız değişiklikleri de ücretsiz yapmanız koşuluyla, kapsadığı tüm yazılımları ücretsiz olarak almanıza, değiştirmenize ve dağıtmanıza izin verir. LGPL kullanıcının uygulama kodunu açmasını gerektirmeden, herkesin kitaplık tarafından sağlanan işlevleri kullanmasına da izin verir. (Çoğunlukla önceki sözleşmeler ve lisanslar nedeniyle, kodun genel kullanıma açılmasının istenmediği ya da kesinlikle imkansız olduğu birçok sektörel kullanım için bu önemlidir). LGPL lisansı sayesinde, hem iyi bir Çözüm Ortağı hem de iyi bir açık kaynak vatandaşı olabilirsiniz.
GTK+ ürününün son ama aynı derecede önemli diğer bir özelliği de taşınabilir olmasıdır. Bu, kullanıcıların bu ürünü birçok platformda ve sistemde çalıştırabilecekleri anlamına gelir. Buna karşılık, geliştiriciler, programı yalnızca bir kez yazarak yazılımlarını çok sayıda kullanıcıya sağlayabilir ve ayrıca birçok farklı programlama ve geliştirme platformu, araç ve programlama dili kullanabilirler. Tüm bunlar, daha büyük bir kullanıcı potansiyeli ve gereksinimlerinize daha uygun, daha geniş beceri ve araç seçeneklerinden yararlanabilmeniz anlamına gelir.
Tüm bu güçlü özellikler bir araya geldiğinde, GTK+ ürünü yazılım geliştirme için sağlam bir temel haline gelir. Bu sayede, herşeyi yeni baştan keşfetmek yerine gerçek sorunları çözmeye yoğunlaşabilir ve yarattığınız uygulamaların kullanıcıların bekledikleri gibi çalışarak yeni sorunlar yaratmak yerine onların sorunlarını çözeceğinden emin olabilirsiniz.
Bu makalede, çok fazla ayrıntıya girilmeden, GTK+ ürünün genel özelliklerine hızlı bir bakış sağlandı. Bir sonraki bölümde, gerçek GTK+ kodu hakkında bilgi sahibi olacaksınız. Size kodun gerçekte nasıl işlediğini anlatacak, kullanılabilir bazı araçları tanıtacak ve GTK+ ürününün farklı platformlar ve dillerde nasıl başarıyla çalıştığını göstereceğim. Son makalede ise, GTK+ ürününün zor ortamlardaki örneklerini göreceksiniz. Bu son makalede uyumluluk, taşınabilirlik, yayma ve GTK+ ürününün sizin özel gereksinimlerinize uydurulmasıyla ilgili sorunları analiz edeceğim. Son olarak, GTK+ ürününü kendi projelerinizde kullanmak istediğinizde bakabileceğiniz kaynaklara ilişkin ipuçları bulacaksınız.
- Araç takımıyla ilgili ek bilgi için GTK+
Web sitesini ziyaret edebilirsiniz.
- GTK+ API
başvuru sayfası geliştiriciler için
önemli bir sayfadır.
-
The Official GNOME 2 Developer's Guide
(yazan Matthias Warkus, No Starch
Press, 2004) GTK+ ile programlama dahil, GNOME 2 konusunu ele alır.
-
Açık kaynak teknolojileri konusunda kendinizi geliştirmenize
ve bunları IBM
ürünleriyle kullanmanıza yardımcı olacak kapsamlı
nasıl yapılır bilgileri, araçlar
ve proje güncellemeleri developerWorks
Open
source zone (Açık
kaynak bölgesi) sayfasını ziyaret edebilirsiniz.
Ürün ve teknoloji edinme
- GTK+ Web sitesinden resmi GTK+ kaynak kodu
tar dosyalarını edinebilirsiniz.
- İlk ve hala en sık kullanılan GTK+ uygulamalarını
edinebilirsiniz: GIMP.
- GTK+ ürününü kullanan,
kullanılabilirlik odaklı
masaüstü kurulumu GNOME
için ilgili Web sitesini
ziyaret edebilirsiniz.
- Yine GTK+ ürünüyle
geliştirilmiş, hızlı ve kolay bir masaüstü olan
Xfce olanağını
deneyebilirsiniz.
- Gnomefiles
Web sitesini ziyaret ederek,
burada GTK+ ile hazırlanmış 1.000'den fazla uygulama bulabilirsiniz.
-
Bilgisayarınıza yükleyebileceğiniz ya da DVD'sini
edinebileceğiniz
IBM
deneme
yazılımı ile yeni açık kaynak geliştirme
projenizde değişiklik yapabilirsiniz.
Tartışma
- GTK+ ile yazılım geliştirme konusunda destek ve
sorularınızın yanıtları için
GTK+
e-posta listelerine
bakabilirsiniz.
- developerWorks web günlüklerine katılarak developerWorks topluluğuna erişebilirsiniz.


Maciej Katafiasz, bilgisayar bilimlerinde yüksek lisans öğrencisidir ve liseden bu yana açık kaynak teknolojilerini kullanmaktadır. 1.0 sürümünden bu yana GNOME masaüstünün kullanıcısı olan Katafiasz, sürüm 2.0 yayınlandıktan sonra bu sürümü çok sevmiş ve en sevdiği masaüstüne uygulamalar geliştirebilmek için GTK+ ürününü öğrenmiştir.