8 "github.com/gotk3/gotk3/gtk"
11 type Applicant struct {
28 type Education struct {
32 GradeOrPercentage string
47 /* func SaveToJson(a *Applicant) {
48 b, err := json.Marshal(a)
51 fmt.Println(err.Error())
54 err = ioutil.WriteFile("test.json", b, 0644)
56 fmt.Println(err.Error())
61 func setLineText(fieldname string, buf string) {
62 obj, err := ui.GetObject(fieldname)
66 field, ok := obj.(*gtk.Entry)
73 func getLineText(fieldname string) (string, error) {
74 obj, err := ui.GetObject(fieldname)
78 field, ok := obj.(*gtk.Entry)
82 fieldstr, err := field.GetText()
89 func getMultilineText(fieldname string) (string, error) {
90 obj, err := ui.GetObject(fieldname)
94 fieldctl, ok := obj.(*gtk.TextView)
98 textbuf, err := fieldctl.GetBuffer()
102 start, end := textbuf.GetBounds()
103 textstr, err := textbuf.GetText(start, end, true)
110 func getBasicDetails() (*Applicant, error) {
111 // Retrieve all the fields.
113 firstname, err := getLineText("FirstName")
117 lastname, err := getLineText("LastName")
122 address, err := getMultilineText("Address")
127 contact, err := getLineText("ContactNumber")
131 email, err := getLineText("Email")
136 // Store the contents in Applicant object
137 var applicant = new(Applicant)
139 applicant.FirstName = firstname
140 applicant.LastName = lastname
141 applicant.DateOfBirth = selecteddate
142 applicant.Sex = selectedsex
143 applicant.Address = address
144 applicant.ContactNo = contact
145 applicant.Email = email
147 return applicant, nil
150 func getWindow() (*gtk.Window, error) {
151 obj, err := ui.GetObject("MainWindow")
153 fmt.Println(err.Error())
156 wnd, ok := obj.(*gtk.Window)
166 ui, err = gtk.BuilderNew()
168 fmt.Println(err.Error())
171 asset, err := Asset("resources/resumebuilder.glade")
173 fmt.Println(err.Error())
176 ui.AddFromString(string(asset))
177 ui.ConnectSignals(map[string]interface{}{"SexMaleSelected": sexMaleSelected,
178 "SexFemaleSelected": sexFemaleSelected, "SexOtherSelected": sexOtherSelected,
179 "SaveButtonClicked": saveButtonClicked, "DoBSelected": doBSelected,
180 "AddEducationClicked": addEducationClicked})
182 wnd, err := getWindow()
187 wnd.SetTitle("Resume Builder")
191 wnd.Connect("destroy", func() {
197 func sexMaleSelected(male *gtk.RadioButton) {
198 if male.GetActive() {
203 func sexFemaleSelected(female *gtk.RadioButton) {
204 if female.GetActive() {
209 func sexOtherSelected(other *gtk.RadioButton) {
210 if other.GetActive() {
215 func doBSelected(dob *gtk.Calendar) {
216 selecteddate.Year, selecteddate.Month, selecteddate.Day = dob.GetDate()
219 func getEducationFields() (*Education, error) {
221 qual, err := getLineText("QualificationTitle")
225 inst, err := getLineText("InstitutionName")
229 yearp, err := getLineText("YearPassing")
233 year, err := strconv.Atoi(yearp)
237 gradep, err := getLineText("GradeOrPercentag")
241 ed.Qualification = qual
242 ed.Institution = inst
243 ed.YearOfPassing = uint(year)
244 ed.GradeOrPercentage = gradep
249 func addEducationClicked() {
250 ed, err := getEducationFields()
254 lstore, err := ui.GetObject("EducationStore")
258 edustore, ok := lstore.(*gtk.ListStore)
262 iter := edustore.Append()
263 edustore.SetValue(iter, 0, ed.Qualification)
264 edustore.SetValue(iter, 1, ed.Institution)
265 edustore.SetValue(iter, 2, ed.YearOfPassing)
266 edustore.SetValue(iter, 3, ed.GradeOrPercentage)
268 setLineText("QualificationTitle", "")
269 setLineText("InstitutionName", "")
270 setLineText("YearPassing", "")
271 setLineText("GradeOrPercentag", "")
274 func saveButtonClicked() {
275 a, err := getBasicDetails()
277 fmt.Println(err.Error())