مقدمة تعريفية بـ +GTK

نشره Fahad في السبت, 2008/03/08 - 10:41ص

إعداد: فهد السعيدي

ماذا تعني +GTK؟

+GTK هي طقم أدوات عالي الأداء و غني بالمميزات لإنشاء واجهات رسومية للمستخدم ، و يقدم لك تكامل متعدد المنصات و طريقة سهلة لاستخدام دواله. +GTK كتبت باستخدام لغة C و رخصت تحت ترخيص GNU LGPL 2.1 الذي يسمح بتطوير كل من البرامج الحرة والتجارية المغلقة باستخدام +GTK من دون رسوم ترخيص أو الملكيات. في الأصل، أنشأت +GTK و طورت بشكل منفصل من المشروع مفتوح المصدر الشهير : برنامج جنو لمعالجة الصور ( GIMP). بينما كان بيتر ماتز و سبنسر كيمبول يطورون الإصدارات الأولى من جمب في عام 1997، أنشؤوا GTK والتي تعني ( GIMP Toolkit ) كبديل عن طقم أدوات Motif والذي كان في ذلك الوقت غير حر. وعلامة الزائد أضيفت لاحقا عندما اكتسب طقم الأدوات مميزات كائنية المنحى و التوسع.

كان ذلك قبل عشر سنوات أو أكثر. أما اليوم فما زال هناك الكثير من النشاط في تطوير مكتبة +GTK و الإصدارة الأخيرة هي 2.12 ، وقبل أن ترخص مكتبة Qt برخصة حرة وهي التي قام عليها سطح المكتب كدي ، فقد توجه الاهتمام لإنشاء سطح مكتب جنوم ، و اعتمد بشكل أساسي على المكتبة الوليدة +GTK. إن هذه الحركة أكسبت مكتبة +GTK شهرة واسعة جدا ، فبرمجت بها الآلاف من التطبيقات التي تعمل على سطح المكتب جنوم. وجعلتها محط الأنظار لبقية المنصات. فهناك على الأقل بيئتان لسطح المكتب في عالم اليونكس ومشتقاته معتمدة على مكتبة +GTK ألا وهي سطح المكتب جنوم ، و سطح المكتب Xfce و كلاهما يعتمدان عليها لتقديم بيئات عمل متكاملة للمستخدمين. صدرت أول نسخة من مكتبة +GTK في 13 أبريل من عام 1998م . وبعد عشرة أشهر لاحقة أطلقت النسخة المستقرة GTK+ 1.2 . هذه الإصدارة حوت على مجموعة من المميزات الجديدة ، و أكثرها أهمية هو بدأها في دعم الثيمات. والجدير بالملاحظة أن أحد أجزاء هذه المكتبة انفصل عنها وهو Glib و أصبح يطور بشكل مستقل. الاصدارة 1.2 لم تكن دوالها متوافقة مع دوال النسخة السابقة 1.0 ، والبرامج التي كتبت بها يجب أن تعدل لكي تعمل على نسخة 1.2. وبعد إصدار GTK+ 1.2 ، استغرق الأمر ثلاث سنوات حتى تطلق نسخة مستقرة رئيسية ثابتة من +GTK. وبهذه الإصدارة 2.0 حصلت مكتبة +GTK على الكثير من التغييرات الجذرية وكان من أبرزها دعم اليونيكود و اللغات العالمية، ومرة أخرى فإن التطبيقات يجب أن تعدل حتى تتمكن من العمل على هذه النسخة. وفي هذه الأيام فإن نسخة رئيسية ثابتة من +GTK تطلق كل تسعة أشهر و كل النسخ عادة تملك التوافقية فيما بينها، مما يعني أن أي تطبيق كتب لمكتبة +GTK الإصدارة 2.0 سيعمل دائما مع أي نسخة أخرى من GTK+ 2 .

بنية +GTK

يوضح الشكل التالي بنية مكتبة +GTK:

GLib

GLib هي مكتبة خدمية متعددة المنصات. بدأت كجزء من +GTK ، ولكن منذ الإصدارة 1.2 فصلت إلى حزمة مستقلة. إنها تستخدم الآن في الكثير من المشاريع مفتوحة المصدر. و GLib تحوي العديد من المميزات المختلفة منها:

  • دوال للتعامل ترتيب البايتات
  • دوال نصوص خدمية
  • تحميل المكتبات الديناميكية
  • الكثير من هياكل البيانات، على سبيل المثال القوائم ، و الجداول المجزئة ، والمصفوفات و الأشجار الثنائية.
  • معظم وظائفها تأخذ نصوص بنظام ترميز utf8 الذي يدعم كل لغات العالم.

