Development/Tutorials/First program (fa)

From KDE TechBase
سلام دنیا
Tutorial Series   آموزش مقدماتی
Previous  
What's Next   آموزش ۲ - استفاده از KXmlGuiWindow
Further Reading   Development/Tutorials/CMake

چکیده

مرسوم است اولین برنامه‌ای که با استفاده از یک ابزار جدید می‌نویسند، HelloWorld یا سلام دنیا باشد. شایسته است ما نیز این از این رسم پیروی کنیم و با نوشتن یک برنامه‌ی HelloWorld ساده به دنیای برنامه‌سازی در KDE سلام کنیم! برای این کار، از یک KMessageBox بهره می‌جوییم و یکی از دکمه‌هایش برای منظور خاص خود تغییر می‌دهیم.

Tip
برای یافتن اطلاعات بیشتر در مورد هر کلاسی که با آن برخورد می‌کنید، Konqueror میان‌بری سریع در اختیارتان می‌گذارد. بنابراین برای دانستن درباره‌ی KMessageBox کافی است در Konqueror تایپ کنید «kde:kmessagebox». Konqueror شما را به بخش مستندات خواهد برد.


Tip
برای پروژه‌های خود می‌توانید از KDevelop استفاده کنید. KDevelop محیط توسعه‌ی مجتمع KDE است که امکانات مفید زیادی را مانند کامل‌سازی کد، دسترسی آسان به مستندات و پشتیبانی از اشکال‌زدایی (debugging)، در اختیار برنامه‌نویس قرار می‌دهد.

برای تنظیم KDevelop به گونه‌ای که مناسب پروژه‌های KDE4 باشد این آموزش را مطالعه کنید. احتمالا می‌خواهید ابتدا یک پروژه‌ی موجود KDE4 را در KDevelop امتحان کنید تا ببینید آیا تنظیمات فعلی کار می‌کنند یا نه.

با این حال، هنوز هم مجبورید فایل‌های CMake را دستی بنویسید.


کد منبع

همه‌ی کد مورد نیاز ما در این آموزش در یک فایل main.cpp قرار خواهد گرفت. این فایل را بسازید و کد زیر را در آن وارد کنید:

#include <KApplication>
#include <KAboutData>
#include <KCmdLineArgs>
#include <KMessageBox>

int main (int argc, char *argv[])
{
	KAboutData aboutData(
                         // The program name used internally.
                         "tutorial1",
                         // The message catalog name
                         // If null, program name is used instead.
                         0,
                         // A displayable program name string.
                         ki18n("Tutorial 1"),
                         // The program version string.
                         "1.0",
                         // Short description of what the app does.
                         ki18n("Displays a KMessageBox popup"),
                         // The license this code is released under
                         KAboutData::License_GPL,
                         // Copyright Statement
                         ki18n("(c) 2007"),
                         // Optional text shown in the About box.
                         // Can contain any information desired.
                         ki18n("Some text..."),
                         // The program homepage string.
                         "http://tutorial.com/",
                         // The bug report email address
                         "[email protected]");
 
	KCmdLineArgs::init( argc, argv, &aboutData );
	KApplication app;
	KGuiItem yesButton( i18n( "Hello" ), QString(),
                        i18n( "This is a tooltip" ),
                        i18n( "This is a WhatsThis help text." ) );
	KMessageBox::questionYesNo( 0, i18n( "Hello World" ),
                                i18n( "Hello" ), yesButton );
}

اولین کد مخصوص KDE که در این برنامه با آن برخورد می‌کنیم KAboutData است. این کلاسی است که برای نگاه‌داری اطلاعاتی درباره‌ی برنامه استفاده می‌شود؛ اطلاعاتی همچون توضیح مختصری درباره‌ی برنامه، نویسندگان برنامه یا اطلاعات لیسانس آن. تقریبا هر برنامه‌ی KDE باید از این کلاس استفاده کند.

پس از آن، به KCmdLineArgs می‌رسیم. می‌توان از این کلاس برای کار با پارامترهای خط فرمان استفاده کرد تا، برای مثال، برنامه با یک فایل به خصوص باز شود. هرچند، در این آموزش ما تنها آن را با شیء KAboutData مقداردهی اولیه کردیم تا بتوانیم از سوئیچ‌های --version و --author استفاده کنیم.

سپس یک شیء KApplication ایجاد می‌کنیم. در هر برنامه‌ای این کار باید دقیقا یک بار انجام شود، چرا که برای چیزهایی چون i18n وجود آن لازم است.

حالا که همه‌ی زمینه‌سازی‌های لازم KDE را انجام دادیم، می‌توانیم گامی به جلو برداریم تا با برنامه‌مان کارهای جالب‌تری بکنیم. می‌خواهیم یک کادر پاپ‌آپ بسازیم، اما می‌خواهیم یکی از دکمه‌هایش را به دلخواه خود تغییر دهیم. برای این سفارشی‌سازی، باید از یک شیء KGuiItem استفاده کنیم. اولین پارامتر تابع سازنده‌ی KGuiItem متنی است که روی شیء آن نمایش داده می‌شود (در مثال ما، یک دکمه). پارامتر بعدی آیکنی است که کنار متن ظاهر می‌شود. ولی ما آیکن نمی‌خواهیم پس می‌توانیم یک QString() خالی به آن رد کنیم. سپس tooltip و نهایتا متن «What's This» دکمه را تنظیم می‌کنیم.

