File save function implemented
[biacv.git] / biacv_mainwindow.py
index 7d577da..192ef4c 100644 (file)
@@ -4,6 +4,7 @@
 import PyQt4
 import biacv_mainwindow_ui as bui
 import biacv_lang as lang
+import biacv_data as data
 
 class Biacv_mainwindow (PyQt4.QtGui.QMainWindow, bui.Ui_biacv_mainwindow):
        def __init__ (self):
@@ -12,6 +13,130 @@ class Biacv_mainwindow (PyQt4.QtGui.QMainWindow, bui.Ui_biacv_mainwindow):
                self.currentfile = None
                self.ismodified = False
 
+       # function to save a file
+       def on_file_save (self):
+               # only save modified file
+               if self.ismodified is False:
+                       return
+
+               # if no current file get file name from file save dialog
+               if self.currentfile is None:
+                       self.currentfile = PyQt4.QtGui.QFileDialog.getSaveFileName (self,
+                               lang.SAVE_TITLE)
+
+                       if self.currentfile is not None:
+                               mydata = self.get_document_data ()
+                               mydata.save_data (self.currentfile)
+                               self.ismodified = False
+               else:
+                       mydata = self.get_document_data ()
+                       mydata.save_data (self.currentfile)
+                       self.ismodified = False
+
+       # function to set document data from the GUI
+       def get_document_data (self):
+               docdata = data.BiaCVData ()
+
+               # set the document title
+               docdata.set_document_title (unicode (self.title.text (), "utf-8"))
+
+               # get the marital status string from check box
+               if self.married.isChecked ():
+                       maritalstatus = True
+               elif self.single.isChecked ():
+                       maritalstatus = False
+               else:
+                       maritalstatus = None
+
+               docdata.set_personal_info (
+                               unicode (self.nametitle.lineEdit ().text (), "utf-8"),
+                               unicode (self.firstname.text (), "utf-8"),
+                               unicode (self.lastname.text (), "utf-8"),
+                               unicode (self.dateofbirth.date().toString ("dd MMM, yyyy"), "utf-8"),
+                               unicode (self.street.text (), "utf-8"),
+                               unicode (self.area.text (), "utf-8"),
+                               unicode (self.city.text (), "utf-8"),
+                               unicode (self.areacode.text (), "utf-8"),
+                               unicode (self.countrycode_landline.text (), "utf-8"),
+                               unicode (self.telephone.text (), "utf-8"),
+                               unicode (self.countrycode_mobile.text (), "utf-8"),
+                               unicode (self.mobilenumber.text (), "utf-8"),
+                               unicode (self.email.text (), "utf-8"),
+                               maritalstatus
+                       )
+               # get the list of educational qualifications from the treewidget
+               education = []
+               i = 0
+               while i < self.educationlist.topLevelItemCount ():
+                       curitem = self.educationlist.topLevelItem (i)
+                       curdict = {}
+                       curdict["degree"] = unicode (curitem.text (0), "utf-8")
+                       curdict["graduation"] = unicode (curitem.text (1), "utf-8")
+                       curdict["institution"] = unicode (curitem.text (2), "utf-8")
+                       curdict["university"] = unicode (curitem.text (3), "utf-8")
+                       curdict["grade"] = unicode (curitem.text (4), "utf-8")
+                       curdict["percentage"] = float (curitem.text (5))
+                       education.append (curdict)
+                       i += 1
+
+               # set the educational qualifications
+               docdata.set_educational_qualifications (education)
+
+               # get the list of professional history from the treewidget
+               professional = []
+               i = 0
+               while i < self.professionlist.topLevelItemCount ():
+                       curitem = self.professionlist.topLevelItem (i)
+                       curdict = {}
+                       curdict["jobtitle"] = unicode (curitem.text (0), "utf-8")
+                       curdict["joindate"] = unicode (curitem.text (1), "utf-8")
+                       curdict["leavedate"] = unicode (curitem.text (2), "utf-8")
+                       curdict["organization"] = unicode (curitem.text (3), "utf-8")
+                       curdict["additionalinfo"] = unicode (curitem.text (4), "utf-8")
+                       professional.append (curdict)
+                       i += 1
+
+               # set the professional qualifications
+               docdata.set_professional_history (professional)
+
+               # set the career objectives
+               shorttermobjectives = unicode (self.shorttermcareer.toPlainText (), "utf-8").splitlines ()
+               longtermgoals = unicode (self.longtermgoals.toPlainText (), "utf-8").splitlines ()
+
+               docdata.set_career_objectives (shorttermobjectives, longtermgoals)
+
+               # set the skill sets
+               skills = []
+               i = 0
+               while i < self.skillslist.topLevelItemCount ():
+                       curitem = self.skillslist.topLevelItem (i)
+                       curdict = {}
+                       curdict["skilltitle"] = unicode (curitem.text (0), "utf-8")
+                       curdict["skilldesc"] = unicode (curitem.text (1), "utf-8")
+                       skills.append (curdict)
+                       i += 1
+               # set the list of skills
+               docdata.set_skillsets (skills)
+
+               # get the list of languages
+               langsknown = []
+               i = 0
+               while i < self.languageslist.topLevelItemCount ():
+                       curitem = self.languageslist.topLevelItem (i)
+                       curdict = {}
+                       curdict["language"] = unicode (curitem.text (0), "utf-8")
+                       curdict["canspeak" ] = (curitem.text (1) == "True")
+                       curdict["canreadwrite"] = (curitem.text (2) == "True")
+                       curdict["isproficient"] = (curitem.text (3) == "True")
+                       langsknown.append (curdict)
+                       i += 1
+
+               additionalinformation = unicode (self.additionalinformation.toPlainText (), "utf-8")
+
+               docdata.set_additional_information (langsknown, additionalinformation)
+
+               return docdata
+
        # function to reset personal information data in the GUI
        def reset_personal_info (self):
                self.nametitle.setEditText ("")