File open functionality implemented
[biacv.git] / biacv_mainwindow.py
index cdb1305..4a98c2d 100644 (file)
@@ -12,6 +12,55 @@ class Biacv_mainwindow (PyQt4.QtGui.QMainWindow, bui.Ui_biacv_mainwindow):
                self.setupUi (self)
                self.currentfile = None
                self.ismodified = False
+               self.setWindowTitle ("BiaCV - untitled")
+
+       # function to open a file
+       def on_file_open (self):
+               # if modified, confirm
+               if self.ismodified is True:
+                       ans = PyQt4.QtGui.QMessageBox.question (self, lang.CONFIRM, lang.CONFIRM_DISCARD_SAVE,
+                               PyQt4.QtGui.QMessageBox.Yes, PyQt4.QtGui.QMessageBox.No)
+                       # if no, then don't open the file
+                       if ans <> PyQt4.QtGui.QMessageBox.Yes:
+                               return
+
+               # open file dialog
+               openfilename = PyQt4.QtGui.QFileDialog.getOpenFileName (self, lang.OPEN_TITLE)
+               # if no open file name then return
+               if openfilename == "":
+                       return
+
+               # load the document data from open file name
+               docdata = data.BiaCVData ()
+               docdata.load_data (openfilename)
+
+               # set the title
+               self.title.setText (docdata.data["title"])
+
+               # set the personal information fields from document data
+               self.set_personal_info (docdata)
+
+               # set the educational qualifications
+               self.set_educational_qualifications (docdata)
+
+               # set the professional history
+               self.set_professional_history (docdata)
+
+               # set the career objectives
+               self.set_career_objectives (docdata)
+
+               # set the skills list
+               self.set_skillsets_info (docdata)
+
+               # set the additional information
+               self.set_additional_info (docdata)
+
+               # set the current document
+               self.currentfile = openfilename
+               self.ismodified = False
+
+               # set the window title
+               self.setWindowTitle ("BiaCV - " + self.currentfile)
 
        # function to save a file
        def on_file_save (self):
@@ -21,15 +70,15 @@ class Biacv_mainwindow (PyQt4.QtGui.QMainWindow, bui.Ui_biacv_mainwindow):
 
                # if no current file get file name from file save dialog
                if self.currentfile is None:
