Skip to content

Commit e47cd06

Browse files
committed
Basic RPC function is done.
1 parent ed0b77f commit e47cd06

File tree

7 files changed

+116
-17
lines changed

7 files changed

+116
-17
lines changed

go.mod

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,7 @@ go 1.15
44

55
require (
66
github.com/getlantern/systray v1.1.0
7+
github.com/hugolgst/rich-go v0.0.0-20210220192218-7960b995f880
78
github.com/rivo/tview v0.0.0-20210312174852-ae9464cc3598
9+
gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect
810
)

go.sum

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ github.com/getlantern/systray v1.1.0 h1:U0wCEqseLi2ok1fE6b88gJklzriavPJixZysZPkZ
2222
github.com/getlantern/systray v1.1.0/go.mod h1:AecygODWIsBquJCJFop8MEQcJbWFfw/1yWbVabNgpCM=
2323
github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk=
2424
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
25+
github.com/hugolgst/rich-go v0.0.0-20210220192218-7960b995f880 h1:AvBpjRUB1kMxNRmTDaRfIyYwzVZSdgkPT8X82XCxVaU=
26+
github.com/hugolgst/rich-go v0.0.0-20210220192218-7960b995f880/go.mod h1:J5UWekI/HHIt5ID+GVPAW+M19kxXLTFnAdTGDl4mRF0=
2527
github.com/lucasb-eyer/go-colorful v1.0.3/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
2628
github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
2729
github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
@@ -52,3 +54,5 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
5254
golang.org/x/text v0.3.5 h1:i6eZZ+zk0SOf0xgBpEpPD18qWcJda6q1sxt3S0kzyUQ=
5355
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
5456
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
57+
gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce h1:+JknDZhAj8YMt7GC73Ei8pv4MzjDUNPHgQWJdtMAaDU=
58+
gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c=

