X-Git-Url: https://harishankar.org/repos/?p=resumebuilder.git;a=blobdiff_plain;f=resumebuilder.go;h=5e86a783ac78dff76a947a493bd5023bbae0376f;hp=cc78373f9cc52c9abc480e8400612cfcff1ced72;hb=cce2be1a25bd89da0526695336bd6e6597318d8d;hpb=b820ddf1e8f0f8ef9e3b6c00972c45e128290051 diff --git a/resumebuilder.go b/resumebuilder.go index cc78373..5e86a78 100644 --- a/resumebuilder.go +++ b/resumebuilder.go @@ -8,11 +8,17 @@ import ( ) type Applicant struct { - FirstName string - LastName string - Age int - Sex Sex - Education []Education + FirstName string + LastName string + DateOfBirth Date + Sex Sex + Education []Education +} + +type Date struct { + Year uint + Month uint + Day uint } type Education struct { @@ -23,6 +29,10 @@ type Education struct { type Sex int +var ui *gtk.Builder +var selectedsex Sex +var selecteddate Date + const ( Male Sex = 1 Female = 2 @@ -43,7 +53,50 @@ const ( } } */ -func getWindow(ui gtk.Builder) (*gtk.Window, error) { +func getBasicDetails() (*Applicant, error) { + // Retrieve all the fields. + obj, err := ui.GetObject("FirstName") + if err != nil { + return nil, err + } + fsname, ok := obj.(*gtk.Entry) + if !ok { + return nil, err + } + firstname, err := fsname.GetText() + if err != nil { + return nil, err + } + obj, err = ui.GetObject("LastName") + if err != nil { + return nil, err + } + lsname, ok := obj.(*gtk.Entry) + if !ok { + return nil, err + } + lastname, err := lsname.GetText() + if err != nil { + return nil, err + } + + obj, err = ui.GetObject("Male") + 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 + + return applicant, nil +} + +func getWindow() (*gtk.Window, error) { obj, err := ui.GetObject("MainWindow") if err != nil { fmt.Println(err.Error()) @@ -56,31 +109,45 @@ func getWindow(ui gtk.Builder) (*gtk.Window, error) { return wnd, nil } -func LoadMain() { - gtk.Init(nil) - ui, err := gtk.BuilderNewFromFile("resumebuilder.glade") +func getSaveButton() (*gtk.Button, error) { + btnobj, err := ui.GetObject("SaveButton") if err != nil { fmt.Println(err.Error()) - os.Exit(1) + return nil, err } + btn, ok := btnobj.(*gtk.Button) + if !ok { + return nil, err + } + return btn, nil +} - wnd, err := getWindow(*ui) +func LoadMain() { + gtk.Init(nil) + var err error + ui, err = gtk.BuilderNew() if err != nil { + fmt.Println(err.Error()) os.Exit(1) } - - btnobj, err := ui.GetObject("SaveButton") + asset, err := Asset("resources/resumebuilder.glade") if err != nil { fmt.Println(err.Error()) os.Exit(1) } - btn, ok := btnobj.(*gtk.Button) - if !ok { + 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.Connect("clicked", SaveButtonClicked) + wnd.SetTitle("Resume Builder") wnd.ShowAll() + selectedsex = Male wnd.Connect("destroy", func() { gtk.MainQuit() @@ -88,8 +155,35 @@ func LoadMain() { gtk.Main() } -func SaveButtonClicked() { +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 { + fmt.Println(err.Error()) + os.Exit(1) + } + fmt.Println(*a) } func main() {