Skip to content

Latest commit

 

History

History
66 lines (43 loc) · 4.58 KB

hello.md

File metadata and controls

66 lines (43 loc) · 4.58 KB

Первое приложение

Добавить библиотеку в проект

Создайте пустое приложение. Сначала вам нужно импортировать библиотеку goTV:

import (
    "github.com/prospero78/goTV/tv"
)

Инициализация и финализация

Библиотеку необходимо инициализировать перед созданием первого элемента управления. Инициализация создает управляющие элементы и диспетчеры тем, инициализирует библиотеку termbox и подготавливает главный цикл событий. Завершение просто очищает терминал - вызовите его перед выходом из приложения. Если вы забыли вызвать финализацию или приложение выйдет из строя, это обычно приводит к исчезновению курсора, потому что библиотека отключает текстовый курсор при его запуске.

В простом приложении это можно сделать так:

func main() {
    tv.InitLibrary()
    defer tv.DeinitLibrary()
    ... тут ваш код ...
}

Создание окна

Приложение UI без окна бесполезно. Создадим пустое окно. Добавьте следующий код после defer:

view := tv.AddWindow(0, 0, 10, 7, "Привет мир!")

0, 0 - позиция нового окна. Левый верхний угол в нашем случае

10, 7 - минимальная ширина и высота окна

"Привет мир!" - это заголовок окна

Запуск приложения

Последним шагом является запуск основного цикла событий, который отвечает за отображение и взаимодействие всех элементов пользовательского интерфейса. Добавьте эту строку перед последней фигурной скобкой:

tv.MainLoop()

Примечание: этот вызов должен быть последней строкой в функции, потому что код после этой строки не выполняется, пока приложение не будет закрыто.

Добавить дополнительные элементы управления

Пустое окно - это скучно. Давайте создадим кнопку, которая закрывает приложение, когда кто-либо нажимает на нее. Добавьте код между инициализацией библиотеки и вызовом основного цикла событий:

    btnQuit := tv.CreateButton(view, 15, 4, "Hi", 1)
    btnQuit.OnClick(func(ev tv.Event) {
        go tv.Stop()
    })

Первая строка добавляет кнопку в наше окно (первый аргумент - это наше окно). Кнопка имеет минимальную ширину 15 и высоту 4. Текст кнопки - «Hi». А коэффициент масштабирования равен 1, что означает, что размер кнопки будет автоматически изменен при изменении размера ее родителя. Попробуйте изменить размер окна, и кнопка всегда будет заполнять все окна, потому что биттон является единственным дочерним элементом окна.

Вторая строка добавляет обратный вызов события, который запускается, когда кто-то щелкает кнопку мышью или нажимает клавишу «пробел». В обратном вызове мы просто отправляем событие в основной цикл, который приложение завершает. tv.Stop() - щадящий способ выйти из терминального приложения.

Полный код примера можно найти в helloworld.go