Fyne (소프트웨어)

Fyne (software)
파인
Fyne toolkit logo.svg
Fyne demo-1.4-dark.png
많은 위젯을 보여주는 fyne_demo 스크린샷
원저작자앤드류 윌리엄스
개발자Andrew Williams, Cedric Bail, Changkun Ou, Charles Daniels, Jacob Alzén, Luca Corbo, Pablo Fuentes, Stephen Houstone, Stuart Scott, Tilo Prütz
초기 릴리즈2018년 2월 5일, 4년 전(2018-02-05)
안정된 릴리스
2.1.4 / 2022년 3월 17일, 4개월 전(2022-03-17)[1]
기입처가세요
운영 체제Linux, Unix라이크, macOS, Windows, IOS, Android (운영체제)
유형위젯 툴킷
면허증.새로운 BSD 라이선스
웹 사이트fyne.io

Fyne은 데스크톱 및 모바일 플랫폼에서 그래픽 사용자 인터페이스(GUI)를 만들기 위한 무료 오픈 소스 크로스 플랫폼 위젯 툴킷입니다.Fyne는 OpenGL을 사용하여 크로스 플랫폼 그래픽을 제공합니다.재료 설계 원칙에서 영감을 받아 모든 [2]플랫폼에서 일관되게 외관 및 동작하는 응용 프로그램을 만듭니다.3조항의 BSD 라이선스 조건에 따라 라이선스가 부여되어 자유롭고 독점적어플리케이션의 작성을 지원합니다.2019년 12월 Fyne은 GitHub 스타카운트로[3] Go에서 가장 인기 있는 GUI 툴킷이 되었고, 2020년 2월 초에는 GitHub 트렌드 [4]순위 1위 프로젝트로 트렌드화 되었다.

발전

Fyne는 현재 자원봉사자 팀에 의해 개발되어 약 40명의 [5]기부자가 지원하고 있습니다.또한 이 그룹의 구성원은 FyneDesk 프로젝트에서 새로운 Linux 데스크톱 [6]환경을 구축합니다.

Fyne 툴킷은 주로 [7]Go로 작성됩니다.팀은 클린 API에 중점을 두고 클린 코드의 원칙을 준수하여 [8]프로젝트의 유지관리성을 유지합니다.모든 Fyne 프로젝트는 정확성, 안정성 및 서식 및 [9][10]문서화를 확인하기 위해 지속적으로 테스트됩니다.

간단한 "Hello World" 응용 프로그램에 필요한 코드는 다음과 같습니다.

패키지 주된  수입품 (  "fyne.io/fyne/v2/app"  "fyne.io/fyne/v2/container"  "fyne.io/fyne/v2/widget" )  기능하다 주된() {         a := 앱..신규()         w := a.뉴윈도("안녕하세요")          안녕 := 위젯.새 라벨("안녕하세요 Fyne!")         w.설정 내용(컨테이너..새로운 V박스(                 안녕,                 위젯.새 단추("안녕!", 기능하다() {                         안녕.설정 텍스트("어서오세요:")                 }),         ))          w.Show And Run() } 

이 애플리케이션을 구축하려면 OpenGL을 지원하는 그래픽 드라이버뿐만 아니라 Go 언어와 C 컴파일러가 설치되어 있어야 합니다.다음 명령을 사용하여 구축 및 실행할 수 있습니다. $ go run main.go

설계.

Fyne API와 사용자 인터페이스 컴포넌트의 설계는 [11]심플함을 보장하기 위해 신중한 프로세스를 따릅니다.Fyne 툴킷은 다양한 레이어로 구성되어 있으며, 각각 별도의 패키지로 구성되어 있습니다.눈에 띄는 레이어는 다음과 같습니다.[12]

API

API 또는 Application Programming Interface는 소프트웨어의 서로 다른 부분 간의 통신을 허용하는 인터페이스 또는 프로토콜입니다.Fyne은 확장성이 뛰어난 자체 문서화 API를 가지고 있어 각 개발자가 Fyne 자체와 맞물리는 프로젝트 고유의 커스텀 툴을 작성할 수 있습니다.

벡터 그래픽스

벡터 그래픽을 사용하여 UI를 그릴 수 있으므로 이미지 충실도를 잃지 않고 다양한 디바이스와 디스플레이 크기에 적응할 수 있습니다.이를 통해 프로그래머는 UI를 한 번만 생성하면 모든 기기에서 예상대로 표시됩니다.

계층

캔버스

캔버스에는 전체 화면에서 캔버스 개체 그룹에 이르는 창의 모든 내용이 포함됩니다.

