Skip to content

Commit 74520d2

Browse files
committed
clean up
1 parent 20553c5 commit 74520d2

File tree

5 files changed

+183
-154
lines changed

5 files changed

+183
-154
lines changed

.gitignore

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
*.exe
22
.exe~
3-
./go-excel.exe~
4-
C:\Users\MY PC\Desktop\Workspaces\Go\go-excel\go-excel.exe~
3+
./go-excel.exe~

go-excel.exe~

12.9 KB
Binary file not shown.

gui/gui.go

Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
package gui
2+
3+
import (
4+
"bytes"
5+
"encoding/json"
6+
"fmt"
7+
"image/color"
8+
"os"
9+
"strings"
10+
"time"
11+
12+
"fyne.io/fyne/v2"
13+
"fyne.io/fyne/v2/app"
14+
"fyne.io/fyne/v2/storage"
15+
16+
"github.com/charliescript/go-excel/converters"
17+
"github.com/charliescript/go-excel/utils"
18+
19+
"fyne.io/fyne/v2/canvas"
20+
"fyne.io/fyne/v2/container"
21+
"fyne.io/fyne/v2/dialog"
22+
"fyne.io/fyne/v2/layout"
23+
"fyne.io/fyne/v2/widget"
24+
)
25+
26+
func RenderUI() {
27+
myApp := app.New()
28+
myWindow := myApp.NewWindow("Gbedu")
29+
myWindow.Resize(fyne.NewSize(800, 500))
30+
31+
file, _ := os.ReadFile("icon.jpeg")
32+
33+
pic := fyne.NewStaticResource("name", file)
34+
35+
myApp.SetIcon(pic)
36+
myWindow.SetIcon(pic)
37+
38+
var selectedOption string
39+
var hasHeaders bool = false
40+
var errorMessage string
41+
var fileExt string
42+
var jsonData []byte
43+
44+
// Create a dropdown select widget
45+
selectItems := []string{"excel", "csv"}
46+
dropdown := widget.NewSelect(selectItems, func(selected string) {
47+
selectedOption = selected
48+
})
49+
50+
checkbox := widget.NewCheck("", func(checked bool) {
51+
hasHeaders = checked
52+
})
53+
54+
textArea := widget.NewEntry()
55+
textArea.MultiLine = true
56+
57+
scroll := container.NewVScroll(textArea)
58+
scroll.SetMinSize(fyne.NewSize(200, 400))
59+
60+
showError := func() {
61+
alertContent := container.NewVBox()
62+
dialog.ShowCustom(errorMessage, "OK", alertContent, myWindow)
63+
}
64+
65+
saveFileDialog := func() {
66+
saveDialog := dialog.NewFileSave(func(writer fyne.URIWriteCloser, err error) {
67+
if err != nil {
68+
fmt.Println("Error while saving file:", err)
69+
return
70+
}
71+
72+
if writer == nil {
73+
fmt.Println("Save file dialog was canceled")
74+
return
75+
}
76+
77+
writer.Write(jsonData)
78+
}, myWindow)
79+
timestamp := time.Now().Format("20060102-150405")
80+
81+
fileName := "data-" + timestamp + ".json"
82+
saveDialog.SetFileName(fileName)
83+
saveDialog.SetFilter(storage.NewExtensionFileFilter([]string{".xlxs", ".csv"}))
84+
saveDialog.Show()
85+
saveDialog.SetOnClosed(func() {
86+
errorMessage = "File save successfully"
87+
showError()
88+
})
89+
}
90+
91+
downloadBtn := widget.NewButton("Download JSON", func() {
92+
saveFileDialog()
93+
94+
})
95+
96+
downloadBtn.Disable()
97+
98+
showButton := widget.NewButton("Open file", func() {
99+
dialog.ShowFileOpen(func(reader fyne.URIReadCloser, err error) {
100+
if err == nil && reader != nil {
101+
filters := []string{"csv", "xlsx"}
102+
fileExt = reader.URI().Extension()
103+
104+
fileExt = strings.Split(fileExt, ".")[1]
105+
106+
fmt.Println(fileExt)
107+
fmt.Println("Comparsion", utils.Contains(filters, fileExt))
108+
109+
if !utils.Contains(filters, fileExt) {
110+
errorMessage = "Invalid file Extension"
111+
showError()
112+
return
113+
}
114+
115+
if selectedOption == "csv" && fileExt == ".csv" {
116+
fileExt = "csv"
117+
} else {
118+
fileExt = "excel"
119+
}
120+
121+
fmt.Println(selectedOption, fileExt)
122+
123+
if selectedOption != fileExt {
124+
errorMessage = "Invalid file format"
125+
showError()
126+
return
127+
}
128+
129+
switch fileExt {
130+
case "csv":
131+
jsonData = converters.ConvertCSVToJSON(reader.URI().Path(), hasHeaders)
132+
case "excel":
133+
jsonData = converters.ConvertExcelToJSON(reader.URI().Path(), hasHeaders)
134+
}
135+
136+
var formattedJSON bytes.Buffer
137+
err := json.Indent(&formattedJSON, []byte(jsonData), "", " ")
138+
if err != nil {
139+
// Handle error
140+
errorMessage = "File selection canceled or error occurred:"
141+
showError()
142+
return
143+
}
144+
145+
textArea.SetText(formattedJSON.String())
146+
downloadBtn.Enable()
147+
defer reader.Close()
148+
149+
} else {
150+
errorMessage = "File selection canceled or error occurred:"
151+
showError()
152+
fmt.Println("File selection canceled or error occurred:", err)
153+
}
154+
}, myWindow)
155+
})
156+
157+
text1 := canvas.NewText("File Format", color.White)
158+
text2 := canvas.NewText("Header (Set if first row it heder)", color.White)
159+
grid := container.New(layout.NewGridLayout(2), text1, dropdown, text2, checkbox)
160+
161+
content := container.NewVBox(
162+
grid,
163+
showButton,
164+
scroll,
165+
downloadBtn,
166+
)
167+
168+
myWindow.SetContent(content)
169+
myWindow.ShowAndRun()
170+
}

