Fyne (программное обеспечение) - Fyne (software)
Скриншот fyne_demo, демонстрирующий множество виджетов | |
Оригинальный автор (ы) | Эндрю Уильямс |
---|---|
Разработчики) | Эндрю Уильямс, Чарльз Дэниэлс, Джейкоб Алсен, Лука Корбо, Стив О'Коннор, Стивен Хьюстон, Стюарт Скотт, Тило Прютц |
изначальный выпуск | 5 февраля 2018 г. |
Стабильный выпуск | 1.4.0 / 1 ноября 2020 г.[1] |
Написано в | Идти |
Операционная система | Linux, Unix-подобный, macOS, Windows, IOS, Android (операционная система) |
Тип | Набор инструментов для виджетов |
Лицензия | Новая лицензия BSD |
Интернет сайт | Файн |
Файн это бесплатно и с открытым исходным кодом кросс-платформенный набор инструментов для виджетов для создания графический пользовательский интерфейс (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.4». github.com. 2020-11-04.
- ^ «Масштабирование и геометрия».
- ^ https://twitter.com/Fyne_io/status/1207621758414704640
- ^ https://twitter.com/Fyne_io/status/1227238218879291398
- ^ "Авторы fyne-io / fyne · GitHub". 2020-02-25.
- ^ https://twitter.com/stephenmhouston/status/1212078602889641984
- ^ «Необычное использование Go: GUI (Go Time # 116)».
- ^ "fyne / CONTRIBUTING.md at master · fyne-io / fyne · GitHub". 2020-02-25.
- ^ "Fyne.io - Трэвис Си".
- ^ "Coshopss.io - История и статистика тестового покрытия".
- ^ «Тщательный процесс, лежащий в основе простоты Файн».
- ^ https://www.youtube.com/watch?v=jbsYrrNiqAs
- ^ «Полная среда рабочего стола для Linux / Unix с использованием Fyne: Fyne-io / Desktop». 2020-02-24.
- ^ "Список приложений Fyne".
- ^ «Отлаженная тема и новые виджеты коллекций озаглавили наш релиз 1.4 · fyne-io / fyne · GitHub». 2020-11-09.
- ^ «Версия 1.3 только на 1000 коммитов позже! · Fyne-io / fyne · GitHub». 2020-11-09.
- ^ «В версии 1.2 появилась поддержка мобильных устройств · fyne-io / fyne · GitHub». 2020-02-25.
- ^ «Релиз v1.1, выпуск функции · fyne-io / fyne · GitHub». 2020-02-25.
- ^ "Выпустите первый крупный релиз Fyne · fyne-io / fyne · GitHub". 2020-02-25.
- ^ «Еженедельный выпуск Golang 299: 14 февраля 2020 г.».
Библиография
- Уильямс, Эндрю (25 февраля 2019 г.), Практическая разработка приложений с графическим интерфейсом на Go (1-е изд.), Packt, ISBN 978-1-78913-841-2
- Шилли, Майк (1 ноября 2019 г.), Linux Magazine 229 - Переходим к делу, Linux New Media