aboutsummaryrefslogtreecommitdiff
path: root/ui.go
diff options
context:
space:
mode:
authorlawl <github@dumbinter.net>2020-07-14 13:03:11 +0200
committerlawl <github@dumbinter.net>2020-07-14 13:03:11 +0200
commitd87c8153c7c23200dbddbea899794be111cfc621 (patch)
tree97ca0234cfe4a4bc5d18c8d3573a32f95d073a8a /ui.go
parent1a18fce4f339b6cc934d517e5ea091c2f31be193 (diff)
downloadnoisetorch-d87c8153c7c23200dbddbea899794be111cfc621.tar.gz
noisetorch-d87c8153c7c23200dbddbea899794be111cfc621.zip
Add context menu for licenses, code, version
Also implement a separate view to display version. Add a dummy view to display all licenses incl. dependencies.
Diffstat (limited to 'ui.go')
-rw-r--r--ui.go66
1 files changed, 64 insertions, 2 deletions
diff --git a/ui.go b/ui.go
index b47ee95..fcf1edc 100644
--- a/ui.go
+++ b/ui.go
@@ -4,9 +4,11 @@ import (
"fmt"
"image/color"
"log"
+ "os/exec"
"time"
"github.com/aarzilli/nucular"
+ "github.com/aarzilli/nucular/label"
"github.com/lawl/pulseaudio"
)
@@ -19,6 +21,9 @@ type uistate struct {
useBuiltinRNNoise bool
config *config
loadingScreen bool
+ licenseScreen bool
+ versionScreen bool
+ licenseTextArea nucular.TextEditor
masterWindow *nucular.MasterWindow
}
@@ -29,8 +34,35 @@ func updatefn(w *nucular.Window, ui *uistate) {
return
}
- w.Row(15).Dynamic(2)
- w.Label("NoiseTorch ("+version+")", "LC")
+ if ui.licenseScreen {
+ licenseScreen(w, ui)
+ return
+ }
+
+ if ui.versionScreen {
+ versionScreen(w, ui)
+ return
+ }
+
+ w.MenubarBegin()
+ w.WindowStyle().Background = color.RGBA{0, 255, 0, 255}
+ w.Row(10).Dynamic(1)
+ if w := w.Menu(label.TA("About", "LC"), 120, nil); w != nil {
+ w.Row(10).Dynamic(1)
+ if w.MenuItem(label.T("Licenses")) {
+ ui.licenseScreen = true
+ }
+ w.Row(10).Dynamic(1)
+ if w.MenuItem(label.T("Source code")) {
+ exec.Command("xdg-open", "https://github.com/lawl/NoiseTorch").Run()
+ }
+ if w.MenuItem(label.T("Version")) {
+ ui.versionScreen = true
+ }
+ }
+ w.MenubarEnd()
+
+ w.Row(15).Dynamic(1)
if ui.noiseSupressorState == loaded {
w.LabelColored("NoiseTorch active", "RC", color.RGBA{34, 187, 69, 255} /*green*/)
@@ -165,3 +197,33 @@ func loadingScreen(w *nucular.Window, ui *uistate) {
w.Row(50).Dynamic(1)
w.Label("(this may take a few seconds)", "CB")
}
+
+func licenseScreen(w *nucular.Window, ui *uistate) {
+ w.Row(255).Dynamic(1)
+ field := &ui.licenseTextArea
+ field.Flags |= nucular.EditMultiline
+ if len(field.Buffer) < 1 {
+ field.Buffer = []rune("foo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\nfoo\nbar\n")
+ }
+ field.Edit(w)
+
+ w.Row(20).Dynamic(2)
+ w.Spacing(1)
+ if w.ButtonText("OK") {
+ ui.licenseScreen = false
+ }
+}
+
+func versionScreen(w *nucular.Window, ui *uistate) {
+ w.Row(50).Dynamic(1)
+ w.Label("Version", "CB")
+ w.Row(50).Dynamic(1)
+ w.Label(version, "CB")
+ w.Row(50).Dynamic(1)
+ w.Spacing(1)
+ w.Row(20).Dynamic(2)
+ w.Spacing(1)
+ if w.ButtonText("OK") {
+ ui.versionScreen = false
+ }
+}