main.go

Lines changed: 2 additions & 152 deletions
Original file line numberDiff line numberDiff line change
@@ -1,160 +1,10 @@
11
package main
22

33
import (
4-
"bytes"
5-
"encoding/json"
6-
"fmt"
7-
"image/color"
8-
"os"
9-
"strings"
10-
11-
// "strings"
12-
13-
// "strings"
14-
15-
// "io/fs"
16-
// "io/ioutil"
17-
// "os"
18-
19-
"fyne.io/fyne/v2"
20-
"fyne.io/fyne/v2/app"
21-
22-
"github.com/charliescript/go-excel/converters"
23-
24-
"fyne.io/fyne/v2/canvas"
25-
"fyne.io/fyne/v2/container"
26-
"fyne.io/fyne/v2/dialog"
27-
"fyne.io/fyne/v2/layout"
28-
"fyne.io/fyne/v2/widget"
4+
"github.com/charliescript/go-excel/gui"
295
)
306

317
func main() {
32-
myApp := app.New()
33-
myWindow := myApp.NewWindow("Gbedu")
34-
myWindow.Resize(fyne.NewSize(800, 500))
35-
36-
file, _ := os.ReadFile("icon.jpeg")
37-
38-
pic := fyne.NewStaticResource("name", file)
39-
40-
myApp.SetIcon(pic)
41-
myWindow.SetIcon(pic)
42-
43-
var selectedOption string
44-
var hasHeaders bool = false
45-
var errorMessage string
46-
47-
// Create a dropdown select widget
48-
selectItems := []string{"excel", "csv"}
49-
dropdown := widget.NewSelect(selectItems, func(selected string) {
50-
selectedOption = selected
51-
})
52-
53-
checkbox := widget.NewCheck("", func(checked bool) {
54-
hasHeaders = checked
55-
})
56-
57-
textArea := widget.NewEntry()
58-
textArea.MultiLine = true
59-
60-
scroll := container.NewVScroll(textArea)
61-
scroll.SetMinSize(fyne.NewSize(200, 400))
62-
63-
showError := func() {
64-
alertContent := container.NewVBox()
65-
dialog.ShowCustom(errorMessage, "OK", alertContent, myWindow)
66-
}
67-
68-
downloadBtn := widget.NewButton("Download JSON", func() {
69-
70-
})
71-
72-
downloadBtn.Disable()
73-
74-
// Create a button to display the selected option
75-
showButton := widget.NewButton("Open file", func() {
76-
dialog.ShowFileOpen(func(reader fyne.URIReadCloser, err error) {
77-
if err == nil && reader != nil {
78-
var fileExt string
79-
filters := []string{"csv", "xlsx"}
80-
fileExt = reader.URI().Extension()
81-
82-
fileExt = strings.Split(fileExt, ".")[1]
83-
84-
fmt.Println(fileExt)
85-
fmt.Println("Comparsion", Contains(filters, fileExt))
86-
87-
if !Contains(filters, fileExt) {
88-
errorMessage = "Invalid file Extension"
89-
showError()
90-
return
91-
}
92-
93-
if selectedOption == "csv" && fileExt == ".csv" {
94-
fileExt = "csv"
95-
} else {
96-
fileExt = "excel"
97-
}
98-
99-
fmt.Println(selectedOption, fileExt)
100-
101-
if selectedOption != fileExt {
102-
errorMessage = "Invalid file format"
103-
showError()
104-
return
105-
}
106-
107-
var data []byte
108-
109-
switch fileExt {
110-
case "csv":
111-
data = converters.ConvertCSVToJSON(reader.URI().Path(), hasHeaders)
112-
case "excel":
113-
data = converters.ConvertExcelToJSON(reader.URI().Path(), hasHeaders)
114-
}
115-
116-
var formattedJSON bytes.Buffer
117-
err := json.Indent(&formattedJSON, []byte(data), "", " ")
118-
if err != nil {
119-
// Handle error
120-
errorMessage = "File selection canceled or error occurred:"
121-
showError()
122-
return
123-
}
124-
125-
textArea.SetText(formattedJSON.String())
126-
fmt.Print(data)
127-
downloadBtn.Enable()
128-
defer reader.Close()
129-
130-
} else {
131-
errorMessage = "File selection canceled or error occurred:"
132-
showError()
133-
fmt.Println("File selection canceled or error occurred:", err)
134-
}
135-
}, myWindow)
136-
})
137-
138-
text1 := canvas.NewText("File Format", color.White)
139-
text2 := canvas.NewText("Header (Set if first row it heder)", color.White)
140-
grid := container.New(layout.NewGridLayout(2), text1, dropdown, text2, checkbox)
141-
142-
content := container.NewVBox(
143-
grid,
144-
showButton,
145-
scroll,
146-
downloadBtn,
147-
)
148-
149-
myWindow.SetContent(content)
150-
myWindow.ShowAndRun()
151-
}
8+
gui.RenderUI()
1529

153-
func Contains(slice []string, value string) bool {
154-
for _, v := range slice {
155-
if v == value {
156-
return true
157-
}
158-
}
159-
return false
16010
}

utils/slices.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package utils
2+
3+
func Contains(slice []string, value string) bool {
4+
for _, v := range slice {
5+
if v == value {
6+
return true
7+
}
8+
}
9+
return false
10+
}

0 commit comments

Comments
 (0)