Fyne (программное обеспечение) - Fyne (software)

Файн
Набор инструментов Fyne logo.svg
Скриншот fyne_demo, демонстрирующий множество виджетов
Скриншот fyne_demo, демонстрирующий множество виджетов
Оригинальный автор (ы)Эндрю Уильямс
Разработчики)Эндрю Уильямс, Чарльз Дэниэлс, Джейкоб Алсен, Лука Корбо, Стив О'Коннор, Стивен Хьюстон, Стюарт Скотт, Тило Прютц
изначальный выпуск5 февраля 2018 г.; 2 года назад (2018-02-05)
Стабильный выпуск
1.4.0 / 1 ноября 2020 г.; 27 дней назад (2020-11-01)[1]
Написано вИдти
Операционная системаLinux, Unix-подобный, macOS, Windows, IOS, Android (операционная система)
ТипНабор инструментов для виджетов
ЛицензияНовая лицензия BSD
Интернет сайтФайн.io

Файн это бесплатно и с открытым исходным кодом кросс-платформенный набор инструментов для виджетов для создания графический пользовательский интерфейс (GUI) на настольных и мобильных платформах. Он вдохновлен принципами Материальный дизайн для создания приложений, которые выглядят и работают единообразно на всех платформах.[2] Он лицензирован в соответствии с условиями Лицензия BSD с 3 пунктами, поддерживая создание свободный и проприетарный Приложения. В декабре 2019 года Fyne стал самым популярным набором инструментов с графическим интерфейсом для Go по данным GitHub star count[3] а в начале февраля 2020 года он занимал первое место в рейтинге трендов GitHub.[4]

Разработка

Fyne в настоящее время разрабатывается командой добровольцев и поддерживается около 40 участниками.[5] Члены этой группы также работают над проектом FyneDesk, чтобы создать новый Linux среда рабочего стола.[6]

Инструментарий Fyne написан в основном на Идти.[7] Команда фокусируется на чистых API и следует принципам Чистый код поддерживать ремонтопригодность проекта.[8] Все проекты Fyne постоянно тестируются для проверки правильности, стабильности, а также форматирования и документации.[9][10]

Пример

Код, необходимый для простого приложения "Hello World", минимален, а именно:

упаковка главныйимпорт (	"fyne.io/fyne/app"	"fyne.io/fyne/widget")func главный() {        а := приложение.Новый()        ш := а.Новое окно("Привет")        Привет := виджет.NewLabel("Привет, Файн!")        ш.SetContent(виджет.NewVBox(                Привет,                виджет.NewButton("Здравствуй!", func() {                        Привет.SetText("Добро пожаловать :)")                }),        ))        ш.ShowAndRun()}

Для создания этого приложения вам понадобится язык Go и C установлен компилятор, а также графический драйвер, поддерживающий OpenGL.Его можно собрать и запустить с помощью команды:$ go, запустите main.go

Дизайн

Разработка Fyne API и компонентов пользовательского интерфейса тщательно продумана для обеспечения простоты.[11] Инструментарий Fyne состоит из нескольких уровней, каждый из которых находится в отдельных пакетах. Известные слои включают:[12]

API

API, или интерфейс прикладного программирования, представляет собой интерфейс или протокол, который позволяет осуществлять обмен данными между различными частями программного обеспечения. У Fyne есть самодокументирующийся API, который также можно расширять, что позволяет каждому разработчику создавать собственные инструменты, уникальные для своего проекта, которые будут взаимодействовать с самим Fyne.

Векторная графика

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

Иерархия

Холст

Canvas содержит все содержимое окна, от полноэкранного до группы CanvasObjects.

CanvasObject

CanvasObjects - это то, что на самом деле отображается на экране, такое как Text, Rectangle, Line. Объекты хранят информацию о размере, положении и цвете для процесса рендеринга.

Контейнер

Контейнеры - это группы CanvasObjects, каждый контейнер может указывать макет, который будет содержать размер и положение его дочерних компонентов. Макеты помогают разработчику упорядочивать компоненты в соответствии с размером контейнера или окна с помощью нескольких типов макетов, включая границу, центр и сетку.

Виджет

Все компоненты окна в CanvasObject - это виджеты, содержащие стандартные элементы пользовательского интерфейса. Виджеты Fyne включают в себя, помимо прочего, основы пользовательского интерфейса, такие как кнопка, проверка, форма, гиперссылка, метка, радио, выбор и панель инструментов, а также виджеты-контейнеры, такие как AppTabs и Split. Начиная с версии 1.4 есть дополнительные виджеты сбора, которые обеспечивают высокопроизводительное представление больших данных в виде списка, таблицы или дерева. Все встроенные виджеты пользовательского интерфейса гарантируют, что стандартные аспекты интерактивности графического интерфейса пользователя действуют предсказуемым и ожидаемым образом во всех приложениях. Это помогает улучшить качество программ, помогая программисту, избавляя их от необходимости создавать эти инструменты самостоятельно.