캔버스 오브젝트

캔버스 오브젝트는 텍스트, 직사각형, 선과 같이 실제로 화면에 렌더링되는 것입니다.오브젝트는 렌더링 프로세스의 크기, 위치 및 색상 정보를 저장합니다.

컨테이너.

컨테이너는 CanvasObjects 그룹이며, 각 컨테이너는 하위 구성 요소의 크기 및 위치를 포함할 레이아웃을 지정할 수 있습니다.레이아웃은 개발자가 테두리, 중심 및 그리드를 포함한 여러 레이아웃 유형을 사용하여 컨테이너 또는 창 크기에 따라 구성요소를 배열하는 데 도움이 됩니다.

위젯

CanvasObject에서 창의 모든 구성 요소는 표준 사용자 인터페이스 요소를 포함하는 위젯입니다.Fyne 위젯에는 버튼, 체크, 양식, 하이퍼링크, 라벨, 라디오, 선택, 툴바 등의 UI 기본과 AppTabs, Split 등의 컨테이너 위젯이 포함됩니다.1.4 이후로는 목록, 테이블 또는 트리 보기에서 대용량 데이터를 고성능으로 표시하는 추가 컬렉션 위젯이 있습니다.내장된 모든 UI 위젯을 통해 GUI 인터랙티브의 표준적인 측면이 애플리케이션 전체에서 예측 가능하고 예상된 방식으로 작동하도록 보장합니다.이를 통해 프로그래머가 직접 도구를 만들 필요가 없어짐으로써 프로그램의 품질을 향상시키고 프로그래머를 지원할 수 있습니다.

패키지

Fyne의 모든 컴포넌트를 패키지로 분할한 후 API를 통해 연결하여 최종 GUI 애플리케이션을 만듭니다.캔버스, 레이아웃 및 위젯 패키지 외에도 다음과 같은 패키지가 있습니다.

  • 응용 프로그램이 실행 중인 장치의 유형을 파악하고 해당 장치에서 코드가 예상대로 실행되도록 하는 앱의 주요 진입 지점인 앱 패키지입니다.
  • 테스트 패키지에서는 테스트에 의한 개발을 가능하게 하여 GUI 자체의 기능을 검증할 수 있습니다.

사용하다

현재 Fyne 툴킷을 사용하고 있는 가장 큰 프로젝트는 [13]Linux용 완전한 데스크톱 환경인 FyneDesk 프로젝트입니다.

툴킷을 사용하여 빌드되는 어플리케이션은 그 밖에도 많이 있습니다.오픈 소스인 어플리케이션은 프로젝트에서 관리하는 어플리케이션[14] 목록 웹 사이트에서 확인할 수 있습니다.

많은 기업이 [citation needed]Fyne 툴킷을 사용하여 이미 Go를 사용하여 구축한 명령줄 도구에 그래픽 사용자 인터페이스를 빠르게 추가하고 있습니다.

릴리스

  • 2.1 - RichText, DocTab 및 문서 저장소[15]
    • DocTabs, RichText 및 CheckGroup 위젯 추가
    • 새로운 라이프 사이클 및 문서 스토리지 API
    • 표준 저장소에 http 및 https 포함
    • FyneApp.toml 메타데이터 파일을 추가하여 빌드 명령 간소화
    • 메뉴, 팝업 및 버튼 키보드 지원 추가
  • 2.0 - 데이터 바인딩, 스토리지 저장소 및 애니메이션[16]
    • 위젯을 데이터 소스와 동기화하기 위한 데이터 바인딩 추가
    • 파일스토어 추상화, 파일 추가 및 메모리 내 구현을 위한 스토리지 저장소 API 추가
    • 애니메이션 API를 추가하여 다양한 UI 애니메이션에 사용
    • 엔트리 컴포넌트, 셀렉트 컴포넌트 및 폼 컴포넌트 재설계를 통한 테마 API 및 비주얼 갱신
    • 엔트리에 스크롤 및 탭 지원 추가
    • 사용되지 않는 많은 API와 유형을 제거하고 좌표계를 int에서 float32로 이동했습니다.
  • 1.4 - 컬렉션 위젯 및 테마[17] 갱신
    • 카드, FileItem, 목록, 구분자, 테이블 및 트리 위젯 추가
    • ColorPicker 대화 상자
    • 사용자가 원색 선택
    • 입력 유효성 검사 추가
  • 1.3 - 파일 대화상자[18]
    • 파일 열기 및 저장 대화 상자
    • 알림 지원 추가
    • 아코디언, TextGrid 및 SplitContainer 위젯 추가
    • 텍스트 랩 지원
    • 크로스 플랫폼 데이터 액세스를 위한 URI 유형 및 핸들러
  • 1.2 - 모바일[19] 지원
    • 모바일 지원 추가(iOS 및 Android)
    • Rasberry Pi 디바이스(및 기타 OpenGL ES 디바이스) 지원 추가
    • 커스텀 위젯 작성을 단순화하기 위해 도입된 BaseWidget
  • 1.1 - 기능[20] 릴리즈
    • 메뉴바, 팝업메뉴, 위젯 추가 선택
    • 그라데이션 프리미티브 추가 및 그림자 도입
    • 텍스트 선택 지원 추가
    • 위젯 사용 안 함 지원
    • 초점 요소를 회전시키기 위해 도입된 탭/Shift-Tab
  • 1.0 - 첫 번째[21] 메이저릴리즈
    • 원본을 그리기 위한 캔버스 API 도입
    • 박스, 버튼, 체크, 엔트리, 폼, 그룹, 하이퍼링크, 아이콘, 라벨, 프로그레스바, 라디오, 스크롤러, Tab Container 및 툴바를 포함한 위젯 API 도입
    • 사용자 인터페이스의 밝은 테마와 어두운 테마
    • Linux, MacOS 및 Windows 운영체제 지원

