Changed Age to Date of Birth
[resumebuilder.git] / resumebuilder.go
1 package main
2
3 import (
4 "fmt"
5 "os"
6
7 "github.com/gotk3/gotk3/gtk"
8 )
9
10 type Applicant struct {
11 FirstName string
12 LastName string
13 DateOfBirth Date
14 Sex Sex
15 Education []Education
16 }
17
18 type Date struct {
19 Year uint
20 Month uint
21 Day uint
22 }
23
24 type Education struct {
25 SchoolName string
26 YearOfPassing int
27 PassPercentage float32
28 }
29
30 type Sex int
31
32 var ui *gtk.Builder
33 var selectedsex Sex
34 var selecteddate Date
35
36 const (
37 Male Sex = 1
38 Female = 2
39 Other = 3
40 )
41
42 /* func SaveToJson(a *Applicant) {
43 b, err := json.Marshal(a)
44
45 if err != nil {
46 fmt.Println(err.Error())
47 os.Exit(2)
48 }
49 err = ioutil.WriteFile("test.json", b, 0644)
50 if err != nil {
51 fmt.Println(err.Error())
52 os.Exit(3)
53 }
54 } */
55
56 func getBasicDetails() (*Applicant, error) {
57 // Retrieve all the fields.
58 obj, err := ui.GetObject("FirstName")
59 if err != nil {
60 return nil, err
61 }
62 fsname, ok := obj.(*gtk.Entry)
63 if !ok {
64 return nil, err
65 }
66 firstname, err := fsname.GetText()
67 if err != nil {
68 return nil, err
69 }
70 obj, err = ui.GetObject("LastName")
71 if err != nil {
72 return nil, err
73 }
74 lsname, ok := obj.(*gtk.Entry)
75 if !ok {
76 return nil, err
77 }
78 lastname, err := lsname.GetText()
79 if err != nil {
80 return nil, err
81 }
82
83 obj, err = ui.GetObject("Male")
84 if err != nil {
85 return nil, err
86 }
87
88 // Store the contents in Applicant object
89 var applicant = new(Applicant)
90
91 applicant.FirstName = firstname
92 applicant.LastName = lastname
93 applicant.DateOfBirth = selecteddate
94 applicant.Sex = selectedsex
95
96 return applicant, nil
97 }
98
99 func getWindow() (*gtk.Window, error) {
100 obj, err := ui.GetObject("MainWindow")
101 if err != nil {
102 fmt.Println(err.Error())
103 return nil, err
104 }
105 wnd, ok := obj.(*gtk.Window)
106 if !ok {
107 return nil, err
108 }
109 return wnd, nil
110 }
111
112 func getSaveButton() (*gtk.Button, error) {
113 btnobj, err := ui.GetObject("SaveButton")
114 if err != nil {
115 fmt.Println(err.Error())
116 return nil, err
117 }
118 btn, ok := btnobj.(*gtk.Button)
119 if !ok {
120 return nil, err
121 }
122 return btn, nil
123 }
124
125 func LoadMain() {
126 gtk.Init(nil)
127 var err error
128 ui, err = gtk.BuilderNew()
129 if err != nil {
130 fmt.Println(err.Error())
131 os.Exit(1)
132 }
133 asset, err := Asset("resources/resumebuilder.glade")
134 if err != nil {
135 fmt.Println(err.Error())
136 os.Exit(1)
137 }
138 ui.AddFromString(string(asset))
139 ui.ConnectSignals(map[string]interface{}{"SexMaleSelected": sexMaleSelected,
140 "SexFemaleSelected": sexFemaleSelected, "SexOtherSelected": sexOtherSelected,
141 "SaveButtonClicked": SaveButtonClicked, "DoBSelected": doBSelected})
142
143 wnd, err := getWindow()
144 if err != nil {
145 os.Exit(1)
146 }
147
148 wnd.SetTitle("Resume Builder")
149 wnd.ShowAll()
150 selectedsex = Male
151
152 wnd.Connect("destroy", func() {
153 gtk.MainQuit()
154 })
155 gtk.Main()
156 }
157
158 func sexMaleSelected(male *gtk.RadioButton) {
159 if male.GetActive() {
160 selectedsex = Male
161 }
162 }
163
164 func sexFemaleSelected(female *gtk.RadioButton) {
165 if female.GetActive() {
166 selectedsex = Female
167 }
168 }
169
170 func sexOtherSelected(other *gtk.RadioButton) {
171 if other.GetActive() {
172 selectedsex = Other
173 }
174 }
175
176 func doBSelected(dob *gtk.Calendar) {
177 selecteddate.Year, selecteddate.Month, selecteddate.Day = dob.GetDate()
178 }
179
180 func SaveButtonClicked() {
181 a, err := getBasicDetails()
182 if err != nil {
183 fmt.Println(err.Error())
184 os.Exit(1)
185 }
186 fmt.Println(*a)
187 }
188
189 func main() {
190 LoadMain()
191 }