GoSurface — القشرة
النوافذ المنبثقة والأوراق والقوائم المنسدلة كلها تستعمل هذه الواحدة. وهي تتكفّل بالمنطقة الآمنة ولوحة المفاتيح الافتراضية، وبالرأس والتذييل الثابتين، وبالجسم المتمرر، وبتحديد النافذة الأعلى، واستعادة التركيز، وملكية زر الرجوع، وتغيير الحجم بالسحب.
| الموضع | كيف يبدو | يُستعمل لـ |
|---|---|---|
CENTER | بطاقة في الوسط | التأكيدات، الإعدادات |
BOTTOM | ورقة تصعد من الأسفل | القوائم، صفحات الإدارة |
ANCHOR | بطاقة مثبّتة بجانب عنصر تحكم | القوائم المنسدلة، قوائم السياق |
close_requested — بالإخفاء أو بالتحرير — مسؤولية
الشاشة المالكة، لأن القشرة لا تستطيع أن تعرف لماذا تُغلَق (حفظ وإغلاق، أم تجاهل).
GoSheet — صفحة من الأسفل
var sheet := GoSheet.new()
add_child(sheet)
sheet.open("الحقيبة")
sheet.toolbar().add_child(GoStyle.line_edit("بحث…"))
sheet.toolbar().visible = true
sheet.footer().add_child(GoStyle.button("إغلاق", sheet.close, GoStyle.Tone.PRIMARY))
sheet.footer().visible = true
هي تملك CanvasLayer خاصًّا بها، فتجلس فوق HUD بلا تردّد. وopen() يفرّغ
الجسم ويطفئ زر الرجوع والصفوف الثابتة — فالزر الميت على شاشة لا مكان للرجوع منها يُقرأ على أنه عطل.
GoDialogs — تأكيدات تنتظرها بـ await
if await dialogs.confirm("حذف الحفظ", "لا يمكن التراجع عن هذا."):
delete_save()
confirm(title, body, ok_text, cancel_text, extra, args, destructive) — كل ما بعد المتن
اختياري، وalert() يعمل بالطريقة نفسها بزر واحد. اضبط destructive لما لا رجعة
فيه: فيصير زر التأكيد زرّ GoStyle.Tone.DANGER_SOLID المصمت. ففي السمة الفاتحة يضطر نص
الخطر المصبوغ إلى الدكانة حتى يُقرأ كنصّ أسود؛ أما الزر المصمت فيحتفظ بنص أبيض على أحمر. وتُعاد النبرة
عند كل استدعاء لأن النافذة نفسها يُعاد استعمالها، واستدعاء confirm() ثانٍ بينما الأول
مفتوح يعيد false فورًا. أما confirm_key() فيأخذ مفاتيح ترجمة.
ترتيب الأزرار. action_layout هو VERTICAL افتراضيًا (وهو الآمن مع
الترجمات الطويلة)، وHORIZONTAL لصفّ واحد يأخذ كل زر فيه نصف العرض، أو AUTO
الذي لا يستعمل صفًّا واحدًا إلا حين يتسع النصّان في نصف البطاقة على سطر واحد، وإلا رصّهما فوق بعضهما.
وaction_gap هو المسافة بين الأزرار، وbody_gap المسافة فوقها — اجعلها أوسع من
مسافة الأزرار ليُقرأ السؤال والاختيار جزأين منفصلين. ولمربع حوار واحد فقط، استدعِ
set_next_action_layout() قبل فتحه. والصفّ يُبنى عند أول فتح لمربع حوار، فلا يضيف
GoDialogs المحمَّل تلقائيًا شيئًا عند الإقلاع.
GoForm — نموذج محدود العرض
GoScroll — تمرير باللمس
ضع شيئًا واحدًا بداخله. أما الرؤوس وصفوف الأزرار فمكانها خارجه — إذ لا يصحّ أن تدفعها قائمة
طويلة خارج الشاشة. وuse_panel_edge() ينقل شريط التمرير إلى حشوة البطاقة القائمة
بينما يحتفظ المحتوى بإزاحته.