كل أجزاء +GTK مكتوبة بلغة السي، من ثم لا يوجد دعم لمميزات البرمجة كائنية المنحى في اللغة. ولكن +GTK لا تزال تتفاخر أنها مكتبة كائنية المنحى. هذا يرجع إلى GObject والذي بدوره هو جزء من Glib . GObject هو نظام كائني يُستخدم إلى حد كبير في +GTK . لقد صمم ليكون سهلا في الاستخدام بواسطة اللغات البرمجية الأخرى سواء التفسيرية أو التي تبني. GObject يدعم الوراثة الكائنية بالإضافة إلى الواجهات. الكائنات يمكن أن تمتلك خصائص مسماة. و يوجد هناك تقنية إعلامية عمومية الغرض للكائنات تدعى signals الإشارات. الكائنات في GObject مدارة في الذاكرة بنفس الطريقة الكائنات في Objective-C.

Pango

Pango هي عبارة عن مكتبة لرسم وتصيير النصوص ، ودعم التدويل. إنها النواة لإدارة النصوص و الخطوط لمكتبة +GTK منذ الإصدارة 2.0. بانجو يدعم كل اللغات العالمية الرئيسية فعليا، مثل العربية و العبرية و التايلندية والصينية و العديد من اللغات الهندية بالإضافة إلى اللغات اللاتينية. بانجو يمتلك نهايتان خلفيتان للخطوط: خطوط من جهة العميل تستخدم FreeType و fontconfig. النصوص يمكن أن تصير باستخدام Xft أو Cairo أو مباشرة في مكدس الذاكرة. الخطوط الأصلية في مايكروسوفت ويندوز. و نهاية الخلفية هذه يمكن - بشكل اختياري- أن تستخدم Uniscribe لترتيب النصوص المركبة.و النصوص يمكن أن تصير باستخدام Cairo أو مباشرة باستخدام دوال Win32 الأصلية.

ATK

مكتبة ATK (اختصار من Accessibility Tool Kit ) هي مجموعة من الواجهات التي تسمح لـ +GTK بتصدير معلومات إضافية حول الأدوات و المعلومات بحيث يمكن أن تكون مفيدة للمستخدمين الذين لديهم ضعف. على سبيل المثال، الزر يمكن أن يُعد واجهة AtkAction . هذه الواجهة تُستخدم لكائنات يمكن للمستخدم أن يتفاعل معها. باستخدام هذه الواجهة يصبح من الممكن أن نستعلم عن الإجراءات التي يدعمها الزر و يستدعي واحد منها. فالزر يمكن أن يدعم إجراء " النقر " بحيث يستدعي متحكم نقر الزر. معظم إعدادات المسبقة للأدوات لواجهات ATK حاليا تكمن في وحدة منفصلة تدعى gail ، ولكن هناك خطط لإدراجها داخل وحدة +GTK بدلا عن ذلك. طورت ATK بواسطة شركة صن مايكروسيستم كجزء من مشاركتهم في مشروع GNOME Accessibility.

Cairo

هي مكتبة برمجيات توفر لمطوري البرمجيات واجهة برمجة تطبيقات مبنية على الرسوميات المتجهة ومستقلة عن العتاد. صُمِّمت القاهرة لتوفر الأساسيات للرسم ثنائي الأبعاد عبر عدد من الخلفيات المختلفة. صُمِّمت القاهرة لتستخدم تسريع العتاد عند توفره. بالرغم من كتابتها بالسي، توجد جسور لاستخدامها من خلال العديد من لغات البرمجة الأخرى، مثل سي++، و سي#، جافا، بايثون، بيرل، روبي، وغيرها. القاهرة برمجية حرة، مرخصة تحت رخصة جنو العمومية الصغرى ورخصة موزيلا العمومية. أسس مشروع القاهرة كيث باكرد وكارل وورث لتستخدم مع خادم النوافذ X. سُمِّيت في البداية Xr أو Xc. تغير الاسم ليبين أنها مكتبة متعددة المنصات وليست مقيّدة بخادم النوافذ X. أُخِذ الاسم "cairo" من الاسم الأصلي Xr، المشابه للحروف اليونانية Chi Rho "كاي رو". مكتبة +GTK استخدمت مكتبة القاهرة لرسم معظم أدواتها منذ الإصدارة 2.8 والتي صدرت في عام 2005. ومكتبة القاهرة تستخدم في مشاريع أخرى غير +GTK و أهمها: محرك Geko التابع لموزيلا، مكتبة Poppler و هي مكتبة لتصدير ملفات PDF و كذلك مشروع WebKit. تتنافس القاهرة مع تقنيات مماثلة مثل WPF و ‪GDI+‬ من ميكروسوفت، Quartz 2D من أبل، و ‪Anti-Grain Geometry (AGG)‬.

GDK

