+# 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, lang.ERROR_ADD, lang.ERROR_REQ_MISSING)
+ return
+ langitem = PyQt4.QtGui.QTreeWidgetItem (
+ [
+ self.language.text (),
+ str (self.canspeak.isChecked ()),
+ str (self.canreadwrite.isChecked ()),
+ str (self.isproficient.isChecked ())
+ ]
+ )
+ 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 ("")
+ self.canspeak.setChecked (True)
+ self.canreadwrite.setChecked (False)
+ self.isproficient.setChecked (False)
# update the skill set button event
def on_update_skill (self):
# 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):
# 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:
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 (
[
)
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):
# 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")
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")
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):
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:
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):
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]
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 (),
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):