def headerData(self, section: int, orientation: Qt.Orientation, role: int = ...): nomeGiorno = '' try: nomeGiorno = self._mesi[0][0][section].shortDayName( self._mesi[0][0][section].dayOfWeek()) except IndexError: nomeGiorno = QDate().shortDayName(7) except: print(fex()) weekEnd = [QDate().shortDayName(6), QDate().shortDayName(7)] if role == Qt.DisplayRole: if orientation == Qt.Horizontal: return nomeGiorno if role == Qt.ForegroundRole: if nomeGiorno in weekEnd: return QColor(Qt.red) if role == Qt.BackgroundRole: # necessario CAMBIARE QAPPLICATION.SETSTYLE("FUSION") color = QColor('darkGray') brush = QBrush(color) return brush
def addLine(self, new=False, nome='Nuova Spesa', euro=0): def updateTypes(self, tipo): if tipo not in self.listaTipi: self.listaTipi.append(tipo) try: self.tableWidget.blockSignals(True) itemNome = QTableWidgetItem(nome) updateTypes(self, type(itemNome)) row = self.tableWidget.rowCount() print('table dialog info spese, row: ', row) self.tableWidget.insertRow(row) self.tableWidget.setItem(row, 0, itemNome) line = LineEditNum(row=row, parent=self.tableWidget) updateTypes(self, type(line)) line.setTextFiltered(euro) line.TABPRESSEDTYPE.connect(lambda x, y, k: self.returnPressed(type(line), row, QtCore.Qt.Key_Tab)) # line.returnPressed.connect() self.tableWidget.setCellWidget(row, 1, line) self.tableWidget.blockSignals(False) if new: self.tableWidget.setCurrentCell(row, 0) # self.bot_removeLine.blockSignals(True) self.tableWidget.editItem(self.tableWidget.item(row, 0)) print('row Count: ', self.tableWidget.rowCount()) except: print(fex())
def leggiDatabase(self, database=None): """ legge il database per restituire gli elenchi delle piattaforme (booking, airbb, privati, pulizie) per stilizzare il calendario :param database: :return: """ try: db = Manager() self.datePrenotazioni, self.datePulizie, self.dateNote = db.platformPulizie( database) self.dateSpese = db.getDataSpese() self.calendario.setDatesIndicators(self.datePrenotazioni, self.datePulizie, self.config['colori settati'], self.dateSpese, self.dateNote) #todo selectedDate restituice Qmodelindex invece che data # data = self.calendario.selectedDate() data = self.calendario.currentDate info = self.getInfoFromDate(data) self.setInfoFromDate(info) self.infoSta = self.initStatDb(db.DataBase) self.riempiTabellaStat() if database is None: self.database = db.DataBase except: print(fex())
def paintEvent(self, e: QtGui.QPaintEvent) -> None: try: painter = QtWidgets.QStylePainter(self) painter.setPen(QtCore.Qt.white) font = QtGui.QFont( 'Arial', 17, ) painter.setFont(font) option = QtWidgets.QStyleOptionComboBox() self.initStyleOption(option) painter.drawComplexControl(QtWidgets.QStyle.CC_ComboBox, option) textRect = QtWidgets.qApp.style().subControlRect( QtWidgets.QStyle.CC_ComboBox, option, QtWidgets.QStyle.SC_ComboBoxEditField, self) painter.drawItemText( textRect.adjusted(-1, 1, -1, 1), QtWidgets.qApp.style().visualAlignment(self.layoutDirection(), QtCore.Qt.AlignCenter), self.palette(), self.isEnabled(), self.fontMetrics().elidedText(self.currentText(), QtCore.Qt.ElideRight, textRect.width())) except: print(fex())
def displayImporti(self, t=None): if t is not None: print('testo passato: ', t) try: rows = int(self.label_numeroLetti.text()) self.tableWidget__importi.setRowCount(rows) stagione, platform = self.getPlatStag() self.config['stagione preferita'] = stagione flagNuvoImporto = False for i in range(rows): itemNumero = QtWidgets.QTableWidgetItem() itemImporto = QtWidgets.QTableWidgetItem() itemNumero.setText(str(i + 1)) try: importo = self.config['stagione'][stagione]['importi'][ platform][i] itemImporto.setText(str(importo)) except IndexError: flagNuvoImporto = True self.tableWidget__importi.setItem(i, 0, itemNumero) self.tableWidget__importi.setItem(i, 1, itemImporto) if flagNuvoImporto: self.setNuovoImporto() self.setProvvigione() self.setColor() self.displayTasseAttive() except KeyError: print('KeyErr in displayImporti') except: print(fex())
def addPlatform(self): try: platAddPlat = '' dia = SimpleLine(icon=self.optIcon) if dia.exec_(): platAddPlat = dia.newPlat print('nuova platform: ', platAddPlat) else: return if platAddPlat != '' and platAddPlat not in self.config[ 'platforms'].keys(): importi = [0 for x in range(self.config['numero letti'])] for sta in self.config['stagione']: self.config['stagione'][sta]['importi'][ platAddPlat] = importi self.config['provvigioni'][platAddPlat] = 0.0 self.config['tasse attive'][ platAddPlat] = self.radio_attivaTassa.isChecked() self.saveConfig(config_file.fileConf, self.config) self.chooseColor(platAddPlat) self.setComboPlat() self.combo_platform.setCurrentIndex( self.combo_platform.findText(platAddPlat)) else: print('sono fuori') except: print(fex())
def keyPressEvent(self, a0: QtGui.QKeyEvent) -> None: try: # print('key ',type(a0.key())) # self.keyPressed.emit(a0.key()) self.on_key(a0.key()) except: print(fex()) return super(MySimpleLineEdit, self).keyPressEvent(a0)
def setUpConnections(self): self.bot_next.clicked.connect(self.mapper.toNext) self.bot_prev.clicked.connect(self.mapper.toPrevious) try: self.combo.currentIndexChanged.connect( lambda x: self.mapper.setCurrentIndex(x)) pass except: print(fex())
def gotoLine(self, row): print('go to line in row: ', row) try: line = self.tableWidget.cellWidget(row, 1) line.setFocus() line.selectAll() # if self.bot_removeLine.signalsBlocked(): # self.bot_removeLine.blockSignals(False) except: print(fex()) pass
def do_something(self): print("do_something") flag = self.filtraNum(self.text()) if not flag: self.clear() self.TABPRESSED.emit(flag) try: self.TABPRESSEDTYPE.emit(type(self), self.row, QtCore.Qt.Key_Tab) except: print(fex()) return flag
def dialogOpt(self): try: dialog = DialogOption(self) if dialog.exec_(): conf = dialog.config self.config = conf self.loadConfig() self.leggiDatabase() # todo copiare la variabile self.config except UnboundLocalError: pass except: print(fex())
def setActiveTuple(self, flags: tuple = ()): """ it uses self.tuplaFlags or a passed tuple for setting the icons""" if len(flags) < 3: flags = self.tuplaFlags for indice, flag in enumerate(flags): print('flag: ', flag) label = self.labels[indice] icona = self.icons[indice] if flag: self.setIcona(label, icona) else: try: self.setIcona(label, icona, remove=True) except: print(fex())
def dialogDisponibili(self, l): d = DialogInfo('Note', showBool=True) try: d.setWindowModality(QtCore.Qt.WindowModal) d.guiText.textBrowser_dialog_info.setReadOnly(True) except: print(fex()) data = '' if len(l) > 0: for g in l: data += g.addDays(1).toString("dd/MM/yyyy") + '\n' else: data = 'Nessuna data disponibile' d.guiText.textBrowser_dialog_info.setText(data) d.exec_()
def setActive(self): """ it uses self.tuplaFlags or a passed tuple for setting the icons""" flags = self.dictFlags for key in flags.keys(): label = self.labelsDict[key] # label = self.labels[indice] icona = self.iconsDict[key] # icona = self.icons[indice] if flags[key]: self.setIcona(label, icona) # print('flag setted: ', key, True) else: try: # self.setIcona(label, icona, remove=True) label.clear() except: print(fex())
def gestisciNote(self, info): try: # data = self.calendario.selectedDate() data = self.calendario.currentDate a, m, g = self.amg(data) nota = self.database[a][m][g]['checkIn']['note'] dialog = DialogInfo(info, testo=nota, showBool=True) dialog.guiText.textBrowser_dialog_info.setText(nota) if dialog.exec_(): nuovoTesto = dialog.guiText.textBrowser_dialog_info.toPlainText( ) if nuovoTesto != nota: self.database[a][m][g]['checkIn']['spese'] = nuovoTesto dbm.salvaDatabase(self.database) except: print(fex())
def gestisciSpese(self, datat): try: # dialog = DialogInfo('Spese',table=True) a, m, g = self.amg(datat) spesetot = deepc(self.spese) spese = spesetot[a][m].get(datat, {}) dialog = DialogSpese(spese) dialog.setWindowIcon(QtGui.QIcon('./Icons/iconaSpese.png')) dialog.SPESEPRONTE.connect(lambda x: print('spese pronte', x)) # dialog.setModal(True) if dialog.exec_(): spese = dialog.ottieniSpese() if len(spese) != 0: self.spese[a][m][datat] = spese self.bot_spese.setState(True) tot = self.totaleSpeseG(datat) print('totale spese giornaliere: ', tot) self.calendario.dateSpese.append(datat) self.calendario.datesIndicatorsChanged.emit() else: if datat in self.spese[a][m].keys(): del self.spese[a][m][datat] if datat in self.calendario.dateSpese: self.calendario.dateSpese.remove(datat) self.calendario.datesIndicatorsChanged.emit() self.bot_spese.setState(False) tot = 0 self.calendario.datesIndicatorsChanged.emit() self.calendario.updateIconsAndBooked() totSpeseMensili = 0 try: for giornoData in self.spese[a][m].keys(): for spesaperitem in self.spese[a][m][giornoData].values(): totSpeseMensili += spesaperitem finale = float(totSpeseMensili) except TypeError: print(' TYPEERR *****************', self.spese[a][m].values()) dbm.salvaDatabase(self.spese, tipodatabase='spese') return finale except: print(fex())
def data(self, index: QModelIndex, role: int = ...): try: row = index.row() col = index.column() if role == Qt.DisplayRole: # print(row,'|',col) dato = self._date[row][col] return dato.day() elif role == Qt.TextAlignmentRole: # return QtCore.Qt.AlignHCenter | QtCore.Qt.AlignBottom return Qt.AlignHCenter | Qt.AlignVCenter elif role == Qt.BackgroundRole: # if col % 2 != 0: # return QColor(Qt.darkRed) pass except: print(fex())
def setImporti(self, i=None): try: if i is not None: # row = i.row() row = i stagione, platform = self.getPlatStag() try: importo = int( self.tableWidget__importi.item(row, 1).text()) except ValueError: importo = self.config['stagione'][stagione]['importi'][ platform][row] item = self.tableWidget__importi.item(row, 1) item.setText(str(importo)) self.config['stagione'][stagione]['importi'][platform][ row] = importo except: print(fex())
def calcTax(self): """ prende il numero di ospiti, la data "dal" e la data "al" dalle spinbox la tassa è di 2 euro al mese per un massimo di 3 giorni, dal quarto è gratis per il mese corrente compara i mesi per ricominciare il conto dei giorni da pagare :return: """ try: dal = self.dateEdit_dal.date() mese_dal = dal.month() al = self.dateEdit_al.date() mese_al = al.month() permanenza = dal.daysTo(al) ospiti = self.spinBox_ospiti.value() topay = 3 fee = self.tassa oggi = self.dateEdit_dal.date() listaDate = [] flag = oggi != al while flag: mese = oggi.month() # print('mese: ', mese) if mese != mese_dal: topay = 3 mese_dal = mese if oggi not in listaDate and topay > 0: listaDate.append(oggi) topay -= 1 oggi = oggi.addDays(1) flag = oggi != al if permanenza != len(listaDate): pass # print("qualcosa non va nel conteggio delle tasse") tot = len(listaDate) * ospiti * fee if tot == 0: tot = fee # print("tassa da pagare: ", tot) return tot except: print(fex())
def addSpese(self): try: data = self.calendario.currentDate a, m, g = self.amg(data) finale = self.gestisciSpese(data) spese = self.database[a][m][g]['checkIn']['spese'] if spese != finale: copia = deepc(self.database[a][m][g]['checkIn']) copia['spese'] = finale for giorno in self.database[a][m].keys(): note = self.database[a][m][giorno]['checkIn']['note'] copia['note'] = note self.database[a][m][giorno]['checkIn'] = deepc(copia) # self.database[a][m][giorno]['checkIn']['spese'] = finale dbm.salvaDatabase(self.database) # self.updateInfoStat() except: print(fex())
def colDict(lista=[]): """deve ritornare un dizionario""" listaCopiata = lista.copy() listaTemp = [] diz = {} while len(listaCopiata): try: listaTroncata = listaCopiata[:7] for x in listaTroncata: ind = listaCopiata.index(x) if x not in listaTemp: estratto = listaCopiata.pop(ind) chiave = estratto % 7 if chiave == 0: chiave = 7 if chiave not in diz.keys(): diz[chiave] = [] listaTemp.append(estratto) diz[chiave].append(estratto) except: print(fex()) return diz
def modificaESalva(self): try: info = self.compilaInfo() dal = self.dateEdit_dal.date() al = self.dateEdit_al.date() manager = Manager(info) listaDisponibili = manager.checkAval( dal, al, nomePassato=self.lineEdit_nome.text(), cognomePassato=self.lineEdit_cognome.text()) giorniPermanenza = dal.daysTo(al) if len(listaDisponibili) == giorniPermanenza: print('modifica ok') print('prima cancello') self.cancellaprenot(wrnMode=True) print('poi salvo...') self.salvaInfo(modo=False) else: self.dialogDisponibili(listaDisponibili) except: print(fex())
def addNote(self): try: # dialog = DialogInfo('Spese',table=True) # data = self.calendario.selectedDate() data = self.calendario.currentDate a, m, g = self.amg(data) database = self.getDatabase(a) # text = self.database[a][m][g]['checkIn']['note'] text = database[a][m][g]['checkIn']['note'] dialog = DialogInfo(testo=text, showBool=True) icona = QtGui.QIcon('./Icons/iconaNote.ico') dialog.setWindowIcon(icona) # tempDict = deepc(self.database[a][m][g]['checkIn']) tempDict = deepc(database[a][m][g]['checkIn']) dialog.guiText.textBrowser_dialog_info.setText(text) if dialog.exec_(): nuovoTesto = dialog.guiText.textBrowser_dialog_info.toPlainText( ) if nuovoTesto != text: tempDict['note'] = nuovoTesto # self.database[a][m][g]['checkIn'] = tempDict database[a][m][g]['checkIn'] = tempDict dbm.salvaDatabase(database) self.database = deepc(database) self.bot_note.setState(True) if nuovoTesto == '': self.bot_note.setState(False) if self.calendario.currentDate in self.calendario.dateNote: self.calendario.dateNote.remove( self.calendario.currentDate) else: if self.calendario.currentDate not in self.calendario.dateNote: self.calendario.dateNote.append( self.calendario.currentDate) self.calendario.updateIconsAndBooked() # info = self.getInfo(a,m,g) # self.setInfoTemp(info) except: print(fex())
def chooseColor(self, platCol=None): try: if platCol is None: platCol = self.combo_platform.currentText() coloriPresenti = [ presente for presente in self.config['platforms'].values() ] print('colori presenti: ', coloriPresenti) col = QtWidgets.QColorDialog.getColor() print('colore scelto: ', col.name()) if col.isValid(): if col.name() not in coloriPresenti: self.bot_scegliColore.setStyleSheet( "QPushButton { background-color: %s }" % col.name()) self.config['platforms'][platCol] = col.name() self.config['colori settati'][platCol] = col.name() else: msg = QtWidgets.QMessageBox() msg.setText('Il colore selezionato è già stato attribuito') msg.setIcon(QtWidgets.QMessageBox.Warning) msg.setWindowTitle("Attenzione!") msg.setStandardButtons(QtWidgets.QMessageBox.Ok) msg.exec_() return self.chooseColor(platCol) # if colorForm.accepted(): # print(colorForm.platColors) # self.config['platforms'] = colorForm.platColors # colorForm.currentColorChanged.connect(self.stampa) # self.setColor() # colorForm.close() # else: # print('not accepted', colorForm.accepted()) except: print(fex())
def flags(self, index: QModelIndex): try: if index.isValid(): return Qt.ItemFlags() | Qt.ItemIsEnabled except: print(fex())
from subprocess import check_call import os from traceback import format_exc as fex database = '..\database.pkl' spese = '..\speseDb.pkl' lista = [database, spese] try: os.system('del "..\speseDb.pkl"') os.system('del "..\database.pkl"') except: print(fex()) print('databases deleted') # for d in lista: # check_call(['del', d],shell=True)
def riempi_campi_prenotazioni(self): """ prende le info da inserire nei campi della prenotazione a partire dalle info nel box nella pagina del calendario""" # todo aggiungere segnale alle mylineEdit perché si sblocchi il tasto salva o modifica try: info = deepc(self.infoTemp) print('infoTemp in riempi_campi_prenotazioni', self.infoTemp) if (info['nome'] and info['cognome'] and info['telefono']) == '': self.modificaOsalva() else: self.modificaOsalva(modifica=True) self.lineEdit_nome.setText(info['nome']) self.lineEdit_cognome.setText(info['cognome']) self.lineEdit_telefono.setText(info['telefono']) self.lineEdit_email.setText(info['email']) self.spinBox_ospiti.setValue(int(info['numero ospiti'])) self.spinBox_bambini.setValue(int(info['bambini'])) platform = info['platform'] if platform != '': indiceCombo = self.combo_platformPrenotazioni.findText( platform) else: indiceCombo = 0 self.combo_platformPrenotazioni.setCurrentIndex(indiceCombo) print('indice Combo: ', indiceCombo) print('platform: ', platform) # try: # # except: # print(fex()) self.plainTextEdit_note.clear() try: infoNote = self.getInfoFromDate(info['data arrivo']) except AttributeError: infoNote = info self.plainTextEdit_note.insertPlainText(infoNote['note']) self.radio_colazione.setChecked(info['colazione'] == 'Si') # self.importAdj(self.spinBox_bambini.value() + self.spinBox_ospiti.value()) stagione = info['stagione'] indiceComboStagione = self.combo_stagionePrenotazioni.findText( stagione) if indiceComboStagione == -1: indiceComboStagione = self.combo_stagionePrenotazioni.findText( self.config['stagione preferita']) self.combo_stagionePrenotazioni.setCurrentIndex( indiceComboStagione) self.importAdj() dataArrivo = info['data arrivo'] dataPartenza = info['data partenza'] if (dataArrivo or dataPartenza) is not None: self.dateEdit_dal.blockSignals(True) self.dateEdit_al.blockSignals(True) self.dateEdit_dal.setDate(dataArrivo) self.dateEdit_al.setMinimumDate(dataArrivo.addDays(1)) self.dateEdit_al.setDate(dataPartenza) self.dateEdit_dal.blockSignals(False) self.dateEdit_al.blockSignals(False) self.lineEdit_numeroGiorni.setText(info['totale notti']) else: # print("else: setDateEdit_dal") self.setDateEdit_dal() # self.dateEdit_al.setDate(dataPartenza) except: print(fex())