def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.ui = Ui_TestCreator() self.ui.setupUi(self) self.ui.changeTitleUi(self, 'untitled file') print ("PROGRAM START WORKING") QtCore.QObject.connect(self.ui.actionAdd_free_space,QtCore.SIGNAL("activated()"), self.Add_freespace) QtCore.QObject.connect(self.ui.actionAdd_Answer,QtCore.SIGNAL("activated()"), self.Add_answ) QtCore.QObject.connect(self.ui.actionDel_Answer,QtCore.SIGNAL("activated()"), self.Del_answ) QtCore.QObject.connect(self.ui.actionDel_Answers,QtCore.SIGNAL("activated()"), self.Del_answs) QtCore.QObject.connect(self.ui.actionAdd_Question,QtCore.SIGNAL("activated()"), self.Add_quest) QtCore.QObject.connect(self.ui.actionDel_Question,QtCore.SIGNAL("activated()"), self.Del_quest) QtCore.QObject.connect(self.ui.actionDel_Questions,QtCore.SIGNAL("activated()"), self.Del_quests) QtCore.QObject.connect(self.ui.actionSort_QList,QtCore.SIGNAL("activated()"), self.SortQ) QtCore.QObject.connect(self.ui.actionSort_AList,QtCore.SIGNAL("activated()"), self.SortA) QtCore.QObject.connect(self.ui.actionDel_Question,QtCore.SIGNAL("activated()"), self.Q_clicked) QtCore.QObject.connect(self.ui.QList,QtCore.SIGNAL("itemClicked(QListWidgetItem*)"), self.Q_clicked) QtCore.QObject.connect(self.ui.AList,QtCore.SIGNAL("itemClicked(QListWidgetItem*)"), self.A_Clicked) #QtCore.QObject.connect(self.ui.QList,QtCore.SIGNAL("itemDoubleClicked(QListWidgetItem*)"), self.Edit_quest) #QtCore.QObject.connect(self.ui.AList,QtCore.SIGNAL("itemDoubleClicked(QListWidgetItem*)"), self.Edit_answ) #QtCore.QObject.connect(self.ui.QList,QtCore.SIGNAL("itemPressed(QListWidgetItem*)"), self.Item_presed) QtCore.QObject.connect(self.ui.QList,QtCore.SIGNAL("itemActiveted(QListWidgetItem*)"), self.Item_activeted) #QtCore.QObject.connect(self.ui.AList,QtCore.SIGNAL("itemChanged (QListWidgetItem *)"), self.Item_changed) #QtCore.QObject.connect(self.ui.QList,QtCore.SIGNAL("itemChanged (QListWidgetItem *)"), self.Item_changed) QtCore.QObject.connect(self.ui.actionExit,QtCore.SIGNAL("activated()"), self.close_app) QtCore.QObject.connect(self.ui.actionSave,QtCore.SIGNAL("activated()"), self.file_save) QtCore.QObject.connect(self.ui.actionSave_as,QtCore.SIGNAL("activated()"), self.file_save_as) QtCore.QObject.connect(self.ui.actionOpen,QtCore.SIGNAL("activated()"), self.file_open) QtCore.QObject.connect(self.ui.actionNew,QtCore.SIGNAL("activated()"), self.file_new) QtCore.QObject.connect(self.ui.GeneratePreview,QtCore.SIGNAL("clicked()"), self.GeneratePreview) QtCore.QObject.connect(self.ui.PreviewButton,QtCore.SIGNAL("clicked()"), self.handlePreview) QtCore.QObject.connect(self.ui.PrintButton,QtCore.SIGNAL("clicked()"), self.handlePrint) QtCore.QObject.connect(self.ui.AllQ,QtCore.SIGNAL("clicked()"), self.AllQ) QtCore.QObject.connect(self.ui.lineEdit,QtCore.SIGNAL("returnPressed()"), self.Item_changed) QtCore.QObject.connect(self,QtCore.SIGNAL("destroyed(QObject*)"), self.close_app) #QtCore.QObject.connect(self.ui.actionWiki,QtCore.SIGNAL("activated()"), self.wiki) QtCore.QObject.connect(self.ui.actionZoom_In,QtCore.SIGNAL("activated()"), self.Zoom_In) QtCore.QObject.connect(self.ui.actionZoom_Out,QtCore.SIGNAL("activated()"), self.Zoom_Out) QtCore.QObject.connect(self.ui.actionReset,QtCore.SIGNAL("activated()"), self.Zoom_Reset) QtCore.QObject.connect(self.ui.LanEN,QtCore.SIGNAL("activated()"), self.LanEN) QtCore.QObject.connect(self.ui.LanPL,QtCore.SIGNAL("activated()"), self.LanPL) self.filename = False self.LineEditMemory = False #save value from lineEdit self.QCodeMemory = False #save value from Q QT code fx. self.ui.QList.currentItem self.ACodeMemory = False #save value from A QT code fx. self.ui.AList.currentItem() if locale == 'en_EN': self.ui.LanPL.setEnabled(True) self.ui.LanEN.setChecked(True) if locale == 'pl_PL': self.ui.LanEN.setEnabled(True) self.ui.LanPL.setChecked(True)
class MyTest_Creator(QtGui.QMainWindow): def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.ui = Ui_TestCreator() self.ui.setupUi(self) self.ui.changeTitleUi(self, 'untitled file') print ("PROGRAM START WORKING") QtCore.QObject.connect(self.ui.actionAdd_free_space,QtCore.SIGNAL("activated()"), self.Add_freespace) QtCore.QObject.connect(self.ui.actionAdd_Answer,QtCore.SIGNAL("activated()"), self.Add_answ) QtCore.QObject.connect(self.ui.actionDel_Answer,QtCore.SIGNAL("activated()"), self.Del_answ) QtCore.QObject.connect(self.ui.actionDel_Answers,QtCore.SIGNAL("activated()"), self.Del_answs) QtCore.QObject.connect(self.ui.actionAdd_Question,QtCore.SIGNAL("activated()"), self.Add_quest) QtCore.QObject.connect(self.ui.actionDel_Question,QtCore.SIGNAL("activated()"), self.Del_quest) QtCore.QObject.connect(self.ui.actionDel_Questions,QtCore.SIGNAL("activated()"), self.Del_quests) QtCore.QObject.connect(self.ui.actionSort_QList,QtCore.SIGNAL("activated()"), self.SortQ) QtCore.QObject.connect(self.ui.actionSort_AList,QtCore.SIGNAL("activated()"), self.SortA) QtCore.QObject.connect(self.ui.actionDel_Question,QtCore.SIGNAL("activated()"), self.Q_clicked) QtCore.QObject.connect(self.ui.QList,QtCore.SIGNAL("itemClicked(QListWidgetItem*)"), self.Q_clicked) QtCore.QObject.connect(self.ui.AList,QtCore.SIGNAL("itemClicked(QListWidgetItem*)"), self.A_Clicked) #QtCore.QObject.connect(self.ui.QList,QtCore.SIGNAL("itemDoubleClicked(QListWidgetItem*)"), self.Edit_quest) #QtCore.QObject.connect(self.ui.AList,QtCore.SIGNAL("itemDoubleClicked(QListWidgetItem*)"), self.Edit_answ) #QtCore.QObject.connect(self.ui.QList,QtCore.SIGNAL("itemPressed(QListWidgetItem*)"), self.Item_presed) QtCore.QObject.connect(self.ui.QList,QtCore.SIGNAL("itemActiveted(QListWidgetItem*)"), self.Item_activeted) #QtCore.QObject.connect(self.ui.AList,QtCore.SIGNAL("itemChanged (QListWidgetItem *)"), self.Item_changed) #QtCore.QObject.connect(self.ui.QList,QtCore.SIGNAL("itemChanged (QListWidgetItem *)"), self.Item_changed) QtCore.QObject.connect(self.ui.actionExit,QtCore.SIGNAL("activated()"), self.close_app) QtCore.QObject.connect(self.ui.actionSave,QtCore.SIGNAL("activated()"), self.file_save) QtCore.QObject.connect(self.ui.actionSave_as,QtCore.SIGNAL("activated()"), self.file_save_as) QtCore.QObject.connect(self.ui.actionOpen,QtCore.SIGNAL("activated()"), self.file_open) QtCore.QObject.connect(self.ui.actionNew,QtCore.SIGNAL("activated()"), self.file_new) QtCore.QObject.connect(self.ui.GeneratePreview,QtCore.SIGNAL("clicked()"), self.GeneratePreview) QtCore.QObject.connect(self.ui.PreviewButton,QtCore.SIGNAL("clicked()"), self.handlePreview) QtCore.QObject.connect(self.ui.PrintButton,QtCore.SIGNAL("clicked()"), self.handlePrint) QtCore.QObject.connect(self.ui.AllQ,QtCore.SIGNAL("clicked()"), self.AllQ) QtCore.QObject.connect(self.ui.lineEdit,QtCore.SIGNAL("returnPressed()"), self.Item_changed) QtCore.QObject.connect(self,QtCore.SIGNAL("destroyed(QObject*)"), self.close_app) #QtCore.QObject.connect(self.ui.actionWiki,QtCore.SIGNAL("activated()"), self.wiki) QtCore.QObject.connect(self.ui.actionZoom_In,QtCore.SIGNAL("activated()"), self.Zoom_In) QtCore.QObject.connect(self.ui.actionZoom_Out,QtCore.SIGNAL("activated()"), self.Zoom_Out) QtCore.QObject.connect(self.ui.actionReset,QtCore.SIGNAL("activated()"), self.Zoom_Reset) QtCore.QObject.connect(self.ui.LanEN,QtCore.SIGNAL("activated()"), self.LanEN) QtCore.QObject.connect(self.ui.LanPL,QtCore.SIGNAL("activated()"), self.LanPL) self.filename = False self.LineEditMemory = False #save value from lineEdit self.QCodeMemory = False #save value from Q QT code fx. self.ui.QList.currentItem self.ACodeMemory = False #save value from A QT code fx. self.ui.AList.currentItem() if locale == 'en_EN': self.ui.LanPL.setEnabled(True) self.ui.LanEN.setChecked(True) if locale == 'pl_PL': self.ui.LanEN.setEnabled(True) self.ui.LanPL.setChecked(True) def Add_quest(self): if len(DB): self.Item_changed() print ("ADD QUESTION") nr = 1 Q_name = self.tr("New Question") while Q_name in DB: print ("\tThis '", Q_name, "' we already have") Q_name = self.tr("New Question") + ' #' + str(nr) nr +=1 x_item = self.ui.QList.count() #Item count print ("\tWe have now ",x_item," questions, and add new one nr:",x_item+1) item = QtGui.QListWidgetItem() self.ui.QList.addItem(item) item = self.ui.QList.item(x_item) item.setText(QtGui.QApplication.translate("TestCreator", Q_name, None, QtGui.QApplication.UnicodeUTF8)) self.ui.QList.setCurrentRow(x_item) #Select the row which we added self.ui.statusbar.showMessage(self.tr('Added question: ')+item.text(), 6*1000) print ("\tWe added the question: ", item.text()) DB[item.text()] = [] print ("\tActually DB state:",DB) print ("\tClear answer fields") self.ui.AList.clear() self.ui.actionDel_Questions.setEnabled(True) self.ui.actionDel_Question.setEnabled(True) self.ui.actionAdd_Answer.setEnabled(True) self.ui.actionAdd_free_space.setEnabled(True) self.ui.actionDel_Answer.setEnabled(False) self.ui.actionDel_Answers.setEnabled(False) self.ui.actionSave.setEnabled(True) self.ui.actionSave_as.setEnabled(True) self.ui.lineEdit.setEnabled(True) if x_item: # If there is at least 1 object, becouse this mean that after we added new one there was 1 old object. self.ui.actionSort_QList.setEnabled(True) self.ui.actionSort_AList.setEnabled(False) #Turn off - becouse each one new question don't have answer(s) self.ui.MaxQuest.setMaximum(self.ui.QList.count()) self.ui.lineEdit.setText(item.text()) self.ui.lineEdit.selectAll() self.ui.lineEdit.setFocus() self.LineEditMemory = 'Q___'+item.text() self.QCodeMemory = self.ui.QList.currentItem() #print ("1:",self.LineEditMemory) def Del_quest(self): n_quest = self.ui.QList.currentRow() currentItem = self.ui.QList.currentItem() self.ui.QList.takeItem(n_quest) Q_name = currentItem.text() print ("DELETE ONE QUESTION: ", Q_name) print ("\tPrevious DB state:",DB) if Q_name in DB: del DB[Q_name] print ("\tActually DB state:",DB) self.ui.statusbar.showMessage(self.tr('Deleted question: ')+Q_name, 6*1000) self.ui.actionSave.setEnabled(True) #self.ui.actionSave_as.setEnabled(True) if len(DB) == 0: self.ui.actionDel_Questions.setEnabled(False) self.ui.actionDel_Question.setEnabled(False) self.ui.actionAdd_Answer.setEnabled(False) self.ui.actionAdd_free_space.setEnabled(False) self.ui.actionDel_Answer.setEnabled(False) self.ui.actionDel_Answers.setEnabled(False) self.ui.actionSave.setEnabled(False) self.ui.actionSave_as.setEnabled(False) self.ui.lineEdit.setEnabled(False) self.ui.lineEdit.clear() if len(DB) < 2: self.ui.actionSort_QList.setEnabled(False) self.ui.MaxQuest.setMaximum(self.ui.QList.count()) def Item_changed(self): #print ("Item Changed") global DBtmp # n_answ = self.ui.AList.currentItem() # n_quest = self.ui.QList.currentItem() n_answ = self.ACodeMemory n_quest = self.QCodeMemory new_text = self.ui.lineEdit.text() #print ("FROM: ",self.LineEditMemory," TO: ",new_text) if self.LineEditMemory[4:] == new_text: print ("\tNo changes in LineEdit") #self.ui.statusbar.showMessage('Edit answer: '+new_text+" | Answer of that name exist, please enter another name" , 5*1000) return 0 print ("Item Changed") print ("FROM: ",self.LineEditMemory," TO: ",new_text) if self.LineEditMemory[0] == 'Q': #So we checking only questions print ('questions checking') if new_text in DB: print ("We already have key like this on") self.ui.statusbar.showMessage(self.tr('Edit answer: ')+new_text+self.tr(" | Answer of that name exist, please enter another name") , 5*1000) return 0 print ("ALL DB:\n",DB) DB[new_text] = DB[self.LineEditMemory[4:]] # Add new key with value from old key del DB[self.LineEditMemory[4:]] print ("ALL DB (AFTER ANSWER CHANGE :\n",DB) n_quest.setText(QtGui.QApplication.translate("TestCreator", new_text, None, QtGui.QApplication.UnicodeUTF8)) self.ui.statusbar.showMessage(self.tr('Edited question from: ')+self.LineEditMemory[4:]+self.tr(" to: ")+new_text, 6*1000) else: #we checking answers print ('answers checking') if new_text in DB[n_quest.text()]: print ("We already have key like this on") self.ui.statusbar.showMessage(self.tr('Edit answer: ')+new_text+self.tr(" | Answer of that name exist, please enter another name") , 5*1000) return 0 print ("ALL DB:\n",DB) index = DB[n_quest.text()].index(self.LineEditMemory[4:]) DB[n_quest.text()][index] = new_text print ("ALL DB (AFTER ANSWER CHANGE :\n",DB) n_answ.setText(QtGui.QApplication.translate("TestCreator", new_text, None, QtGui.QApplication.UnicodeUTF8)) self.ui.statusbar.showMessage(self.tr('Edited question from: ')+self.LineEditMemory[4:]+self.tr(" to: ")+new_text, 6*1000) print ("PRESENT KEYS STATE: ",DB) def Del_quests(self): if self.alert_after_del('questions'): global DB print ("DELETE ALL QUESTIONS") self.ui.QList.clear() print ("\tClear answer fields") self.ui.AList.clear() print ("\tPrevious DB state:",DB) self.ui.statusbar.showMessage(self.tr('Deleted all questions ( ')+str(len(DB))+" )" , 5*1000) DB = {} print ("\tActually DB state:",DB) self.ui.actionDel_Questions.setEnabled(False) self.ui.actionDel_Question.setEnabled(False) self.ui.actionAdd_Answer.setEnabled(False) self.ui.actionAdd_free_space.setEnabled(False) self.ui.actionDel_Answer.setEnabled(False) self.ui.actionDel_Answers.setEnabled(False) self.ui.actionSave.setEnabled(False) self.ui.actionSave_as.setEnabled(False) self.ui.actionSort_QList.setEnabled(False) self.ui.actionSort_AList.setEnabled(False) self.ui.lineEdit.setEnabled(False) self.ui.lineEdit.clear() self.ui.MaxQuest.setMaximum(0) def Del_answ(self): quest = self.ui.QList.currentItem() name_quest = quest.text() print ("DELETE ANSWER"); answ = self.ui.AList.currentItem() name_answ = answ.text() print ("\tAnswer:'", name_answ, "' in question : ", name_quest) #print ("\nA\t", name_answ) self.ui.statusbar.showMessage(self.tr('Deleted answer: ')+name_answ+self.tr(' in question: ')+name_quest, 6*1000) self.ui.actionSave.setEnabled(True) #self.ui.actionSave_as.setEnabled(True) print ("\tDB before:",DB) DB[name_quest].remove(name_answ) print ("\tDB after:",DB) n_answ = self.ui.AList.currentRow() self.ui.AList.takeItem(n_answ) if len(DB[name_quest]) == 0: self.ui.actionDel_Answer.setEnabled(False) self.ui.actionDel_Answers.setEnabled(False) if len(DB[name_quest]) < 2: self.ui.actionSort_AList.setEnabled(False) def Del_answs(self): if self.alert_after_del('answers'): print ("DELETE ALL ANSWERS") quest = self.ui.QList.currentItem() name_quest = quest.text() self.ui.statusbar.showMessage(self.tr('Deleted all answers ( ')+str(len(DB[name_quest]))+self.tr(" ) in question: ")+name_quest, 5*1000) self.ui.actionSave.setEnabled(True) # self.ui.actionSave_as.setEnabled(True) print ("\tFrom question:", name_quest) print ("\tDB before:",DB) DB[name_quest]=[] print ("\tDB after:",DB) #answ = self.ui.AList.currentItem() #name_answ = answ.text() #print ("\nA\t", name_answ) self.ui.AList.clear() self.ui.actionDel_Answer.setEnabled(False) self.ui.actionDel_Answers.setEnabled(False) self.ui.actionSort_AList.setEnabled(False) def Add_answs(self, option): self.Item_changed() #print ("Add answer") A_name = option n_quest = self.ui.QList.currentItem() nr = 1 while A_name in DB[n_quest.text()]: print ("\tThis '", A_name, "' in ", n_quest.text()," we already have") A_name = str(option) + ' #' + str(nr) nr +=1 x_item = self.ui.AList.count() #ilość odpowiedzi print ("\tWe have now ",x_item," answers, and add new one nr ",x_item+1) item = QtGui.QListWidgetItem() self.ui.AList.addItem(item) item = self.ui.AList.item(x_item) item.setText(QtGui.QApplication.translate("TestCreator", A_name, None, QtGui.QApplication.UnicodeUTF8)) self.ui.AList.setCurrentRow(x_item) ##Select the row which we added print ("\tWe added ", item.text(), " to ", DB[n_quest.text()], DB) DB[n_quest.text()].append(item.text()) print ("\tActually DB state: ", DB) self.ui.actionDel_Answer.setEnabled(True) self.ui.actionDel_Answers.setEnabled(True) self.ui.statusbar.showMessage(self.tr('Added answer: ')+item.text()+self.tr(" to question: ")+n_quest.text() , 5*1000) self.ui.actionSave.setEnabled(True) #self.ui.actionSave_as.setEnabled(True) if x_item: self.ui.actionSort_AList.setEnabled(True) self.ui.lineEdit.setText(item.text()) self.ui.lineEdit.selectAll() self.ui.lineEdit.setFocus() self.LineEditMemory = 'A___'+item.text() self.ACodeMemory = self.ui.AList.currentItem() def Add_answ(self): print ("ADD ANSWER") self.Add_answs(self.tr("New answer")) def Add_freespace(self): print ("ADD FREE SPACE LINE") self.Add_answs(self.tr("Free space line")) def A_Clicked(self): self.Item_changed() self.ui.actionDel_Answer.setEnabled(True) self.ui.actionDel_Answers.setEnabled(True) ans = self.ui.AList.currentItem() name_ans = ans.text() self.ui.lineEdit.setText(name_ans) self.ui.lineEdit.selectAll() self.ui.lineEdit.setFocus() self.LineEditMemory = 'A___'+name_ans self.ACodeMemory = self.ui.AList.currentItem() def Q_clicked(self): self.Item_changed() print ("WAS CLICK") print ("\tClear answer fields") self.ui.AList.clear() self.ui.actionSort_AList.setEnabled(False) quest = self.ui.QList.currentItem() name_quest = quest.text() print ("\t|",name_quest,"|") print ("\tStart refreshing list") ### FOR TEST ### #print("\nTEST",DB,"END TEST\n") ############# for Q_name in DB[name_quest]: self.ui.actionSort_AList.setEnabled(True) print ("\t-->",Q_name) x_item = self.ui.AList.count() #item count item = QtGui.QListWidgetItem() self.ui.AList.addItem(item) item = self.ui.AList.item(x_item) item.setText(QtGui.QApplication.translate("TestCreator", Q_name, None, QtGui.QApplication.UnicodeUTF8)) ####################### print ("\tEnd - List refreshed") if len(DB[name_quest]) == 0: self.ui.actionDel_Answers.setEnabled(False) #self.ui.actionSort_AList.setEnabled(False) else: self.ui.actionDel_Answers.setEnabled(True) #self.ui.actionSort_AList.setEnabled(True) self.ui.actionAdd_Answer.setEnabled(True) self.ui.actionAdd_free_space.setEnabled(True) self.ui.actionDel_Answer.setEnabled(False) self.ui.lineEdit.setText(name_quest) self.ui.lineEdit.setEnabled(True) #print ("TEST ", self.ui.lineEdit.text(), "\n") #FOR TEST self.ui.lineEdit.selectAll() self.ui.lineEdit.setFocus() self.LineEditMemory = 'Q___'+name_quest self.QCodeMemory = self.ui.QList.currentItem() #def Item_presed(self): #print ("Bylo press") def Message(self): print ("\nWas Message\n") #self.ui.statusbar.clearMessage() self.ui.statusbar.showMessage(self.tr('message'), 60*100) #self.QStatusBar.showMessage (self, 'mesage', 5) def Item_activeted(self): print ("Was activated") def Item_DClicked(self): print ("Was double click") def SortQ(self): print ("SORT QUESTION") self.ui.QList.sortItems() def SortA(self): print ("SORT ANSWER") self.ui.AList.sortItems() def alert_after_del(self, level): response = False #Button title YES = self.tr('Yes') NO = self.tr('No') if self.filename: filetmp = str(self.filename) message = QtGui.QMessageBox(self) text = self.tr('Are you sure you want to delete all ') if str(level) == 'questions': text_level = self.tr('questions') else: text_level = self.tr('answers') message.setText(text+text_level+"?") message.setWindowTitle(self.tr('Delete ')+text_level) message.setIcon(QtGui.QMessageBox.Question) message.addButton(YES, QtGui.QMessageBox.AcceptRole) message.addButton(NO, QtGui.QMessageBox.RejectRole) message.exec_() response = message.clickedButton().text() #YES if response == YES: return 1 #NO elif response == NO: return 0 def alert(self, extra=0, text=0, detail_text=0): response = False #Button title SAVE = self.tr('Save') DISCARD = self.tr('Discard Changes') CANCEL = self.tr('Cancel') YES = self.tr('YES') NO = self.tr('NO') #if there is some changes pop up QMessageBox if not text: text = self.tr("Changes haven't been saved") if not detail_text: detail_text = self.tr('Unsaved changes in file ') if self.ui.actionSave.isEnabled(): filetmp = self.tr('unnamed') if self.filename: filetmp = str(self.filename) message = QtGui.QMessageBox(self) #message.setText(self.tr("Changes haven't been saved")) message.setText(text) if filetmp == self.tr('unnamed'): message.setWindowTitle(filetmp) else: message.setWindowTitle('*'+re.findall(".*/(.*)$", filetmp)[0]) message.setIcon(QtGui.QMessageBox.Question) message.addButton(SAVE, QtGui.QMessageBox.AcceptRole) message.addButton(DISCARD, QtGui.QMessageBox.DestructiveRole) message.addButton(CANCEL, QtGui.QMessageBox.RejectRole) #message.setDetailedText(self.tr('Unsaved changes in file ')+filetmp) message.setDetailedText(detail_text+filetmp) message.exec_() response = message.clickedButton().text() #save file if response == SAVE: self.file_save() #self.ui.actionSave.setEnabled(False) return 1 #discard changes elif response == DISCARD: return 1 else: return 0 elif extra: filetmp = self.tr('unnamed') if self.filename: filetmp = str(self.filename) message = QtGui.QMessageBox(self) text = self.tr("Language was changed, but you need to restart the program.") message.setText(text) if filetmp == self.tr('unnamed'): message.setWindowTitle(filetmp) else: message.setWindowTitle('*'+re.findall(".*/(.*)$", filetmp)[0]) message.setIcon(QtGui.QMessageBox.Question) message.addButton(YES, QtGui.QMessageBox.YesRole) message.addButton(NO, QtGui.QMessageBox.NoRole) message.exec_() response = message.clickedButton().text() if response == YES: return 1 elif response == NO: return 0 else: return 1 def file_save(self): print ('Was saved') # save file if not (self.filename and isfile(self.filename)): # New file print ('Now there is no file') fd = QtGui.QFileDialog(self) self.filename = fd.getSaveFileName() if self.filename: print ('We have file, so we can save') s = codecs.open(self.filename,'w','utf-8') ##### for quest in DB: s.write(quest) for answert in DB[quest]: s.write('\t'+answert) s.write('\n') ##### #s.write("question1\tanswer1\tanswer2\n") s.close() self.ui.actionSave.setEnabled(False) #self.ui.actionSave_as.setEnabled(False) print ("bylo save") #change head title self.ui.changeTitleUi(self, re.findall(".*/(.*)$", self.filename)[0]) self.ui.statusbar.showMessage(self.tr('Saved file: ')+str(self.filename), 5*1000) def file_save_as(self): print ('will save') # save file # New file print ('There is no file in this moment') fd = QtGui.QFileDialog(self) self.filename = fd.getSaveFileName() if self.filename: print ('We have file, so we can save file') s = codecs.open(self.filename,'w','utf-8') ##### for quest in DB: s.write(quest) for answert in DB[quest]: s.write('\t'+answert) s.write('\n') ##### #s.write("question1\tanswer1\tanswer2\n") s.close() self.ui.actionSave.setEnabled(False) #self.ui.actionSave_as.setEnabled(False) print ("was saved") #change head title self.ui.changeTitleUi(self, re.findall(".*/(.*)$", self.filename)[0]) self.ui.statusbar.showMessage(self.tr('Saved file: ')+str(self.filename), 5*1000) def file_open(self): if self.alert(): global DB fd = QtGui.QFileDialog(self) self.filename = fd.getOpenFileName() if isfile(self.filename): self.ui.QList.clear() #Clear table in GUI self.ui.AList.clear() DB = {} # Clear main DB s = codecs.open(self.filename,'r','utf-8').readlines() #x_item = 0 print ("OPEN FILE: ", self.filename) for line in s: print ("\tFrom file: ", line) line = line.replace('\n', '') DB[line.split('\t')[0]] = line.split('\t')[1:] print("\tTo DB: ",DB,"\n") #Reloading Questions x_item = self.ui.QList.count() #Item count #print ("We have now ",x_item," questions, and add new one nr ",x_item+1) #sleep(2) item = QtGui.QListWidgetItem() self.ui.QList.addItem(item) item = self.ui.QList.item(x_item) item.setText(QtGui.QApplication.translate("TestCreator", line.split('\t')[0], None, QtGui.QApplication.UnicodeUTF8)) #x_item +=1 #item = QtGui.QListWidgetItem() #self.ui.QList.addItem(item) #item = self.ui.QList.item(x_item) #item.setText(QtGui.QApplication.translate("TestCreator",line.split('\t')[0] , None, QtGui.QApplication.UnicodeUTF8)) #################### #Zaznaczenie pierwszego pytania self.ui.QList.setCurrentRow(len(DB)-1) ##### self.ui.actionSave.setEnabled(False) self.ui.actionSave_as.setEnabled(True) self.ui.actionDel_Questions.setEnabled(True) self.ui.actionDel_Question.setEnabled(True) self.ui.actionAdd_Answer.setEnabled(False) self.ui.actionAdd_free_space.setEnabled(False) self.ui.actionDel_Answer.setEnabled(False) self.ui.actionDel_Answers.setEnabled(False) #self.ui.lineEdit.clear() # self.ui.actionSort_QList.setEnabled(True) # self.ui.actionSort_AList.setEnabled(True) #change head title self.ui.changeTitleUi(self, re.findall(".*/(.*)$", self.filename)[0]) self.ui.statusbar.showMessage(self.tr('Opened file: ')+str(self.filename)+self.tr(" with: ")+str(len(DB))+self.tr(" question"), 5*1000) if self.ui.QList.count() > 1: self.ui.actionSort_QList.setEnabled(True) self.ui.MaxQuest.setMaximum(len(DB)) #Set TextEdit and Focus on the first question from the list and put on answers(s) if it has. self.ui.lineEdit.setEnabled(True) # self.ui.lineEdit.setText(item.text()) # self.ui.lineEdit.selectAll() # self.ui.lineEdit.setFocus() self.ui.lineEdit.setText(item.text()) self.ui.lineEdit.selectAll() self.ui.lineEdit.setFocus() self.LineEditMemory = 'Q___'+item.text() self.QCodeMemory = self.ui.QList.currentItem() def file_new(self): if self.alert(): print ("OPEN NEW FILE") self.ui.QList.clear() #Clear table in GUI self.ui.AList.clear() DB = {} # Clear main DB self.ui.changeTitleUi(self, 'untitled file') self.filename = 0 self.ui.actionSave.setEnabled(False) self.ui.lineEdit.clear() self.ui.statusbar.showMessage(self.tr('Open new file') , 5*1000) def close_app(self): """ close the app """ if self.alert(): print ("EXIT\tBay bay:D") app.exit() #app.exit() def handlePrint(self): dialog = QtGui.QPrintDialog() if dialog.exec_() == QtGui.QDialog.Accepted: self.ui.PreviewEditor.document().print_(dialog.printer()) def handlePreview(self): dialog = QtGui.QPrintPreviewDialog() dialog.paintRequested.connect(self.ui.PreviewEditor.print_) dialog.exec_() def AllQ(self): self.ui.MaxQuest.setValue(self.ui.QList.count()) def GeneratePreview(self): print("GENERATE PREVIEW") print ("\tQuestion orientation: ",self.ui.Qorient.currentText()) if (self.ui.Qorient.currentText() == 'Portrait' or self.ui.Qorient.currentText() == 'Pionowo'): ### FOR TEST### #print ("separator n") ############# separator = '\n' else: ### FOR TEST### #print ("separator _") ############# separator = ' ' preparing_text ='' #Only for this version, in the feture need change this if self.ui.box_AddDetails.isChecked(): print ("\tAddDetails is checked"); print ("\tStart generating preview") Details_CC = self.ui.Details_CC.text() if Details_CC: print ("\t| ", Details_CC) preparing_text += ("Conduct classes: "+Details_CC) #self.ui.PreviewEditor.setText("\tConduct classes: "+Details_CC) Details_date = self.ui.Details_date.text() if Details_date: print ( "\t| ", Details_date) preparing_text += ("\t\tDate: "+Details_date) #self.ui.PreviewEditor.setText("\t\t\tDate: "+Details_date) Details_SoT = self.ui.Details_SoT.text() if Details_SoT: print ("\t| ", Details_SoT) preparing_text += ("\nSubject of teaching: "+Details_SoT) #self.ui.PreviewEditor.setText("Subject of teaching: "+Details_SoT) Details_TS = self.ui.Details_TS.text() if Details_TS: print ("\t| ", Details_TS) preparing_text += ("\nThe subject: "+Details_TS) #self.ui.PreviewEditor.setText("\nThe subject "+Details_TS) Details_Term = self.ui.Details_Term.text() if Details_Term: print ("\t| ", Details_Term ) preparing_text += ("\nTerm: "+Details_Term) #self.ui.PreviewEditor.setText("\nTerm: "+Details_Term) Details_Sem = self.ui.Details_Sem.text() if Details_Sem: print ("\t| ", Details_Sem) preparing_text += ("\tSemester: "+Details_Sem) #self.ui.PreviewEditor.setText("\tSemester: "+Details_Sem) Details_MaxPoi = self.ui.Details_MaxPoi.text() if Details_MaxPoi: print ("\t| ", Details_MaxPoi) preparing_text += ("\t\tMax point: "+Details_MaxPoi) #self.ui.PreviewEditor.setText("\tMax point "+Details_MaxPoi) Details_PassF = self.ui.Details_PassF.text() if Details_PassF: print ("\t| ", Details_PassF) preparing_text += ("\tPass from "+Details_PassF) #self.ui.PreviewEditor.setText("\tPass from "+Details_PassF) if preparing_text and self.ui.QList.count(): line = '-' preparing_text += ("\n"+line*132+"\n") elif preparing_text: preparing_text += ("\n NO QUESTION") elif self.ui.QList.count() ==0: preparing_text = ("NO QUESTIONS AND NO DETAILS") ### Add question and answers print ("\tStart adding questions and answers") QCount = self.ui.MaxQuest.value() #print (QCount) DB_for_prev=[] for quest in DB: #make copy of the DB, because we use this for pop. DB_for_prev.append(quest) print ("\tAdd to DB_for_prev value: ", quest) while QCount: print ("\tin qcount: ", QCount) QCount -=1 random_quest = DB_for_prev.pop(random.randint(0, len(DB_for_prev)-1)) print ("\trandom quest: ", random_quest) preparing_text += (str(self.ui.MaxQuest.value()-QCount)+') '+random_quest+'\n') ACount = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'w', 'y', 'z'] DBanswers =[] #clear answers DB for answer in DB[random_quest]: DBanswers.append(answer) while DBanswers: if self.ui.box_MixAnswers.isChecked(): random_answer = DBanswers.pop(random.randint(0, len(DBanswers)-1)) #random download else: random_answer = DBanswers.pop(0) # download in the order if random_answer[0:15] == "Free space line": preparing_text += ("\n") else: preparing_text += ("\t"+ACount.pop(0)+') '+random_answer+separator) preparing_text += ("\n") if self.ui.Qorient.currentText() != 'Portrait': preparing_text += ("\n") #Extra enter ### Add preparing text self.ui.PreviewEditor.setText(preparing_text) def Zoom_In(self): print("ZOOM IN") global IconSize print("\tFrom: ",IconSize," TO: ",IconSize+5) IconSize += 5 self.ui.toolBar.setIconSize(QtCore.QSize(IconSize, IconSize)) self.ui.toolBar_2.setIconSize(QtCore.QSize(IconSize, IconSize)) if (IconSize > 99): self.ui.actionZoom_In.setEnabled(False) if (IconSize > 14): self.ui.actionZoom_Out.setEnabled(True) def Zoom_Out(self): print("ZOOM OUT") global IconSize print("\tFrom: ",IconSize," TO: ",IconSize-5) IconSize -= 5 self.ui.toolBar.setIconSize(QtCore.QSize(IconSize, IconSize)) self.ui.toolBar_2.setIconSize(QtCore.QSize(IconSize, IconSize)) if (IconSize < 15): self.ui.actionZoom_Out.setEnabled(False) if (IconSize < 96): self.ui.actionZoom_In.setEnabled(True) def Zoom_Reset(self): print("ZOOM RESET") global IconSize print("\tFrom: ",IconSize," TO: ",25) IconSize = 25 self.ui.toolBar.setIconSize(QtCore.QSize(IconSize, IconSize)) self.ui.toolBar_2.setIconSize(QtCore.QSize(IconSize, IconSize)) self.ui.actionZoom_In.setEnabled(True) self.ui.actionZoom_Out.setEnabled(True) def LanEN(self): print("CHANGE LOCALE") f = open(conf_dir, 'w') f.write('en_EN') f.close() self.ui.LanEN.setEnabled(False) self.ui.LanPL.setEnabled(True) self.ui.LanPL.setChecked(False) text = self.tr("Language was changed, but you need to restart the program.\nPlease notice that the data haven't been saved") if self.alert(1, text): print ("EXIT\tBay bay:D") app.exit() def LanPL(self): print("CHANGE LOCALE") f = open(conf_dir, 'w') f.write('pl_PL') f.close() self.ui.LanPL.setEnabled(False) self.ui.LanEN.setEnabled(True) self.ui.LanEN.setChecked(False) text = self.tr("Language was changed, but you need to restart the program.\nPlease notice that the data haven't been saved") if self.alert(1, text): print ("EXIT\tBay bay:D") app.exit()