Skip to content

Commit 26e2fa6

Browse files
committed
UI WIP
1 parent c60345d commit 26e2fa6

3 files changed

Lines changed: 160 additions & 4 deletions

File tree

.vscode/launch.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,14 @@
44
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
55
"version": "0.2.0",
66
"configurations": [
7+
{
8+
"name": "Run Soham Whatsapp GUI",
9+
"type": "go",
10+
"request": "launch",
11+
"mode": "auto",
12+
"args": ["--dev"],
13+
"program": "${workspaceFolder}/apps/sohan/whatsapp/main.go"
14+
},
715
{
816
"name": "Run Telegram Server",
917
"type": "go",

apps/sohan/whatsapp/icon.png

29.4 KB
Loading

apps/sohan/whatsapp/main.go

Lines changed: 152 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,162 @@
11
package main
22

33
import (
4+
"fyne.io/fyne/v2"
45
"fyne.io/fyne/v2/app"
6+
"fyne.io/fyne/v2/canvas"
7+
"fyne.io/fyne/v2/container"
8+
"fyne.io/fyne/v2/driver/desktop"
9+
"fyne.io/fyne/v2/layout"
10+
"fyne.io/fyne/v2/storage"
511
"fyne.io/fyne/v2/widget"
612
)
713

814
func main() {
9-
a := app.New()
10-
w := a.NewWindow("Hello World")
1115

12-
w.SetContent(widget.NewLabel("Hello World!"))
13-
w.ShowAndRun()
16+
// Create app
17+
myApp := app.New()
18+
// myApp.Settings().SetTheme(th) // Professional dark UI
19+
20+
window := myApp.NewWindow("Whatsapp API(WBOT)")
21+
iconResource, _ := fyne.LoadResourceFromPath("icon.png")
22+
window.SetIcon(iconResource)
23+
window.Resize(fyne.NewSize(600, 420))
24+
window.CenterOnScreen()
25+
// ================= SYSTEM TRAY =================
26+
27+
if desk, ok := myApp.(desktop.App); ok {
28+
29+
showItem := fyne.NewMenuItem("Show", func() {
30+
window.Show()
31+
window.RequestFocus()
32+
})
33+
34+
quitItem := fyne.NewMenuItem("Quit", func() {
35+
myApp.Quit()
36+
})
37+
38+
trayMenu := fyne.NewMenu("RP Softech",
39+
showItem,
40+
fyne.NewMenuItemSeparator(),
41+
quitItem,
42+
)
43+
44+
desk.SetSystemTrayMenu(trayMenu)
45+
46+
// clicking tray icon restores window
47+
desk.SetSystemTrayIcon(iconResource)
48+
}
49+
50+
// ================= LOGO IMAGE =================
51+
52+
logoURI, _ := storage.ParseURI("file://icon.png")
53+
logoImage := canvas.NewImageFromURI(logoURI)
54+
55+
logoImage.FillMode = canvas.ImageFillContain
56+
logoImage.SetMinSize(fyne.NewSize(80, 80))
57+
58+
logoContainer := container.NewHBox(
59+
layout.NewSpacer(),
60+
logoImage,
61+
layout.NewSpacer(),
62+
)
63+
64+
// ================= TITLE =================
65+
66+
title := widget.NewLabelWithStyle(
67+
"WABOT UTILITY",
68+
fyne.TextAlignCenter,
69+
fyne.TextStyle{Bold: true},
70+
)
71+
72+
title.TextStyle = fyne.TextStyle{Bold: true}
73+
74+
titleBox := container.NewPadded(
75+
container.NewHBox(
76+
layout.NewSpacer(),
77+
title,
78+
layout.NewSpacer(),
79+
),
80+
)
81+
centeredCard := ShowInputDetails()
82+
// ================= MAIN LAYOUT =================
83+
84+
mainLayout := container.NewVBox(
85+
logoContainer,
86+
titleBox,
87+
layout.NewSpacer(),
88+
centeredCard,
89+
layout.NewSpacer(),
90+
)
91+
window.SetCloseIntercept(func() {
92+
window.Hide()
93+
})
94+
window.SetContent(mainLayout)
95+
window.ShowAndRun()
96+
}
97+
98+
func ShowInputDetails() *fyne.Container {
99+
// ================= INPUT 1 =================
100+
101+
entry1 := widget.NewEntry()
102+
entry1.SetPlaceHolder("Enter First Value")
103+
entry1.Resize(fyne.NewSize(300, 35))
104+
105+
formRow1 := container.NewGridWithColumns(2,
106+
widget.NewLabel("Field 1:"),
107+
entry1,
108+
)
109+
110+
// ================= INPUT 2 =================
111+
112+
entry2 := widget.NewEntry()
113+
entry2.SetPlaceHolder("Enter Second Value")
114+
115+
formRow2 := container.NewGridWithColumns(2,
116+
widget.NewLabel("Field 2:"),
117+
entry2,
118+
)
119+
120+
// ================= STATUS LABEL =================
121+
122+
status := widget.NewLabel("Ready")
123+
status.Alignment = fyne.TextAlignCenter
124+
status.TextStyle = fyne.TextStyle{Bold: true}
125+
126+
// ================= BUTTONS =================
127+
128+
btnStart := widget.NewButton("Start", func() {
129+
status.SetText("Start button clicked")
130+
})
131+
buttonRow := container.NewHBox(
132+
layout.NewSpacer(),
133+
btnStart,
134+
layout.NewSpacer(),
135+
)
136+
137+
// ================= FORM CARD (Panel Look) =================
138+
139+
formContent := container.NewVBox(
140+
layout.NewSpacer(),
141+
formRow1,
142+
formRow2,
143+
layout.NewSpacer(),
144+
buttonRow,
145+
layout.NewSpacer(),
146+
status,
147+
layout.NewSpacer(),
148+
)
149+
150+
card := widget.NewCard(
151+
"Control Panel",
152+
"Enter details and choose action",
153+
container.NewPadded(formContent),
154+
)
155+
156+
// Center the card in window
157+
return container.NewHBox(
158+
layout.NewSpacer(),
159+
container.NewStack(card),
160+
layout.NewSpacer(),
161+
)
14162
}

0 commit comments

Comments
 (0)