Skip to content

أوّلُ تطبيقٍ بنافذةٍ وزرّ

مسارٌ واحدٌ مضمون: من ملفٍّ فارغٍ إلى ملفٍّ تنفيذيٍّ يفتحُ نافذةً على سطحِ مكتبِك. وهذا الدرسُ يُتِمُّ أوّلَ نافذةٍ وزرٍّ يستجيب من محورِ SadUI ولا يُعيدُه: هناك شجرةُ الواجهةِ وأحداثُها، وههنا ما يميّزُ سطحَ المكتب — الثنائيُّ وما يُشحَنُ معه.

ما يلزمُك قبلَه

مترجِمُ sad-build مبنيًّا — البناءُ والتشغيل. ولا يلزمُ استيرادُ وحدةٍ: مدمَجاتُ الواجهةِ متاحةٌ بلا استورد.

١ · اكتُبِ الملفّ

احفَظْ هذا في مفكرتي.ص بمحرِّرٍ يحفظُ UTF-8:

sad
# تطبيقُ سطحِ مكتبٍ أدنى — لوحةٌ فيها عنوانٌ وحقلٌ وزرّ

متغير الحالة = نص_عنصر("جاهز").حجم_خط(18).لون("#9FB3C8")

دالة عند_الحفظ()
    عين_النص(الحالة، "حُفِظ")
    تحديث_حالة()
نهاية

متغير الجذر = عمود(
    نص_عنصر("مُفكِّرتي").حجم_خط(32).لون("#FFFFFF")،
    حقل_نص("اكتُبْ ملحوظةً…")،
    صف(
        زر("احفَظْ").عند_النقر(عند_الحفظ)،
        الحالة
    ).تباعد(16)
)
    .لون_خلفية("#0B1A2E")
    .حشوة(32)
    .تباعد(18)

طباعة_شجرة(الجذر)
تشغيل_تطبيق(الجذر)

تشغيل_تطبيق(الجذر) هي نقطةُ الدخولِ الوحيدةُ إلى حلقةِ الأحداث (RUN_APP في مصدرِ الحقيقة): تفتحُ النافذةَ وترسمُ وتُرسِلُ الأحداثَ ولا تعود.

٢ · ترجِمْ

bash
sad-build مفكرتي.ص -o مفكرتي.exe

والمترجِمُ يضعُ SDL2.dll بجوارِ الثنائيِّ من تلقاءِ نفسِه. مقيسٌ: مجلَّدٌ فيه الملفُّ المصدريُّ وحدَه صارَ بعدَ الترجمة:

2500096  SDL2.dll
 475136  مفكرتي.exe
    751  مفكرتي.ص

فلا خطوةَ نسخٍ يدويّة. وتفصيلُ ما يُشحَنُ في كيف تُحزِّمُ التطبيقَ وتوزّعُه.

٣ · شغِّلْ

bash
./مفكرتي.exe

فتُطبَعُ الشجرةُ أوّلًا — وهذا مخرَجٌ مقيسٌ حرفًا بحرف:

عمود(لون_خلفية: "#0B1A2E", حشوة: 32, تباعد: 18)
  نص_عنصر(محتوى: "مُفكِّرتي", حجم_خط: 32, لون: "#FFFFFF")
  حقل_نص(تلميح: "اكتُبْ ملحوظةً…")
  صف(تباعد: 16)
    زر(عنوان: "احفَظْ") [عند_النقر]
    نص_عنصر(محتوى: "جاهز", حجم_خط: 18, لون: "#9FB3C8")

ثمّ تُفتَحُ النافذةُ ويُطبَعُ سطرُ التأكيد:

✓ تم إنشاء النافذة: تطبيق ص [800x600]

ولا يعودُ البرنامجُ بعدَه: هو في حلقةِ الأحداث. أوقِفْه بـCtrl+C أو بإغلاقِ النافذة. هذا هو النجاحُ الأوّل.

لماذا طباعة_شجرة في درسِ نافذة؟

لأنّها نقطةُ الارتساءِ الوحيدةُ التي تُقاسُ بلا عين. النافذةُ تُرى ولا تُقارَن؛ ونصُّ الشجرةِ يُقارَنُ حرفًا بحرف. والوسمُ [عند_النقر] فيه برهانٌ نصّيٌّ على أنّ المعالِجَ سُجِّلَ على العقدةِ لا أنّه كُتِبَ فحسب.

حدٌّ مُعلَنٌ يخصُّ هذا الدرس

فتحُ النافذةِ وطباعةُ الشجرةِ مقيسان. أمّا أثرُ النقرِ المرئيُّ فلم يُقَسْ ههنا: يلزمُه نقرةٌ بشريّةٌ على جهازٍ ذي شاشة. ولا بذرةَ واحدةً في tests/behavior تستدعي تشغيل_تطبيق، فالمخرَجُ المرئيُّ غيرُ محروسٍ بانحدارٍ آليّ — حدٌّ مُعلَنٌ في حدودِ سطحِ المكتب لا اكتشافٌ ههنا.

ما بعدَ ذلك

مُرخَّص بموجب رخصة MIT