Ejemplo n.º 1
0
	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)
Ejemplo n.º 2
0
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()