title: واجهاتُ SadUI description: أريدُ أن أبنيَ واجهةَ استعمالٍ بلغة ص.
واجهاتُ SadUI
شجرةُ واجهةٍ واحدة · مُصيِّرانِ حيّان · مولِّداتُ مصدر
أريدُ أن أبنيَ واجهةَ استعمالٍ بلغة ص.
الوعد: نافذةٌ فيها زرٌّ يستجيبُ للنقرِ على جهازِك — بشجرةِ واجهةٍ واحدةٍ تُوصَفُ مرّةً وتُصيَّرُ على أكثرَ من مخرَج.
يفترضُ قبلَه: جديدٌ على لغة ص
الصفحات
درس
يمشي بك خطوةً خطوةً إلى أوّلِ نجاح
كيف تفعل
وصفةٌ لمهمّةٍ تعرفُ اسمَها سلفًا
شرح
لماذا صُمّمَ هكذا وما حدودُه
مرجع
ما تعودُ إليه لتتحقّق — لا لتتعلّم
ما يقفُ خلفَ هذا المجال
كلُّ سطرٍ معرّفٌ يُحَلُّ في مصدرِ الحقيقة لا نثرَ وعدٍ — والبناءُ يحمرُّ إن لم يُحَلَّ أو كان مؤجَّلًا.
| النوع | المعرّف | ملحوظة |
|---|---|---|
| فضاء أسماء | UICore | نواةُ التطبيقِ والتنقّلِ والحالة — تشغيل_تطبيق · انتقل · عودة |
| فضاء أسماء | UIWidgets | العناصر — نص_عنصر · زر · صورة · أيقونة … |
| فضاء أسماء | CompilerUi | بناءُ الشجرةِ وتعديلُها — أضف_ابن · أزل_ابن · امسح_الأبناء |
| دالّة مدمَجة | RUN_APP | نقطةُ الدخولِ الوحيدةُ إلى حلقةِ الأحداث |
المخارج
| المخرج | النوع | الحال | نقطةُ الدخول |
|---|---|---|---|
| سطحُ المكتب (SDL2) | مُصيِّرٌ حيّ | live | تشغيل_تطبيق(الجذر) |
| بلا نظامِ تشغيل (إطارُ بكسلٍ مباشر) | مُصيِّرٌ حيّ | live | تشغيل_تطبيق(الجذر) |
| مولِّدُ HTML | مولِّدُ مصدر | live | — |
| مولِّدُ Jetpack Compose | مولِّدُ مصدر | live | — |
| مولِّدُ SwiftUI | مولِّدُ مصدر | live | — |
| مولِّدُ AppKit | مولِّدُ مصدر | deferred | — |
الحدودُ المُعلَنة
الحدُّ ههنا علامةُ صدقٍ لا علامةُ نقص: ما لا يُعلَنُ يُكتشَفُ في منتصفِ العمل.
| الحدّ | الشاهد | ما يلزمُ لرفعِه |
|---|---|---|
| لا مجموعةَ بذورٍ سلوكيّةٍ للواجهةِ في شجرةِ الاختبارات. فالمخرَجُ المرئيُّ غيرُ محروسٍ بانحدارٍ آليّ، ويُقاسُ بالعينِ لا ببوّابة. | tests/behavior | مجموعةُ بذورٍ تُصيِّرُ شجرةً وتُقارِنُ المخرَجَ (طباعة_شجرة تعطي نقطةَ ارتساءٍ نصّيّةً قابلةً للمقارنةِ بلا صورة). |
| طبقةُ المنصّةِ (UIPlatform) مُعلَنةٌ ٤٣ مدخلًا و**اثنانِ منها فقط مستقرّان**؛ فما تحتَ العنصرِ من نوافذَ ومدخلاتٍ ودورةِ حياةٍ دَينٌ مُعلَنٌ لا قدرةٌ جاهزة. | language-truth/builtins | وصلُ مدخلاتِ UIPlatform بالمترجِّمِ ورفعُ intent عنها. |
| مولِّدُ المصدرِ يُخرِجُ نصَّ شفرةٍ لمنصّةٍ أخرى — ولا يُشغِّلُ ولا يرسمُ ولا يُدير حلقةَ أحداث. فالبناءُ والتشغيلُ يبقيانِ على أدواتِ تلك المنصّة. | language-truth/ui_nodes.yaml | مُصيِّرٌ حيٌّ لتلك المنصّةِ يُترجَمُ ويُبنى ويُشغَّلُ للتحقّق — لا يُدَّعى إنجازُه بلا ذلك. |
| `ui_nodes.yaml` يُعلِنُ مُصيِّراتِ الويبِ وأندرويدَ وiOS `enabled: true`، ومصدرُ الحقيقةِ **ليس معصومًا** في هذا الحقل: قِيسَ أنّ الإعلانَ لا يعني أنّ الخلفيّةَ تُترجَم. ولذلك لا تُشتَقُّ درجةُ أيِّ مجالٍ من إعلاناتِ التفعيل. | language-truth/ui_nodes.yaml | حارسٌ يقيسُ بناءَ كلِّ خلفيّةٍ مُعلَنةٍ ويُحمِّرُ إن أُعلِنَت ولم تُترجَمْ (نظيرُه قائمٌ: scripts/codegen/check_ui_render_completeness.py). |