From c49957e58305cb60ebce3217dd2c34ced68c6f79 Mon Sep 17 00:00:00 2001 From: Leonid Nikitin Date: Mon, 9 Jun 2025 23:12:20 +0500 Subject: [PATCH] Moved the "About" window to a new structure. --- internal/gui/view/about.go | 620 +++++++++++++++++++++++++++++++++++++ 1 file changed, 620 insertions(+) create mode 100644 internal/gui/view/about.go diff --git a/internal/gui/view/about.go b/internal/gui/view/about.go new file mode 100644 index 0000000..5744bad --- /dev/null +++ b/internal/gui/view/about.go @@ -0,0 +1,620 @@ +package view + +import ( + "fyne.io/fyne/v2" + "fyne.io/fyne/v2/canvas" + "fyne.io/fyne/v2/container" + "fyne.io/fyne/v2/lang" + "fyne.io/fyne/v2/widget" + "git.kor-elf.net/kor-elf/gui-for-ffmpeg/internal/resources" + "golang.org/x/image/colornames" + "net/url" +) + +func About(appVersion string, ffmpegVersion string, ffprobeVersion string, ffplayVersion string) fyne.CanvasObject { + programmName := canvas.NewText(" GUI for FFmpeg", colornames.Darkgreen) + programmName.TextStyle = fyne.TextStyle{Bold: true} + programmName.TextSize = 20 + + programmLink := widget.NewHyperlink( + lang.L("programmLink"), + &url.URL{ + Scheme: "https", + Host: "gui-for-ffmpeg.projects.kor-elf.net", + Path: "/", + }, + ) + + licenseLink := widget.NewHyperlink( + lang.L("licenseLink"), + &url.URL{ + Scheme: "https", + Host: "git.kor-elf.net", + Path: "kor-elf/gui-for-ffmpeg/src/branch/main/LICENSE", + }, + ) + + licenseLinkOther := widget.NewHyperlink( + lang.L("licenseLinkOther"), + &url.URL{ + Scheme: "https", + Host: "git.kor-elf.net", + Path: "kor-elf/gui-for-ffmpeg/src/branch/main/LICENSE-3RD-PARTY.txt", + }, + ) + + programmVersion := widget.NewRichTextFromMarkdown( + lang.L( + "programmVersion", + map[string]any{"Version": appVersion}, + ), + ) + + aboutText := widget.NewRichText( + &widget.TextSegment{ + Text: lang.L("aboutText"), + }, + ) + image := canvas.NewImageFromResource(resources.IconAppLogoResource()) + image.SetMinSize(fyne.Size{Width: 100, Height: 100}) + image.FillMode = canvas.ImageFillContain + + ffmpegTrademark := widget.NewRichTextFromMarkdown(lang.L("ffmpegTrademark")) + ffmpegLGPL := widget.NewRichTextFromMarkdown(lang.L("ffmpegLGPL")) + + return container.NewScroll(container.NewVBox( + container.NewBorder(nil, nil, container.NewVBox(image), nil, container.NewVBox( + programmName, + programmVersion, + aboutText, + ffmpegTrademark, + ffmpegLGPL, + widget.NewRichTextFromMarkdown("Copyright (c) 2024 **[Leonid Nikitin (kor-elf)](https://git.kor-elf.net/kor-elf/)**."), + container.NewHBox(programmLink, licenseLink), + container.NewHBox(licenseLinkOther), + )), + aboutFFmpeg(ffmpegVersion), + aboutFFprobe(ffprobeVersion), + aboutFFplay(ffplayVersion), + widget.NewCard(lang.L("AlsoUsedProgram"), "", license3RDParty()), + )) +} + +func aboutFFmpeg(version string) *fyne.Container { + programmName := canvas.NewText(" FFmpeg", colornames.Darkgreen) + programmName.TextStyle = fyne.TextStyle{Bold: true} + programmName.TextSize = 20 + + programmLink := widget.NewHyperlink(lang.L("programmLink"), &url.URL{ + Scheme: "https", + Host: "ffmpeg.org", + Path: "", + }) + + licenseLink := widget.NewHyperlink(lang.L("licenseLink"), &url.URL{ + Scheme: "https", + Host: "ffmpeg.org", + Path: "legal.html", + }) + + return container.NewVBox( + programmName, + widget.NewLabel(version), + widget.NewRichTextFromMarkdown("**FFmpeg** is a trademark of **[Fabrice Bellard](https://bellard.org/)**, originator of the **[FFmpeg](https://ffmpeg.org/about.html)** project."), + widget.NewRichTextFromMarkdown("This software uses libraries from the **FFmpeg** project under the **[LGPLv2.1](https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html)**."), + container.NewHBox(programmLink, licenseLink), + ) +} + +func aboutFFprobe(version string) *fyne.Container { + programmName := canvas.NewText(" FFprobe", colornames.Darkgreen) + programmName.TextStyle = fyne.TextStyle{Bold: true} + programmName.TextSize = 20 + + programmLink := widget.NewHyperlink(lang.L("programmLink"), &url.URL{ + Scheme: "https", + Host: "ffmpeg.org", + Path: "ffprobe.html", + }) + + licenseLink := widget.NewHyperlink(lang.L("licenseLink"), &url.URL{ + Scheme: "https", + Host: "ffmpeg.org", + Path: "legal.html", + }) + + return container.NewVBox( + programmName, + widget.NewLabel(version), + widget.NewRichTextFromMarkdown("**FFmpeg** is a trademark of **[Fabrice Bellard](https://bellard.org/)**, originator of the **[FFmpeg](https://ffmpeg.org/about.html)** project."), + widget.NewRichTextFromMarkdown("This software uses libraries from the **FFmpeg** project under the **[LGPLv2.1](https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html)**."), + container.NewHBox(programmLink, licenseLink), + ) +} + +func aboutFFplay(version string) *fyne.Container { + programmName := canvas.NewText(" FFplay", colornames.Darkgreen) + programmName.TextStyle = fyne.TextStyle{Bold: true} + programmName.TextSize = 20 + + programmLink := widget.NewHyperlink(lang.L("programmLink"), &url.URL{ + Scheme: "https", + Host: "ffmpeg.org", + Path: "ffplay.html", + }) + + licenseLink := widget.NewHyperlink(lang.L("licenseLink"), &url.URL{ + Scheme: "https", + Host: "ffmpeg.org", + Path: "legal.html", + }) + + return container.NewVBox( + programmName, + widget.NewLabel(version), + widget.NewRichTextFromMarkdown("**FFmpeg** is a trademark of **[Fabrice Bellard](https://bellard.org/)**, originator of the **[FFmpeg](https://ffmpeg.org/about.html)** project."), + widget.NewRichTextFromMarkdown("This software uses libraries from the **FFmpeg** project under the **[LGPLv2.1](https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html)**."), + container.NewHBox(programmLink, licenseLink), + ) +} + +func license3RDParty() *fyne.Container { + return container.NewVBox( + canvas.NewLine(colornames.Darkgreen), + + container.NewHBox(widget.NewHyperlink("fyne.io/fyne/v2", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "fyne-io/fyne", + })), + container.NewHBox(widget.NewHyperlink("BSD 3-Clause License", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "fyne-io/fyne/blob/master/LICENSE", + })), + widget.NewRichTextFromMarkdown("Copyright (C) 2018 Fyne.io developers (see [AUTHORS](https://github.com/fyne-io/fyne/blob/master/AUTHORS))"), + canvas.NewLine(colornames.Darkgreen), + + container.NewHBox(widget.NewHyperlink("fyne.io/systray", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "fyne-io/systray", + })), + container.NewHBox(widget.NewHyperlink("Apache License", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "fyne-io/systray/blob/master/LICENSE", + })), + canvas.NewLine(colornames.Darkgreen), + + container.NewHBox(widget.NewHyperlink("github.com/BurntSushi/toml", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "BurntSushi/toml", + })), + container.NewHBox(widget.NewHyperlink("The MIT License (MIT)", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "BurntSushi/toml/blob/master/COPYING", + })), + widget.NewLabel("Copyright (c) 2013 TOML authors"), + canvas.NewLine(colornames.Darkgreen), + + container.NewHBox(widget.NewHyperlink("github.com/davecgh/go-spew", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "davecgh/go-spew", + })), + container.NewHBox(widget.NewHyperlink("ISC License", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "davecgh/go-spew/blob/master/LICENSE", + })), + widget.NewLabel("Copyright (c) 2012-2016 Dave Collins "), + canvas.NewLine(colornames.Darkgreen), + + container.NewHBox(widget.NewHyperlink("github.com/fredbi/uri", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "fredbi/uri", + })), + container.NewHBox(widget.NewHyperlink("The MIT License (MIT)", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "fredbi/uri/blob/master/LICENSE.md", + })), + widget.NewLabel("Copyright (c) 2018 Frederic Bidon"), + widget.NewLabel("Copyright (c) 2015 Trey Tacon"), + canvas.NewLine(colornames.Darkgreen), + + container.NewHBox(widget.NewHyperlink("github.com/fsnotify/fsnotify", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "fsnotify/fsnotify", + })), + container.NewHBox(widget.NewHyperlink("BSD-3-Clause license", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "fsnotify/fsnotify/blob/main/LICENSE", + })), + widget.NewLabel("Copyright © 2012 The Go Authors. All rights reserved."), + widget.NewLabel("Copyright © fsnotify Authors. All rights reserved."), + canvas.NewLine(colornames.Darkgreen), + + container.NewHBox(widget.NewHyperlink("github.com/fyne-io/gl-js", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "fyne-io/gl-js", + })), + container.NewHBox(widget.NewHyperlink("BSD-3-Clause license", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "fyne-io/gl-js/blob/master/LICENSE", + })), + widget.NewLabel("Copyright (c) 2009 The Go Authors. All rights reserved."), + canvas.NewLine(colornames.Darkgreen), + + container.NewHBox(widget.NewHyperlink("github.com/fyne-io/glfw-js", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "fyne-io/glfw-js", + })), + container.NewHBox(widget.NewHyperlink("MIT License", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "fyne-io/glfw-js/blob/master/LICENSE", + })), + widget.NewLabel("Copyright (c) 2014 Dmitri Shuralyov"), + canvas.NewLine(colornames.Darkgreen), + + container.NewHBox(widget.NewHyperlink("github.com/fyne-io/image", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "fyne-io/image", + })), + container.NewHBox(widget.NewHyperlink("BSD 3-Clause License", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "fyne-io/image/blob/main/LICENSE", + })), + widget.NewLabel("Copyright (c) 2022, Fyne.io"), + canvas.NewLine(colornames.Darkgreen), + + container.NewHBox(widget.NewHyperlink("github.com/fyne-io/oksvg", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "fyne-io/oksvg", + })), + container.NewHBox(widget.NewHyperlink("BSD 3-Clause License", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "fyne-io/oksvg/blob/master/LICENSE", + })), + widget.NewLabel("Copyright (c) 2018, Steven R Wiley. All rights reserved."), + canvas.NewLine(colornames.Darkgreen), + + container.NewHBox(widget.NewHyperlink("github.com/go-gl/gl", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "go-gl/gl", + })), + container.NewHBox(widget.NewHyperlink("The MIT License (MIT)", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "go-gl/gl/blob/master/LICENSE", + })), + widget.NewLabel("Copyright (c) 2014 Eric Woroshow"), + canvas.NewLine(colornames.Darkgreen), + + container.NewHBox(widget.NewHyperlink("github.com/go-gl/glfw/v3.3/glfw", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "go-gl/glfw/", + })), + container.NewHBox(widget.NewHyperlink("BSD-3-Clause license", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "go-gl/glfw/blob/master/LICENSE", + })), + widget.NewLabel("Copyright (c) 2012 The glfw3-go Authors. All rights reserved."), + canvas.NewLine(colornames.Darkgreen), + + container.NewHBox(widget.NewHyperlink("github.com/go-text/render", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "go-text/render", + })), + container.NewHBox(widget.NewHyperlink("Unlicense OR BSD-3-Clause", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "go-text/render/blob/main/LICENSE", + })), + widget.NewLabel("Copyright 2021 The go-text authors"), + canvas.NewLine(colornames.Darkgreen), + + container.NewHBox(widget.NewHyperlink("github.com/go-text/typesetting", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "go-text/typesetting", + })), + container.NewHBox(widget.NewHyperlink("Unlicense OR BSD-3-Clause", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "go-text/typesetting/blob/main/LICENSE", + })), + widget.NewLabel("Copyright 2021 The go-text authors"), + canvas.NewLine(colornames.Darkgreen), + + container.NewHBox(widget.NewHyperlink("github.com/godbus/dbus/v5", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "godbus/dbus", + })), + container.NewHBox(widget.NewHyperlink("BSD 2-Clause \"Simplified\" License", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "godbus/dbus/blob/master/LICENSE", + })), + widget.NewLabel("Copyright (c) 2013, Georg Reinke (), Google. All rights reserved."), + canvas.NewLine(colornames.Darkgreen), + + container.NewHBox(widget.NewHyperlink("github.com/hack-pad/go-indexeddb", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "hack-pad/go-indexeddb", + })), + container.NewHBox(widget.NewHyperlink("Apache License 2.0", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "hack-pad/go-indexeddb/blob/main/LICENSE", + })), + canvas.NewLine(colornames.Darkgreen), + + container.NewHBox(widget.NewHyperlink("github.com/hack-pad/safejs", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "hack-pad/safejs", + })), + container.NewHBox(widget.NewHyperlink("Apache License 2.0", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "hack-pad/safejs/blob/main/LICENSE", + })), + canvas.NewLine(colornames.Darkgreen), + + container.NewHBox(widget.NewHyperlink("github.com/jeandeaual/go-locale", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "jeandeaual/go-locale", + })), + container.NewHBox(widget.NewHyperlink("MIT License", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "jeandeaual/go-locale/blob/master/LICENSE", + })), + widget.NewLabel("Copyright (c) 2020 Alexis Jeandeau"), + canvas.NewLine(colornames.Darkgreen), + + container.NewHBox(widget.NewHyperlink("github.com/jsummers/gobmp", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "jsummers/gobmp", + })), + container.NewHBox(widget.NewHyperlink("The MIT License (MIT)", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "jsummers/gobmp/blob/master/COPYING.txt", + })), + widget.NewLabel("Copyright (c) 2012-2015 Jason Summers"), + canvas.NewLine(colornames.Darkgreen), + + container.NewHBox(widget.NewHyperlink("github.com/nfnt/resize", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "nfnt/resize", + })), + container.NewHBox(widget.NewHyperlink("ISC License", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "nfnt/resize/blob/master/LICENSE", + })), + widget.NewLabel("Copyright (c) 2012, Jan Schlicht "), + canvas.NewLine(colornames.Darkgreen), + + container.NewHBox(widget.NewHyperlink("github.com/nicksnyder/go-i18n/v2", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "nicksnyder/go-i18n", + })), + container.NewHBox(widget.NewHyperlink("The MIT License (MIT)", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "nicksnyder/go-i18n/blob/main/LICENSE", + })), + widget.NewRichTextFromMarkdown("Copyright (c) 2014 Nick Snyder [https://github.com/nicksnyder](https://github.com/nicksnyder)"), + canvas.NewLine(colornames.Darkgreen), + + container.NewHBox(widget.NewHyperlink("github.com/pmezard/go-difflib", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "pmezard/go-difflib", + })), + container.NewHBox(widget.NewHyperlink("License", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "pmezard/go-difflib/blob/master/LICENSE", + })), + widget.NewLabel("Copyright (c) 2013, Patrick Mezard. All rights reserved."), + canvas.NewLine(colornames.Darkgreen), + + container.NewHBox(widget.NewHyperlink("github.com/rymdport/portal", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "rymdport/portal", + })), + container.NewHBox(widget.NewHyperlink("Apache License 2.0", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "rymdport/portal/blob/main/LICENSE", + })), + canvas.NewLine(colornames.Darkgreen), + + container.NewHBox(widget.NewHyperlink("github.com/srwiley/oksvg", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "srwiley/oksvg", + })), + container.NewHBox(widget.NewHyperlink("BSD 3-Clause License", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "srwiley/oksvg/blob/master/LICENSE", + })), + widget.NewLabel("Copyright (c) 2018, Steven R Wiley. All rights reserved."), + canvas.NewLine(colornames.Darkgreen), + + container.NewHBox(widget.NewHyperlink("github.com/srwiley/rasterx", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "srwiley/rasterx", + })), + container.NewHBox(widget.NewHyperlink("BSD 3-Clause License", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "srwiley/rasterx/blob/master/LICENSE", + })), + widget.NewLabel("Copyright (c) 2018, Steven R Wiley. All rights reserved."), + canvas.NewLine(colornames.Darkgreen), + + container.NewHBox(widget.NewHyperlink("github.com/stretchr/testify", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "stretchr/testify", + })), + container.NewHBox(widget.NewHyperlink("MIT License", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "stretchr/testify/blob/master/LICENSE", + })), + widget.NewLabel("Copyright (c) 2012-2020 Mat Ryer, Tyler Bunnell and contributors."), + canvas.NewLine(colornames.Darkgreen), + + container.NewHBox(widget.NewHyperlink("github.com/ulikunitz/xz", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "ulikunitz/xz", + })), + container.NewHBox(widget.NewHyperlink("License", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "ulikunitz/xz/blob/master/LICENSE", + })), + widget.NewLabel("Copyright (c) 2014-2022 Ulrich Kunitz. All rights reserved."), + canvas.NewLine(colornames.Darkgreen), + + container.NewHBox(widget.NewHyperlink("github.com/yuin/goldmark", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "yuin/goldmark", + })), + container.NewHBox(widget.NewHyperlink("MIT License", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "yuin/goldmark/blob/master/LICENSE", + })), + widget.NewLabel("Copyright (c) 2019 Yusuke Inuzuka"), + canvas.NewLine(colornames.Darkgreen), + + container.NewHBox(widget.NewHyperlink("go.etcd.io/bbolt", &url.URL{ + Scheme: "https", + Host: "pkg.go.dev", + Path: "go.etcd.io/bbolt", + })), + container.NewHBox(widget.NewHyperlink("MIT License", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "etcd-io/bbolt/blob/main/LICENSE", + })), + widget.NewLabel("Copyright (c) 2013 Ben Johnson"), + canvas.NewLine(colornames.Darkgreen), + + container.NewHBox(widget.NewHyperlink("golang.org/x/image", &url.URL{ + Scheme: "https", + Host: "pkg.go.dev", + Path: "golang.org/x/image", + })), + container.NewHBox(widget.NewHyperlink("License", &url.URL{ + Scheme: "https", + Host: "cs.opensource.google", + Path: "go/x/image/+/master:LICENSE", + })), + widget.NewLabel("Copyright 2009 The Go Authors."), + canvas.NewLine(colornames.Darkgreen), + + container.NewHBox(widget.NewHyperlink("golang.org/x/net", &url.URL{ + Scheme: "https", + Host: "pkg.go.dev", + Path: "golang.org/x/net", + })), + container.NewHBox(widget.NewHyperlink("License", &url.URL{ + Scheme: "https", + Host: "cs.opensource.google", + Path: "go/x/net/+/master:LICENSE", + })), + widget.NewLabel("Copyright 2009 The Go Authors."), + canvas.NewLine(colornames.Darkgreen), + + container.NewHBox(widget.NewHyperlink("golang.org/x/sys", &url.URL{ + Scheme: "https", + Host: "pkg.go.dev", + Path: "golang.org/x/sys", + })), + container.NewHBox(widget.NewHyperlink("License", &url.URL{ + Scheme: "https", + Host: "cs.opensource.google", + Path: "go/x/sys/+/master:LICENSE", + })), + widget.NewLabel("Copyright 2009 The Go Authors."), + canvas.NewLine(colornames.Darkgreen), + + container.NewHBox(widget.NewHyperlink("golang.org/x/text", &url.URL{ + Scheme: "https", + Host: "pkg.go.dev", + Path: "golang.org/x/text", + })), + container.NewHBox(widget.NewHyperlink("License", &url.URL{ + Scheme: "https", + Host: "cs.opensource.google", + Path: "go/x/text/+/master:LICENSE", + })), + widget.NewLabel("Copyright 2009 The Go Authors."), + canvas.NewLine(colornames.Darkgreen), + + container.NewHBox(widget.NewHyperlink("gopkg.in/yaml.v3", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "go-yaml/yaml/tree/v3.0.1", + })), + container.NewHBox(widget.NewHyperlink("MIT License and Apache License 2.0", &url.URL{ + Scheme: "http", + Host: "github.com", + Path: "go-yaml/yaml/blob/v3.0.1/LICENSE", + })), + widget.NewLabel("Copyright (c) 2006-2010 Kirill Simonov"), + widget.NewLabel("Copyright (c) 2006-2011 Kirill Simonov"), + widget.NewLabel("Copyright (c) 2011-2019 Canonical Ltd"), + canvas.NewLine(colornames.Darkgreen), + + container.NewHBox(widget.NewHyperlink("github.com/golang/go", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "golang/go", + })), + container.NewHBox(widget.NewHyperlink("BSD 3-Clause \"New\" or \"Revised\" License", &url.URL{ + Scheme: "https", + Host: "github.com", + Path: "golang/go/blob/master/LICENSE", + })), + widget.NewLabel("Copyright 2009 The Go Authors."), + canvas.NewLine(colornames.Darkgreen), + ) +}