معرفی+GTK

GTK برای طراحی رابط کاربری، ابزارک‌های بسیاری مانند دکمه‌ها، جعبه متن، چک‌باکس و … را در اختیار برنامه‌نویسان قرار می‌دهد که با استفاده از آن‌ها می‌توانید رابط کاربری گرافیکی کاملی برای نرم‌افزارهای خود طراحی کنید، همچنین +GTK از یک ویژگی استایل‌دهی‌ همانند CSS برای شخصی‌سازی ظاهری این ابزارک‌ها پشتیبانی می‌کند که با استفاده از آن می‌توانید هر یک از این ابزارک‌ها را شخصی‌سازی کرده و رابط گرافیکی کاربری مختص خود را بسازید. میزکارهای گنوم و Xfce و بسیاری از نرم‌افزارهای مطرح از جمله ویرایشگر تصاویر گیمپ، مسنجر Pidgin، نرم‌افزار گرافیک برداری Inkscape و بسیاری دیگر با استفاده از +GTK ساخته شده‌اند.

اجزای اصلی +GTK
در طول توسعه، +GTK به کتابخانه‌های مختلفی تقسیم شد و برخی کتابخانه‌ها نیز به +GTK اضافه شدند که امروزه +GTK به آن‌ها وابسته است. این کتابخانه‌ها عبارت‌اند از Cairo ،GdkPixbuf ،GDK ،ATK ،Pango و Glib.
GLib کتابخانه‌ای سطح پایین و چندسکویی است که به زبان C نوشته شده است و امکانات بسیاری را برای توسعه نرم‌افزار ارایه می‌دهد. این کتابخانه شامل قسمت‌های غیرگرافیکی پروژه +GTK است که از آن جدا شده و به برنامه‌نویسان اجازه می‌دهد از توابع و عملکرد‌های غیرگرافیکی بدون وابسته بودن به کل +GTK استفاده کنند.
از نسخه ۱.۲ +GTK به بعد، ارایه و نمایش متن با استفاده از کتابخانه Pango انجام شد که قابلیت پشتیبانی از زبان‌های مختلف مثل فارسی، ژاپنی و… را با کیفیتی عالی فراهم می‌آورد. کتابخانه ATK که مخفف جعبه ابزار دسترسی‌پذیری است ابزار‌هایی ارایه می‌کند که به وسیله آن‌ها افراد دارای مشکلات جسمی بتوانند با رایانه‌ کار کنند. این کتابخانه اکنون عضوی از پروژه گنوم است و میزکار گنوم از آن استفاده می‌کند.
کتابخانه GDK یک پوشش در سطح پایین گرافیک و پنجره است که توابع اساسی سیستم‌های گرافیکی را ارایه می‌دهد. در لینوکس، GDK به عنوان واسط بین سرویس دهنده سامانه پنجره X و کتابخانه +GTK قرار گرفته است و به تازگی بسیاری از عملکرد‌های آن به کتابخانه Cairo واگذار شده است. کتابخانه GdkPixbuf نیز ابزاری برای بارگذاری تصویر و دستکاری بافر پیکسل است و در نهایت کتابخانه Cairo مسئول ساختن تصاویر برداری ( vectot ) دو بعدی است که از نسخه ۲.۸ به +GTK اضافه شده است.

