X-Git-Url: https://harishankar.org/repos/?p=biacv.git;a=blobdiff_plain;f=biacv_mainwindow.py;h=ec74b822d540923ec1c166ea89652a835cd82cca;hp=801928e9786e8fcf96c336112aae67a04ccd9f0b;hb=HEAD;hpb=af2f737f8a7fd79ae16607a18a0936bb74281caf diff --git a/biacv_mainwindow.py b/biacv_mainwindow.py index 801928e..ec74b82 100644 --- a/biacv_mainwindow.py +++ b/biacv_mainwindow.py @@ -1,19 +1,516 @@ +# BiaCV # class for main window import PyQt4 +import sys + import biacv_mainwindow_ui as bui +import biacv_lang as lang +import biacv_data as data +import biacv_exporter as exporter class Biacv_mainwindow (PyQt4.QtGui.QMainWindow, bui.Ui_biacv_mainwindow): def __init__ (self): PyQt4.QtGui.QMainWindow.__init__ (self) + self.show () self.setupUi (self) self.currentfile = None + self.ismodified = False + self.setWindowTitle ("BiaCV - untitled") + + # on window closing + def closeEvent (self, event): + 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) + # ignore event if not confirmed + if ans <> PyQt4.QtGui.QMessageBox.Yes: + event.ignore () + + # on help about dialog box + def on_help_about (self): + PyQt4.QtGui.QMessageBox.about (self, lang.ABOUT_TITLE, lang.ABOUT_TEXT) + + # on file exit + def on_exit (self): + # call the close event + self.close() + + # on file export - export current document to any external format based on + # a template + def on_file_export (self): + # get the template directory + templatedir = PyQt4.QtGui.QFileDialog.getExistingDirectory (self, + lang.OPEN_TEMPLATE_TITLE) + if templatedir == "": + return + + # create a new exporter object + exp = exporter.BiaCVExporter () + + # set the document data + exp.set_data (self.get_document_data ().data) + + # set the template directory + exp.set_template_directory (unicode (templatedir.toUtf8(), "utf-8")) + + # get the output file path + outputfile = PyQt4.QtGui.QFileDialog.getSaveFileName (self, + exp.exporter_name, filter=exp.export_filter) + + if outputfile == "": + return + + + # set the output file + exp.set_output (unicode (outputfile.toUtf8(), "utf-8")) + + # carry out the export function + exp.export () + + # 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, + filter = lang.BIACV_FILE_FILTER) + # 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 profile highlights + self.set_profile_highlights (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 as a new document + def on_file_save_as (self): + savefilename = PyQt4.QtGui.QFileDialog.getSaveFileName (self, + lang.SAVE_TITLE, filter=lang.BIACV_FILE_FILTER) + + # if save file name is not none + if savefilename <> "": + mydata = self.get_document_data () + mydata.save_data (savefilename) + self.ismodified = False + self.currentfile = savefilename + self.setWindowTitle ("BiaCV - " + self.currentfile) + + # 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: + savefilename = PyQt4.QtGui.QFileDialog.getSaveFileName (self, + lang.SAVE_TITLE, filter=lang.BIACV_FILE_FILTER) + + if savefilename <> "": + mydata = self.get_document_data () + mydata.save_data (savefilename) + self.ismodified = False + self.currentfile = savefilename + self.setWindowTitle ("BiaCV - " + self.currentfile) + 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 ().toUtf8 (), "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 ().toUtf8 (), "utf-8"), + unicode (self.firstname.text ().toUtf8 (), "utf-8"), + unicode (self.lastname.text ().toUtf8 (), "utf-8"), + unicode (self.dateofbirth.date().toString ("dd MMM, yyyy"), "utf-8"), + unicode (self.street.text ().toUtf8 (), "utf-8"), + unicode (self.area.text ().toUtf8 (), "utf-8"), + unicode (self.city.text ().toUtf8 (), "utf-8"), + unicode (self.areacode.text ().toUtf8 (), "utf-8"), + unicode (self.country.text ().toUtf8 (), "utf-8"), + unicode (self.countrycode_landline.text ().toUtf8 (), "utf-8"), + unicode (self.telephone.text ().toUtf8 (), "utf-8"), + unicode (self.countrycode_mobile.text ().toUtf8 (), "utf-8"), + unicode (self.mobilenumber.text ().toUtf8 (), "utf-8"), + unicode (self.email.text ().toUtf8 (), "utf-8"), + maritalstatus + ) + + # set the profile highlights + profile_highlights = unicode (self.profile.toPlainText ().toUtf8 (), "utf-8").splitlines () + docdata.set_profile (profile_highlights) + + # 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).toUtf8 (), "utf-8") + curdict["graduation"] = unicode (curitem.text (1).toUtf8 (), "utf-8") + curdict["institution"] = unicode (curitem.text (2).toUtf8 (), "utf-8") + curdict["university"] = unicode (curitem.text (3).toUtf8 (), "utf-8") + curdict["grade"] = unicode (curitem.text (4).toUtf8 (), "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).toUtf8 (), "utf-8") + curdict["joindate"] = unicode (curitem.text (1), "utf-8") + curdict["leavedate"] = unicode (curitem.text (2), "utf-8") + curdict["organization"] = unicode (curitem.text (3).toUtf8 (), "utf-8") + curdict["additionalinfo"] = unicode (curitem.text (4).toUtf8 (), "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 ().toUtf8 (), "utf-8").splitlines () + longtermgoals = unicode (self.longtermgoals.toPlainText ().toUtf8 (), "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).toUtf8 (), "utf-8") + curdict["skilldesc"] = unicode (curitem.text (1).toUtf8 (), "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).toUtf8 (), "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 ().toUtf8 (), "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 ("") + self.firstname.setText ("") + self.lastname.setText ("") + self.dateofbirth.setDate (PyQt4.QtCore.QDate (1970, 1, 1)) + self.street.setText ("") + self.area.setText ("") + self.city.setText ("") + self.countrycode_landline.setText ("") + self.telephone.setText ("") + self.countrycode_mobile.setText ("") + self.mobilenumber.setText ("") + self.email.setText ("") + self.areacode.setText ("") + self.unspecified.setChecked (True) + self.country.setText ("") + + # function to set the profile highlights in the GUI from document data + def set_profile_highlights (self, docdata): + self.profile.setPlainText (u'\n'.join (docdata.data["profile"])) + + # function to reset profile highlights data in GUI + def reset_profile_highlights (self): + self.profile.setPlainText ("") + + # 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"]) + self.country.setText (docdata.data["country"]) + + 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 + self.reset_language_fields () + self.reset_skillset_fields () + + # clear document data + self.title.setText ("") + + self.reset_personal_info () + self.reset_profile_highlights () + self.reset_professional_history () + self.reset_educational_qualifications () + self.reset_career_objectives () + self.reset_skillsets_info () + self.reset_additional_info () + + # set the page to first page + self.pages.setCurrentIndex (0) + + # set current file to none and modified to false + 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 + # as if it should be discarded + 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 ans == PyQt4.QtGui.QMessageBox.Yes: + self.new_document () + # if not modified then simply create a new document + else: + self.new_document () + + # when the document is modified + def on_document_modified (self): + # set the document modified flag + self.ismodified = True + + # update a language in the list of languages + def on_update_lang (self): + # get the selected language + selitems = self.languageslist.selectedItems () + if selitems == []: + PyQt4.QtGui.QMessageBox.critical (self, lang.ERROR_UPDATE, lang.ERROR_NO_SELECTION) + return + # check if the language string is not empty + if self.language.text () == "": + PyQt4.QtGui.QMessageBox.critical (self, lang.ERROR_UPDATE, lang.ERROR_REQ_MISSING) + return + selitem = selitems[0] + selitem.setText (0, self.language.text ()) + selitem.setText (1, str (self.canspeak.isChecked ())) + selitem.setText (2, str (self.canreadwrite.isChecked ())) + selitem.setText (3, str (self.isproficient.isChecked ())) + + # modified the document + self.ismodified = True + + # selecting a language from the list of languages + def on_select_lang (self): + # set the language fields from the selected item + self.set_language_fields () + + # delete a language from the list of languages known + def on_delete_lang (self): + # get selected language + selitems = self.languageslist.selectedItems () + if selitems == []: + PyQt4.QtGui.QMessageBox.critical (self, lang.ERROR_DELETE, lang.ERROR_REQ_MISSING) + return + # confirm + ans = PyQt4.QtGui.QMessageBox.question (self, lang.CONFIRM, lang.CONFIRM_DELETE, + PyQt4.QtGui.QMessageBox.Yes, PyQt4.QtGui.QMessageBox.No) + if ans == PyQt4.QtGui.QMessageBox.Yes: + for item in selitems: + self.languageslist.takeTopLevelItem (self.languageslist.indexOfTopLevelItem (item)) + + self.reset_language_fields () + # set the modified flag + self.ismodified = True # add a language to the list of languages known def on_add_lang (self): # check if the language is set if self.language.text () == "": - PyQt4.QtGui.QMessageBox.critical (self, "Cannot add", "A required field is missing.") + PyQt4.QtGui.QMessageBox.critical (self, lang.ERROR_ADD, lang.ERROR_REQ_MISSING) return langitem = PyQt4.QtGui.QTreeWidgetItem ( [ @@ -26,6 +523,20 @@ class Biacv_mainwindow (PyQt4.QtGui.QMainWindow, bui.Ui_biacv_mainwindow): self.languageslist.addTopLevelItem (langitem) self.reset_language_fields () + # set the modified flag + self.ismodified = True + + # set the language fields from the selected item + def set_language_fields (self): + selitems = self.languageslist.selectedItems () + if selitems == []: + return + selitem = selitems[0] + self.language.setText (selitem.text (0)) + self.canspeak.setChecked (selitem.text (1) == "True") + self.canreadwrite.setChecked (selitem.text(2) == "True") + self.isproficient.setChecked (selitem.text(3) == "True") + # reset the language fields def reset_language_fields (self): self.language.setText ("") @@ -38,15 +549,17 @@ class Biacv_mainwindow (PyQt4.QtGui.QMainWindow, bui.Ui_biacv_mainwindow): # get the selected item selitems = self.skillslist.selectedItems () if selitems == []: - PyQt4.QtGui.QMessageBox.critical (self, "Cannot update", "No item selected.") + PyQt4.QtGui.QMessageBox.critical (self, lang.ERROR_UPDATE, lang.ERROR_NO_SELECTION) return if self.skillsettitle.text () == "": - PyQt4.QtGui.QMessageBox.critical (self, "Cannot update", "A required field is missing.") + PyQt4.QtGui.QMessageBox.critical (self, lang.ERROR_UPDATE, lang.ERROR_REQ_MISSING) return selitem = selitems[0] selitem.setText (0, self.skillsettitle.text ()) selitem.setText (1, self.skilldescription.toPlainText ()) + # set the modified flag + self.ismodified = True # selecting a skill from the list event def on_select_skill (self): @@ -67,11 +580,10 @@ class Biacv_mainwindow (PyQt4.QtGui.QMainWindow, bui.Ui_biacv_mainwindow): # get the selected items selitems = self.skillslist.selectedItems () if selitems == []: - PyQt4.QtGui.QMessageBox.critical (self, "Cannot delete", "No items selected.") + PyQt4.QtGui.QMessageBox.critical (self, lang.ERROR_DELETE, lang.ERROR_NO_SELECTION) return # confirm - ans = PyQt4.QtGui.QMessageBox.question (self, "Confirm", - "Are you sure you wish to delete the selected item?", + ans = PyQt4.QtGui.QMessageBox.question (self, lang.CONFIRM, lang.CONFIRM_DELETE, PyQt4.QtGui.QMessageBox.Yes, PyQt4.QtGui.QMessageBox.No) # answer is yes if ans == PyQt4.QtGui.QMessageBox.Yes: @@ -79,12 +591,14 @@ class Biacv_mainwindow (PyQt4.QtGui.QMainWindow, bui.Ui_biacv_mainwindow): self.skillslist.takeTopLevelItem (self.skillslist.indexOfTopLevelItem (item)) self.reset_skillset_fields () + # set the modified flag + self.ismodified = True # add skill set button is clicked def on_add_skill (self): # if the skill title is blank if self.skillsettitle.text () == "": - PyQt4.QtGui.QMessageBox.critical (self, "Cannot add", "A required field is missing.") + PyQt4.QtGui.QMessageBox.critical (self, lang.ERROR_ADD, lang.ERROR_REQ_MISSING) return skillitem = PyQt4.QtGui.QTreeWidgetItem ( [ @@ -94,6 +608,8 @@ class Biacv_mainwindow (PyQt4.QtGui.QMainWindow, bui.Ui_biacv_mainwindow): ) self.skillslist.addTopLevelItem (skillitem) self.reset_skillset_fields () + # set the modified flag + self.ismodified = True # clear the skill set fields def reset_skillset_fields (self): @@ -105,22 +621,21 @@ class Biacv_mainwindow (PyQt4.QtGui.QMainWindow, bui.Ui_biacv_mainwindow): # get the selected item selitems = self.professionlist.selectedItems () if selitems == []: - PyQt4.QtGui.QMessageBox.critical (self, "Cannot update", "No item selected.") + PyQt4.QtGui.QMessageBox.critical (self, lang.ERROR_UPDATE, lang.ERROR_NO_SELECTION) return selitem = selitems[0] # if designation is not set if self.designation.text () == "": - PyQt4.QtGui.QMessageBox.critical (self, "Cannot update", "A required field is missing.") + PyQt4.QtGui.QMessageBox.critical (self, lang.ERROR_UPDATE, lang.ERROR_REQ_MISSING) return # if currently employed in that position, leaving date is to be disabled - # and set to "current" + # and set to empty if self.currentemployment.isChecked (): - leavedatestr = "current" + leavedatestr = "" else: # if the leaving date is < join date if self.leavedate.date () < self.joindate.date (): - PyQt4.QtGui.QMessageBox.critical (self, "Cannot add", - "Leaving date cannot be earlier than join date.") + PyQt4.QtGui.QMessageBox.critical (self, lang.ERROR_ADD, lang.ERROR_DATE) return leavedatestr = self.leavedate.date ().toString ("dd MMM, yyyy") @@ -129,38 +644,40 @@ class Biacv_mainwindow (PyQt4.QtGui.QMainWindow, bui.Ui_biacv_mainwindow): selitem.setText (2, leavedatestr) selitem.setText (3, self.organization.text ()) selitem.setText (4, self.additionalinfo.text ()) + # set the modified flag + self.ismodified = True # delete professional history button is clicked def on_delete_profession (self): # get the selected items selitems = self.professionlist.selectedItems () if selitems == []: - PyQt4.QtGui.QMessageBox.critical (self, "Cannot delete", "No item selected.") + PyQt4.QtGui.QMessageBox.critical (self, lang.ERROR_DELETE, lang.ERROR_NO_SELECTION) return # confirm deletion - ans = PyQt4.QtGui.QMessageBox.question (self, "Confirm", - "Are you sure you wish to delete the selected item?", + ans = PyQt4.QtGui.QMessageBox.question (self, lang.CONFIRM, lang.CONFIRM_DELETE, PyQt4.QtGui.QMessageBox.Yes, PyQt4.QtGui.QMessageBox.No) # if confirmed if ans == PyQt4.QtGui.QMessageBox.Yes: for item in selitems: self.professionlist.takeTopLevelItem (self.professionlist.indexOfTopLevelItem (item)) self.reset_profession_fields () + # set the modified flag + self.ismodified = True # add professional history button is clicked def on_add_profession (self): if self.designation.text () == "": - PyQt4.QtGui.QMessageBox.critical (self, "Cannot add", "A required field is missing.") + PyQt4.QtGui.QMessageBox.critical (self, lang.ERROR_ADD, lang.ERROR_REQ_MISSING) return # if currently employed in that position, leaving date is to be disabled - # and set to "current" + # and set to "" if self.currentemployment.isChecked (): - leavedatestr = "current" + leavedatestr = "" else: # if the leaving date is < join date if self.leavedate.date () < self.joindate.date (): - PyQt4.QtGui.QMessageBox.critical (self, "Cannot add", - "Leaving date cannot be earlier than join date.") + PyQt4.QtGui.QMessageBox.critical (self, lang.ERROR_ADD, lang.ERROR_DATE) return leavedatestr = self.leavedate.date ().toString ("dd MMM, yyyy") @@ -177,6 +694,8 @@ class Biacv_mainwindow (PyQt4.QtGui.QMainWindow, bui.Ui_biacv_mainwindow): self.professionlist.addTopLevelItem (professionitem) self.reset_profession_fields () + # set the modified flag + self.ismodified = True # when selection of profession list is changed def on_select_profession (self): @@ -190,7 +709,7 @@ class Biacv_mainwindow (PyQt4.QtGui.QMainWindow, bui.Ui_biacv_mainwindow): selitem = selitems[0] self.designation.setText (selitem.text (0)) self.joindate.setDate (PyQt4.QtCore.QDate.fromString (selitem.text(1), "dd MMM, yyyy")) - if selitem.text (2) == "current": + if selitem.text (2) == "": self.leavedate.setEnabled (False) self.currentemployment.setChecked (True) else: @@ -222,17 +741,18 @@ class Biacv_mainwindow (PyQt4.QtGui.QMainWindow, bui.Ui_biacv_mainwindow): selitems = self.educationlist.selectedItems () # if no items are selected if selitems == []: - PyQt4.QtGui.QMessageBox.critical (self, "Cannot delete", "No items selected.") + PyQt4.QtGui.QMessageBox.critical (self, lang.ERROR_DELETE, lang.ERROR_NO_SELECTION) # delete the items after confirmation else: - ans = PyQt4.QtGui.QMessageBox.question (self, "Confirm", - "Are you sure you wish to delete selected item?", + ans = PyQt4.QtGui.QMessageBox.question (self, lang.CONFIRM, lang.CONFIRM_DELETE, PyQt4.QtGui.QMessageBox.Yes, PyQt4.QtGui.QMessageBox.No) if ans == PyQt4.QtGui.QMessageBox.Yes: # remove the item selected for item in selitems: self.educationlist.takeTopLevelItem (self.educationlist.indexOfTopLevelItem (item)) self.reset_education_fields () + # set the modified flag + self.ismodified = True # selection is changed def on_select_education (self): @@ -243,11 +763,11 @@ class Biacv_mainwindow (PyQt4.QtGui.QMainWindow, bui.Ui_biacv_mainwindow): selitems = self.educationlist.selectedItems () # if no item is selected if selitems == []: - PyQt4.QtGui.QMessageBox.critical (self, "Cannot update", "No item selected") + PyQt4.QtGui.QMessageBox.critical (self, lang.ERROR_UPDATE, lang.ERROR_NO_SELECTION) return # if the qualification title is not set if self.degree_name.text () == "": - PyQt4.QtGui.QMessageBox.critical (self, "Cannot update", "A required field is missing.") + PyQt4.QtGui.QMessageBox.critical (self, lang.ERROR_UPDATE, lang.ERROR_REQ_MISSING) return selitem = selitems[0] @@ -257,12 +777,14 @@ class Biacv_mainwindow (PyQt4.QtGui.QMainWindow, bui.Ui_biacv_mainwindow): selitem.setText (3, self.university.text ()) selitem.setText (4, self.grade.text ()) selitem.setText (5, str (self.percentage.value ())) + # set the modified flag + self.ismodified = True # add educational qualification button def on_add_education (self): # check if the qualification title is set if self.degree_name.text () == "": - PyQt4.QtGui.QMessageBox.critical (self, "Cannot add", "A required fields is missing.") + PyQt4.QtGui.QMessageBox.critical (self, lang.ERROR_ADD, lang.ERROR_REQ_MISSING) return educationitem = PyQt4.QtGui.QTreeWidgetItem ([ self.degree_name.text (), @@ -275,6 +797,8 @@ class Biacv_mainwindow (PyQt4.QtGui.QMainWindow, bui.Ui_biacv_mainwindow): self.educationlist.addTopLevelItem (educationitem) # clear the fields self.reset_education_fields () + # set the modified flag + self.ismodified = True # set fields in the education tab from current selected item def set_education_fields (self):