diff --git a/bananaSPLIT/UserInterface/compiledUI/mainwindow.py b/bananaSPLIT/UserInterface/compiledUI/mainwindow.py index 66af087..6701188 100644 --- a/bananaSPLIT/UserInterface/compiledUI/mainwindow.py +++ b/bananaSPLIT/UserInterface/compiledUI/mainwindow.py @@ -38,15 +38,6 @@ class Ui_mainwin(object): self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken) self.line_2.setObjectName("line_2") self.gridLayout_2.addWidget(self.line_2, 2, 0, 1, 1) - self.label_4 = QtWidgets.QLabel(self.centralwidget) - font = QtGui.QFont() - font.setPointSize(11) - font.setBold(True) - font.setWeight(75) - self.label_4.setFont(font) - self.label_4.setAlignment(QtCore.Qt.AlignCenter) - self.label_4.setObjectName("label_4") - self.gridLayout_2.addWidget(self.label_4, 3, 0, 1, 1) self.wgt_main = QtWidgets.QTabWidget(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.MinimumExpanding) sizePolicy.setHorizontalStretch(0) @@ -181,8 +172,30 @@ class Ui_mainwin(object): self.gridLayout.addLayout(self.horizontalLayout_2, 4, 0, 1, 4) self.wgt_main.addTab(self.wgt_mainPage1, "") self.gridLayout_2.addWidget(self.wgt_main, 1, 0, 1, 1) + self.txt_log = QtWidgets.QTextEdit(self.centralwidget) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Maximum) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.txt_log.sizePolicy().hasHeightForWidth()) + self.txt_log.setSizePolicy(sizePolicy) + self.txt_log.setMaximumSize(QtCore.QSize(16777215, 100)) + self.txt_log.setAcceptDrops(False) + self.txt_log.setAutoFillBackground(False) + self.txt_log.setStyleSheet("background-color: rgb(0,0,0);") + self.txt_log.setTextInteractionFlags(QtCore.Qt.TextSelectableByMouse) + self.txt_log.setObjectName("txt_log") + self.gridLayout_2.addWidget(self.txt_log, 5, 0, 1, 1) self.horizontalLayout_3 = QtWidgets.QHBoxLayout() self.horizontalLayout_3.setObjectName("horizontalLayout_3") + self.label_4 = QtWidgets.QLabel(self.centralwidget) + font = QtGui.QFont() + font.setPointSize(11) + font.setBold(True) + font.setWeight(75) + self.label_4.setFont(font) + self.label_4.setAlignment(QtCore.Qt.AlignCenter) + self.label_4.setObjectName("label_4") + self.horizontalLayout_3.addWidget(self.label_4) spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout_3.addItem(spacerItem1) self.label_3 = QtWidgets.QLabel(self.centralwidget) @@ -207,16 +220,7 @@ class Ui_mainwin(object): self.horizontalLayout_3.addWidget(self.lbl_preset) spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout_3.addItem(spacerItem2) - self.gridLayout_2.addLayout(self.horizontalLayout_3, 0, 0, 1, 1) - self.textEdit = QtWidgets.QTextEdit(self.centralwidget) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Maximum) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.textEdit.sizePolicy().hasHeightForWidth()) - self.textEdit.setSizePolicy(sizePolicy) - self.textEdit.setMaximumSize(QtCore.QSize(16777215, 100)) - self.textEdit.setObjectName("textEdit") - self.gridLayout_2.addWidget(self.textEdit, 4, 0, 1, 1) + self.gridLayout_2.addLayout(self.horizontalLayout_3, 3, 0, 1, 1) mainwin.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(mainwin) self.menubar.setGeometry(QtCore.QRect(0, 0, 900, 26)) @@ -271,7 +275,6 @@ class Ui_mainwin(object): def retranslateUi(self, mainwin): _translate = QtCore.QCoreApplication.translate mainwin.setWindowTitle(_translate("mainwin", "bananaSPLIT")) - self.label_4.setText(_translate("mainwin", "Finestra dei messaggi")) self.btn_cartellasorg.setText(_translate("mainwin", "-> ")) self.btn_cartelladest.setText(_translate("mainwin", "-> ")) self.lbl_cartellasorg.setText(_translate("mainwin", "Cartella sorgente")) @@ -284,13 +287,14 @@ class Ui_mainwin(object): self.rad_fileOld.setText(_translate("mainwin", "Vecchia")) self.btn_avanti.setText(_translate("mainwin", "Avanti")) self.wgt_main.setTabText(self.wgt_main.indexOf(self.wgt_mainPage1), _translate("mainwin", "SelezionaFile")) - self.label_3.setText(_translate("mainwin", "Preset corrente: ")) - self.lbl_preset.setText(_translate("mainwin", "...")) - self.textEdit.setHtml(_translate("mainwin", "\n" + self.txt_log.setHtml(_translate("mainwin", "\n" "\n" -"


")) +"\n" +"


")) + self.label_4.setText(_translate("mainwin", "Finestra dei messaggi")) + self.label_3.setText(_translate("mainwin", "Preset corrente: ")) + self.lbl_preset.setText(_translate("mainwin", "...")) self.bar_file.setTitle(_translate("mainwin", "File")) self.menuOpzioni.setTitle(_translate("mainwin", "Opzioni")) self.toolBar.setWindowTitle(_translate("mainwin", "toolBar")) diff --git a/bananaSPLIT/UserInterface/mainwindow.ui b/bananaSPLIT/UserInterface/mainwindow.ui index ac131e9..d9e9067 100644 --- a/bananaSPLIT/UserInterface/mainwindow.ui +++ b/bananaSPLIT/UserInterface/mainwindow.ui @@ -9,8 +9,8 @@ 0 0 - 756 - 703 + 900 + 750 @@ -38,9 +38,19 @@ false + + QMainWindow::AllowTabbedDocks + - - + + + + + Qt::Horizontal + + + + @@ -196,7 +206,20 @@ - + + + + 0 + 0 + + + + + 0 + 200 + + + @@ -288,50 +311,120 @@ - - - - Qt::Horizontal - - - - - + + - + 0 0 - - - 0 - 50 - - 16777215 - 500 + 100 - - - - - - 0 - 0 - - - - qui ci va il log ma devo pensare a come farlo in modo non eccessivamente stupido - - - - + + false + + + false + + + background-color: rgb(0,0,0); + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:7.8pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"><br /></p></body></html> + + + Qt::TextSelectableByMouse + + + + + + + + 11 + 75 + true + + + + Finestra dei messaggi + + + Qt::AlignCenter + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 0 + 0 + + + + + 75 + true + + + + Preset corrente: + + + + + + + + 0 + 0 + + + + ... + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + @@ -339,7 +432,7 @@ 0 0 - 756 + 900 26 diff --git a/bananaSPLIT/conf/spiripacchio.json b/bananaSPLIT/conf/spiripacchio.json new file mode 100644 index 0000000..66a0d74 --- /dev/null +++ b/bananaSPLIT/conf/spiripacchio.json @@ -0,0 +1,70 @@ +{ + "version": "v1.2", + "paths": { + "lastUsed": "spiripacchio.json", + "configurationPath": "./conf/", + "INworkPath": "D:/Test", + "OUTworkPath": "C:/", + "fileList": [ + "config.txt", + "GUARDIAN.txt", + "interrupts.txt", + "tlsdebug.txt" + ] + }, + "docStruct": { + "fileVersNew": true, + "language": "English", + "languageIdx": 1, + "docSep": "\\s*Copyright [(0-9)]+", + "beginOfDocument": "\\s*Body", + "endOfDocument": "\\s*End of Document", + "dateFormat": "{month} {day:d}, {year:d}{}", + "outPrefix": "", + "outSuffix": "", + "outExt": ".txt", + "outDateType": "jpn", + "outNameFormat": "", + "outDate": true, + "outTitle": true, + "outNumber": true, + "numberPos": 1, + "datePos": 2, + "titlePos": 3, + "maxTitleLen": 16, + "outNameSep": "-", + "customSep": "=", + "dateFormats": { + "jpn": "{year:04d}{month:02d}{day:02d}", + "it": "{day:02d}{month:02d}{year:04d}", + "usa": "{month:02d}{year:04d}{day:02d}" + } + }, + "settings": { + "encoding": "ansi", + "monthPosition": 0, + "getNewsPaperName": true, + "nameNotFoundStr": "ND", + "includeTitle": true, + "removeDuplicates": true, + "showSkipped": false, + "showRemovedDuplicates": false, + "loadTXT": true, + "loadDOCX": false, + "removeOldFiles": true, + "saveSeparateFiles": true, + "saveBodyFile": true, + "saveBodyNumber": true, + "delLF": false, + "delWordBreak": true, + "delChars": [ + "'", + "@", + "#", + "$", + "%", + "^", + "&" + ] + } +} \ No newline at end of file diff --git a/bananaSPLIT/guimain.py b/bananaSPLIT/guimain.py index f1da96a..421a1ac 100644 --- a/bananaSPLIT/guimain.py +++ b/bananaSPLIT/guimain.py @@ -32,7 +32,8 @@ class bananaMain(PyQt5.QtWidgets.QMainWindow): self.conf.open() self.conf.use("defaults.json") self.conf.use(self.conf.getParam('paths', 'lastUsed')) - except: + except Exception as e: + print(e) sys.exit() # inizializzazione interfaccia @@ -69,6 +70,7 @@ class bananaMain(PyQt5.QtWidgets.QMainWindow): #connetti segnali delle sottointerfacce self.advopt.update.connect(self.fillAllInterfaces) + self.logger.sendLog.connect(self.appendLog) #riempi pagine di interfaccia self.fillAllInterfaces() @@ -120,7 +122,7 @@ class bananaMain(PyQt5.QtWidgets.QMainWindow): lf.setNameFilter("bananaCONF (*.json)") if lf.exec(): cf = str(lf.selectedFiles()[0].split('/')[-1]) - self.logger.debug("Scelto il File: {}".format(cf)) + self.logger.info("Apro la configurazione: {}".format(cf)) self.conf.open() self.conf.use(cf) self.logger.debug("Riempio tutte le tab") @@ -144,7 +146,7 @@ class bananaMain(PyQt5.QtWidgets.QMainWindow): self.conf.save(fName="defaults.json") self.conf.use(prev) ## - self.logger.debug("Scrivi il File: {}".format(rv)) + self.logger.debug("Scrivo la configurazione: {}".format(rv)) self.conf.save(fName=rv) pass @@ -163,7 +165,7 @@ class bananaMain(PyQt5.QtWidgets.QMainWindow): if rv is not "": self.conf.setParam(keys=('paths','INworkPath',), val=rv) self.ui.lbl_sorg.setText(rv) - self.logger.debug("Selezionata Cartella Sorgente: {}".format(rv)) + self.logger.info("Selezionata Cartella Sorgente: {}".format(rv)) self.fillFileList() pass @@ -172,7 +174,7 @@ class bananaMain(PyQt5.QtWidgets.QMainWindow): if rv is not "": self.conf.setParam(keys=('paths','OUTworkPath',), val=rv) self.ui.lbl_dest.setText(rv) - self.logger.debug("Selezionata Cartella Destinazione: {}".format(rv)) + self.logger.info("Selezionata Cartella Destinazione: {}".format(rv)) pass def openFileDialog(self, name, path): @@ -183,6 +185,9 @@ class bananaMain(PyQt5.QtWidgets.QMainWindow): self.conf.setParam(('docStruct','fileVersNew'), self.ui.rad_fileNew.isChecked()) self.titolo.applica() self.selezout.applica() + + def appendLog(self, msg): + self.ui.txt_log.append(msg) ############################################################# ####################### INTERFACES ########################## @@ -348,13 +353,13 @@ class bananaTitoloAvanzate(PyQt5.QtWidgets.QWidget): pass def returnOk(self): - self.log.debug("Avanzate Titolo Accettate") + self.log.info("Avanzate Titolo Accettate") self.applica() self.hide() pass def returnKo(self): - self.log.debug("Avanzate Titolo Rifiutate") + self.log.info("Avanzate Titolo Rifiutate") self.hide() pass @@ -423,7 +428,7 @@ class bananaSelezOut(PyQt5.QtWidgets.QWidget): pass def applica(self): - self.log.info("Applico Impostazioni Uscita") + self.log.info("Applico Impostazioni File Uscita") self.conf.setParam(('docStruct', 'language'), self.selezoutui.cmb_lingua.currentText()) self.conf.setParam(('docStruct', 'languageIdx'), self.selezoutui.cmb_lingua.currentIndex()) self.conf.setParam(('settings', 'saveBodyFile'), self.selezoutui.rad_mainbody.isChecked() @@ -519,14 +524,14 @@ class bananaAdvOpt(PyQt5.QtWidgets.QWidget): self.errmsg.setWindowIcon(icon) try: self.conf.loads(self.advoptui.txt_confFile.toPlainText()) - self.log.info("AdvancedOptions: Parametri inseriti validi, configurazione accettata") + self.log.info("Parametri inseriti validi, configurazione accettata") self.errmsg.setIcon(QMessageBox.Information) self.errmsg.setText("Parametri inseriti validi, configurazione accettata") self.errmsg.show() self.update.emit() self.hide() except Exception as e: - self.log.error(f"AdvancedOptions: Parametri inseliti non validi: {e}") + self.log.error(f"Errore nei parametri! {e}") self.errmsg.setIcon(QMessageBox.Critical) self.errmsg.setText(f"Errore nei parametri!\n{e}") self.errmsg.show() diff --git a/bananaSPLIT/libbananasplit/libfancylogger.py b/bananaSPLIT/libbananasplit/libfancylogger.py index a2c2b56..76d1b1a 100644 --- a/bananaSPLIT/libbananasplit/libfancylogger.py +++ b/bananaSPLIT/libbananasplit/libfancylogger.py @@ -7,12 +7,16 @@ import sys import json import logging import colorama +from PyQt5.QtCore import QObject, pyqtSignal -class fancyLogger(object): +class fancyLogger(QObject): ''' Colorizza il logger di python, per un' esperienza stile willy wonka ''' + sendLog = pyqtSignal(str) + def __init__(self, filepath=None, name="Logger", consoleLog=True, fileLog=False): + QObject.__init__(self) try: with open(filepath, 'r') as fp: settings = json.load(fp) @@ -54,30 +58,35 @@ class fancyLogger(object): print(self.LBLUE, end='') self.LOGGER.debug(msg) print(self.RST, end='') + self.sendLog.emit(f"DEBUG - {msg}
") pass def info(self, msg="Undefined Info"): print(self.LGREEN, end='') self.LOGGER.info(msg) print(self.RST, end='') + self.sendLog.emit(f"INFO - {msg}
") pass def warn(self, msg="Undefined Warning"): print(self.LYELLOW, end='') self.LOGGER.warning(msg) print(self.RST, end='') + self.sendLog.emit(f"WARNING - {msg}
") pass def error(self, msg="Undefined Error"): print(self.LRED, end='') self.LOGGER.error(msg) print(self.RST, end='') + self.sendLog.emit(f"ERROR - {msg}
") pass def critical(self, msg="Undefined Critical"): print(self.RED, end='') self.LOGGER.critical(msg) print(self.RST, end='') + self.sendLog.emit(f"CRITICAL - {msg}
") pass def testColors(self):