قوائم السياقات

عندما ينقر المستخدم بزر الماوس الأيمن (أو يضغط مع الاستمرار) على كتلة أو مساحة عمل، يتم عرض قائمة سياقات تحتوي على إجراءات إضافية. يمكنك تهيئة قائمة السياق هذه لعرض خيارات إضافية أو لإزالة الخيارات الافتراضية. يدور هذا الدليل حول إضافة خيار مخصص إلى جميع الكتل أو جميع مساحات العمل. إذا كنت تريد تغيير قائمة السياق لنوع واحد فقط من عمليات الحظر، راجِع المعلومات الواردة في صفحة أدوات الحظر المخصّصة.

واجهة برمجة التطبيقات لقائمة السياق

تحتوي الفئة ContextMenuRegistry على طرق للتسجيل وإلغاء التسجيل والحصول على جميع خيارات قائمة السياق. الفئة مفردة، لذا يجب استدعاء الطرق في الكائن Blockly.ContextMenuRegistry.registry بدلاً من إنشاء مثيل جديد بنفسك. تستدعي الفئة ContextMenu الطريقة getContextMenuItems كلما أردت عرض قائمة سياق. إذا كانت الكتلة أو مساحة العمل تتضمن وظيفة customContextMenu، سيتم استدعاءها بعد ذلك لتعديل قائمة الخيارات.

إضافة خيارات مخصصة

يشتمل كل خيار قائمة في السجلّ على عدة خصائص:

  • callback: دالة يتم استدعاءها عند النقر على خيار القائمة.
  • scopeType: تمثّل هذه السمة قيمة من Blockly.ContextMenuRegistry.ScopeType.BLOCK أو Blockly.ContextMenuRegistry.ScopeType.WORKSPACE لعرض هذا الخيار. إذا كان يجب عرض خيار لكل من مساحات العمل والكتل، يجب تسجيله مرة واحدة لكل نوع نطاق.
  • displayText: إما سلسلة، أو HTML، أو دالة تعرض أيًّا منهما. لتحديد النص المعروض في القائمة.
  • preconditionFn: دالة تُرجع أحد enabled أو disabled أو hidden لتحديد ما إذا كان يجب عرض خيار القائمة وطريقة عرضه.
  • weight: رقم يحدّد ترتيب الترتيب للخيار تظهر الخيارات ذات الأوزان الأعلى لاحقًا في قائمة السياق.
  • id: معرّف سلسلة فريد للخيار

سيتم استدعاء كل من الدوال callback وdisplayText (إذا كانت دالة) وpreconditionFn باستخدام كائن Scope يحتوي على معلومات حول مساحة العمل أو الحظر المحدّد الذي يتم النقر عليه. بهذه الطريقة، يمكن أن يشير خيار قائمة السياق إلى خصائص حول مساحة العمل أو الكتلة. على سبيل المثال، يظهر خيار قائمة السياق الذي يسمح للمستخدم بحذف جميع القوالب بـ "حذف 42 حظرًا" إذا كانت مساحة العمل تحتوي على 42 مجموعة. باستخدام preconditionFn، يمكن أن يكون خيار القائمة enabled إذا كانت إحدى سمات الحظر صحيحة أو disabled غير ذلك.

للحصول على مزيد من الأمثلة، يمكنك الاطّلاع على تسجيل خيارات قائمة السياق التلقائية في contextmenu_items.js.

تغيير الخيارات التلقائية أو إزالتها

يمكنك إلغاء تسجيل أي خيار من خلال Blockly.ContextMenuRegistry.registry.unregister(id). تتوفر أرقام تعريف الخيارات التلقائية في contextmenu_items.js.

لتغيير خيار تلقائي، يُرجى طلب الرقم getItem باستخدام رقم التعريف، وتغييره حسب الحاجة.