비판

Golang Weekly 299호는 Fyne 프로젝트의 새로운 모바일 지원에 주목했지만 디자인 미관은 재료 디자인이 아니라 "일반적으로 Linux-y"[22]라고 제안했습니다.

레퍼런스

  1. ^ "Fixing possible container crash and fixed size window sizing". github.com. 2022-03-17.
  2. ^ "Scaling and Geometry".
  3. ^ Fyne [@Fyne_io] (2019-12-19). "We are very excited to announce that Fyne is now the most popular* GUI toolkit for Go! Great news and a huge milestone :). Now we need to figure how to bring the joy of Fyne to the wider coding community. [*] According to GitHub stargazer count ⭐️ #golang #winning #future" (Tweet). Retrieved 2021-01-07 – via Twitter.
  4. ^ Fyne [@Fyne_io] (2020-02-11). "Oh wow, the ⁦@Fyne_io⁩ project is currently in the #1 slot on GitHub trending list!!! t.co/oeRtXklEK9 #congratulations #goland #gui #trending t.co/HMy1TpJ3u5" (Tweet). Retrieved 2021-01-07 – via Twitter.
  5. ^ "Contributors to fyne-io/fyne · GitHub". GitHub. 2020-02-25.
  6. ^ Houston, Stephen [@stephenmhouston] (2019-12-31). "I am so proud of how far we have made it with this desktop in less than a year of work. It is a really great experience and very aesthetically pleasing. Please consider using it if you are a #linux user! #fyne #golang #go #linuxdesktop #desktop t.co/jKqWriYrIG" (Tweet). Retrieved 2021-01-07 – via Twitter.
  7. ^ "Unusual uses for Go: GUIs (Go Time #116)".
  8. ^ "fyne/CONTRIBUTING.md at master · fyne-io/fyne · GitHub". GitHub. 2020-02-25.
  9. ^ "Fyne.io - Travis CI".
  10. ^ "Coveralls.io - Test Coverage History and Statistics".
  11. ^ "The careful process behind Fyne's simplicity".
  12. ^ GhostarchiveWayback Machine에서 아카이브:
  13. ^ "A full desktop environment for Linux/Unix using Fyne: Fyne-io/Desktop". GitHub. 2020-02-24.
  14. ^ "Fyne Apps Listing".
  15. ^ "v2.1 for RichText and DocTabs goodness :) · fyne-io/fyne · GitHub". GitHub. 2021-10-22.
  16. ^ "Data binding, storage repositories and animation take Fyne to the next level! · fyne-io/fyne · GitHub". GitHub. 2021-01-25.
  17. ^ "A polished theme and new collections widgets headline our 1.4 release · fyne-io/fyne · GitHub". GitHub. 2020-11-09.
  18. ^ "Version 1.3 just 1000 commits later! · fyne-io/fyne · GitHub". GitHub. 2020-11-09.
  19. ^ "Release 1.2 brings Mobile Support · fyne-io/fyne · GitHub". GitHub. 2020-02-25.
  20. ^ "Release v1.1 feature release · fyne-io/fyne · GitHub". GitHub. 2020-02-25.
  21. ^ "Release Fyne's first major release · fyne-io/fyne · GitHub". GitHub. 2020-02-25.
  22. ^ "Golang Weekly Issue 299: February 14, 2020".

참고 문헌

외부 링크