import (
"fmt"
"os"
- "strconv"
"github.com/gotk3/gotk3/gtk"
)
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 {
var ui *gtk.Builder
var selectedsex Sex
+var selecteddate Date
const (
Male Sex = 1
}
} */
-func getBasicDetails() (*Applicant, error) {
- // Retrieve all the fields.
- 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 nil, err
+ return "", err
}
- firstname, err := fsname.GetText()
+ fieldstr, err := field.GetText()
if err != nil {
- return nil, err
+ return "", err
}
- obj, err = ui.GetObject("LastName")
+ return fieldstr, nil
+}
+
+func getMultilineText(fieldname string) (string, error) {
+ obj, err := ui.GetObject(fieldname)
if err != nil {
- return nil, err
+ return "", err
}
- lsname, ok := obj.(*gtk.Entry)
+ fieldctl, ok := obj.(*gtk.TextView)
if !ok {
- return nil, err
+ return "", err
}
- lastname, err := lsname.GetText()
+ textbuf, err := fieldctl.GetBuffer()
if err != nil {
- return nil, err
+ return "", err
+ }
+ start, end := textbuf.GetBounds()
+ textstr, err := textbuf.GetText(start, end, true)
+ if err != nil {
+ return "", err
}
+ return textstr, nil
+}
- obj, err = ui.GetObject("Age")
+func getBasicDetails() (*Applicant, error) {
+ // Retrieve all the fields.
+
+ firstname, err := getLineText("FirstName")
if err != nil {
return nil, err
}
- agectl, ok := obj.(*gtk.Entry)
- if !ok {
+ lastname, err := getLineText("LastName")
+ if err != nil {
return nil, err
}
- agetxt, err := agectl.GetText()
+
+ address, err := getMultilineText("Address")
if err != nil {
return nil, err
}
- age, err := strconv.Atoi(agetxt)
+
+ contact, err := getLineText("ContactNumber")
if err != nil {
return nil, err
}
- obj, err = ui.GetObject("Male")
+ email, err := getLineText("Email")
if err != nil {
return nil, err
}
applicant.FirstName = firstname
applicant.LastName = lastname
- applicant.Age = age
+ applicant.DateOfBirth = selecteddate
applicant.Sex = selectedsex
+ applicant.Address = address
+ applicant.ContactNo = contact
+ applicant.Email = email
return applicant, nil
}
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
ui.AddFromString(string(asset))
ui.ConnectSignals(map[string]interface{}{"SexMaleSelected": sexMaleSelected,
"SexFemaleSelected": sexFemaleSelected, "SexOtherSelected": sexOtherSelected,
- "SaveButtonClicked": SaveButtonClicked})
+ "SaveButtonClicked": SaveButtonClicked, "DoBSelected": doBSelected})
wnd, err := getWindow()
if err != nil {
}
}
+func doBSelected(dob *gtk.Calendar) {
+ selecteddate.Year, selecteddate.Month, selecteddate.Day = dob.GetDate()
+}
+
func SaveButtonClicked() {
a, err := getBasicDetails()
if err != nil {