X-Git-Url: https://harishankar.org/repos/?p=resumebuilder.git;a=blobdiff_plain;f=resumebuilder.go;h=ab16b01a91caa064d18665c08f14d4909d89cb2b;hp=88fe6a6aea166be5da45ba7424bf6b47bb2a5b69;hb=2f8931572b346167965f37199e3835d03f985e29;hpb=07ca6267d1b30f4e2b590126b7ac714f4e8a28ca diff --git a/resumebuilder.go b/resumebuilder.go index 88fe6a6..ab16b01 100644 --- a/resumebuilder.go +++ b/resumebuilder.go @@ -8,11 +8,20 @@ import ( ) type Applicant struct { - FirstName string - LastName string - Age int - Sex Sex - Education []Education + FirstName string + LastName string + DateOfBirth Date + Sex Sex + Address string + ContactNo string + Email string + Education []Education +} + +type Date struct { + Year uint + Month uint + Day uint } type Education struct { @@ -24,6 +33,8 @@ type Education struct { type Sex int var ui *gtk.Builder +var selectedsex Sex +var selecteddate Date const ( Male Sex = 1 @@ -45,36 +56,79 @@ const ( } } */ -func getBasicDetails() (*Applicant, error) { - obj, err := ui.GetObject("FirstName") +func getLineText(fieldname string) (string, error) { + obj, err := ui.GetObject(fieldname) if err != nil { - return nil, err + return "", err } - fsname, ok := obj.(*gtk.Entry) + field, ok := obj.(*gtk.Entry) if !ok { + return "", err + } + fieldstr, err := field.GetText() + if err != nil { + return "", err + } + return fieldstr, nil +} + +func getMultilineText(fieldname string) (string, error) { + obj, err := ui.GetObject(fieldname) + if err != nil { + return "", err + } + fieldctl, ok := obj.(*gtk.TextView) + if !ok { + return "", err + } + textbuf, err := fieldctl.GetBuffer() + if err != nil { + return "", err + } + start, end := textbuf.GetBounds() + textstr, err := textbuf.GetText(start, end, true) + if err != nil { + return "", err + } + return textstr, nil +} + +func getBasicDetails() (*Applicant, error) { + // Retrieve all the fields. + + firstname, err := getLineText("FirstName") + if err != nil { return nil, err } - firstname, err := fsname.GetText() + lastname, err := getLineText("LastName") if err != nil { return nil, err } - obj, err = ui.GetObject("LastName") + + address, err := getMultilineText("Address") if err != nil { return nil, err } - lsname, ok := obj.(*gtk.Entry) - if !ok { + + contact, err := getLineText("ContactNumber") + if err != nil { return nil, err } - lastname, err := lsname.GetText() + email, err := getLineText("Email") if err != nil { return nil, err } + // Store the contents in Applicant object var applicant = new(Applicant) applicant.FirstName = firstname applicant.LastName = lastname + applicant.DateOfBirth = selecteddate + applicant.Sex = selectedsex + applicant.Address = address + applicant.ContactNo = contact + applicant.Email = email return applicant, nil } @@ -92,19 +146,6 @@ func getWindow() (*gtk.Window, error) { return wnd, nil } -func getSaveButton() (*gtk.Button, error) { - btnobj, err := ui.GetObject("SaveButton") - if err != nil { - fmt.Println(err.Error()) - return nil, err - } - btn, ok := btnobj.(*gtk.Button) - if !ok { - return nil, err - } - return btn, nil -} - func LoadMain() { gtk.Init(nil) var err error @@ -119,19 +160,18 @@ func LoadMain() { os.Exit(1) } ui.AddFromString(string(asset)) + ui.ConnectSignals(map[string]interface{}{"SexMaleSelected": sexMaleSelected, + "SexFemaleSelected": sexFemaleSelected, "SexOtherSelected": sexOtherSelected, + "SaveButtonClicked": SaveButtonClicked, "DoBSelected": doBSelected}) wnd, err := getWindow() if err != nil { os.Exit(1) } - btn, err := getSaveButton() - if err != nil { - os.Exit(1) - } - btn.Connect("clicked", SaveButtonClicked) wnd.SetTitle("Resume Builder") wnd.ShowAll() + selectedsex = Male wnd.Connect("destroy", func() { gtk.MainQuit() @@ -139,6 +179,28 @@ func LoadMain() { gtk.Main() } +func sexMaleSelected(male *gtk.RadioButton) { + if male.GetActive() { + selectedsex = Male + } +} + +func sexFemaleSelected(female *gtk.RadioButton) { + if female.GetActive() { + selectedsex = Female + } +} + +func sexOtherSelected(other *gtk.RadioButton) { + if other.GetActive() { + selectedsex = Other + } +} + +func doBSelected(dob *gtk.Calendar) { + selecteddate.Year, selecteddate.Month, selecteddate.Day = dob.GetDate() +} + func SaveButtonClicked() { a, err := getBasicDetails() if err != nil {