299 lines
11 KiB
Python
299 lines
11 KiB
Python
'''
|
|
Created on 2 nov 2019
|
|
|
|
@author: Emanuele Trabattoni
|
|
TODO LIST
|
|
1- Aggiungere le icone ai tasti (giulia)
|
|
|
|
'''
|
|
import sys
|
|
import PyQt5.QtWidgets
|
|
|
|
from mainwindow import Ui_mainwin
|
|
from selezout import Ui_selezout
|
|
from titolow import Ui_titolo
|
|
from avanzatetitolo3 import Ui_advtitolo3 as Ui_advtitolo
|
|
from opzioniavanzate import Ui_advoption
|
|
|
|
from libfancylogger import fancyLogger
|
|
from libconfload import bananaCONF
|
|
from libsplit import bananaSPLITTER
|
|
|
|
from PyQt5.QtCore import QDir,pyqtSignal
|
|
from slugify import slugify
|
|
|
|
class bananaMain(PyQt5.QtWidgets.QMainWindow):
|
|
def __init__(self):
|
|
PyQt5.QtWidgets.QMainWindow.__init__(self)
|
|
try:
|
|
self.logger = fancyLogger(filepath=r"./libbananasplit/loggerconf.json",fileLog=False)
|
|
self.conf = bananaCONF(workdir=r"./libbananasplit", logger=self.logger)
|
|
self.conf.open()
|
|
self.conf.use("defaults.json")
|
|
self.conf.use(self.conf.getParam('paths', 'lastUsed'))
|
|
except:
|
|
sys.exit()
|
|
|
|
# inizializzazione interfaccia
|
|
self.ui = Ui_mainwin()
|
|
self.ui.setupUi(self)
|
|
self.titolo = bananaTitolo(self.conf, self.logger)
|
|
self.titoloav = bananaTitoloAvanzate(self.conf, self.logger)
|
|
self.selezout = bananaSelezOut(self.conf, self.logger)
|
|
self.advopt = bananaAdvOpt(self.conf, self.logger)
|
|
|
|
#popola le tab con le finestre giuste
|
|
self.ui.wgt_main.addTab(self.titolo, "Titolo")
|
|
self.ui.wgt_main.addTab(self.selezout, "SelezioneOutput")
|
|
|
|
# connetti bottoni avanti
|
|
self.ui.btn_avanti.clicked.connect(self.nextTab)
|
|
self.titolo.titoloui.btn_avanti.clicked.connect(self.nextTab)
|
|
self.selezout.selezoutui.btn_avanti.clicked.connect(self.nextTab)
|
|
|
|
#connetti bottoni indietro
|
|
self.titolo.titoloui.btn_indietro.clicked.connect(self.prevTab)
|
|
self.selezout.selezoutui.btn_indietro.clicked.connect(self.prevTab)
|
|
|
|
#connetti bottoni selezione cartelle
|
|
self.ui.btn_cartellasorg.clicked.connect(self.selezSorg)
|
|
self.ui.btn_cartelladest.clicked.connect(self.selezDest)
|
|
|
|
#connetti action tab
|
|
self.ui.actionLingua.triggered.connect(self.openLanguage)
|
|
self.ui.actionAvanzate.triggered.connect(self.openAdvOpt)
|
|
self.ui.actionCarica_Preset.triggered.connect(self.openLoadPreset)
|
|
self.ui.actionSalva_Preset.triggered.connect(self.openSavePreset)
|
|
|
|
#riempi pagine di interfaccia
|
|
self.fillInterface()
|
|
pass
|
|
|
|
def fillInterface(self):
|
|
#pagina principale
|
|
try:
|
|
self.ui.lbl_sorg.setText(self.conf.getParam('paths','INworkPath'))
|
|
self.ui.lbl_dest.setText(self.conf.getParam('paths','OUTworkPath'))
|
|
except:
|
|
self.log.critical("Configurazione non accettata")
|
|
|
|
def nextTab(self):
|
|
self.ui.wgt_main.setCurrentIndex(self.ui.wgt_main.currentIndex()+1)
|
|
self.logger.debug("Prossima Tab")
|
|
pass
|
|
|
|
def prevTab(self):
|
|
self.ui.wgt_main.setCurrentIndex(self.ui.wgt_main.currentIndex()-1)
|
|
self.logger.debug("Tab Precedente")
|
|
pass
|
|
|
|
def openLoadPreset(self):
|
|
self.logger.debug("Apri Carica Preset")
|
|
lf = PyQt5.QtWidgets.QFileDialog(self,"Carica Preset",self.conf.getParam('paths', 'configurationPath'))
|
|
lf.setAcceptMode(PyQt5.QtWidgets.QFileDialog.AcceptOpen)
|
|
lf.setFileMode(PyQt5.QtWidgets.QFileDialog.ExistingFile)
|
|
lf.setNameFilter("bananaCONF (*.json)")
|
|
if lf.exec():
|
|
self.logger.debug("Scelto il File: {}".format(next(lf.selectedFiles())))
|
|
pass
|
|
|
|
def openSavePreset(self):
|
|
self.logger.debug("Apri Salva Preset")
|
|
sf = PyQt5.QtWidgets.QFileDialog(self,"Salva Preset",self.conf.getParam('paths', 'configurationPath'))
|
|
sf.setAcceptMode(PyQt5.QtWidgets.QFileDialog.AcceptSave)
|
|
sf.setNameFilter("bananaCONF (*.json)")
|
|
if sf.exec():
|
|
rv=str(sf.selectedFiles()[0])
|
|
self.logger.debug("Scrivi il File: {}".format(rv))
|
|
self.conf.save(fName=rv)
|
|
pass
|
|
|
|
def openAdvOpt(self):
|
|
self.logger.debug("Apri Opzioni Avanzate")
|
|
pass
|
|
|
|
def openLanguage(self):
|
|
self.logger.debug("Apri Opzioni Lingua")
|
|
pass
|
|
|
|
def selezSorg(self):
|
|
rv = PyQt5.QtWidgets.QFileDialog.getExistingDirectory(self,"Seleziona Cartella Sorgente",self.conf.getParam('paths','INworkPath'))
|
|
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))
|
|
fl = QDir(rv).entryList()
|
|
for f in fl:
|
|
self.ui.lst_files.addItem(PyQt5.QtWidgets.QListWidgetItem(f))
|
|
pass
|
|
|
|
def selezDest(self):
|
|
rv = PyQt5.QtWidgets.QFileDialog.getExistingDirectory(self,"Seleziona Cartella Destinazione",self.conf.getParam('paths','OUTworkPath'))
|
|
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))
|
|
pass
|
|
|
|
def openFileDialog(self, name, path):
|
|
self.log.debug("Apro in directory: {}".format(path))
|
|
return
|
|
|
|
#############################################################
|
|
####################### INTERFACES ##########################
|
|
#############################################################
|
|
|
|
class bananaTitolo(PyQt5.QtWidgets.QWidget):
|
|
def __init__(self, confloader=None, logger=None):
|
|
PyQt5.QtWidgets.QWidget.__init__(self)
|
|
self.titoloui = Ui_titolo()
|
|
self.titoloui.setupUi(self)
|
|
self.conf = confloader
|
|
self.log = logger
|
|
if self.conf is not None:
|
|
self.titoloui.btn_avanzate.clicked.connect(self.spawnAvanzate)
|
|
self.titoloui.btn_avanti.clicked.connect(self.applica)
|
|
self.advtitolo = bananaTitoloAvanzate(self.conf)
|
|
self.advtitolo.okSig.connect(self.avanzateOk)
|
|
self.advtitolo.koSig.connect(self.avanzateKo)
|
|
pass
|
|
|
|
def spawnAvanzate(self):
|
|
self.log.debug("Mostro la finestra avanzate titolo")
|
|
self.advtitolo.show()
|
|
pass
|
|
|
|
def avanzateOk(self):
|
|
self.log.debug("Avanzate Accettate")
|
|
pass
|
|
|
|
def avanzateKo(self):
|
|
self.log.debug("Avanzate Rifiutate")
|
|
pass
|
|
|
|
def applica(self):
|
|
self.log.info("Applico impostazioni Titolo")
|
|
pass
|
|
|
|
class bananaTitoloAvanzate(PyQt5.QtWidgets.QWidget):
|
|
okSig = pyqtSignal(bool, name="OK")
|
|
koSig = pyqtSignal(bool, name="KO")
|
|
|
|
def __init__(self, confloader=None, logger=None):
|
|
PyQt5.QtWidgets.QWidget.__init__(self)
|
|
self.titoloavui = Ui_advtitolo()
|
|
self.titoloavui.setupUi(self)
|
|
self.titoloavui.btn_OK.clicked.connect(self.returnOk)
|
|
self.titoloavui.btn_annulla.clicked.connect(self.returnKo)
|
|
|
|
self.titoloavui.rad_dataprimo.clicked.connect(self.gestisciBottoni)
|
|
self.titoloavui.rad_datasecondo.clicked.connect(self.gestisciBottoni)
|
|
self.titoloavui.rad_dataterzo.clicked.connect(self.gestisciBottoni)
|
|
self.titoloavui.rad_numeroprimo.clicked.connect(self.gestisciBottoni)
|
|
self.titoloavui.rad_numerosecondo.clicked.connect(self.gestisciBottoni)
|
|
self.titoloavui.rad_numeroterzo.clicked.connect(self.gestisciBottoni)
|
|
self.titoloavui.rad_titoloprimo.clicked.connect(self.gestisciBottoni)
|
|
self.titoloavui.rad_titolosecondo.clicked.connect(self.gestisciBottoni)
|
|
self.titoloavui.rad_titoloterzo.clicked.connect(self.gestisciBottoni)
|
|
self.conf = confloader
|
|
self.log = logger
|
|
pass
|
|
|
|
def gestisciBottoni(self):
|
|
#PRIMO
|
|
if self.titoloavui.rad_numeroprimo.isChecked():
|
|
self.titoloavui.rad_dataprimo.setChecked(False)
|
|
self.titoloavui.rad_titoloprimo.setChecked(False)
|
|
self.titoloavui.rad_numerosecondo.setChecked(False)
|
|
self.titoloavui.rad_numeroterzo.setChecked(False)
|
|
if self.titoloavui.rad_dataprimo.isChecked():
|
|
self.titoloavui.rad_numeroprimo.setChecked(False)
|
|
self.titoloavui.rad_titoloprimo.setChecked(False)
|
|
self.titoloavui.rad_datasecondo.setChecked(False)
|
|
self.titoloavui.rad_dataterzo.setChecked(False)
|
|
if self.titoloavui.rad_titoloprimo.isChecked():
|
|
self.titoloavui.rad_numeroprimo.setChecked(False)
|
|
self.titoloavui.rad_dataprimo.setChecked(False)
|
|
self.titoloavui.rad_titolosecondo.setChecked(False)
|
|
self.titoloavui.rad_titoloterzo.setChecked(False)
|
|
#secondo
|
|
if self.titoloavui.rad_numerosecondo.isChecked():
|
|
self.titoloavui.rad_datasecondo.setChecked(False)
|
|
self.titoloavui.rad_titolosecondo.setChecked(False)
|
|
self.titoloavui.rad_numeroprimo.setChecked(False)
|
|
self.titoloavui.rad_numeroterzo.setChecked(False)
|
|
if self.titoloavui.rad_datasecondo.isChecked():
|
|
self.titoloavui.rad_numerosecondo.setChecked(False)
|
|
self.titoloavui.rad_titolosecondo.setChecked(False)
|
|
self.titoloavui.rad_dataprimo.setChecked(False)
|
|
self.titoloavui.rad_dataterzo.setChecked(False)
|
|
if self.titoloavui.rad_titolosecondo.isChecked():
|
|
self.titoloavui.rad_numerosecondo.setChecked(False)
|
|
self.titoloavui.rad_datasecondo.setChecked(False)
|
|
self.titoloavui.rad_titoloprimo.setChecked(False)
|
|
self.titoloavui.rad_titoloterzo.setChecked(False)
|
|
#terzo
|
|
if self.titoloavui.rad_numeroterzo.isChecked():
|
|
self.titoloavui.rad_dataterzo.setChecked(False)
|
|
self.titoloavui.rad_titoloterzo.setChecked(False)
|
|
self.titoloavui.rad_numeroprimo.setChecked(False)
|
|
self.titoloavui.rad_numerosecondo.setChecked(False)
|
|
if self.titoloavui.rad_dataterzo.isChecked():
|
|
self.titoloavui.rad_numeroterzo.setChecked(False)
|
|
self.titoloavui.rad_titoloterzo.setChecked(False)
|
|
self.titoloavui.rad_dataprimo.setChecked(False)
|
|
self.titoloavui.rad_datasecondo.setChecked(False)
|
|
if self.titoloavui.rad_titoloterzo.isChecked():
|
|
self.titoloavui.rad_numeroterzo.setChecked(False)
|
|
self.titoloavui.rad_dataterzo.setChecked(False)
|
|
self.titoloavui.rad_titoloprimo.setChecked(False)
|
|
self.titoloavui.rad_titolosecondo.setChecked(False)
|
|
pass
|
|
|
|
def returnOk(self):
|
|
self.okSig.emit(True)
|
|
self.hide()
|
|
pass
|
|
|
|
def returnKo(self):
|
|
self.koSig.emit(False)
|
|
self.hide()
|
|
pass
|
|
|
|
|
|
class bananaSelezOut(PyQt5.QtWidgets.QWidget):
|
|
def __init__(self, confloader=None, logger=None):
|
|
PyQt5.QtWidgets.QWidget.__init__(self)
|
|
self.selezoutui = Ui_selezout()
|
|
self.selezoutui.setupUi(self)
|
|
self.conf = confloader
|
|
self.log = logger
|
|
pass
|
|
|
|
class bananaAdvOpt(PyQt5.QtWidgets.QWidget):
|
|
def __init__(self, confloader=None, logger=None):
|
|
PyQt5.QtWidgets.QWidget.__init__(self)
|
|
self.advoptui = Ui_advoption()
|
|
self.advoptui.setupUi(self)
|
|
self.conf = confloader
|
|
self.log = logger
|
|
pass
|
|
|
|
class bananaSplitterInterface(PyQt5.QtWidgets.QWidget):
|
|
def __init__(self, confloader=None, logger=None):
|
|
PyQt5.QtWidgets.QWidget.__init__(self)
|
|
pass
|
|
|
|
#############################################################
|
|
####################### MAIN ################################
|
|
#############################################################
|
|
|
|
if __name__ == '__main__':
|
|
app = PyQt5.QtWidgets.QApplication(sys.argv)
|
|
window = bananaMain()
|
|
window.resize(window.sizeHint().width(), window.size().height())
|
|
window.show()
|
|
rv = app.exec()
|
|
print("ExitCode: {}".format(rv))
|
|
sys.exit(rv)
|
|
pass |