تاریخچه
+GTK در آغاز برای استفاده در نرم‌افزار گیمپ که نرم‌افزاری آزاد/متن‌باز برای ویرایش تصاویر است طراحی شد و از این رو GTK یا GIMP Toolkit نام گرفت و پس از مدتی به دلیل بهبود‌ها و بهینه‌سازی‌های انجام شده در GTK نام آن به +GTK تغییر کرد. برنامه‌نویسی GTK در سال ۱۹۹۶ توسط
«اسپنسر کیمبال» و «پیتر ماتیس» آغاز شد و پس از حدود دو سال و در ۲۸ آوریل ۱۹۹۸ اولین نسخه پایدار آن تحت عنوانGTK 1.0 منتشر شد. برای این نسخه ۹۳ هزار خط کد به زبان C نوشته شده بود و شامل ابزارک‌های اساسی مورد نیاز پروژه گیمپ بود. نسخه پایدار بعدی با شماره 2/1 در فوریه ۱۹۹۹ با اضافه شدن تعداد زیادی از ابزارک‌های جدید منتشر شد و +GTK را به بستری مناسب برای توسعه نرم‌افزارها تبدیل کرد و دیگر گیمپ، محور توسعه +GTK نبود. نسخه 2/1 همچنین اولین نسخه‌ای بود که شامل یک کتابخانه مجزای GLib بود.
بعد از نگارش 2/1، +GTK به یک چرخه طولانی توسعه وارد شد که در طی آن کار‌های بسیاری به انجام رسید؛ پردازش متن به Pango سپرده شد که باعث شد زبان‌های بین المللی به خوبی پشتیبانی شوند. Object System توسعه و تعمیم یافت و با عنوان کتابخانه GObject زیر مجموعه کتابخانه GLib شد.
مجموعه نگارش‌های GTK 0/0/2 به همراه خود، ویژگی‌های جدیدی داشت. یک موتور پوسته جدید، دسترسی‌پذیری بهینه شده با استفاد از ATK، انتقال کامل به یونیکد و استفاده از UTF-8 و تعدادی API‌های انعطاف‌پذیر دیگر اضافه شدند و همچنین از نسخه 8/2 به بعد، کتابخانه گرافیکی Cairo برای ارایه تصاویر برداری (vector) مورد استفاده قرار گرفت.
در طی مدت سه سال پروژه گنوم مشتاقانه منتظر آماده شدن +GTK 0/2 بود و گنوم از نسخه 0/2 به صورت عمده از +GTK استفاده می‌کند. یکی از درس‌های آموخته شده توسط گروه +GTK از چرخه توسعه 0/2 این است که سعی کنید چرخه‌‌های توسعه و انتشار نسخه‌های پایدار کوتاه‌تر از ۹ تا ۱۲ ماه باشد. +GTK برای همه نسخه‌های 2.x به این هدف نرسید اما از نسخه 0/2 به بعد با موفقیت از افتادن در چرخه‌های چند ساله توسعه و برنامه‌نویسی اجتناب کرد.
در نگارش GTK 3.0.0 بازنگری‌هایی درباره مدیریت ورودی‌های دستگاه صورت گرفت، طراحی قالب‌های پوسته با دستور زبانی مشابه CSS پشتیبانی شد و توانایی دریافت اطلاعات از دیگر نرم‌افزار‌های بازمتن طراحی شده با +GTK نیز اضافه شد.

+GTK و زبان‌های برنامه‌نویسی
برای ایجاد اتصال بین +GTK که به زبان C نوشته شده و دیگر زبان‌های برنامه‌نویسی، کتابخانه‌هایی منتشر شده‌اند که با ارایه یکسری توابع نقش واسط را میان زبان برنامه‌نویسی و کتابخانه +GTK بازی می‌کنند. این کتابخانه‌ها به شما اجازه می‌دهند بدون استفاده از زبان برنامه‌نویسی دیگری کتابخانه +GTK را در کد خود مورد استفاده قرار دهید و به آسانی رابط کاربری نرم‌افزار خود را طراحی کنید.
کتابخانه‌های PyGTK و PyGObject برای زبان برنامه‌نویسی پایتون، PHP-GTK برای زبان PHP، کتابخانه gtkmm برای زبان ++C و به همین صورت برای بسیاری از زبان‌های برنامه‌نویسی دیگر نیز کتابخانه واسط در دسترس است و به وسیله این کتابخانه‌ها +GTK می‌تواند با بیش از ۳۰ زبان برنامه‌نویسی کار کند.