جیتیکی
جیتیکی+ (به انگلیسی: GTK+) یک ابزار ویجت برای ایجاد واسط گرافیکی کاربر است. جیتیکی+ به همراه کیوت، از محبوبترین ابزارهای توسعه واسط گرافیکی کاربر برای سامانه پنجره اکس به حساب میآیند. جیتیکی+ هماکنون توسط بنیاد گنوم نگهداری میشود.
توسعهدهنده(ها) | بنیاد گنوم |
---|---|
انتشار آزمایشی | ۴.۱۱.۱
|
مخزن | |
سیستمعامل | لینوکس، سیستمعاملهای شبه یونیکس، مکاواس، ویندوز |
مجوز | الجیپیال |
جیتیکی+ در اصل برای نرمافزار گیمپ نوشته شده بود. گیمپ یک نرمافزار آزاد برای ویرایش تصاویر بیتمپی است. جیتیکی در سال ۱۹۹۷ توسط اسپنسر کیمبال و پیتر ماتیس از اعضای XCF در دانشگاه کالیفرنیا، برکلی نوشته شد.
این کتابخانه تحت پروانه گنو الجیپیال منتشر میشود که هم به نرمافزارهای آزاد و هم به نرمافزارهای انحصاری اجازه میدهد از این کتابخانه استفاده کنند. همچنین نام جیتیکی+ از نام پیشین خود یعنی «جیتیکی» میآید. علامت + نشان میدهد که این کتابخانه نسخه بهبودیافته و بهینه شده جیتیکی است.
جیتیکی+ از کتابخانه اکس برای ترسیم ویجتها استفاده میکند. استفاده از کتابخانه اکس انعطافپذیری به همراه دارد و به جیتیکی+ اجازه میدهد بر روی پلتفرمهایی که در آنها سامانه پنجره اکس وجود ندارند هم اجرا شود. در حالی که جیتیکی+ در درجه اول سامانه پنجره اکس را مورد هدف قرار داده، اما میتوان از آن بر روی پلتفرمهای دیگری مانند مایکروسافت ویندوز و اواس ده هم استفاده کرد.
ویژگی های جی تی کی
ویرایشیکی از قدرتمندترین ویژگی های GTK، قالب بندی است. ظاهر تمامی ویجت ها و عناصر گرافیکی در GTK را میتوان تقریبا با تمام جزئیات سفارشی کرد. از رنگ متن گرفته تا شکل گوشه های یک دکمه. معمولا ویجت ها از ظاهر تم سیستمی که نرم افزار روی آن اجرا میشود، استفاده میکنند. برای مثال تصویر راست نرم افزاری بر روی سخت افزار Raspberry Pi و محیط دسکتاپ آن و تم سفارشی PIX و تصویر چپ روی اوبونتو لینوکس، دسکتاپ گنوم و تم Yaru میباشد.
از ویژگی های دیگر این کتابخانه محبوب، امکان استفاده از CSS برای استایل دهی به ویجت ها و پنجره نرم افزار است. استفاده از این ویژگی باعث تغییر ظاهر ویجت ها میشود ولی باز هم قالب کلی ویجت ها تحت امر theme سیستم عامل است. در زیر میتوانید یک نمونه ساده از استایل دهی و تغییر رنگ پنجره نرم افزار و ویجت دکمه را در CSS مشاهده کنید :
window {
background-color: #898989;
}
button {
background-color: #0274d9;
}
از مهمترین نرم افزار هایی که به برنامه نویس در راستای ساخت رابط کاربری اش کمک شایانی میکند، میتوان به نرم افزار های Glade و Cambalache اشاره کرد. در تصویر زیر میتوانید ظاهر نرم افزار Glade که نرم افزار رسمی GTK میباشد را مشاهده کنید :
خود این نرم افزار با GTK ساخته شده است. علاوه بر آن، نرم افزار های متعدد دیگری برای آشنایی تازه واردین GTK با این پلتفرم ساخت شده است که یکی از آنها،مجموعه نرم افزار های Gtk Demo میباشد. این مجموعه نرم افزار که با GTK نوشته شده است، درون خود لیستی بلند از مثال های متعدد GTK با زبان سی را شامل میشود و قابل نصب روی تمام توزیع های لینوکسی میباشد.
مثال ساده در GTK4 در زبان سی
ویرایش
نسخه چهارم کتابخانه GTK تفاوت فاحشی با نسخه های قبلی و حتی قبل تر از آن نداشته است بلکه مجموعه دستورات و توابع گرافیکی نرم افزار از تابع main به تابع ثانویه دیگری موسوم به activate
منتقل شده است ( البته نام تابع کاملا اختیاری است ) و توسط g_signal_connect آن تابع اجرا میشود.
#include <gtk/gtk.h> // gtk4
static void activate (GtkApplication* app,
gpointer user_data)
{
GtkWidget *window;
window = gtk_application_window_new (app);
gtk_window_set_title (GTK_WINDOW (window), "Window");
gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);
gtk_window_present (GTK_WINDOW (window));
}
int main (int argc,
char **argv)
{
GtkApplication *app;
int status;
app = gtk_application_new ("org.gtk.example", G_APPLICATION_DEFAULT_FLAGS);
g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
status = g_application_run (G_APPLICATION (app), argc, argv);
g_object_unref (app);
return status;
}
توضیحات خط به خط
ویرایشدر خط اول، ما مجموعه توابع و کتابخانه های gtk را به نرم افزار شامل کردیم. بدنه و اصل دستورات نرم افزارمان درون تابع activate
قرار دارد و و تابع main تنها وظیفه اجرای این تابع را به روش درست دارد. در خط 16، ما یک نوع داده انتزاعی با نام app و نوع GtkApplication ایجاد کردیم. این داده انتزاعی کلاسی است که بسیاری از جنبه های مهم یک برنامه GTK را به شیوه ای راحت مدیریت می کند. هر GtkApplication دارای یک شناسه نام است که مدیریت نرم افزار ها را برای سیستم عامل راحت تر میکند مانند همان شناسه ای که برای اپلیکیشن های اندروید استفاده میشود. این شناسه ها برای نرم افزار DBus و آیکون نرم افزار در دسکتاپ ( .desktop ) و ... مورد استفاده قرار میگیرد. در آخر نرم افزار توسط g_application_run اجرا و کد خطا برگردانده و در متغیر status ذخیره میشود.
در تابع activate، خط ششم باعث ایجاد نوع داده انتزاعی پنجره میشود و در خط بعد، متغیر مقداردهی میشود. خطوط هشتم و نهم برای تغییر تایتل پنجره، اندازه پیشفرض پنجره هنگام ظاهر شدن آن و قبل از تغییر آن توسط کاربر میشود و در نهایت، خط دهم باعث نمایش پنجره و پایدار شدن نرم افزار و عدم پایان نرم افزار میشود ( شبیه یک حلقه بی پایان ) تا کاربر برای خروجی، دکمه X را فشار دهد یا نرم افزار خود اقدام به خروج نماید.
کامپایل کردن نرم افزار
ویرایشبرای کامپایل کردن این کد با استفاده از کامپایلر GCC به این شکل عمل کنید و بجای example-0.c، نام فایل سورس تان و بجای example-0 نام فایل اجرایی خروجی تان را جاگذاری کنید :
gcc $( pkg-config --cflags gtk4 ) -o example-0 example-0.c $( pkg-config --libs gtk4 )
نرمافزارهای کاربردی
ویرایشبرخی از نرمافزارهای کاربردی و معروف که از جیتیکی+ استفاده میکنند عبارتند از:
- نرمافزارهای پروژه گنوم
- گیمپ - یک نرمافزار ویرایش تصاویر
- اینکاسکیپ یک نرمافزار ویرایش تصاویر برداری
- ابیورد - یک واژهپرداز
- آنجوتا - یک محیط توسعه مجتمع
- اکیگا - یک نرمافزار برای ویدئو کنفرانس
- گنوم وب - یک مرورگر وب
- اوولوشن - یک مدیر اطلاعات شخصی
- گنومریک - یک نرمافزار برای صفحه گسترده
- گرمپز - یک نرمافزار ایجاد و ویرایش شجرهنامه
- میدوری (مرورگر وب) - یک مرورگر وب
- پیچین - نرمافزاری برای چت
- وایرشارک - یک نرمافزار برای تجزیه و تحلیل بستههای شبکه
فهرست منبع :
- C & GUI Programming 2nd Edition, Simon Long book
- https://docs.gtk.org/gtk4/getting_started.html
- https://docs.gtk.org/gtk3/getting_started.html
- https://docs.gtk.org/gtk3/class.Application.html
- https://flathub.org