-                       self.currentfile = PyQt4.QtGui.QFileDialog.getSaveFileName (self,
+                       savefilename = PyQt4.QtGui.QFileDialog.getSaveFileName (self,
                                lang.SAVE_TITLE)
 
-                       if self.currentfile <> "":
+                       if savefilename <> "":
                                mydata = self.get_document_data ()
                                mydata.save_data (self.currentfile)
                                self.ismodified = False
-                       else:
-                               self.currentfile = None
+                               self.currentfile = savefilename
+                               self.setWindowTitle ("BiaCV - " + self.currentfile)
                else:
                        mydata = self.get_document_data ()
                        mydata.save_data (self.currentfile)
@@ -156,32 +205,130 @@ class Biacv_mainwindow (PyQt4.QtGui.QMainWindow, bui.Ui_biacv_mainwindow):
                self.areacode.setText ("")
                self.unspecified.setChecked (True)
 
+       # function to set personal information data in the GUI from document data
+       def set_personal_info (self, docdata):
+               self.nametitle.setEditText (docdata.data["nametitle"])
+               self.firstname.setText (docdata.data["firstname"])
+               self.lastname.setText (docdata.data["lastname"])
+               self.dateofbirth.setDate (PyQt4.QtCore.QDate.fromString (docdata.data["dateofbirth"], "dd MMM, yyyy"))
+               self.street.setText (docdata.data["street"])
+               self.area.setText (docdata.data["area"])
+               self.city.setText (docdata.data["city"])
+               self.countrycode_landline.setText (docdata.data["countrycode_landline"])
+               self.telephone.setText (docdata.data["landline"])
+               self.countrycode_mobile.setText (docdata.data["countrycode_mobile"])
+               self.mobilenumber.setText (docdata.data["mobile"])
+               self.email.setText (docdata.data["email"])
+               self.areacode.setText (docdata.data["areacode"])
+               if docdata.data["maritalstatus"] is True:
+                       self.married.setChecked (True)
+               elif docdata.data["maritalstatus"] is False:
+                       self.single.setChecked (True)
+               else:
+                       self.unspecified.setChecked (True)
+
        # function to clear professional history in the GUI
        def reset_professional_history (self):
                self.reset_profession_fields ()
                self.professionlist.clear ()
 
+       # function to set the professional history in the GUI from the document data
+       def set_professional_history (self, docdata):
+               # reset the professional history
+               self.reset_professional_history ()
+
+               # add the professional history items to list
+               for item in docdata.data["professionalhistory"]:
+                       professionitem = PyQt4.QtGui.QTreeWidgetItem (
+                                       [
+                                               item["jobtitle"],
+                                               item["joindate"],
+                                               item["leavedate"],
+                                               item["organization"],
+                                               item["additionalinfo"]
+                                       ]
+                               )
+                       self.professionlist.addTopLevelItem (professionitem)
+
        # function to clear educational qualifications in the GUI
        def reset_educational_qualifications (self):
                self.reset_education_fields ()
                self.educationlist.clear ()
 
+       # function to set education qualifications in the GUI from document data
+       def set_educational_qualifications (self, docdata):
+               # reset the educational qualifications
+               self.reset_educational_qualifications ()
+
+               # add education items to list
+               for item in docdata.data["educationalqualifications"]:
+                       educationitem = PyQt4.QtGui.QTreeWidgetItem (
+                                       [
+                                               item["degree"],
+                                               item["graduation"],
+                                               item["institution"],
+                                               item["university"],
+                                               item["grade"],
+                                               str (item["percentage"])
+                                       ]
+                               )
+                       self.educationlist.addTopLevelItem (educationitem)
+
        # function to clear career objectives data in the GUI
        def reset_career_objectives (self):
                self.shorttermcareer.setPlainText ("")
                self.longtermgoals.setPlainText ("")
 
+       # function to set career objectives data in the GUI from document data
+       def set_career_objectives (self, docdata):
+               self.shorttermcareer.setPlainText (u'\n'.join (docdata.data["shorttermobjectives"]))
+               self.longtermgoals.setPlainText (u'\n'.join (docdata.data["longtermgoals"]))
+
        # function to clear skill sets data in the GUI
        def reset_skillsets_info (self):
                self.reset_skillset_fields ()
                self.skillslist.clear ()
 
+       # function to set the skill sets data in the GUI from document data
+       def set_skillsets_info (self, docdata):
+               # clear the skill sets information
+               self.reset_skillsets_info ()
+
+               for item in docdata.data["skillsets"]:
+                       skillitem = PyQt4.QtGui.QTreeWidgetItem (
+                                       [
+                                               item["skilltitle"],
+                                               item["skilldesc"]
+                                       ]
+                               )
+                       self.skillslist.addTopLevelItem (skillitem)
+
+
        # function to clear additional information data in the GUI
        def reset_additional_info (self):
                self.reset_language_fields ()
                self.languageslist.clear ()
                self.additionalinformation.setPlainText ("")
 
+       # function to set additional information data in the GUI from the document data
+       def set_additional_info (self, docdata):
+               # clear the additional information
+               self.reset_additional_info ()
+
+               # set the languages list
+               for item in docdata.data["languagesknown"]:
+                       langitem = PyQt4.QtGui.QTreeWidgetItem (
+                                       [
+                                               item["language"],
+                                               str (item["canspeak"]),
+                                               str (item["canreadwrite"]),
+                                               str (item["isproficient"])
+                                       ]
+                               )
+                       self.languageslist.addTopLevelItem (langitem)
+
+               self.additionalinformation.setPlainText (docdata.data["additionalinformation"])
+
        # function to clear all the fields and reset them to defaults
        def new_document (self):
                # first clear the individual record fields in the tabs
@@ -205,6 +352,9 @@ class Biacv_mainwindow (PyQt4.QtGui.QMainWindow, bui.Ui_biacv_mainwindow):
                self.currentfile = None
                self.ismodified = False
 
+               # set the window title
+               self.setWindowTitle ("BiaCV - untitled")
+
        # file new action is triggered
        def on_file_new (self):
                # if the previous document is modified