def __init__(self, parent=None): logger.debug("|GUI| Init Gui") self.roundSum = 0 # INIT self.currentCompany = None self.showInactive = True self.tmpPw = "" if mightyController.encryptionObject is not None and mightyController.encryptionObject.name is not "None": pw, okCancel = QtGui.QInputDialog.getText(None,tr("Password"),tr("Enter Password"),QtGui.QLineEdit.Password) self.tmpPw = pw mightyController.encryptionObject.setKey(pw) if True is not mightyController.singleView: from lib.gui import Ui_MainWindow QtGui.QWidget.__init__(self, parent) if mightyController.singleView: self.ui = Ui_MainWindowSingle() else: self.ui = Ui_MainWindow() self.ui.setupUi(self) self.updateCompanyList(selectFirst=True) if singleView: self.onCompanyItemClick("singleView") #mightyController.updateCompanyList() mightyController.updatePersonalFinancesList() cd = QtCore.QDate.currentDate() if singleView == False: self.ui.startdate.setDate(cd) self.ui.enddate.setDate(cd) self.ui.creditDate.setDate(cd) self.ui.pfDate.setDate(cd) self.ui.pfEndDate.setDate(cd) self.tabUpdater() self.ui.mainTab.currentChanged.connect(self.tabUpdater) self.ui.viewTabs.currentChanged.connect(self.tabUpdater) #----------------------- #Data-Tab #----------------------- #Item-Clicks if not singleView: self.ui.companyList.itemClicked.connect(self.onCompanyItemClick) self.ui.jobList.itemClicked.connect(self.onJobItemClick) self.ui.creditList.itemClicked.connect(self.onCreditItemClick) self.ui.chargesList.itemClicked.connect(self.onChargeItemClick) self.ui.loanDistractionList.itemClicked.connect(self.onLoanDistractionItemClick) self.ui.configList.itemClicked.connect(self.onConfigItemClick) self.ui.workChargesList.itemClicked.connect(self.onWChargeItemClick) self.ui.pfList.itemClicked.connect(self.onPersonalFinanceItemClick) #Company-Actions if not singleView: self.ui.createCompany.clicked.connect(self.onCreateCompany) self.ui.deleteCompany.clicked.connect(self.onDeleteCompany) self.ui.saveCompany.clicked.connect(self.onSaveCompany) self.ui.companyname.returnPressed.connect(self.onSaveCompany) #Job-Actions self.ui.createJob.clicked.connect(self.onCreateJob) self.ui.saveJob.clicked.connect(self.onSaveJob) self.ui.jobname.returnPressed.connect(self.onSaveJob) self.ui.jobplace.returnPressed.connect(self.onSaveJob) self.ui.deleteJob.clicked.connect(self.onDeleteJob) self.ui.startdate.dateChanged.connect(self.onJobStartDateChanged) #self.ui.enddate.dateChanged.connect(self.onJobStartDateChanged) #Charge-Actions self.ui.createCharge.clicked.connect(self.onCreateCharge) self.ui.saveCharge.clicked.connect(self.onSaveCharge) self.ui.chargesName.returnPressed.connect(self.onSaveCharge) self.ui.deleteCharge.clicked.connect(self.onDeleteCharge) self.ui.deleteWorkSpese.clicked.connect(self.onDeleteWorkSpese) self.ui.addChargeToJob.clicked.connect(self.onAddWorkSpese) self.ui.wChargeSave.clicked.connect(self.onSaveWorkSpese) #Credit-Actions self.ui.createCredit.clicked.connect(self.onCreateCredit) self.ui.saveCredit.clicked.connect(self.onSaveCredit) self.ui.deleteCredit.clicked.connect(self.onDeleteCredit) #loanSplit-Actions self.ui.createLoanDistraction.clicked.connect(self.onCreateLoanDistraction) self.ui.saveLoanDistraction.clicked.connect(self.onSaveLoanDistraction) self.ui.deleteLoanDistraction.clicked.connect(self.onDeleteLoanDistraction) #config-Actions self.ui.createConfig.clicked.connect(self.onCreateConfig) self.ui.saveConfig.clicked.connect(self.onSaveConfig) self.ui.deleteConfig.clicked.connect(self.onDeleteConfig) #--------------------- #personal tab #--------------------- #Charge-Actions self.ui.pfCreate.clicked.connect(self.onCreatePersonalFinance) self.ui.pfSave.clicked.connect(self.onSavePersonalFinance) self.ui.pfDelete.clicked.connect(self.onDeletePersonalFinance) self.ui.pfDate.dateChanged.connect(self.onPfStartDateChanged) self.ui.pfCalendar.currentPageChanged.connect(self.updatePersonalFinanceText) self.ui.pfCalendarEnabled.clicked.connect(self.updatePersonalFinanceText) self.ui.pfSearchEnabled.clicked.connect(self.updatePersonalFinanceText) self.ui.pfSearch.textChanged.connect(self.updatePersonalFinanceText) #-------------------------- #Showing Tab #-------------------------- #Filter-Actions self.ui.showInactive.clicked.connect(self.onShowInactive) self.ui.workCalendar.currentPageChanged.connect(self.updateInfoExel) self.ui.filterAll.clicked.connect(self.updateInfoExel) self.ui.filterCalendar.clicked.connect(self.updateInfoExel) self.ui.filterInactive.clicked.connect(self.updateInfoExel) self.ui.infoSearch.textChanged.connect(self.updateInfoExel) #-------------------------- # CompanyView #--------------------------- if not singleView: self.ui.companyViewSelect.currentIndexChanged.connect(self.updateCompanyView) self.ui.companyViewCalendar.currentPageChanged.connect(self.updateCompanyView) self.ui.companyViewCalendarFilter.clicked.connect(self.updateCompanyView)
class Gui(QtGui.QMainWindow): def __init__(self, parent=None): logger.debug("|GUI| Init Gui") self.roundSum = 0 # INIT self.currentCompany = None self.showInactive = True self.tmpPw = "" if mightyController.encryptionObject is not None and mightyController.encryptionObject.name is not "None": pw, okCancel = QtGui.QInputDialog.getText(None,tr("Password"),tr("Enter Password"),QtGui.QLineEdit.Password) self.tmpPw = pw mightyController.encryptionObject.setKey(pw) if True is not mightyController.singleView: from lib.gui import Ui_MainWindow QtGui.QWidget.__init__(self, parent) if mightyController.singleView: self.ui = Ui_MainWindowSingle() else: self.ui = Ui_MainWindow() self.ui.setupUi(self) self.updateCompanyList(selectFirst=True) if singleView: self.onCompanyItemClick("singleView") #mightyController.updateCompanyList() mightyController.updatePersonalFinancesList() cd = QtCore.QDate.currentDate() if singleView == False: self.ui.startdate.setDate(cd) self.ui.enddate.setDate(cd) self.ui.creditDate.setDate(cd) self.ui.pfDate.setDate(cd) self.ui.pfEndDate.setDate(cd) self.tabUpdater() self.ui.mainTab.currentChanged.connect(self.tabUpdater) self.ui.viewTabs.currentChanged.connect(self.tabUpdater) #----------------------- #Data-Tab #----------------------- #Item-Clicks if not singleView: self.ui.companyList.itemClicked.connect(self.onCompanyItemClick) self.ui.jobList.itemClicked.connect(self.onJobItemClick) self.ui.creditList.itemClicked.connect(self.onCreditItemClick) self.ui.chargesList.itemClicked.connect(self.onChargeItemClick) self.ui.loanDistractionList.itemClicked.connect(self.onLoanDistractionItemClick) self.ui.configList.itemClicked.connect(self.onConfigItemClick) self.ui.workChargesList.itemClicked.connect(self.onWChargeItemClick) self.ui.pfList.itemClicked.connect(self.onPersonalFinanceItemClick) #Company-Actions if not singleView: self.ui.createCompany.clicked.connect(self.onCreateCompany) self.ui.deleteCompany.clicked.connect(self.onDeleteCompany) self.ui.saveCompany.clicked.connect(self.onSaveCompany) self.ui.companyname.returnPressed.connect(self.onSaveCompany) #Job-Actions self.ui.createJob.clicked.connect(self.onCreateJob) self.ui.saveJob.clicked.connect(self.onSaveJob) self.ui.jobname.returnPressed.connect(self.onSaveJob) self.ui.jobplace.returnPressed.connect(self.onSaveJob) self.ui.deleteJob.clicked.connect(self.onDeleteJob) self.ui.startdate.dateChanged.connect(self.onJobStartDateChanged) #self.ui.enddate.dateChanged.connect(self.onJobStartDateChanged) #Charge-Actions self.ui.createCharge.clicked.connect(self.onCreateCharge) self.ui.saveCharge.clicked.connect(self.onSaveCharge) self.ui.chargesName.returnPressed.connect(self.onSaveCharge) self.ui.deleteCharge.clicked.connect(self.onDeleteCharge) self.ui.deleteWorkSpese.clicked.connect(self.onDeleteWorkSpese) self.ui.addChargeToJob.clicked.connect(self.onAddWorkSpese) self.ui.wChargeSave.clicked.connect(self.onSaveWorkSpese) #Credit-Actions self.ui.createCredit.clicked.connect(self.onCreateCredit) self.ui.saveCredit.clicked.connect(self.onSaveCredit) self.ui.deleteCredit.clicked.connect(self.onDeleteCredit) #loanSplit-Actions self.ui.createLoanDistraction.clicked.connect(self.onCreateLoanDistraction) self.ui.saveLoanDistraction.clicked.connect(self.onSaveLoanDistraction) self.ui.deleteLoanDistraction.clicked.connect(self.onDeleteLoanDistraction) #config-Actions self.ui.createConfig.clicked.connect(self.onCreateConfig) self.ui.saveConfig.clicked.connect(self.onSaveConfig) self.ui.deleteConfig.clicked.connect(self.onDeleteConfig) #--------------------- #personal tab #--------------------- #Charge-Actions self.ui.pfCreate.clicked.connect(self.onCreatePersonalFinance) self.ui.pfSave.clicked.connect(self.onSavePersonalFinance) self.ui.pfDelete.clicked.connect(self.onDeletePersonalFinance) self.ui.pfDate.dateChanged.connect(self.onPfStartDateChanged) self.ui.pfCalendar.currentPageChanged.connect(self.updatePersonalFinanceText) self.ui.pfCalendarEnabled.clicked.connect(self.updatePersonalFinanceText) self.ui.pfSearchEnabled.clicked.connect(self.updatePersonalFinanceText) self.ui.pfSearch.textChanged.connect(self.updatePersonalFinanceText) #-------------------------- #Showing Tab #-------------------------- #Filter-Actions self.ui.showInactive.clicked.connect(self.onShowInactive) self.ui.workCalendar.currentPageChanged.connect(self.updateInfoExel) self.ui.filterAll.clicked.connect(self.updateInfoExel) self.ui.filterCalendar.clicked.connect(self.updateInfoExel) self.ui.filterInactive.clicked.connect(self.updateInfoExel) self.ui.infoSearch.textChanged.connect(self.updateInfoExel) #-------------------------- # CompanyView #--------------------------- if not singleView: self.ui.companyViewSelect.currentIndexChanged.connect(self.updateCompanyView) self.ui.companyViewCalendar.currentPageChanged.connect(self.updateCompanyView) self.ui.companyViewCalendarFilter.clicked.connect(self.updateCompanyView) def closeEvent(self, event): reply = QtGui.QMessageBox.question(self, tr('Really leave tryToxic?'), tr("Are you sure to quit?"), QtGui.QMessageBox.Yes, QtGui.QMessageBox.No) if reply == QtGui.QMessageBox.Yes: event.accept() else: event.ignore() def tabUpdater(self, index=0): try: ci = self.ui.mainTab.currentIndex() #if ci == 0: #self.updateCompanyList(selectFirst=True) #self.updateJobList(selectFirst=True) if ci == 1: vci = self.ui.viewTabs.currentIndex() if vci == 0: self.updateInfoExel() elif vci == 1: self.updateCompanyViewSelect() self.updateCompanyView() elif ci == 2: self.updatePersonalFinancesList() #self.updatePersonalCreditList(); elif ci == 3: self.updateConfigList(True) except Exception as e: print(e) #---------------------- # Updaters #----------------------- def updateCompanyList(self, selectFirst=False,name=""): if mightyController.singleView == False: if mightyController.encryptionObject is not None: mightyController.encryptionObject.setKey(self.tmpPw) mightyController.updateCompanyList() self.ui.companyList.clear() i=0 for company in mightyController.companylist: self.ui.companyList.addItem(company.name) if name == company.name: self.ui.companyList.setCurrentRow(i) self.onCompanyItemClick(self.ui.companyList.currentItem()) i+=1 if selectFirst and len(mightyController.companylist) > 0: self.ui.companyList.setCurrentRow(0) self.onCompanyItemClick(self.ui.companyList.currentItem()) def updateJobList(self, selectFirst=False, name=""): self.ui.jobList.clear() if mightyController.encryptionObject is not None: mightyController.encryptionObject.setKey(self.tmpPw) self.currentCompany.updateJobList() i=0 for job in self.currentCompany.jobs: if (self.showInactive == True) or (job.active == 1): self.ui.jobList.addItem(job.name) if job.name == name: self.ui.jobList.setCurrentRow(i) self.onJobItemClick(self.ui.jobList.currentItem()) i+=1 if selectFirst: self.ui.jobList.setCurrentRow(0) self.onJobItemClick(self.ui.jobList.currentItem()) def updateChargesList(self,selectFirst=False,name=""): self.ui.chargesList.clear() if mightyController.encryptionObject is not None: mightyController.encryptionObject.setKey(self.tmpPw) self.currentCompany.updateChargesList() i=0 for charge in self.currentCompany.charges: self.ui.chargesList.addItem(charge.name) if name==charge.name: self.ui.chargesList.setCurrentRow(i) self.onChargeItemClick(self.ui.chargesList.currentItem()) i+=1 if selectFirst: self.ui.chargesList.setCurrentRow(0) self.onChargeItemClick(self.ui.chargesList.currentItem()) def updatePersonalFinancesList(self, selectFirst=False, name=""): self.ui.pfList.clear() if mightyController.encryptionObject is not None: mightyController.encryptionObject.setKey(self.tmpPw) mightyController.updatePersonalFinancesList() self.updatePersonalFinanceText() i=0 for pf in mightyController.personalFinances: self.ui.pfList.addItem(pf.name) if name==pf.name: self.ui.pfList.setCurrentRow(i) self.onPersonalFinanceItemClick(self.ui.pfList.currentItem()) i+=1 if selectFirst: self.ui.pfList.setCurrentRow(0) self.onPersonalFinanceItemClick(self.ui.pfList.currentItem()) def updateLoanDistractionList(self, selectFirst=False, name=""): self.ui.loanDistractionList.clear() if mightyController.encryptionObject is not None: mightyController.encryptionObject.setKey(self.tmpPw) self.currentCompany.updateLoanDistractionList() for loanDistraction in self.currentCompany.loanDistractions: self.ui.loanDistractionList.addItem(loanDistraction.name) if selectFirst: self.ui.loanDistractionList.setCurrentRow(0) self.onLoanDistractionItemClick(self.ui.loanDistractionList.currentItem()) def updateConfigList(self,selectFirst=False,name=""): self.ui.configList.clear() mightyController.updateConfigList() i=0 for config in mightyController.configlist: self.ui.configList.addItem(config.key) if config.key == name: self.ui.configList.setCurrentRow(i) self.onConfigItemClick(self.ui.configList.currentItem()) i+=1 if selectFirst: self.ui.configList.setCurrentRow(0) self.onConfigItemClick(self.ui.configList.currentItem()) def updateCreditList(self, selectFirst=False, valueDate=""): self.ui.creditList.clear() if mightyController.encryptionObject is not None: mightyController.encryptionObject.setKey(self.tmpPw) self.currentCompany.updateCreditList() for credit in self.currentCompany.credits: self.ui.creditList.addItem(credit.name+" / "+str(credit.value) +".- "+credit.date.toString(dbDateFormat)) if selectFirst: self.ui.creditList.setCurrentRow(0) self.onCreditItemClick(self.ui.creditList.currentItem()) def updateWorkchargesList(self, selectFirst=False, name=""): self.ui.workChargesList.clear() if mightyController.encryptionObject is not None: mightyController.encryptionObject.setKey(self.tmpPw) cs = self.ui.jobList.currentItem() for job in self.currentCompany.jobs: if cs is not None and job.name == cs.text(): job.updateWchargesList() for wspese in job.wcharges: self.ui.workChargesList.addItem(wspese.name) if selectFirst: self.ui.workChargesList.setCurrentRow(0) def onShowInactive(self): self.showInactive = self.ui.showInactive.isChecked() self.updateJobList(True) #------------------------------- # List-Clicks #-------------------------------- def onJobStartDateChanged(self): self.ui.enddate.setMinimumDate(self.ui.startdate.date()) logger.debug("Refreshed minimum Enddate") def onPfStartDateChanged(self): self.ui.pfEndDate.setMinimumDate(self.ui.pfDate.date()) def onCompanyItemClick(self, item): self.ui.createJob.setEnabled(True) if singleView: if singleViewId != -1: self.currentCompany = mightyController.getCompanyById(singleViewId) elif singleViewName != "": self.currentCompany = mightyController.getCompanyByName(singleViewName) else: self.currentCompany = mightyController.getCompanyById(1) else: for company in mightyController.companylist: if item is not None and company.name == item.text(): self.currentCompany = company if None is not self.currentCompany : self.ui.companyname.setText(self.currentCompany.name) self.ui.loan.setValue(self.currentCompany.loan) if not singleView: self.ui.companydescription.clear() self.ui.perHours.setValue(self.currentCompany.perHours) self.ui.companydescription.insertPlainText(str(self.currentCompany.describtion)) self.updateJobList(True) self.updateChargesList(True) self.updateCreditList(True) self.updateLoanDistractionList(True) def onChargeItemClick(self, item): for charge in self.currentCompany.charges: if charge.name == item.text(): self.ui.chargesName.setText(charge.name) self.ui.chargesValue.setValue(charge.value) def onPersonalFinanceItemClick(self, item): for pf in mightyController.personalFinances: if pf.name == item.text(): self.ui.pfName.setText(pf.name) self.ui.pfValue.setValue(pf.value) self.ui.pfDate.setDate(pf.date) self.ui.pfEndDate.setDate(pf.endDate) self.ui.pfRepeatTimes.setValue(pf.timesRepeat) if pf.plusMinus == "+": self.ui.pfPlusMinus.setCurrentIndex(0) else: self.ui.pfPlusMinus.setCurrentIndex(1) if pf.repeat == tr("None"): self.ui.pfRepeat.setCurrentIndex(0) elif pf.repeat == tr("Daily"): self.ui.pfRepeat.setCurrentIndex(1) elif pf.repeat == tr("Weekly"): self.ui.pfRepeat.setCurrentIndex(2) else: self.ui.pfRepeat.setCurrentIndex(3) self.ui.pfActive.setChecked(pf.active) def onWChargeItemClick(self, item): jobSelect = self.ui.jobList.currentItem() for job in self.currentCompany.jobs: if job.name == jobSelect.text(): for charge in job.wcharges: if charge.name == item.text(): self.ui.wChargeTimes.setValue(charge.howManyTimes) def onLoanDistractionItemClick(self, item): for loanDistraction in self.currentCompany.loanDistractions: if loanDistraction.name == item.text(): self.ui.loanDistractionName.setText(loanDistraction.name) self.ui.loanDistractionValue.setValue(loanDistraction.value) self.ui.loanDistractionMoney.setChecked(loanDistraction.money) def onConfigItemClick(self, item): for config in mightyController.configlist: if config.key == item.text(): self.ui.configKey.setText(config.key) self.ui.configValue.setText(config.value) def onCreditItemClick(self, item): for credit in self.currentCompany.credits: if item is not None and (credit.name+" / "+str(credit.value) +".- "+credit.date.toString(dbDateFormat)) == item.text(): self.ui.creditName.setText(credit.name) self.ui.creditValue.setValue(credit.value) self.ui.creditDate.setDate(credit.date) if credit.payed: self.ui.creditPayed.setChecked(True) else: self.ui.creditPayed.setChecked(False) if credit.active: self.ui.creditActive.setChecked(True) else: self.ui.creditActive.setChecked(False) def onJobItemClick(self, item): for job in self.currentCompany.jobs: if item is not None and item.text() == job.name: self.currentJob = job self.ui.jobname.setText(job.name) self.ui.jobplace.setText(job.place) self.ui.jobComment.setPlainText(job.comment) self.ui.baustellenleiter.setText(job.leader) self.ui.hours.cleanText() self.ui.hours.setValue(job.hours) self.ui.correctionHours.cleanText() self.ui.correctionHours.setValue(job.correctionHours) self.ui.weekendDays.cleanText() self.ui.weekendDays.setValue(job.weekendDays) if singleView == False: self.ui.startdate.setDate(job.startdate) self.ui.enddate.setMinimumDate(job.startdate) self.ui.enddate.setDate(job.enddate) self.ui.daysCalc.setText(str(job.startdate.daysTo(job.enddate)+1)+ " "+ tr("days")) self.ui.hoursCalc.setText(str((job.startdate.daysTo(job.enddate)+1)*job.hours)+" "+ tr(" hours")) self.updateWorkchargesList() if job.active == 1: self.ui.active.setChecked(True) else: self.ui.active.setChecked(False) #------------- # personal Finance-Actions #-------------- def onCreatePersonalFinance(self): #self.currentCompany.createCharge(self.ui.chargesName.text(), self.ui.chargesValue.text()) mightyController.createPersonalFinance(self.ui.pfName.text(), self.ui.pfValue.text(), self.ui.pfDate.text(),self.ui.pfEndDate.text(), self.ui.pfRepeat.currentText(), self.ui.pfRepeatTimes.value(), self.ui.pfPlusMinus.currentText(), self.ui.pfActive.isChecked(), encrypted) # @TODO select the created! self.updatePersonalFinancesList(False,self.ui.pfName.text()) def onSavePersonalFinance(self): cm = self.ui.pfList.currentItem() for pf in mightyController.personalFinances: if cm is not None and pf.name == cm.text(): if pf.save(self.ui.pfName.text(), self.ui.pfValue.text(), self.ui.pfDate.text(),self.ui.pfEndDate.text(), self.ui.pfRepeat.currentText(), self.ui.pfRepeatTimes.value(), self.ui.pfPlusMinus.currentText(), self.ui.pfActive.isChecked()) != -1: self.ui.status.showMessage(tr("Personal Finance")+" "+self.ui.pfName.text()+" "+tr("saved")) else: logger.error(tr("Personal Finance")+" "+tr("could not")+" be "+tr("saved")+". DB-Error. The name maybe exist allready?") sdt.aB(tr("Personal Finance")+" "+tr("could not")+" be "+tr("saved")+". DB-Error. The name maybe exist allready?") self.updatePersonalFinancesList(False,self.ui.pfName.text()) def onDeletePersonalFinance(self): cm = self.ui.pfList.currentItem() success = False for pf in mightyController.personalFinances: if cm is not None and pf.name == cm.text(): pf.delete() success = True self.ui.status.showMessage(tr("Charge")+" "+cm.text()+" "+tr("deleted")) if not success: logger.error(tr("Charge")+" "+tr("could not")+" be "+tr("deleted")) sdt.aB(tr("Charge")+" "+tr("could not")+" be "+tr("deleted")) else: self.updatePersonalFinancesList(True) def updatePersonalFinanceText(self): self.ui.pfSummary.clear() self.ui.pfSummary.setText(sdt.createPersonalFinancesHtml(mightyController.personalFinances, self.ui)) #------------- # Charges-Actions #-------------- def onCreateCharge(self): self.currentCompany.createCharge(self.ui.chargesName.text(), self.ui.chargesValue.text()) # @TODO select the created! self.updateChargesList(False,self.ui.chargesName.text()) def onSaveCharge(self): cr = self.ui.chargesList.currentRow() cm = self.ui.chargesList.currentItem() for charge in self.currentCompany.charges: if cm is not None and charge.name == cm.text(): if charge.save(self.ui.chargesName.text(), self.ui.chargesValue.text()) != -1: self.ui.status.showMessage(tr("Charge")+" "+self.ui.chargesName.text()+" "+tr("saved")) else: logger.error(tr("Charge")+" "+tr("could not")+" be "+tr("saved")+". DB-Error. The name maybe exist allready?") sdt.aB(tr("Charge")+" "+tr("could not")+" be "+tr("saved")+". DB-Error. The name maybe exist allready?") else: self.updateChargesList(True) self.updateWorkchargesList(True) self.ui.chargesList.setCurrentRow(cr) self.ui.chargesList.setCurrentItem(cm) def onDeleteCharge(self): cm = self.ui.chargesList.currentItem() success = False for charge in self.currentCompany.charges: if cm is not None and charge.name == cm.text(): charge.delete() success = True self.ui.status.showMessage(tr("Charge")+" "+cm.text()+" "+tr("deleted")) if not success: logger.error(tr("Charge")+" "+tr("could not")+" be "+tr("deleted")) sdt.aB(tr("Charge")+" "+tr("could not")+" be "+tr("deleted")) else: self.updateChargesList(True) #------------- # loanDistraction-Actions #-------------- def onCreateLoanDistraction(self): self.currentCompany.createLoanDistraction(self.ui.loanDistractionName.text(), self.ui.loanDistractionValue.text(), self.ui.loanDistractionMoney.isChecked()) # @TODO select the created! self.ui.status.showMessage(tr("LoanDistraction")+" "+self.ui.loanDistractionName.text()+" "+tr("created")) self.updateLoanDistractionList(True) def onSaveLoanDistraction(self): cr = self.ui.loanDistractionList.currentRow() cm = self.ui.loanDistractionList.currentItem() success = False for loanDistraction in self.currentCompany.loanDistractions: if cm is not None and loanDistraction.name == cm.text(): loanDistraction.save(self.ui.loanDistractionName.text(), self.ui.loanDistractionValue.text(), self.ui.loanDistractionMoney.isChecked()) success = True self.ui.status.showMessage(tr("LoanSplit")+" "+self.ui.loanSplitName.text()+" "+tr("saved")) if not success: logger.error(tr("LoanSplit")+" "+tr("could not")+" be "+tr("saved")) sdt.aB(tr("LoanSplit")+" "+tr("could not")+" be "+tr("saved")) else: self.updateLoanDistractionList() self.ui.loanDistractionList.setCurrentRow(cr) self.ui.loanDistractionList.setCurrentItem(cm) def onDeleteLoanDistraction(self): cm = self.ui.loanDistractionList.currentItem() success = False for loanDistraction in self.currentCompany.loanDistractions: if cm is not None and loanDistraction.name == cm.text(): loanDistraction.delete() success = True self.ui.status.showMessage(tr("LoanSplit")+" "+cm.text()+" "+tr("deleted")) if not success: logger.error(tr("Charge")+" "+tr("could not")+" be "+tr("saved")) sdt.aB(tr("Charge")+" "+tr("could not")+" be "+tr("saved")) else: self.updateLoanDistractionList(True) #------------- # config-Actions #-------------- def onCreateConfig(self): mightyController.createConfig(self.ui.configKey.text(), self.ui.configValue.text()) # @TODO select the created! self.ui.status.showMessage(tr("Config")+" "+self.ui.configKey.text()+" "+tr("created")) if self.ui.configKey.text() == "encrypted" and self.ui.configValue.text() != "None": pw, okCancel = QtGui.QInputDialog.getText(None,tr("Password"),tr("Enter Password"),QtGui.QLineEdit.Password) self.tmpPw = pw newCryptManager = cm(scm.getMod(self.ui.configValue.text()), pw) mightyController.updateEos(newCryptManager) scm.migrateEncryptionData(newCryptManager, mightyController) self.updateConfigList(False,self.ui.configKey.text()) def onSaveConfig(self): cI = self.ui.configList.currentItem() ciText = cI.text() for config in mightyController.configlist: if cI is not None and config.key == ciText: config.save(self.ui.configKey.text(), self.ui.configValue.text()) self.ui.status.showMessage(tr("Config")+" "+self.ui.configKey.text()+" "+tr("saved")) if self.ui.configKey.text() == "encrypted": if self.ui.configValue.text() != "None": logger.error("not none but "+self.ui.configValue.text()) pw, okCancel = QtGui.QInputDialog.getText(None,tr("Password"),tr("Enter Password"),QtGui.QLineEdit.Password) self.tmpPw = pw nCm = cm(scm.getMod(self.ui.configValue.text()), pw) else: nCm = None scm.migrateEncryptionData(nCm, mightyController) mightyController.encryptionObject = nCm mightyController.updateEos(nCm) self.updateConfigList(False,self.ui.configKey.text()) def onDeleteConfig(self): cm = self.ui.configList.currentItem() success = False for config in mightyController.configlist: if cm is not None and config.key == cm.text(): config.delete() success = True self.ui.status.showMessage(tr("Charge")+" "+cm.text()+" "+tr("deleted")) if not success: logger.error(tr("Charge")+" "+tr("could not")+" be "+tr("saved")) sdt.aB(tr("Charge")+" "+tr("could not")+" be "+tr("saved")) else: self.updateConfigList(True) #--------------------------------------- # Credit-Actions #--------------------------------------- def onCreateCredit(self): self.currentCompany.createCredit(self.ui.creditName.text(), self.ui.creditValue.value(), self.ui.creditDate.text(), self.ui.creditPayed.isChecked(), self.ui.creditActive.isChecked()) self.ui.status.showMessage(tr("Credit")+" "+tr("created")+":"+str(self.ui.creditValue.value())) # @TODO select the created! self.updateCreditList(selectFirst=True) def onSaveCredit(self): success = False cr = self.ui.creditList.currentRow() cm = self.ui.creditList.currentItem() for credit in self.currentCompany.credits: if cm is not None and (credit.name+" / "+str(credit.value) +".- "+credit.date.toString(dbDateFormat)) == cm.text(): credit.save(self.ui.creditName.text(), self.ui.creditValue.text(), self.ui.creditDate.text(), self.ui.creditPayed.isChecked(), self.ui.creditActive.isChecked()) success = True self.ui.status.showMessage(tr("Credit")+" "+self.ui.creditName.text()+":"+self.ui.creditValue.text()+" "+tr("saved")) if not success: logger.error(tr("Credit")+" "+tr("could not")+" be "+tr("saved")) sdt.aB(tr("Credit")+" "+tr("could not")+" be "+tr("saved")) else: self.updateCreditList() self.ui.creditList.setCurrentRow(cr) def onDeleteCredit(self): success = False cm = self.ui.creditList.currentItem() for credit in self.currentCompany.credits: if cm is not None and (credit.name+" / "+str(credit.value) +".- "+credit.date.toString(dbDateFormat)) == cm.text(): credit.delete() success = True self.ui.status.showMessage(tr("Credit")+" "+self.ui.creditValue.text()+" "+tr("deleted")) if not success: logger.error(tr("Credit")+" "+tr("could not")+" be "+tr("deleted")) sdt.aB(tr("Credit")+" "+tr("could not")+" be "+tr("deleted")) else: self.updateCreditList(True) #-------------------- # Company-Actions #--------------------- def onCreateCompany(self): b = mightyController.createCompany(self.ui.companyname.text(), self.ui.loan.text(), self.ui.perHours.text(), self.ui.companydescription.toPlainText()) if b== -2: logger.error(tr("Company already exist, please choose another name")) sdt.aB(tr("Company already exist, please choose another name")) elif b == -1: logger.error(tr("A DB-Failure is happent. Please check the console.")) sdt.aB(tr("A DB-Failure is happent. Please check the console.")) else: self.updateCompanyList(False,self.ui.companyname.text()) def onSaveCompany(self): if self.currentCompany is not None: if singleView: self.currentCompany.save(self.ui.companyname.text(), self.ui.loan.text(), 1, "SingleViewCompany") else: self.currentCompany.save(self.ui.companyname.text(), self.ui.loan.text(), self.ui.perHours.text(), self.ui.companydescription.toPlainText()) else: sdt.aB("Company could not be saved") self.updateCompanyList(False,self.ui.companyname.text()) def onDeleteCompany(self): if self.currentCompany is not None: self.currentCompany.delete() else: sdt.aB("Company could not be deleted") self.updateCompanyList(True) #------------------------ # Job-Actions #------------------------ def onCreateJob(self): tmpCheck = 0 if self.ui.active.isChecked(): tmpCheck = 1 if singleView: b = self.currentCompany.createJob(self.ui.jobname.text(), self.ui.jobplace.text(), self.ui.jobComment.toPlainText(), self.ui.hours.text(),self.ui.correctionHours.text(), self.ui.weekendDays.value(), -1, -1, self.ui.baustellenleiter.text(), tmpCheck) else: b = self.currentCompany.createJob(self.ui.jobname.text(), self.ui.jobplace.text(), self.ui.jobComment.toPlainText(), self.ui.hours.text(),self.ui.correctionHours.text(), self.ui.weekendDays.value(), self.ui.startdate.text(), self.ui.enddate.text(), self.ui.baustellenleiter.text(), tmpCheck) # @TODO select the created!! if b== -2: sdt.aB(tr("Job already exist, please choose another name")) elif b == -1: sdt.aB(tr("A DB-Failure is happent. Please check the console.")) else: self.updateJobList(False,self.ui.jobname.text()) def onSaveJob(self): cm = self.ui.jobList.currentItem() for job in self.currentCompany.jobs: if cm is not None and job.name == str(cm.text()): # name, place, startdate, enddate, baustellenleiter, active, companyid if singleView: job.save(self.ui.jobname.text(), self.ui.jobplace.text(),self.ui.jobComment.toPlainText(), self.ui.hours.text(),self.ui.correctionHours.text(), self.ui.weekendDays.value(),-1, -1, self.ui.baustellenleiter.text(), self.ui.active.isChecked(), self.currentCompany.id) else: job.save(self.ui.jobname.text(), self.ui.jobplace.text(),self.ui.jobComment.toPlainText(), self.ui.hours.text(),self.ui.correctionHours.text(), self.ui.weekendDays.value(), self.ui.startdate.text(), self.ui.enddate.text(), self.ui.baustellenleiter.text(), self.ui.active.isChecked(), self.currentCompany.id) self.ui.status.showMessage("Job "+job.name+" "+tr("saved")) self.updateJobList(False,job.name) def onDeleteJob(self): cm = self.ui.jobList.currentItem() for job in self.currentCompany.jobs: if cm is not None and job.name == str(cm.text()): job.delete() self.updateJobList(True) def onDeleteWorkSpese(self): cs = self.ui.workChargesList.currentItem() cm = self.ui.jobList.currentItem() for job in self.currentCompany.jobs: if cm is not None and job.name == str(cm.text()): job.removeSpese(cs.text(), self.currentCompany) self.updateWorkchargesList(True) def onSaveWorkSpese(self): cs = self.ui.workChargesList.currentItem() cm = self.ui.jobList.currentItem() for job in self.currentCompany.jobs: if cm is not None and job.name == str(cm.text()): job.saveCharge(cs.text(), self.ui.wChargeTimes.value()) self.updateWorkchargesList(True) def onAddWorkSpese(self): cs = self.ui.chargesList.currentItem() cm = self.ui.jobList.currentItem() for job in self.currentCompany.jobs: if cm is not None and job.name == cm.text(): for spese in self.currentCompany.charges: if cs is not None and spese.name == cs.text(): job.addSpese(spese.id, self.ui.wChargeTimes.value()) job.updateWchargesList() self.updateWorkchargesList() #-------------------------- # Showing-Tab #-------------------------- #ugly method, but how else? def updateInfoExel(self): self.ui.infoExel.clearContents() self.ui.infoExel.clear() self.sum = 0 creditStringFinale ="" creditSumFinale = 0 if singleView: self.ui.infoExel.setHorizontalHeaderLabels((tr( "Jobname"),tr( "Place"), tr( "Leader"), tr( "Loan"),tr( "Time"), tr( "Charges"), tr( "Splits"), tr( "Summe"))) else: self.ui.infoExel.setHorizontalHeaderLabels((tr( "Companyname"),tr( "Jobname"),tr( "Place"), tr( "Leader"), tr( "Loan"),tr( "Time"), tr( "Charges"), tr( "Splits"), tr( "Summe"))) workCalendar = QtCore.QDate.fromString(str(self.ui.workCalendar.monthShown())+"."+str(self.ui.workCalendar.yearShown()),"M.yyyy") #proof of concept, have to move.. rowNr = 0 sum = 0 self.roundSum += 1 infoSearch = self.ui.infoSearch.text() infoSearch = infoSearch.lower() sdt.updateGraphicView(self.ui, mightyController.companylist, workCalendar, infoSearch) self.ui.infoExel.insertRow(0) if singleView: company = self.currentCompany for job in company.jobs: if cw.insertJobYesNo(self.ui, company, job, infoSearch, workCalendar): sum += sdt.createJobRow(self.ui, job, company, workCalendar, rowNr, sum) rowNr +=1 self.ui.infoExel.insertRow(rowNr) creditString, creditSumFinale = sdt.createCreditTextBox(self.currentCompany, self.ui) else: for company in mightyController.companylist: sl = sorted(company.jobs, key=lambda job: job.startdate, reverse=True) for job in sl: if cw.insertJobYesNo(self.ui, company, job, infoSearch, workCalendar): sum += sdt.createJobRow(self.ui, job, company, workCalendar, rowNr, sum) rowNr +=1 self.ui.infoExel.insertRow(rowNr) creditString, creditSum = sdt.createCreditTextBox(company, self.ui) creditSumFinale += creditSum creditStringFinale += creditString creditStringFinale+="<hr />Of all companys: "+str(creditSumFinale)+".-" self.ui.infoExelCredits.setText(creditStringFinale) self.ui.amount.display(sum-creditSumFinale) def updateCompanyViewSelect(self): if singleView == False: self.ui.companyViewSelect.clear() for company in mightyController.companylist: self.ui.companyViewSelect.addItem(company.name) def updateCompanyView(self): workCalendar = QtCore.QDate.fromString(str(self.ui.companyViewCalendar.monthShown())+"."+str(self.ui.companyViewCalendar.yearShown()),"M.yyyy") if singleView: self.ui.companyViewText.setText(sdt.createDetailText(self.currentCompany, workCalendar, self.ui.companyViewCalendarFilter.isChecked())) else: for company in mightyController.companylist: if self.ui.companyViewSelect.currentText() == company.name: self.ui.companyViewText.setText(sdt.createDetailText(company,workCalendar, self.ui.companyViewCalendarFilter.isChecked()))