Skip to content

Типы страниц

Tuner.Page является составным элементом всего интерфейса Тюнера.

Существует четыре типа страниц: верхнеуровневые (top level), обычная подстраница (regular subpage), внутренняя подстраница (internal subpage) и стековая страница (stack page).

Верхнеуровневые страницы

Интерфейс состоит из страниц верхнего уровня, которые представляют собой строки на боковой панели.

blp
using Gtk 4.0;
using Tuner 1;

Tuner.Page {
    title: _("Row 1");
}

Tuner.Page {
    title: _("Row 2");
}

Tuner.Page {
    title: _("Row 3");
}
Результат

Несколько верхнеуровневых страниц в Тюнере

Обычные подстраницы

Обычные подстраницы — это дочерние страницы верхнеуровневых страниц или других подстраниц.

Они имеют тип subpage.

blp
using Gtk 4.0;
using Tuner 1;

Tuner.Page {
    title: _("Level 1");

    [subpage]
    Tuner.Page {
        title: _("Level 2");

        [subpage]
        Tuner.Page {
            title: _("Level 2");
        }
    }
}
Результат

Первый уровень

Второй уровень

Третий уровень

Внутренние подстраницы

Внутренние подстраницы могут быть добавлены на любую верхнеуровневую страницу или на отдельную подстраницу.

Они представляют собой Adw.NavigationPage в плагине Панельном режиме (Panel). Вы можете перейти на внутреннюю страницу, используя Tuner.Route или действием navigation.push.

blp
using Gtk 4.0;
using Tuner 1;

Tuner.Page {
    title: _("Internal example");

    Tuner.Group {

        Tuner.Route {
            title: _("Go to internal page");
            tag: "internal-tag";
        }
    }

    // Внутренние страницы не имеют типа!
    Tuner.Page {
        title: _("Internal page");
        tag: "internal-tag"; // Tag is required to access internal page
    }
}
Result

Страница

Внутренняя подстраница

Стековые подстраницы

Стековые страницы действуют почти так же, как внутренние подстраницы. Страница, содержащая стековые страницы, не может содержать группы (они будут проигнорированы). Кроме того, при создании интерфейса будет присвоено свойство stack, поэтому необходимо использовать bind.

blp
using Gtk 4.0;
using Tuner 1;
using Adw 1;

Tuner.Page stack_page_id {
    title: _("Stack");

    [title]
    Adw.ViewSwitcher {
        stack: bind stack_page_id.stack;
        policy: wide;
    }

    [stack]
    Tuner.Page {
        title: _("Stack page 1");
        icon-name: "gnome-power-manager-symbolic";

        Tuner.Group {

            Tuner.Switch {
                title: _("Switch from page 1");
                binding: Tuner.Setting {};
            }
        }
    }

    [stack]
    Tuner.Page {
        title: _("Stack page 2");
        icon-name: "help-info-symbolic";

        Tuner.Group {

            Tuner.Switch {
                title: _("Switch from page 2");
                binding: Tuner.Setting {};
            }
        }
    }
}
Result

Первая стековая страница

Вторая стековая страница

Опубликовано под лицензией GPL-3.0+. Содержание доступно по лицензии CC BY-SA 4.0, если не указано иное.