X-Git-Url: https://harishankar.org/repos/?p=resumebuilder.git;a=blobdiff_plain;f=resumebuilder.go;h=09057c67d6ebcb0624335a11ed1a1b418a11da71;hp=cc78373f9cc52c9abc480e8400612cfcff1ced72;hb=5960a1c589fcb3235edef412ab9827f0e9cfe6bd;hpb=b820ddf1e8f0f8ef9e3b6c00972c45e128290051 diff --git a/resumebuilder.go b/resumebuilder.go index cc78373..09057c6 100644 --- a/resumebuilder.go +++ b/resumebuilder.go @@ -3,6 +3,7 @@ package main import ( "fmt" "os" + "strconv" "github.com/gotk3/gotk3/gtk" ) @@ -23,6 +24,9 @@ type Education struct { type Sex int +var ui *gtk.Builder +var selectedsex Sex + const ( Male Sex = 1 Female = 2 @@ -43,7 +47,66 @@ 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("Age") + if err != nil { + return nil, err + } + agectl, ok := obj.(*gtk.Entry) + if !ok { + return nil, err + } + agetxt, err := agectl.GetText() + if err != nil { + return nil, err + } + age, err := strconv.Atoi(agetxt) + 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.Age = age + 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 +119,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}) + + 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 +165,31 @@ 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 SaveButtonClicked() { + a, err := getBasicDetails() + if err != nil { + fmt.Println(err.Error()) + os.Exit(1) + } + fmt.Println(*a) } func main() {