From 68304989ba3c099adfb3c7eb55cc348d24ae5aaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lia=20Br=C3=BCggemann?= <118379719+BlyDoesCoding@users.noreply.github.com> Date: Mon, 11 Sep 2023 02:40:16 +0200 Subject: [PATCH] Add files via upload --- go.mod | 40 ++++++++ main.go | 302 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 342 insertions(+) create mode 100644 go.mod create mode 100644 main.go diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..4df84dd --- /dev/null +++ b/go.mod @@ -0,0 +1,40 @@ +module Watson + +go 1.20 + +require github.com/hugolgst/rich-go v0.0.0-20210925091458-d59fb695d9c0 + +require ( + fyne.io/systray v1.10.1-0.20230722100817-88df1e0ffa9a // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/fredbi/uri v1.0.0 // indirect + github.com/fsnotify/fsnotify v1.6.0 // indirect + github.com/fyne-io/gl-js v0.0.0-20220119005834-d2da28d9ccfe // indirect + github.com/fyne-io/glfw-js v0.0.0-20220120001248-ee7290d23504 // indirect + github.com/fyne-io/image v0.0.0-20220602074514-4956b0afb3d2 // indirect + github.com/go-gl/gl v0.0.0-20211210172815-726fda9656d6 // indirect + github.com/go-gl/glfw/v3.3/glfw v0.0.0-20221017161538-93cebf72946b // indirect + github.com/go-text/render v0.0.0-20230619120952-35bccb6164b8 // indirect + github.com/go-text/typesetting v0.0.0-20230616162802-9c17dd34aa4a // indirect + github.com/godbus/dbus/v5 v5.1.0 // indirect + github.com/gopherjs/gopherjs v1.17.2 // indirect + github.com/jsummers/gobmp v0.0.0-20151104160322-e2ba15ffa76e // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/srwiley/oksvg v0.0.0-20221011165216-be6e8873101c // indirect + github.com/srwiley/rasterx v0.0.0-20220730225603-2ab79fcdd4ef // indirect + github.com/stretchr/testify v1.8.4 // indirect + github.com/tevino/abool v1.2.0 // indirect + github.com/yuin/goldmark v1.5.5 // indirect + golang.org/x/image v0.11.0 // indirect + golang.org/x/mobile v0.0.0-20230531173138-3c911d8e3eda // indirect + golang.org/x/net v0.14.0 // indirect + golang.org/x/sys v0.11.0 // indirect + golang.org/x/text v0.12.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + honnef.co/go/js/dom v0.0.0-20210725211120-f030747120f2 // indirect +) + +require ( + fyne.io/fyne/v2 v2.4.0 + gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect +) diff --git a/main.go b/main.go new file mode 100644 index 0000000..09d3848 --- /dev/null +++ b/main.go @@ -0,0 +1,302 @@ +package main + +import ( + "time" + + "fyne.io/fyne/v2" + "fyne.io/fyne/v2/app" + "fyne.io/fyne/v2/container" + "fyne.io/fyne/v2/widget" + "github.com/hugolgst/rich-go/client" + + "fyne.io/fyne/v2/layout" +) + +func main() { + + a := app.New() + w := a.NewWindow("Watson") + + //Reading things + BookToRead := widget.NewEntry() + BookToRead.PlaceHolder = "The Book Your are Reading" + BookGenre := widget.NewEntry() + BookGenre.PlaceHolder = "The Genre of your Book" + LinkToBook := widget.NewEntry() + LinkToBook.PlaceHolder = "The Link To The Book" + + //Talking things + TalkToWho := widget.NewEntry() + TalkToWho.PlaceHolder = "Who Are you talking to?" + + WhereTalk := widget.NewEntry() + WhereTalk.PlaceHolder = "Link to a Discord Server you are Talking on" + + //Browsing things + + Site := widget.NewEntry() + Site.PlaceHolder = "Name of the Site You are Browsing" + + SiteURL := widget.NewEntry() + SiteURL.PlaceHolder = "The Link To The Site" + + //Streaming things + + TitleOfStream := widget.NewEntry() + TitleOfStream.PlaceHolder = "Title of your Stream" + + StreamLink := widget.NewEntry() + StreamLink.PlaceHolder = "Link To your Stream" + + BrowsingPage := container.New( + layout.NewVBoxLayout(), + layout.NewSpacer(), + Site, + SiteURL, + layout.NewSpacer(), + ) + + TalkingPage := container.New( + layout.NewVBoxLayout(), + + layout.NewSpacer(), + TalkToWho, + WhereTalk, + layout.NewSpacer(), + ) + + ReadingPage := container.New( + layout.NewVBoxLayout(), + layout.NewSpacer(), + + layout.NewSpacer(), + BookToRead, + BookGenre, + LinkToBook, + layout.NewSpacer(), + ) + + StramingPage := container.New( + layout.NewVBoxLayout(), + layout.NewSpacer(), + TitleOfStream, + StreamLink, + layout.NewSpacer(), + ) + + HomePage := container.New( + layout.NewVBoxLayout(), + layout.NewSpacer(), + widget.NewSelect([]string{"Talking", "Reading", "Streaming", "Browsing"}, func(value string) { + switch value { + + case "Reading": + StartReading(BookToRead.Text, BookGenre.Text, LinkToBook.Text) + + case "Talking": + StartTalking(TalkToWho.Text, WhereTalk.Text) + + case "Browsing": + StartBrowsing(Site.Text, SiteURL.Text) + + case "Streaming": + StartStreaming(TitleOfStream.Text, StreamLink.Text) + } + + }), + layout.NewSpacer(), + ) + + tabs := container.NewAppTabs( + container.NewTabItem("Home", HomePage), + container.NewTabItem("Reading", ReadingPage), + container.NewTabItem("Talking", TalkingPage), + container.NewTabItem("Browsing", BrowsingPage), + container.NewTabItem("Streaming", StramingPage), + ) + + tabs.SetTabLocation(container.TabLocationLeading) + + w.SetContent(tabs) + + w.Resize(fyne.NewSize(1920/2, 1080/2)) + + w.ShowAndRun() + +} + +func StartReading(NameOfBook string, BookGenre string, LinkToBook string) { + + if LinkToBook == "" { + err := client.Login("1150554899541671996") + if err != nil { + panic(err) + } + + now := time.Now() + err = client.SetActivity(client.Activity{ + State: "Reading", + Details: "I'm currently Reading: " + NameOfBook, + LargeImage: "book", + LargeText: "Genre: " + BookGenre, + + Timestamps: &client.Timestamps{ + Start: &now, + }, + }) + } else { + err := client.Login("1150554899541671996") + if err != nil { + panic(err) + } + + now := time.Now() + err = client.SetActivity(client.Activity{ + State: "Reading", + Details: "I'm currently Reading: " + NameOfBook, + LargeImage: "book", + LargeText: "Genre: " + BookGenre, + + Timestamps: &client.Timestamps{ + Start: &now, + }, + Buttons: []*client.Button{ + &client.Button{ + Label: "Link To Book", + Url: LinkToBook, + }, + }, + }) + } + +} + +func StartTalking(NameOfPartner string, DiscordLink string) { + + if DiscordLink == "" { + err := client.Login("1150554899541671996") + if err != nil { + panic(err) + } + + now := time.Now() + err = client.SetActivity(client.Activity{ + State: "Talking", + Details: "I'm talking with " + NameOfPartner, + LargeImage: "talk", + + Timestamps: &client.Timestamps{ + Start: &now, + }, + }) + } else { + err := client.Login("1150554899541671996") + if err != nil { + panic(err) + } + + now := time.Now() + err = client.SetActivity(client.Activity{ + State: "Talking", + Details: "I'm talking with " + NameOfPartner, + LargeImage: "talk", + + Timestamps: &client.Timestamps{ + Start: &now, + }, + Buttons: []*client.Button{ + &client.Button{ + Label: "Link To Book", + Url: DiscordLink, + }, + }, + }) + } +} + +func StartBrowsing(Site string, SiteURL string) { + if SiteURL == "" { + err := client.Login("1150554899541671996") + if err != nil { + panic(err) + } + + now := time.Now() + err = client.SetActivity(client.Activity{ + State: "Browsing", + Details: "Currently on " + Site, + LargeImage: "search", + + Timestamps: &client.Timestamps{ + Start: &now, + }, + }) + } else { + err := client.Login("1150554899541671996") + if err != nil { + panic(err) + } + + now := time.Now() + err = client.SetActivity(client.Activity{ + State: "Browsing", + Details: "Currently on " + Site, + LargeImage: "search", + + Timestamps: &client.Timestamps{ + Start: &now, + }, + Buttons: []*client.Button{ + &client.Button{ + Label: "Visit Site", + Url: SiteURL, + }, + }, + }) + } + +} + +func StartStreaming(Title string, URL string) { + + if URL == "" { + err := client.Login("1150554899541671996") + if err != nil { + panic(err) + } + + now := time.Now() + err = client.SetActivity(client.Activity{ + State: "Hi Im Currently Streaming", + Details: Title, + LargeImage: "stream", + + Timestamps: &client.Timestamps{ + Start: &now, + }, + }) + } else { + err := client.Login("1150554899541671996") + if err != nil { + panic(err) + } + + now := time.Now() + err = client.SetActivity(client.Activity{ + State: "Hi Im Currently Streaming", + Details: Title, + LargeImage: "stream", + + Timestamps: &client.Timestamps{ + Start: &now, + }, + Buttons: []*client.Button{ + &client.Button{ + Label: "Watch my Stream", + Url: URL, + }, + }, + }) + } + +}