Changed Age to Date of Birth
[resumebuilder.git] / resumebuilder.go
index cc78373..5e86a78 100644 (file)
@@ -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() {