1
1
package main
2
2
3
3
import (
4
+ "bytes"
5
+ "encoding/json"
4
6
"fmt"
5
7
"image/color"
8
+ "os"
6
9
"strings"
7
10
8
11
// "strings"
@@ -28,8 +31,14 @@ import (
28
31
func main () {
29
32
myApp := app .New ()
30
33
myWindow := myApp .NewWindow ("Gbedu" )
31
- myWindow .Resize (fyne .NewSize (800 , 600 ))
32
- myWindow .Title ()
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 )
33
42
34
43
var selectedOption string
35
44
var hasHeaders bool = false
@@ -45,21 +54,29 @@ func main() {
45
54
hasHeaders = checked
46
55
})
47
56
48
- textArea := widget .NewMultiLineEntry ()
57
+ textArea := widget .NewEntry ()
49
58
textArea .MultiLine = true
50
- textArea .Resize (fyne .NewSize (600 , 900 ))
59
+
60
+ scroll := container .NewVScroll (textArea )
61
+ scroll .SetMinSize (fyne .NewSize (200 , 400 ))
51
62
52
63
showError := func () {
53
64
alertContent := container .NewVBox ()
54
65
dialog .ShowCustom (errorMessage , "OK" , alertContent , myWindow )
55
66
}
56
67
68
+ downloadBtn := widget .NewButton ("Download JSON" , func () {
69
+
70
+ })
71
+
72
+ downloadBtn .Disable ()
73
+
57
74
// Create a button to display the selected option
58
75
showButton := widget .NewButton ("Open file" , func () {
59
76
dialog .ShowFileOpen (func (reader fyne.URIReadCloser , err error ) {
60
77
if err == nil && reader != nil {
61
78
var fileExt string
62
- filters := []string {". csv" , ".xlxs " }
79
+ filters := []string {"csv" , "xlsx " }
63
80
fileExt = reader .URI ().Extension ()
64
81
65
82
fileExt = strings .Split (fileExt , "." )[1 ]
@@ -87,26 +104,32 @@ func main() {
87
104
return
88
105
}
89
106
90
- // if !strings.Contains(selectedOption, fileExt) {
91
- // showError()
92
- // return
93
- // }
94
-
95
107
var data []byte
96
108
97
- switch selectedOption {
109
+ switch fileExt {
98
110
case "csv" :
99
111
data = converters .ConvertCSVToJSON (reader .URI ().Path (), hasHeaders )
100
- break
101
112
case "excel" :
102
113
data = converters .ConvertExcelToJSON (reader .URI ().Path (), hasHeaders )
103
- break
104
114
}
105
- textArea .SetText (string (data ))
106
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 ()
107
128
defer reader .Close ()
108
129
109
130
} else {
131
+ errorMessage = "File selection canceled or error occurred:"
132
+ showError ()
110
133
fmt .Println ("File selection canceled or error occurred:" , err )
111
134
}
112
135
}, myWindow )
@@ -119,7 +142,8 @@ func main() {
119
142
content := container .NewVBox (
120
143
grid ,
121
144
showButton ,
122
- textArea ,
145
+ scroll ,
146
+ downloadBtn ,
123
147
)
124
148
125
149
myWindow .SetContent (content )
0 commit comments