0f0f9ada407a04206497ab8b9bad1d63c8c52632
[biacv.git] / biacv_mainwindow.py
1 # BiaCV
2 # class for main window
3
4 import PyQt4
5 import biacv_mainwindow_ui as bui
6 import biacv_lang as lang
7
8 class Biacv_mainwindow (PyQt4.QtGui.QMainWindow, bui.Ui_biacv_mainwindow):
9 def __init__ (self):
10 PyQt4.QtGui.QMainWindow.__init__ (self)
11 self.setupUi (self)
12 self.currentfile = None
13
14 # update a language in the list of languages
15 def on_update_lang (self):
16 # get the selected language
17 selitems = self.languageslist.selectedItems ()
18 if selitems == []:
19 PyQt4.QtGui.QMessageBox.critical (self, lang.ERROR_UPDATE, lang.ERROR_NO_SELECTION)
20 return
21 # check if the language string is not empty
22 if self.language.text () == "":
23 PyQt4.QtGui.QMessageBox.critical (self, lang.ERROR_UPDATE, lang.ERROR_REQ_MISSING)
24 return
25 selitem = selitems[0]
26 selitem.setText (0, self.language.text ())
27 selitem.setText (1, str (self.canspeak.isChecked ()))
28 selitem.setText (2, str (self.canreadwrite.isChecked ()))
29 selitem.setText (3, str (self.isproficient.isChecked ()))
30
31 # selecting a language from the list of languages
32 def on_select_lang (self):
33 # set the language fields from the selected item
34 self.set_language_fields ()
35
36 # delete a language from the list of languages known
37 def on_delete_lang (self):
38 # get selected language
39 selitems = self.languageslist.selectedItems ()
40 if selitems == []:
41 PyQt4.QtGui.QMessageBox.critical (self, lang.ERROR_DELETE, lang.ERROR_REQ_MISSING)
42 return
43 # confirm
44 ans = PyQt4.QtGui.QMessageBox.question (self, lang.CONFIRM, lang.CONFIRM_DELETE,
45 PyQt4.QtGui.QMessageBox.Yes, PyQt4.QtGui.QMessageBox.No)
46 if ans == PyQt4.QtGui.QMessageBox.Yes:
47 for item in selitems:
48 self.languageslist.takeTopLevelItem (self.languageslist.indexOfTopLevelItem (item))
49
50 self.reset_language_fields ()
51
52 # add a language to the list of languages known
53 def on_add_lang (self):
54 # check if the language is set
55 if self.language.text () == "":
56 PyQt4.QtGui.QMessageBox.critical (self, lang.ERROR_ADD, lang.ERROR_REQ_MISSING)
57 return
58 langitem = PyQt4.QtGui.QTreeWidgetItem (
59 [
60 self.language.text (),
61 str (self.canspeak.isChecked ()),
62 str (self.canreadwrite.isChecked ()),
63 str (self.isproficient.isChecked ())
64 ]
65 )
66 self.languageslist.addTopLevelItem (langitem)
67 self.reset_language_fields ()
68
69 # set the language fields from the selected item
70 def set_language_fields (self):
71 selitems = self.languageslist.selectedItems ()
72 if selitems == []:
73 return
74 selitem = selitems[0]
75 self.language.setText (selitem.text (0))
76 self.canspeak.setChecked (selitem.text (1) == "True")
77 self.canreadwrite.setChecked (selitem.text(2) == "True")
78 self.isproficient.setChecked (selitem.text(3) == "True")
79
80 # reset the language fields
81 def reset_language_fields (self):
82 self.language.setText ("")
83 self.canspeak.setChecked (True)
84 self.canreadwrite.setChecked (False)
85 self.isproficient.setChecked (False)
86
87 # update the skill set button event
88 def on_update_skill (self):
89 # get the selected item
90 selitems = self.skillslist.selectedItems ()
91 if selitems == []:
92 PyQt4.QtGui.QMessageBox.critical (self, lang.ERROR_UPDATE, lang.ERROR_NO_SELECTION)
93 return
94 if self.skillsettitle.text () == "":
95 PyQt4.QtGui.QMessageBox.critical (self, lang.ERROR_UPDATE, lang.ERROR_REQ_MISSING)
96 return
97 selitem = selitems[0]
98
99 selitem.setText (0, self.skillsettitle.text ())
100 selitem.setText (1, self.skilldescription.toPlainText ())
101
102 # selecting a skill from the list event
103 def on_select_skill (self):
104 self.set_skill_fields ()
105
106 # set the skill fields from the selected skill from the list
107 def set_skill_fields (self):
108 # get the selected items
109 selitems = self.skillslist.selectedItems ()
110 if selitems == []:
111 return
112 selitem = selitems[0]
113 self.skillsettitle.setText (selitem.text (0))
114 self.skilldescription.setPlainText (selitem.text (1))
115
116 # delete skill set button is clicked
117 def on_delete_skill (self):
118 # get the selected items
119 selitems = self.skillslist.selectedItems ()
120 if selitems == []:
121 PyQt4.QtGui.QMessageBox.critical (self, lang.ERROR_DELETE, lang.ERROR_NO_SELECTION)
122 return
123 # confirm
124 ans = PyQt4.QtGui.QMessageBox.question (self, lang.CONFIRM, lang.CONFIRM_DELETE,
125 PyQt4.QtGui.QMessageBox.Yes, PyQt4.QtGui.QMessageBox.No)
126 # answer is yes
127 if ans == PyQt4.QtGui.QMessageBox.Yes:
128 for item in selitems:
129 self.skillslist.takeTopLevelItem (self.skillslist.indexOfTopLevelItem (item))
130
131 self.reset_skillset_fields ()
132
133 # add skill set button is clicked
134 def on_add_skill (self):
135 # if the skill title is blank
136 if self.skillsettitle.text () == "":
137 PyQt4.QtGui.QMessageBox.critical (self, lang.ERROR_ADD, lang.ERROR_REQ_MISSING)
138 return
139 skillitem = PyQt4.QtGui.QTreeWidgetItem (
140 [
141 self.skillsettitle.text (),
142 self.skilldescription.toPlainText ()
143 ]
144 )
145 self.skillslist.addTopLevelItem (skillitem)
146 self.reset_skillset_fields ()
147
148 # clear the skill set fields
149 def reset_skillset_fields (self):
150 self.skillsettitle.setText ("")
151 self.skilldescription.setPlainText ("")
152
153 # update professional history button is clicked
154 def on_update_profession (self):
155 # get the selected item
156 selitems = self.professionlist.selectedItems ()
157 if selitems == []:
158 PyQt4.QtGui.QMessageBox.critical (self, lang.ERROR_UPDATE, lang.ERROR_NO_SELECTION)
159 return
160 selitem = selitems[0]
161 # if designation is not set
162 if self.designation.text () == "":
163 PyQt4.QtGui.QMessageBox.critical (self, lang.ERROR_UPDATE, lang.ERROR_REQ_MISSING)
164 return
165 # if currently employed in that position, leaving date is to be disabled
166 # and set to "current"
167 if self.currentemployment.isChecked ():
168 leavedatestr = "current"
169 else:
170 # if the leaving date is < join date
171 if self.leavedate.date () < self.joindate.date ():
172 PyQt4.QtGui.QMessageBox.critical (self, lang.ERROR_ADD, lang.ERROR_DATE)
173 return
174 leavedatestr = self.leavedate.date ().toString ("dd MMM, yyyy")
175
176 selitem.setText (0, self.designation.text ())
177 selitem.setText (1, self.joindate.date ().toString ("dd MMM, yyyy"))
178 selitem.setText (2, leavedatestr)
179 selitem.setText (3, self.organization.text ())
180 selitem.setText (4, self.additionalinfo.text ())
181
182 # delete professional history button is clicked
183 def on_delete_profession (self):
184 # get the selected items
185 selitems = self.professionlist.selectedItems ()
186 if selitems == []:
187 PyQt4.QtGui.QMessageBox.critical (self, lang.ERROR_DELETE, lang.ERROR_NO_SELECTION)
188 return
189 # confirm deletion
190 ans = PyQt4.QtGui.QMessageBox.question (self, lang.CONFIRM, lang.CONFIRM_DELETE,
191 PyQt4.QtGui.QMessageBox.Yes, PyQt4.QtGui.QMessageBox.No)
192 # if confirmed
193 if ans == PyQt4.QtGui.QMessageBox.Yes:
194 for item in selitems:
195 self.professionlist.takeTopLevelItem (self.professionlist.indexOfTopLevelItem (item))
196 self.reset_profession_fields ()
197
198 # add professional history button is clicked
199 def on_add_profession (self):
200 if self.designation.text () == "":
201 PyQt4.QtGui.QMessageBox.critical (self, lang.ERROR_ADD, lang.ERROR_REQ_MISSING)
202 return
203 # if currently employed in that position, leaving date is to be disabled
204 # and set to "current"
205 if self.currentemployment.isChecked ():
206 leavedatestr = "current"
207 else:
208 # if the leaving date is < join date
209 if self.leavedate.date () < self.joindate.date ():
210 PyQt4.QtGui.QMessageBox.critical (self, lang.ERROR_ADD, lang.ERROR_DATE)
211 return
212 leavedatestr = self.leavedate.date ().toString ("dd MMM, yyyy")
213
214 professionitem = PyQt4.QtGui.QTreeWidgetItem (
215 [
216 self.designation.text (),
217 self.joindate.date ().toString ("dd MMM, yyyy"),
218 leavedatestr,
219 self.organization.text (),
220 self.additionalinfo.text ()
221 ]
222 )
223
224 self.professionlist.addTopLevelItem (professionitem)
225
226 self.reset_profession_fields ()
227
228 # when selection of profession list is changed
229 def on_select_profession (self):
230 self.set_profession_fields ()
231
232 # set the profession fields from the selected item in profession list
233 def set_profession_fields (self):
234 selitems = self.professionlist.selectedItems ()
235 if selitems == []:
236 return
237 selitem = selitems[0]
238 self.designation.setText (selitem.text (0))
239 self.joindate.setDate (PyQt4.QtCore.QDate.fromString (selitem.text(1), "dd MMM, yyyy"))
240 if selitem.text (2) == "current":
241 self.leavedate.setEnabled (False)
242 self.currentemployment.setChecked (True)
243 else:
244 self.leavedate.setDate (PyQt4.QtCore.QDate.fromString (selitem.text (2), "dd MMM, yyyy"))
245 self.leavedate.setEnabled (True)
246 self.currentemployment.setChecked (False)
247
248 self.organization.setText (selitem.text (3))
249 self.additionalinfo.setText (selitem.text (4))
250
251 def reset_profession_fields (self):
252 self.designation.setText ("")
253 self.joindate.setDate (PyQt4.QtCore.QDate (2000, 1, 1))
254 self.leavedate.setDate (PyQt4.QtCore.QDate (2003, 1, 1))
255 self.currentemployment.setChecked (False)
256 self.organization.setText ("")
257 self.additionalinfo.setText ("")
258
259 # current employment check box is changed
260 def on_change_currentemployment (self, val):
261 if val == True:
262 self.leavedate.setEnabled (False)
263 else:
264 self.leavedate.setEnabled (True)
265
266 # delete educational qualification
267 def on_delete_education (self):
268 # get the selected items in the education list
269 selitems = self.educationlist.selectedItems ()
270 # if no items are selected
271 if selitems == []:
272 PyQt4.QtGui.QMessageBox.critical (self, lang.ERROR_DELETE, lang.ERROR_NO_SELECTION)
273 # delete the items after confirmation
274 else:
275 ans = PyQt4.QtGui.QMessageBox.question (self, lang.CONFIRM, lang.CONFIRM_DELETE,
276 PyQt4.QtGui.QMessageBox.Yes, PyQt4.QtGui.QMessageBox.No)
277 if ans == PyQt4.QtGui.QMessageBox.Yes:
278 # remove the item selected
279 for item in selitems:
280 self.educationlist.takeTopLevelItem (self.educationlist.indexOfTopLevelItem (item))
281 self.reset_education_fields ()
282
283 # selection is changed
284 def on_select_education (self):
285 self.set_education_fields ()
286
287 # update educational qualification button
288 def on_update_education (self):
289 selitems = self.educationlist.selectedItems ()
290 # if no item is selected
291 if selitems == []:
292 PyQt4.QtGui.QMessageBox.critical (self, lang.ERROR_UPDATE, lang.ERROR_NO_SELECTION)
293 return
294 # if the qualification title is not set
295 if self.degree_name.text () == "":
296 PyQt4.QtGui.QMessageBox.critical (self, lang.ERROR_UPDATE, lang.ERROR_REQ_MISSING)
297 return
298 selitem = selitems[0]
299
300 selitem.setText (0, self.degree_name.text ())
301 selitem.setText (1, self.yearofpassing.date ().toString ("MMM, yyyy"))
302 selitem.setText (2, self.institution.text ())
303 selitem.setText (3, self.university.text ())
304 selitem.setText (4, self.grade.text ())
305 selitem.setText (5, str (self.percentage.value ()))
306
307 # add educational qualification button
308 def on_add_education (self):
309 # check if the qualification title is set
310 if self.degree_name.text () == "":
311 PyQt4.QtGui.QMessageBox.critical (self, lang.ERROR_ADD, lang.ERROR_REQ_MISSING)
312 return
313 educationitem = PyQt4.QtGui.QTreeWidgetItem ([
314 self.degree_name.text (),
315 self.yearofpassing.date ().toString ("MMM, yyyy"),
316 self.institution.text (),
317 self.university.text (),
318 self.grade.text (),
319 str (self.percentage.value ())
320 ])
321 self.educationlist.addTopLevelItem (educationitem)
322 # clear the fields
323 self.reset_education_fields ()
324
325 # set fields in the education tab from current selected item
326 def set_education_fields (self):
327 selitems = self.educationlist.selectedItems ()
328 if selitems == []:
329 return
330 selitem = selitems[0]
331 # set the fields to the data in the selected item in the list
332 self.degree_name.setText (selitem.text (0))
333 self.yearofpassing.setDate (PyQt4.QtCore.QDate.fromString (selitem.text(1), "MMM, yyyy"))
334 self.institution.setText (selitem.text (2))
335 self.university.setText (selitem.text (3))
336 self.grade.setText (selitem.text(4))
337 self.percentage.setValue (self.percentage.valueFromText (selitem.text(5)))
338
339 # reset fields in the education tab
340 def reset_education_fields (self):
341 self.degree_name.setText ("")
342 self.yearofpassing.setDate (PyQt4.QtCore.QDate (1988, 1, 1))
343 self.institution.setText ("")
344 self.university.setText ("")
345 self.grade.setText ("")
346 self.percentage.setValue (50.0)
347