GDK اختصار لـ ( GIMP Drawing Kit) و هو يتصرف كتغليف حول وظائف النوافذ والرسوميات منخفضة المستوى المقدمة من أنظمة الرسوميات. وكما سبق فقد طورت هذه المكتبة أولا لخادم النوافذ X و هي تعمل كوسيط بين خادم X ومكتبة +GTK بحيث تدير عمليات التصيير الأساسية مثل الرسوميات البدائية و المؤشرات و الخطوط بالإضافة إلى أحداث النافذة و وظائف السحب والإفلات. و GDK هو أحد الأجزاء المهمة لقابلية النقل لمكتبة +GTK. ونظرا لأن الوظائف المنخفضة المستوى لمنصات المتعددة تقدمها بالفعل مكتبة Glib ، فكل ما تحتاجه لجعل مكتبة +GTK تعمل على المنصات الأخرى هو نقل GDK ليعمل كطبقة فوق نظام الرسوميات في المنصة المستهدفة. لذلك فإن النسخ GDK المنقولة إلى Win32 و Quartz جعلت تطبيقات +GTK تعمل على نظام الويندوز و الماكنتوش، على الترتيب. ومنذ GTK+ 2.8 فإن GDK أصبح يدعم مكتبة القاهرة.

مميزات مكتبة +GTK

تتميز مكتبة +GTK بعدة مميزات ومن أهمها:

  • ترخيصها الذي يسمح لك بالبرمجة مفتوحة المصدر و مغلقة المصدر أيضا وهو ترخيص LGPL.
  • أنها متعددة المنصات فهي تعمل على نظام الويندوز واللينكس وكل منصات اليونكس و أيضا تعمل بمحاكي على منصة الماكنتوش وفي طريقها للعمل عليه بشكل أصلي.
  • سهولتها و سرعتها و أنها مكتوبة بلغة السي الشهيرة مما يجعلها مسيطرة في هذا المجال وخاصة للذين لم تعجبه لغة ++C.
  • يوجد لها العديد من الجسور للغات أخرى مثل السي بلس بلس وجافا و بايثون وبيرل و php و غيرها الكثير.
  • اعتمادها في مشاريع ضخمة أمثال سطح مكتب جنوم و سطح مكتب Xfce والتي بنيت عليها الآلاف من التطبيقات التجارية ومفتوحة المصدر.
  • أنها تدعم اللغات العالمية ، وكذلك عمليات المسهلة لذوي الاحتياجات الخاصة.
  •  

سلبيات +GTK

لكل مكتبة كما ذكرنا في المقالات السابقة سلبيات وأهم سلبيات +GTK:

  • لا يوجد دعم فني تجاري، وذلك بعكس المكتبات الأخرى.
  • التوثيق يعتبر ضعيفا بالنظر إلى المكتبات المنافسة.
  • عمليات التطوير فيها و حل المشاكل بطئية نوعا ما، ولا تتطور بسرعة كبيرة.
  • الكتب والشروحات حول هذه اللغة أيضا متدني لدرجة كبيرة ولا يوجد إلا لإصدارات قديمة.
  • قلة المطورين الذي يعملون على تطوير هذه المكتبة.
  •  

مما سبق يمكنك مقارنة هذه المكتبة مع مكتبة QT و مكتبة wxWidgets. فبينما مكتبة Qt تتطور بشكل سريع جدا ، ويوجد لها دعم فني تجاري و ذات توثيق عالي الجودة، ولكن هذا يتطلب منك أن تستثمر بعض المال لكتابة مشاريعك التجارية فإن مكتبة +GTK توفر لك الأدوات بشكل مجاني بالكامل ولا تتطلب منك أن تدفع أي مال. أما عند مقارنة مكتبة wxWidgets مع +GTK ، فهما يتساويان تقريبا ، ولكن إذا علمت أن wxWidgets تعتمد على +GTK بشكل كامل في منصة اللينكس واليونكس فلربما ستفكر مليا في أيهما تختار. تعتبر wxWidgets لغة تستخدم ++C وذات توثيق جيد، ورخصتها أيضا لا تلزمك أن تدفع أي مال لكتابة برامجك التجارية، ولكنها لا تتطور أيضا بشكل سريع وعندها مشاكل في دعم اللغات العالمية مثل العربية ، ولم تكتب بها تطبيقات بضخامة التطبيقات التي كتبت بمكتبة +GTK.

أشهر التطبيقات المكتوبة بمكتبة +GTK

1- برنامج تحرير الرسومات Gimp

صورة لها على منصة اللينكس :

على منصة الويندوز:

وعلى منصة الماكنتوش أيضا:

2- سطح المكتب Gnome 

3- برنامج الرسوميات المتجهة inkscape 

4- بيئة maemo لأجهزة نوكيا:

 

5- بيئة openmoko للأجهزة النقالة:

المراجع:

http://www.gtk.org

http://en.wikipedia.org/wiki/GTK%2B

http://en.wikipedia.org/wiki/GDK

http://en.wikipedia.org/wiki/Cairo_(graphics)

http://www.ibm.com/developerworks/library/os-gtk1/index.htm

يمكنكم تنزيل إصدارة PDF من المقالة من هنا

Comments