langEN.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,9 @@ var LangEN = map[string]string{
5252
"id": "ID",
5353
"ok": "OK",
5454
"details": "Details",
55-
"status": "Status",
55+
"state": "Status",
5656
"start": "Start",
57+
"stop": "Stop",
5758
"select": "Select",
5859
"add": "Add",
5960
"remove": "Remove",

langTR.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,9 @@ var LangTR = map[string]string{
5252
"id": "Kimlik",
5353
"ok": "Tamam",
5454
"details": "Detaylar",
55-
"status": "Durum",
55+
"state": "Durum",
5656
"start": "Başlat",
57+
"stop": "Durdur",
5758
"select": "Seç",
5859
"add": "Ekle",
5960
"remove": "Kaldır",

main.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ package main
33
import (
44
"log"
55

6-
"github.com/getlantern/systray" // hehe
6+
"github.com/getlantern/systray"
7+
"github.com/hugolgst/rich-go/client"
78
)
89

910
const (
@@ -34,5 +35,6 @@ func main() {
3435
// Quit ...
3536
func Quit() {
3637
UI.Stop()
38+
client.Logout()
3739
log.Println(Lang["debugCoreQuitting"])
3840
}

rpc.go

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package main
2+
3+
import (
4+
"log"
5+
"time"
6+
7+
"github.com/hugolgst/rich-go/client"
8+
)
9+
10+
var (
11+
RPCActive = false
12+
RPCDetails string
13+
RPCState string
14+
)
15+
16+
func StartRPC() {
17+
if err := client.Login(ConfigApps[Config["selectedApp"]]); err != nil {
18+
log.Fatalln(err)
19+
}
20+
21+
go func() {
22+
for {
23+
if !RPCActive {
24+
break
25+
}
26+
if err := client.SetActivity(client.Activity{
27+
Details: RPCDetails,
28+
State: RPCState,
29+
}); err != nil {
30+
log.Println(err)
31+
RPCActive = false
32+
client.Logout()
33+
}
34+
time.Sleep(time.Second)
35+
}
36+
}()
37+
}

ui.go

Lines changed: 66 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,25 @@ import (
44
"strconv"
55

66
"github.com/getlantern/systray"
7+
"github.com/hugolgst/rich-go/client"
78
"github.com/rivo/tview"
89
)
910

10-
var UI *tview.Application = tview.NewApplication()
11+
var (
12+
UI *tview.Application = tview.NewApplication()
13+
FormRPC = tview.NewForm()
14+
)
15+
16+
func rpcButtonStart() {
17+
RPCActive = true
18+
StartRPC()
19+
FormRPC.GetButton(0).SetLabel(Lang["stop"]).SetSelectedFunc(rpcButtonStop)
20+
}
21+
func rpcButtonStop() {
22+
RPCActive = false
23+
client.Logout()
24+
FormRPC.GetButton(0).SetLabel(Lang["start"]).SetSelectedFunc(rpcButtonStart)
25+
}
1126

1227
func LoopUI() {
1328
// UI Elements
@@ -18,7 +33,7 @@ func LoopUI() {
1833
formAddNewApp := tview.NewForm()
1934
modalInvalidAppID := tview.NewModal()
2035
formAppSelection := tview.NewForm()
21-
formRPC := tview.NewForm()
36+
formRemovingApp := tview.NewForm()
2237
formItemAppList := tview.NewDropDown().SetFieldWidth(34).SetLabel(Lang["selectApp"])
2338

2439
// Input Infos
@@ -44,7 +59,7 @@ func LoopUI() {
4459
ConfigApps[inputAppName] = inputAppID
4560
Config["selectedApp"] = inputAppName
4661
ConfigSave()
47-
formRPC.SetTitle(" " + AppName + " - " + Lang["selectedApp"] + Config["selectedApp"] + " ")
62+
FormRPC.SetTitle(" " + AppName + " - " + Lang["selectedApp"] + Config["selectedApp"] + " ")
4863
pages.SwitchToPage("RPC")
4964
lastPage = "RPC"
5065
}
@@ -63,7 +78,7 @@ func LoopUI() {
6378
AddInputField(Lang["id"], "", 18, tview.InputFieldMaxLength(18), func(text string) {
6479
inputAppID = text
6580
}).
66-
AddButton(Lang["save"], func() {
81+
AddButton(Lang["add"], func() {
6782
if len(inputAppName) < 1 || len(inputAppID) < 18 {
6883
return
6984
}
@@ -80,6 +95,7 @@ func LoopUI() {
8095
formItemAppList.SetOptions(options, func(text string, index int) {
8196
inputAppName = text
8297
})
98+
formItemAppList.SetCurrentOption(-1)
8399
pages.SwitchToPage(lastPage)
84100
lastPage = "RPC"
85101
}
@@ -88,7 +104,7 @@ func LoopUI() {
88104
pages.SwitchToPage(lastPage)
89105
lastPage = "RPC"
90106
})
91-
formAddNewApp.SetBorder(true).SetTitle(" " + Lang["formAddNewAppTitle"] + " - " + AppName + " ").SetTitleAlign(tview.AlignLeft)
107+
formAddNewApp.SetBorder(true).SetTitle(" " + AppName + " ").SetTitleAlign(tview.AlignLeft)
92108
pages.AddPage("addNewApp", formAddNewApp, true, false)
93109

94110
// UI Page - Invalid App ID Modal
@@ -100,6 +116,32 @@ func LoopUI() {
100116
})
101117
pages.AddPage("invalidAppID", modalInvalidAppID, true, false)
102118

119+
// UI Page - Removing App
120+
formRemovingApp = formRemovingApp.
121+
AddFormItem(formItemAppList).
122+
AddButton(Lang["remove"], func() {
123+
delete(ConfigApps, inputAppName)
124+
delete(Config, "selectedApp")
125+
inputAppName = ""
126+
ConfigSave()
127+
options := []string{}
128+
for k := range ConfigApps {
129+
options = append(options, k)
130+
}
131+
formItemAppList.SetOptions(options, func(text string, index int) {
132+
inputAppName = text
133+
})
134+
formItemAppList.SetCurrentOption(-1)
135+
pages.SwitchToPage(lastPage)
136+
lastPage = "RPC"
137+
}).
138+
AddButton(Lang["cancel"], func() {
139+
pages.SwitchToPage(lastPage)
140+
lastPage = "RPC"
141+
})
142+
formRemovingApp.SetBorder(true).SetTitle(" " + AppName + " ").SetTitleAlign(tview.AlignLeft)
143+
pages.AddPage("removingApp", formRemovingApp, true, false)
144+
103145
// UI Page - App Selection
104146
formAppSelection = formAppSelection.
105147
AddFormItem(formItemAppList).
@@ -110,16 +152,19 @@ func LoopUI() {
110152
Config["selectedApp"] = inputAppName
111153
ConfigSave()
112154
if lastPage == "RPC" {
113-
formRPC.SetTitle(" " + AppName + " - " + Lang["selectedApp"] + Config["selectedApp"] + " ")
155+
FormRPC.SetTitle(" " + AppName + " - " + Lang["selectedApp"] + Config["selectedApp"] + " ")
114156
}
115157
pages.SwitchToPage(lastPage)
116158
}).
117159
AddButton(Lang["add"], func() {
118160
lastPage = "appSelection"
119161
pages.SwitchToPage("addNewApp")
162+
formItemAppList.SetCurrentOption(-1)
120163
}).
121164
AddButton(Lang["remove"], func() {
122-
// ...
165+
lastPage = "appSelection"
166+
pages.SwitchToPage("removingApp")
167+
formItemAppList.SetCurrentOption(-1)
123168
}).
124169
AddButton(Lang["quit"], func() {
125170
systray.Quit()
@@ -128,11 +173,17 @@ func LoopUI() {
128173
pages.AddPage("appSelection", formAppSelection, true, false)
129174

130175
// UI Page - RPC
131-
formRPC = formRPC.
132-
AddInputField(Lang["details"], "", 30, nil, nil).
133-
AddInputField(Lang["status"], "", 30, nil, nil).
134-
AddButton(Lang["start"], nil).
176+
FormRPC = FormRPC.
177+
AddInputField(Lang["details"], "", 34, nil, func(text string) {
178+
RPCDetails = text
179+
}).
180+
AddInputField(Lang["state"], "", 34, nil, func(text string) {
181+
RPCState = text
182+
}).
183+
AddButton(Lang["start"], rpcButtonStart).
135184
AddButton(Lang["changeApp"], func() {
185+
RPCActive = false
186+
client.Logout()
136187
options := []string{}
137188
for k := range ConfigApps {
138189
options = append(options, k)
@@ -142,16 +193,17 @@ func LoopUI() {
142193
})
143194
pages.SwitchToPage("appSelection")
144195
lastPage = "RPC"
196+
formItemAppList.SetCurrentOption(-1)
145197
}).
146198
AddButton(Lang["quit"], func() {
147199
systray.Quit()
148200
})
149-
formRPC.SetBorder(true).SetTitle(" " + Lang["selectedApp"] + Config["selectedApp"] + " ").SetTitleAlign(tview.AlignLeft)
150-
pages.AddPage("RPC", formRPC, true, false)
201+
FormRPC.SetBorder(true).SetTitle(" " + Lang["selectedApp"] + Config["selectedApp"] + " ").SetTitleAlign(tview.AlignLeft)
202+
pages.AddPage("RPC", FormRPC, true, false)
151203

152204
// Check if there is no saved app
153205
if len(ConfigApps) < 1 {
154-
Config["selectedApp"] = inputAppName
206+
delete(Config, "selectedApp")
155207
ConfigSave()
156208
pages.SwitchToPage("addFirstApp")
157209
lastPage = "addFirstApp"

0 commit comments

Comments
 (0)