13.1.13.4.1. الحاويات#

لا تحمل الحاويات قيمة خاصة بها -- بل تنظّم عناصر التحكم الأخرى. تمتد كل واحدة على كامل عرض النموذج، وتُبنى عناصر التحكم المدرجة داخلها كنموذج مستقل بذاته. وهناك نوعان: group يرسم صندوقًا بعنوان، و*tabs* يرسم شريط علامات تبويب.

تقبل جميع عناصر التحكم أيضاً المفاتيح المشتركة ( name ، label ، tooltip ، enabled )؛ انظر نظرة عامة .

13.1.13.4.1.1. group#

صندوق بعنوان يحيط بمجموعة من عناصر التحكم. ويمكن اختياريًا جعله checkable، مما يحوّل العنوان إلى مفتاح تبديل لكل ما بداخله.

{
  "type": "group",
  "title": "Wi-Fi",
  "checkable": true,
  "name": "wifi_enabled",
  "value": true,
  "controls": [
    { "type": "lineedit", "name": "ssid", "label": "SSID" },
    { "type": "lineedit", "name": "password", "label": "Password", "password": true }
  ]
}

الوسائط:

  • title (سلسلة نصية) -- العنوان المعروض على الصندوق.

  • checkable (قيمة منطقية، الافتراضي false) -- عندما تكون true، يحمل العنوان مربع اختيار يُفعّل أو يُعطّل كل عنصر تحكم داخل الصندوق، وتُحفظ حالته الخاصة (تشغيل/إيقاف).

  • value (قيمة منطقية، الافتراضي true) -- الحالة الأولية لمربع اختيار العنوان ذاك. وله معنى فقط عندما تكون checkable بقيمة true.

  • controls (مصفوفة) -- عناصر التحكم المعروضة داخل الصندوق.

يحفظ: قيمة منطقية (مربع اختيار العنوان) عندما تكون checkable بقيمة true؛ أما المجموعة العادية فلا تحفظ شيئًا خاصًا بها -- إذ تحفظ فقط عناصر التحكم بداخلها قيمها.

13.1.13.4.1.2. tabs#

شريط علامات تبويب. كل علامة تبويب هي صفحة لها قائمتها الخاصة من عناصر التحكم، لذا يمكن تقسيم نموذج طويل عبر Camera و*Network* و*System* وهكذا.

{
  "type": "tabs",
  "tab_position": "north",
  "tabs": [
    {
      "title": "Camera",
      "tooltip": "Sensor settings",
      "controls": [
        { "type": "slider", "name": "gain", "label": "Gain" }
      ]
    },
    {
      "title": "Network",
      "controls": [
        { "type": "lineedit", "name": "hostname", "label": "Hostname" }
      ]
    }
  ]
}

الوسائط:

  • tab_position (سلسلة نصية، الافتراضي "north") -- الحافة التي يقع عليها شريط علامات التبويب: "north" أو "south" أو "west" أو "east".

  • tabs (مصفوفة) -- صفحات علامات التبويب، بالترتيب. كل صفحة كائن يحتوي على:

    • title (سلسلة نصية) -- تسمية علامة التبويب.

    • tooltip (سلسلة نصية) -- نص التلميح عند تمرير المؤشر فوق علامة التبويب.

    • controls (مصفوفة) -- عناصر التحكم المعروضة على تلك الصفحة.

يحفظ: لا شيء خاص به؛ تحفظ عناصر التحكم على كل صفحة قيمها الخاصة.

13.1.13.4.1.3. التداخل#

يمكن وضع أي عنصر تحكم داخل أي حاوية، وإلى أي عمق. يمكن أن يحتوي group على tabs، ويمكن أن تحتوي صفحة علامة تبويب على صناديق group، ويمكن تداخل المجموعات داخل المجموعات. تأخذ كل مصفوفة controls -- سواء أكانت في المستوى الأعلى، أم في مجموعة، أم في صفحة علامة تبويب -- كائنات التحكم نفسها، لذا تنطبق القواعد الواردة في هذه الصفحات بالطريقة نفسها على كل مستوى.

من الترتيبات الشائعة وجود group قابل للتحديد متداخل داخل علامة تبويب: تحمل علامة التبويب ميزة، ويشغّل مربع اختيار المجموعة الميزة أو يوقفها، وتضبطها عناصر التحكم بداخلها.