اکنون دکمه‌ی مورد نظر ما آماده شده و می‌توانیم کادر پاپ‌آپ خود را بسازیم. تابع استاتیک ()KMessabeBox::questionYesNo را صدا می‌زنیم. این تابع به صورت پیش‌فرض یک کادر پیام می‌سازد که دو دکمه‌ی Yes و No در آن به چشم می‌خورد. اولین آرگومان ورودی این تابع _ که ما صفر رد کردیم _ شیء پدر کادر پیام را مشخص می‌سازد. دومین آرگومان، متنی است که به عنوان پیام بالای دکمه‌ها به نمایش در خواهد آمد. پارامتر سوم عنوان کادر پیام است و برای پارامتر آخر شیء KGuiItemی را قرار می‌دهیم که به جای دکمه‌ی Yes قرار می‌گیرد.

توجه داشته باشید تمام نوشته‌هایی که به کاربر نشان داده می‌شود، از طریق تابع ()i18n رد می‌شوند. این کار برای این لازم است که رابط کاربر برنامه را بتوان به زبان دیگری برگرداند. برای آگاهی بیشتر درباره‌ی بومی‌سازی برنامه می‌توانید آموزش بومی‌سازی را ببینید.

ساخت برنامه

برای ساختن برنامه‌مان، نیاز به یک Makefile داریم. البته در این مثال کوچک و همین یک فایل کد، می‌توانستیم با چندخط دستور در خط فرمان با استفاده از ++g برنامه‌ی خود را بسازیم. اما هنگامی که برنامه کمی بزرگ‌تر می‌شود (حتی برنامه‌ای نسبتا ساده مانند آموزش بعدی با تنها سه فایل)، ساختن برنامه از طریق خط فرمان، آن چنان طاقت‌فرسا می‌شود که ممکن است از نوشتن برنامه پشیمان شویم! از طرفی نوشتن Makefile نیز به صورت دستی تقریبا به همان طاقت‌فرسایی خط فرمان است.

استفاده از CMake

راه حل، استفاده از برنامه‌ای است که برای ما Makefile بسازد. بهترین گزینه برای این کار CMake است، همانند بقیه‌ی برنامه‌های KDE. این برنامه به طور خودکار جای فایل‌های سرایند و کتاب‌خانه‌ای KDE، Qt و دیگر چیزهای مورد نیاز شما را می‌یابد و با ساختن خودکار Makefile به شما امکان می‌دهد برنامه‌تان را روی دیگر کامپیوترها نیز کامپایل و اجرا کنید.

CMakeLists.txt

یک فایل به نام CMakeLists.txt در همان شاخه‌ای که main.cpp قرار دارد بسازید و دستورات زیر را در آن تایپ کنید:

project (tutorial1)
find_package(KDE4 REQUIRED)
include_directories(${KDE4_INCLUDES})
 
set(tutorial1_SRCS main.cpp)
 
kde4_add_executable(tutorial1 ${tutorial1_SRCS})
target_link_libraries(tutorial1 ${KDE4_KDEUI_LIBS})

دستور find_package() بسته‌ی موردنظر شما را (در این مثال KDE4) یافته و متغیرهایی تنظیم می‌کند که محل فایل‌های سرایند و کتاب‌خانه‌ها را در خود دارند. در این مثال ما از متغیر KDE_INCLUDES استفاده می‌کنیم که حاوی مسیر فایل‌های سرایند KDE4 است.

برای این که به کامپایلر اجازه دهیم این فایل‌ها را پیدا کند، با استفاده از دستور include_directories() این مسیرها را به مسیر جستجوی سرایندها اضافه می‌کنیم.

سپس با دستور set() متغیری به نام tutorial1_SRCS می‌سازیم. در این مورد، ما نام تنها فایل مبدأ خود را به آن انتساب می‌دهیم.

حالا از دستور kde4_add_executable() استفاده می‌کنیم تا یک فایل اجرایی به نام tutorial1 از فایل‌های مبدأ که در tutorial1_SRCS لیست شدند، بسازیم. در پایان نیز با دستور target_link_libraries فایل اجرایی خود را به کتاب‌خانه‌ی kdeui از بسته‌ی KDE4 پیوند می‌دهیم. این کتاب‌خانه قبلا توسط find_package در متغیر KDE4_KDEUI_LIBS ذخیره شده‌است.

ساخت و اجرا

حالا همه چیز آماده است. می‌توانید با دستورات زیر در خط فرمان، برنامه را کامپایل کنید:

mkdir build
cd build
cmake ..
make

برنامه‌ی شما ساخته شد. فایل اجرایی‌تان در مسیر کنونی با نام tutorial1 آماده است و می‌توانید با صدا زدن نام آن، اجرایش کنید:

./tutorial1

به پیش

حال می‌توانید به آموزش استفاده از KXmlGuiWindow بروید.