Пакеты

Все компоненты Fyne разбиты на пакеты, а затем подключены через API для создания окончательного приложения с графическим интерфейсом. Помимо пакетов холста, макета и виджетов, известные пакеты включают:

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

Использовать

Самый крупный проект, в настоящее время использующий инструментарий Fyne, - это проект FyneDesk, полная среда рабочего стола для Linux.[13]

Есть много других приложений, которые создаются с использованием этого инструментария, те, которые имеют открытый исходный код, можно найти в списке приложений.[14] сайт, управляемый проектом.

Многие компании используют инструментарий Fyne для быстрого добавления графического пользовательского интерфейса к инструментам командной строки, которые они уже создали с помощью Go.

Релизы

  • 1.4 - Виджеты коллекций и обновление темы[15]
    • Добавлены виджеты Card, FileItem, List, Separator, Table и Tree.
    • Диалог ColorPicker
    • Пользовательский выбор основного цвета
    • Добавить проверку ввода
  • 1.3 - Файловые диалоги[16]
    • Диалог открытия и сохранения файла
    • Добавлена ​​поддержка уведомлений
    • Добавлены виджеты Accordion, TextGrid и SplitContainer.
    • Поддержка переноса текста
    • Тип URI и обработчики для межплатформенного доступа к данным
  • 1.2 - Мобильная поддержка[17]
    • Добавлена ​​поддержка мобильных устройств (iOS и Android)
    • Добавлена ​​поддержка устройств Raspberry Pi (и других устройств OpenGL ES).
    • BaseWidget введен для упрощения создания пользовательских виджетов
  • 1.1 - Выпуск функции[18]
    • MenuBar, PopUpMenu, Добавлены виджеты Select
    • Добавлен примитив градиента и добавлены тени
    • Добавлена ​​поддержка выделения текста
    • Поддержка отключения виджетов
    • Tab / Shift-Tab введены для поворота элементов в фокусе
  • 1.0 - Первый крупный релиз[19]
    • Введен API холста для рисования примитивов.
    • Введен API виджетов, включая Box, Button, Check, Entry, Form, Group, Hyperlink, Icon, Label, ProgressBar, Radio, Scroller, TabContainer и Toolbar.
    • Светлые и темные темы для пользовательского интерфейса
    • Поддержка операционных систем Linux, macOS и Windows

Критика

В выпуске 299 Golang Weekly отмечается новая поддержка мобильных устройств в проекте Fyne, но предполагается, что эстетика дизайна меньше материального дизайна и больше «Linux-y».[20]

Рекомендации

  1. ^ «Отточенная тема и новые виджеты коллекций означают наш релиз 1.4». github.com. 2020-11-04.
  2. ^ «Масштабирование и геометрия».
  3. ^ https://twitter.com/Fyne_io/status/1207621758414704640
  4. ^ https://twitter.com/Fyne_io/status/1227238218879291398
  5. ^ "Авторы fyne-io / fyne · GitHub". 2020-02-25.
  6. ^ https://twitter.com/stephenmhouston/status/1212078602889641984
  7. ^ «Необычное использование Go: GUI (Go Time # 116)».
  8. ^ "fyne / CONTRIBUTING.md at master · fyne-io / fyne · GitHub". 2020-02-25.
  9. ^ "Fyne.io - Трэвис Си".
  10. ^ "Coshopss.io - История и статистика тестового покрытия".
  11. ^ «Тщательный процесс, лежащий в основе простоты Файн».
  12. ^ https://www.youtube.com/watch?v=jbsYrrNiqAs
  13. ^ «Полная среда рабочего стола для Linux / Unix с использованием Fyne: Fyne-io / Desktop». 2020-02-24.
  14. ^ "Список приложений Fyne".
  15. ^ «Отлаженная тема и новые виджеты коллекций озаглавили наш релиз 1.4 · fyne-io / fyne · GitHub». 2020-11-09.
  16. ^ «Версия 1.3 только на 1000 коммитов позже! · Fyne-io / fyne · GitHub». 2020-11-09.
  17. ^ «В версии 1.2 появилась поддержка мобильных устройств · fyne-io / fyne · GitHub». 2020-02-25.
  18. ^ «Релиз v1.1, выпуск функции · fyne-io / fyne · GitHub». 2020-02-25.
  19. ^ "Выпустите первый крупный релиз Fyne · fyne-io / fyne · GitHub". 2020-02-25.
  20. ^ «Еженедельный выпуск Golang 299: 14 февраля 2020 г.».

Библиография

внешняя ссылка