252 Commits

Author SHA1 Message Date
Obbart e43a757d8c Rilascio v1.41_Win64 2020-04-21 16:56:02 +02:00
Obbart c7028163fb aggiornati spec per build 2020-04-21 16:28:27 +02:00
Obbart a6a2fde875 correzioni ad about per far vedere la versione 2020-04-21 16:25:59 +02:00
Obbart 6332db4b1f Rilascio Versione 1.41 2020-04-21 16:16:35 +02:00
Obbart 535bb9d4e9 dovrebbe essere pronta la versione con le traduzioni funzionanti 2020-04-21 16:14:30 +02:00
Obbart ce5495fce4 generati tutti i file di traduzione 2020-04-21 15:51:38 +02:00
Obbart 9d3f5c831c ricostruite le traduzioni python 2020-04-21 15:49:02 +02:00
Obbart 265d2ab3b4 ricompilate interfacce e risorse 2020-04-21 15:29:33 +02:00
Obbart f7b77db942 corretto errore per cui non importava tutte le traduzioni 2020-04-21 15:29:15 +02:00
Obbart ac168d1e10 ricostruite traduzioni 2020-04-13 20:15:56 +02:00
Obbart 878f526fde qualquadra ancora non cosa, risolvibile 2020-04-13 20:15:43 +02:00
Obbart 4351889aae integrazione con traduzione 2020-04-13 20:00:05 +02:00
Obbart 38461fbe33 rilasciate traduzioni 2020-04-13 18:29:50 +02:00
Giulia f1b4fa0ab3 Sistemato pulsante avanzate titolo come da conversazione wa 2020-04-13 16:47:59 +02:00
Giulia b08b7912ef Modificato leggermente sezione "about" in italiano (da decidere insieme
se va bene)
2020-04-13 16:47:38 +02:00
Giulia 314a5de4dd Sistemato traduzioni su indicazioni trabbo (gruppo wa) 2020-04-13 16:46:56 +02:00
Giulia 1c7e3dd29b Rivisto traduzioni e sistemato qualche typo 2020-04-13 15:53:46 +02:00
Obbart 3643778d53 generati fil qm delle prime traduzioni 2020-04-10 17:38:43 +02:00
Giulia fbeeba2685 Fatto prime traduzioni, ci sono alcuni punti da rivedere 2020-04-10 16:12:12 +02:00
Obbart d0196ff10c levata roba inutile 2020-04-10 12:22:42 +02:00
Obbart b35a471b75 aggiornati script anche per tradurre messaggi python 2020-04-10 12:19:34 +02:00
Obbart 525b0b60ae script per traduzione interfacce + generati file traduzione 2020-04-10 12:00:46 +02:00
Obbart 05fdd158c9 cambiato script compilazine risorse 2020-04-10 11:23:48 +02:00
Obbart 4df965745b aggiunta cartella script 2020-04-10 11:13:52 +02:00
Obbart 96684996bc tr anche sui fle di libreria 2020-04-09 14:23:08 +02:00
Obbart 606571de2c tr su tutto guimain 2020-04-09 14:11:22 +02:00
Obbart 518b1441e8 inizio lavoro per traduzione interfacce e messaggi di debug
cosa lunghissima
2020-04-07 15:42:51 +02:00
Obbart 9eab141909 modifiche compilatore interfaccia 2020-04-07 15:05:45 +02:00
Obbart 01e16f62db ricostruito file risorse e ricompilate interfacce 2020-04-07 15:00:01 +02:00
Obbart 2444de7816 nuova riorganizzazione file 2020-04-07 14:51:03 +02:00
Obbart cbd4432596 primo tentativo di traduzione 2020-04-07 14:47:43 +02:00
Obbart 40df527f3a riorganizzazione dei file 2020-04-07 14:47:29 +02:00
Obbart 0977d72506 aggiunte icone e finestra about, testo da integrare 2020-04-07 12:46:16 +02:00
emanuele 223e7cd9e1 rilascio versione 1.3b Linux 2020-04-03 10:56:43 +02:00
emanuele 3352b47dc7 aggiornato gitignore 2020-04-03 10:54:16 +02:00
Obbart 38c12a27fa rilascio versione 1.3b Windows 2020-04-03 10:44:14 +02:00
Obbart ca32e12f43 aggiornato pydevproject 2020-04-03 10:40:56 +02:00
Obbart f47282bb29 corretto problema versione file e ricompilate interfacce 2020-04-03 10:40:18 +02:00
Obbart b83e978303 corrette ancora configurazione 2020-04-02 18:56:59 +02:00
Obbart a43d6c172f corretto file configurazione linux 2020-04-02 18:54:41 +02:00
emanuele 94b7ab59d5 buildata versione 1.3 per linux 2020-04-02 18:37:20 +02:00
emanuele 1cd4490275 pulite cartelle tuxbuild 2020-04-02 18:34:49 +02:00
Obbart 18597dfbbf Compilata versione 1.3 pronta alla release 2020-04-02 18:28:55 +02:00
Obbart 7ffce8cdfd Merge branch 'gui-devel' of https://git.etss.it/12Parsec/bananaSPLIT.git into gui-devel 2020-04-02 18:26:29 +02:00
Obbart 7237a8be40 versione definitiva interfaccia, pronta per buildare i pacchetti 2020-04-02 18:26:06 +02:00
emanuele b3cc5689aa ricompilato eseguible linux 2020-04-02 17:38:33 +02:00
Obbart 0e1697d98b ridotto ancora 2020-04-02 17:34:53 +02:00
Obbart 6d6e3aa7c5 provo a ridurre dimensioni verticali interfaccia 2020-04-02 17:32:13 +02:00
emanuele 6314efb5f5 corretto linux builfile 2020-04-02 17:30:45 +02:00
emanuele 4884f2659e Merge branch 'gui-devel' of https://git.etss.it/12Parsec/bananaSPLIT.git into gui-devel 2020-04-02 16:51:14 +02:00
emanuele 029860f2f2 ricompilato eseguibile linux 2020-04-02 16:51:00 +02:00
Obbart 140e24edce ricompilato .exe 2020-04-02 15:45:43 +02:00
Obbart 6eed7b25df eliminata icona sbagliata 2020-04-02 15:43:57 +02:00
emanuele e000b438ec corretto path di uscita 2020-04-02 15:40:40 +02:00
Obbart 200565e4c7 non va bene tenere nella stessa cartella le build win e linux mannaggina 2020-04-02 15:17:50 +02:00
emanuele e994e3850c buildfiles per linux 2020-04-02 15:11:03 +02:00
Obbart e1ac0f05a0 cosine 2020-04-02 14:39:45 +02:00
Obbart 7eb7c0f4a4 aggiunti i file buildati come exe unico 2020-04-01 16:10:18 +02:00
Obbart 45cb777024 i build tools funzionano! 2020-04-01 16:08:15 +02:00
Obbart c149d97e8b corretti livelli debug 2020-04-01 14:56:12 +02:00
Obbart fbf8719591 spaziate giuste le cose 2020-04-01 14:52:36 +02:00
Obbart 44f358a08b finestra dei messaggi attiva con il log 2020-04-01 14:49:44 +02:00
Obbart ca21aa3d44 cose 2020-04-01 13:15:31 +02:00
Obbart 31accbd0b8 correzioni interfaccia 2020-04-01 12:27:07 +02:00
Obbart d2c77e4da3 elimate configurazioni farlocche 2020-04-01 12:13:23 +02:00
Obbart 00ed797b24 ricompilate interfacce titolo 2020-04-01 12:07:15 +02:00
Obbart 186ce10a3e opzioni avanzate globali funzionanti 2020-04-01 12:06:58 +02:00
Obbart 187df248dd integrate la finestra opzioni avanzate 2020-03-31 12:48:00 +02:00
Obbart 0cf019be47 sostituita finestra opzioni avanzate 2020-03-31 12:36:40 +02:00
Obbart cbc097a4d2 marcata release 1.2 2020-03-31 12:28:51 +02:00
Obbart 2f95c01a78 ricompilate interfacce 2020-03-31 12:27:19 +02:00
Obbart 8ace2fb17d tutte le finestre hanno le icone al loro posto 2020-03-31 12:27:06 +02:00
Obbart 5fad4be476 aggiunti file di risorse e icone 2020-03-31 11:54:12 +02:00
Obbart 14590b511f modifica file configurazione default 2020-03-31 11:53:24 +02:00
Obbart 038b838c04 aggiornato gitignore 2020-03-31 11:53:12 +02:00
Obbart 07641d702c prima versione funzionante con i file nuovi
corretto errore unicode, rimosso body dal contenuto del file, potrebbe
rimanere il problema della chiave 'year'
2020-03-30 18:12:53 +02:00
Obbart 65bb3a925d aggiornato .gitignore per escludere build 2020-03-30 17:30:08 +02:00
Obbart 174a8f7e9c errore unicode 2020-03-30 17:25:12 +02:00
Obbart 3978569e35 prima versione funzionante con il nuovo tipo di file!! yuppi! 2020-03-30 16:15:59 +02:00
Obbart 955ac56e34 porca mucca! era solo una lettera accentata nel commento di python che
mandava in crisi l'interprete!!!!
2020-03-30 15:08:19 +02:00
Obbart 6d43c564b8 non riesco a provare le modifiche, il debugger di python mi prende per
il culo
2020-03-30 14:52:09 +02:00
Obbart 989aa755dd ricompilate interfacce 2020-03-30 13:17:08 +02:00
Obbart 5725c14b83 selezione della versione del file, filtraggio tipo per txt 2020-03-30 13:16:56 +02:00
Obbart 83f3a1f629 prima della prima prova della nuova versione 2020-03-30 13:01:32 +02:00
Obbart 33fd392725 prima della prima prova per la nuova versione 2020-03-30 13:01:12 +02:00
Obbart af7e783f35 prima versione per parsare il nuovo file 2020-03-30 12:39:03 +02:00
Obbart 9cc01bd911 aggiunto convertitore di docx 2020-03-30 12:25:14 +02:00
Obbart 3e9088389b piccola modifica interfaccia 2020-03-27 16:47:33 +01:00
Obbart 397c631c2a cosine 2020-03-27 16:47:17 +01:00
Obbart 0093026d49 funziona con i runnable che non sono dei veri thread ma vanno bene lo
stesso


unico problema e' che non si possono inviare i segnali dai runnable, ci
devo guardare
2020-03-25 17:42:21 +01:00
Obbart bd6b6421ec funziona senza os.chdir 2020-03-25 16:35:33 +01:00
Obbart 232108a6f4 forse tolti tutti i os.chdir 2020-03-25 16:28:07 +01:00
Obbart a2400ccdbc continua a funzionare ma solo con un thread per volta
devo togliere os.chdir e usare i percorsi assoluti, altrimenti si
confonde perche' cambia la dir globalmente
2020-03-25 16:20:02 +01:00
Obbart d9bea99092 FUNZIONAAAAAAAAAA!!!!! 2020-03-25 15:18:51 +01:00
Obbart d06cb0c7c4 cose 2020-03-25 12:30:15 +01:00
Obbart 8f1a67c608 fixati bug minori
pronto per il test.. ma dopo pranzo
2020-03-25 12:30:02 +01:00
Obbart 61aac1e364 continua la costruzione per la chiamata dei thread 2020-03-25 12:06:55 +01:00
Obbart f65fa21400 rinominata variabile 2020-03-25 12:03:55 +01:00
Obbart 4351e10984 correzione dello splitter per nuovo file di configurazione 2020-03-25 11:08:16 +01:00
Obbart 62f9dbe598 aggiunta costruzione della configurazione per splitter 2020-03-25 11:05:38 +01:00
Obbart b596f37cc3 cosa in prepareazione a integrazione dello splitter 2020-03-23 16:28:25 +01:00
Obbart 6013eaab38 splitter e' diventato un QThread per mandare messaggi all'esterno 2020-03-23 11:29:40 +01:00
Obbart f0c012bbf0 riempimento e salvataggio interfaccia selezione uscita 2020-03-23 10:39:54 +01:00
Obbart dbeb119c65 corretto il buggone di titolo avanzate
non salvava le impostazioni perche' inizializzavo due volte la finestra
delle avanzate e venivano prese le impostazioni solo di quella che non
veniva usata
2020-03-23 10:09:14 +01:00
Obbart 09f86c94be permane il bug per cui dalle avanzate titolo non posso salvare
potrebbe essere il fatto che passa la classe di configurazione non per
puntatore ma per copia
2020-03-08 16:10:43 +01:00
Obbart 3f3875faf3 sistemazioni interfaccia, compilazione lista dei file automatica 2020-03-08 15:36:27 +01:00
Obbart 40b9978933 fixate cose 2020-03-08 15:25:23 +01:00
Obbart 0047f766bf self.conf chiamato senza usare c=self.conf, provoca comportamenti strani 2020-03-08 15:13:45 +01:00
Obbart 986e50afdb ricompilato interfacce di nuovo 2020-03-08 15:01:51 +01:00
Obbart 2b646befac ricompilata interfaccia outfile 2020-03-08 14:57:23 +01:00
Obbart 18959b4087 rimosse vecchie configurazioni 2020-03-08 14:33:11 +01:00
Obbart 6e6f91f50a aggiornato gitignore
esclude i file di configurazione di test dai commit
2020-03-08 14:24:53 +01:00
Obbart 9ec74ff4bd cose cambiate in interfaccia e main 2020-03-08 14:23:33 +01:00
Obbart 37cf77c160 eliminati file configurazone di test 2020-03-08 14:23:15 +01:00
Obbart 9c04b5d943 spostati i file di configurazione, da fare la gestione finestra di
output per scegliere la lingua
2020-03-03 17:41:28 +01:00
Obbart 25747c0a94 risolto bug preset, forse 2020-03-03 17:29:44 +01:00
Obbart 6c03df4f67 quasi fixato bug del salvapreset 2020-03-03 17:22:58 +01:00
Obbart 05b794029c cose con i file di configurazione, non funziona bene la scrittura 2020-03-02 19:17:47 +01:00
Obbart dcb5f631b0 funzzioni fill interface per ricaricare quando si apre un preset 2020-03-02 18:56:53 +01:00
Obbart e8c7accf55 interfacce aggiornate e ricompilate 2020-02-29 18:12:01 +01:00
Obbart 41ee3c3094 riempi interfaccia da file parte seconda 2020-02-29 18:11:45 +01:00
Obbart 67aaf33db0 caricameto defaults da inerfaccia, parte prima 2020-02-29 16:35:02 +01:00
Giulia 95594674f3 rimoddo asdf 2020-01-25 19:10:45 +01:00
Giulia 869a308bad modifica ai check delle impostazioni avanzate e ricompilata interfaccia 2020-01-25 19:02:53 +01:00
Giulia 89de6124c8 fottiti 2020-01-25 18:17:52 +01:00
Giulia 566853c61a aggiornato gitignore del codice 2020-01-25 18:17:43 +01:00
Giulia 50543f4076 aggiornato gitignore 2020-01-25 18:16:47 +01:00
Giulia 93d598fef8 fixato crash su modifica cartella destinazione 2020-01-25 18:13:23 +01:00
Giulia 1d37cdd89d ricompilate interfacce con modifiche varie 2020-01-25 18:13:04 +01:00
Giulia f002301707 cambiati import librerie slugify 2020-01-25 17:42:45 +01:00
Obbart c14f2dc4c9 collegamenti tra finestra titolo e avanzate titolo, cambiamenti nel file
configurazione per memorizzare le scelete delle finestre in modo
semplice
2020-01-02 17:42:11 +01:00
Obbart 19615367ea ricompilate interafcce 2020-01-02 16:45:47 +01:00
Obbart 104f8e4f7b aggiunti prefisso e suffisso alle avanzatenome 2020-01-02 16:45:28 +01:00
Obbart 066ca83b7f aggiunto try per parametro non valido 2020-01-02 15:50:10 +01:00
Obbart ada142809c i file del commit prima.. (FACEPALM) 2019-12-18 22:14:06 +01:00
Obbart 5aed922e77 salvataggio della configurazione corrente sullo stesso o un altro file 2019-12-18 22:13:41 +01:00
Obbart 22f1e8c967 rinominati file configurazione 2019-12-18 21:29:48 +01:00
Obbart 00cb8059cb modificato file di configurazione, aggiunto uno separato per le parole
chiave della lingua specifica
2019-12-18 21:27:48 +01:00
Obbart c6b5d7d8a5 riempie i nomi cartelle sorgente e destinazione 2019-12-18 21:19:20 +01:00
Obbart 21f869ccd0 modifica selezione cartelle selezione sorgente e destinazione 2019-12-18 21:14:44 +01:00
Obbart b2d3a03da8 lettura e settaggio dei parametri in modo ricorsivo funzionante 2019-12-18 21:00:15 +01:00
Obbart 705a6ce85c seguono modifiche al main per test parametri nuovo file di
configurazione
2019-12-18 19:43:46 +01:00
Obbart 12501c4edc ripensamenti sui file di configurazione, il logger legge un file
separato
2019-12-18 19:35:24 +01:00
Obbart fd9434868f modificato il getParam ma non mi viene in mente un modo furbo per fare
il set, ricorsivita' sul dizionario?
2019-12-16 22:47:59 +01:00
Obbart fdfb7bf377 ricompilate interfacce (si,ancora) 2019-12-16 21:40:37 +01:00
Obbart 43f8568904 risistemato caricamento interfacce (si, ancora) 2019-12-16 21:40:21 +01:00
Obbart 8564bdd723 ricompilazione interfacce con alcuni cambiamenti ai nomi delle finestre 2019-12-16 21:28:15 +01:00
Obbart 3396ee0a07 sistemato il caricamento delle interfacce che servono 2019-12-16 21:27:49 +01:00
Obbart da6c84e87f prima integrazione nuove interfacce, non ho capito bene come collegarle
a quella principale
2019-12-15 22:27:47 +01:00
Obbart d25bf776ac mannaggia quanti file nuovi da compilare!
comunque compilato tutto a posto, il pasticcio dei commit si e' risolto
2019-12-14 17:20:49 +01:00
Obbart e0ce388da9 aggiornato .gitignore 2019-12-14 17:20:40 +01:00
Giulia 5bb6a12a06 ahahahahahah (Niccolò). Creato pagina opzioni avanzate per rendere
predefiniti tutti i valori. Bisognerebbe sistemare il layout, ma non
siamo molto buoni.
2019-12-14 15:56:29 +01:00
Giulia c3704ad6bd Versione 3 della finestra avanzate titolo (Giulia). Rimettiamo a te la
scelta.
2019-12-14 15:55:27 +01:00
Giulia cc16f00a80 Versione 2 della finestra avanzate titolo (Niccolò). 2019-12-14 15:54:50 +01:00
Giulia d724fcbfd6 Modificato nomi bottoni ok annulla. 2019-12-14 15:54:24 +01:00
Giulia 07777f2a11 Nominato i bottoni rad. 2019-12-14 15:54:04 +01:00
Giulia 7becc034ef Aggiunto opzione selezione lingua articoli. 2019-12-14 15:53:36 +01:00
Giulia 158a427658 Tolto opzione di rendere predefinite le cartelle (messe da un'altra
parte, vedi sotto). Aggiunto tendina opzioni avanzate.
2019-12-14 15:53:10 +01:00
Giulia a85c99b51e sistemato gitignore secondo tue indicazioni telefoniche. 2019-12-14 15:52:14 +01:00
Obbart 608886d706 primo commit dal merge, aggiunti i file di progetto altrimenti si
dimentica gli import
2019-12-13 16:34:00 +01:00
Obbart d2096976fb merge con il brance lib-devel 2019-12-13 16:20:34 +01:00
Obbart a6aeee5d89 modifiche interfaccia + dialoghi per selezione cartelle, pronto per il
merge
2019-12-13 16:11:38 +01:00
Obbart cf173843d2 prima del checkout di gui-devel 2019-12-13 15:31:15 +01:00
Obbart d8808ddf5b funziona la pulizia automatica delle cartelle prima del salvataggio,
credo sia pronto per il merge
2019-12-13 15:27:31 +01:00
Obbart b5ee32e924 primo svuotamento automatico della cartella di uscita 2019-12-13 14:39:45 +01:00
Obbart b69463a303 eliminato log inutile del numero file 2019-12-13 14:28:12 +01:00
Obbart 82710a73a3 corretta numerazione sequenziale dei file 2019-12-13 14:26:07 +01:00
Obbart 275101eed3 Il lancio di tanti thread concorrenti fa casino, il numero incrementale
del file non viene resettato per ogni thread (inspiegabile)
2019-12-13 12:34:02 +01:00
Obbart 3826c7d2d1 Ritorno a threading, il multiprocess vero per ora e' troppo difficile da
gestire dal punto di vista del logging
2019-12-13 12:18:46 +01:00
Obbart 377251b59f aggiornato gitignore 2019-12-05 23:10:00 +01:00
Obbart 428946e39a altre modifiche per uso del modulo multiprocessing, rimane il problema
del logging dai thread
2019-12-05 23:09:08 +01:00
Obbart c5662c8397 uso di multiprocessing al posto d threading per una concorrenza vera
serve? da decidere
2019-12-05 22:55:49 +01:00
Obbart e3307d8db5 correzioni procedura salvataggio file e cartelle 2019-12-05 20:26:50 +01:00
Obbart 01dd92e4da file separati vengono isolati in cartelle differenti 2019-12-02 20:12:00 +01:00
Obbart 8628c3dbfb risolti i problemi di parsign su file di esempio semplificato 2019-12-01 18:29:09 +01:00
Obbart d69a3d0628 semplificato file di test 2019-12-01 17:54:49 +01:00
Obbart b6000c49fd Il test lancia correttamente i moduli ma siamo tornati agli errori di
parsing, debug necessario...
2019-12-01 17:44:14 +01:00
Obbart 851dcf103d correzioni alla librerie 2019-12-01 17:17:48 +01:00
Obbart 4118ed82c3 aggiornate le configurazioni con path file di test 2019-12-01 17:17:37 +01:00
Obbart 435bb144ab aggiunti file di test 2019-12-01 17:17:16 +01:00
Obbart ccc06bc5f1 corretto un typo stupidissimo che mi ha fatto perdere un sacco di tempo 2019-12-01 17:04:55 +01:00
Obbart ef91f8d26a iniziano test librerie, modifiche file configurazione di test 2019-12-01 16:50:15 +01:00
Obbart fe75d99736 Inizia il testing della libreria 2019-12-01 16:21:23 +01:00
Obbart 86e5dcc135 correzioni finestra titolo 2019-12-01 16:10:26 +01:00
Obbart 6f96797190 genera interfaccia e passa le tab con avanti e indietro 2019-12-01 16:10:09 +01:00
Obbart a0ff77ff33 costruisce interfaccia + correzione nomi bottoni 2019-12-01 15:41:30 +01:00
Obbart 9425262e7a Prima generazione interfaccia con i moduli 2019-12-01 15:30:38 +01:00
Obbart 94f289a6e2 non risolve gli import di interfaccia 2019-12-01 14:52:43 +01:00
Obbart 1880d5bb7e modifiche a nomi e layout interfacce + ricompilazione 2019-12-01 14:43:40 +01:00
Obbart 8eedd2ac4b ricompilato con nuova destinazione 2019-12-01 14:28:01 +01:00
Obbart 9a7477a23e eliminate interfacce compilate con vecchia dir 2019-12-01 14:25:39 +01:00
Obbart 08240b63d8 modifiche allo script compilazione interfacce piu' cose gia' compilate
per i primi test
2019-11-24 18:45:59 +01:00
Obbart 2a0695f78c Aggiunto tool per la compilazione delle interfacce 2019-11-24 18:32:59 +01:00
Obbart 59f3e2d6b3 modifiche finestra main, ogni pagina diventa una tab 2019-11-24 16:47:15 +01:00
Obbart a4e550797c Aggiunta cartella TestFiles 2019-11-24 16:13:58 +01:00
Giulia da0eb61e2d inizio pagina avanzate per ordine nome file 2019-11-24 15:11:35 +01:00
Obbart 6e83ce559d Cambiamenti che non mi ricordo, mi hanno distratto nel mentre 2019-11-24 12:48:30 +01:00
Obbart 04a32c7bd1 weaponizzate le funzioni di salva file singolo e body 2019-11-24 12:32:23 +01:00
Obbart e6fb04a9e7 modifiche generiche 2019-11-23 15:11:44 +01:00
Obbart b53fb27a60 Porting del codice dal programma originale a libsplit
Poco Refactoring, il codice e' pressoche invariato e andra' sistemato in
futuro.
Predisposizione al multi-threading
2019-11-11 22:49:59 +01:00
Obbart ff9f85ad0b Merge branch 'gui-devel' of https://git.etss.it/12Parsec/bananaSPLIT.git into gui-devel 2019-11-10 20:03:45 +01:00
Obbart fd8ea3edc9 Corretto import interfaccia 2019-11-10 20:03:37 +01:00
Obbart 0bbb1947ee Prima scrittura libSPLIT 2019-11-10 20:01:47 +01:00
Obbart 7ca177f29a aggiunta getFiles 2019-11-10 19:50:48 +01:00
Obbart 1e8867182f Finalizzato caricamento file
aggiunta proprieta' in use per definire il file in uso attualmente,
modificabile a runtime per ogni file ingress
2019-11-10 19:49:23 +01:00
Niccolo 9e62197eba sistemato dettagli opzioni 2019-11-10 14:16:24 +01:00
Niccolo e3934c06d1 sistemato layout 2019-11-10 14:10:20 +01:00
Obbart a798f29b73 Prima versione gestore configurazioni 2019-11-10 12:49:49 +01:00
Giulia 16b4b307a9 Aggiunto scelta separatore parti nome file 2019-11-06 13:45:17 +01:00
Giulia 4d63c83278 Sistemato caratteri e diciture 2019-11-06 13:28:23 +01:00
Giulia 23bcc4de1e Finestra impostazione titolo 2019-11-03 10:41:21 +01:00
Giulia 207651bd5d Spostato pulsante avanti e opzioni 2019-11-03 10:01:39 +01:00
Obbart 59c41cc3ba Inizio scrittura confloader
integrazione del fancylogger e settings nel file di test
2019-11-02 19:53:27 +01:00
Obbart 07810fe569 Aggiunto nuovo main per lancio gui e versione compilata interfacce 2019-11-02 19:29:10 +01:00
Obbart f9551b34aa Aggiunto file spec a gitignore 2019-11-02 19:07:58 +01:00
Obbart 13b2d72be1 Modifiche interfaccia
Il tipo della finestra principale rimane mainWindow ma e' divisa in due
widget, quello sopra cambia a seconda del contesto mentre in quello
sotto rimane il log delle attivita' in corso
tutte le nuove viste che si vogliono aggiungere dovranno essere del tipo
QWidget
2019-11-02 19:05:49 +01:00
Obbart 18566dda2c modifiche varie 2019-11-02 18:43:20 +01:00
Obbart 59f11a2f8b Elimina i caratteri speciali dal file logger 2019-11-02 14:32:44 +01:00
Obbart dfcbef7ae4 FancyLogger funzionante e file di configurazione test 2019-11-02 14:29:48 +01:00
Obbart 0502d77c14 Primo commit della libsplit 2019-11-02 13:54:08 +01:00
Niccolo b7af353ab8 finestra selezione output limiti misure 2019-10-30 22:06:52 +01:00
Niccolo 3f5ef6c103 finestra selezione output base 2019-10-30 22:02:06 +01:00
Niccolo 21e7a29c33 Merge branch 'gui-devel' of https://git.etss.it/12Parsec/bananaSPLIT.git into gui-devel 2019-10-30 22:00:30 +01:00
Niccolo d01afc2ab3 finestra selezione output base 2019-10-30 21:58:52 +01:00
Obbart 9537530a34 Merge branch 'gui-devel' of https://git.etss.it/12Parsec/bananaSPLIT.git into gui-devel 2019-10-30 21:49:48 +01:00
Obbart c401518db5 eliminato confGiulia 2019-10-30 21:49:32 +01:00
Niccolo 22413c3fb2 Main window aggiornata 2019-10-30 21:42:42 +01:00
Niccolo bfbd0e8c79 ritorno alla normalità 2019-10-30 21:27:38 +01:00
Niccolo af880df5b3 test commit niccolo 2019-10-30 21:23:27 +01:00
Giulia 3624d21e90 Cartella con file configurazione su PC Giulia 2019-10-30 18:27:35 +01:00
Giulia 3c1aad543e Main window. Prima versione completa. 2019-10-30 18:23:39 +01:00
Giulia c5ee729683 Sistemato pulsanti cartelle 2019-10-30 18:09:41 +01:00
Obbart 56a509a5e6 Ricompilato versione 0.4b 2019-10-30 17:26:36 +01:00
Obbart 84a38d0cb3 fixata indentazione titolo, aggiunti file conf alla cartella di dist 2019-10-30 17:10:16 +01:00
Obbart 8ec7e5e835 spostata l'eliminazione dei vecchi file in un altro try 2019-10-30 16:59:05 +01:00
Obbart 4f05729782 spostati i file di config nella dir del progetto 2019-10-30 16:55:30 +01:00
Obbart d7321a5041 riaggiornato gitignore 2019-10-30 15:52:44 +01:00
Obbart a29aa4da91 rimossa cartella build 2019-10-30 15:52:01 +01:00
Obbart 170959e529 aggiornato gitignore 2019-10-30 15:50:23 +01:00
Obbart 3fa74f6ed9 rebuild exe 2019-10-30 15:47:58 +01:00
Obbart 2f1236449a Corretta la rimozione dei file 2019-10-30 15:44:49 +01:00
Giulia f43ed84d72 Prima prova.
Label cartelle sorgente e destinatario con pushbtn/icona che non so
mettere
2019-10-28 20:54:10 +01:00
Obbart 4057b31203 Aggiornate Abbreviazioni 2019-10-27 19:33:43 +01:00
Giulia 0ddd8af3bc tolta icona 2019-10-27 19:22:40 +01:00
Obbart eec006f6c5 Primo commit branch interfaccia grafica 2019-10-27 19:04:18 +01:00
Obbart 10f48a2303 Eliminato printutils 2019-10-27 19:02:22 +01:00
Utente 4dd8673d86 Prima Interfaccia 2019-10-27 18:42:02 +01:00
Obbart 1a9e9a7eac Dir Interfaccia grafica 2019-10-27 18:31:35 +01:00
Obbart 947c8e19ea abbreviazioni interfaccia Qt 2019-10-27 17:47:38 +01:00
Obbart 3e6745fdeb commit test 2 2019-10-27 17:16:14 +01:00
Obbart eebfefa0c3 commit test 2019-10-27 17:15:33 +01:00
Obbart 8bbaa144d8 Upload Archivio vecchie versioni e file build windows, ricordarsi di
riconfigurare la toolchain per gli exe
2019-10-09 19:56:25 +02:00
106 changed files with 118389 additions and 148 deletions
+7 -3
View File
@@ -1,3 +1,7 @@
/.DS_Store .DS_Store
/.project .settings
/.pydevproject bananaSPLIT/build
bananaSPLIT/conf/_*.json
TestFiles
.pydevproject
.project
+17
View File
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>bananaSPLIT</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.python.pydev.PyDevBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.python.pydev.pythonNature</nature>
</natures>
</projectDescription>
+10
View File
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?eclipse-pydev version="1.0"?><pydev_project>
<pydev_pathproperty name="org.python.pydev.PROJECT_SOURCE_PATH">
<path>/${PROJECT_DIR_NAME}</path>
<path>/${PROJECT_DIR_NAME}/bananaSPLIT/libbananasplit</path>
<path>/${PROJECT_DIR_NAME}/bananaSPLIT/UserInterface/compiledUI</path>
</pydev_pathproperty>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python interpreter</pydev_property>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">python37</pydev_property>
</pydev_project>
+1
View File
@@ -0,0 +1 @@
/org.eclipse.core.resources.prefs
@@ -0,0 +1,9 @@
eclipse.preferences.version=1
encoding//bananaSPLIT/UserInterface/compiledUI/about.py=utf-8
encoding//bananaSPLIT/UserInterface/compiledUI/advopt.py=utf-8
encoding//bananaSPLIT/UserInterface/compiledUI/avanzatetitolo.py=utf-8
encoding//bananaSPLIT/UserInterface/compiledUI/avanzatetitolo2.py=utf-8
encoding//bananaSPLIT/UserInterface/compiledUI/avanzatetitolo3.py=utf-8
encoding//bananaSPLIT/UserInterface/compiledUI/mainwindow.py=utf-8
encoding//bananaSPLIT/UserInterface/compiledUI/selezout.py=utf-8
encoding//bananaSPLIT/UserInterface/compiledUI/titolow.py=utf-8
@@ -0,0 +1,2 @@
eclipse.preferences.version=1
org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large Load Diff
+22792
View File
File diff suppressed because it is too large Load Diff
+23149
View File
File diff suppressed because it is too large Load Diff
+30024
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

+67
View File
@@ -0,0 +1,67 @@
{
"version": "v1.3b",
"paths": {
"lastUsed": "defaults.json",
"configurationPath": "./conf/",
"INworkPath": "/home/",
"OUTworkPath": "/home/",
"fileList": []
},
"docStruct": {
"fileVersNew": false,
"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": {
"winW": 800,
"winH": 700,
"encoding": "windows-1252",
"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": [
"'",
"@",
"#",
"$",
"%",
"^",
"&"
]
}
}
+76
View File
@@ -0,0 +1,76 @@
{
"Italiano": {
"dateWords": [
"Gennaio",
"Febbraio",
"Marzo",
"Aprile",
"Maggio",
"Giugno",
"Luglio",
"Agosto",
"Settembre",
"Ottobre",
"Novembre",
"Dicembre"
],
"headWords": [
"BYLINE:",
"SECTION:",
"LENGTH:",
"DATELINE:",
"HIGHLIGHT:",
"Email:"
],
"tailWords": [
"Newstex ID:",
"NOTES:",
"LANGUAGE:",
"GRAPHIC:",
"TYPE:",
"URL:",
"LOAD-DATE:",
"PUBLICATION-TYPE:",
"DOCUMENT-TYPE:",
"CHARTS:",
"JOURNAL-CODE:"
]
},
"English": {
"dateWords": [
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December"
],
"headWords": [
"BYLINE:",
"SECTION:",
"LENGTH:",
"DATELINE:",
"HIGHLIGHT:",
"Email:"
],
"tailWords": [
"Newstex ID:",
"NOTES:",
"LANGUAGE:",
"GRAPHIC:",
"TYPE:",
"URL:",
"LOAD-DATE:",
"PUBLICATION-TYPE:",
"DOCUMENT-TYPE:",
"CHARTS:",
"JOURNAL-CODE:"
]
}
}
+5
View File
@@ -0,0 +1,5 @@
{
"logFile": "D:\\Test\\bananaSPLIT.log",
"logFormat": "%(asctime)s|%(levelname)-8s| %(message)-50s",
"logTimeFormat": "%m-%d %H:%M:%S"
}
BIN
View File
Binary file not shown.
+70
View File
@@ -0,0 +1,70 @@
{
"version": "v1.41",
"paths": {
"lastUsed": "defaults.json",
"configurationPath": "./conf/",
"INworkPath": "C://",
"OUTworkPath": "C://",
"fileList": [
"bdlog.txt"
]
},
"docStruct": {
"fileVersNew": false,
"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": {
"uiLang": "en",
"winW": 800,
"winH": 700,
"encoding": "windows-1252",
"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": [
"'",
"@",
"#",
"$",
"%",
"^",
"&"
]
}
}
+76
View File
@@ -0,0 +1,76 @@
{
"Italiano": {
"dateWords": [
"Gennaio",
"Febbraio",
"Marzo",
"Aprile",
"Maggio",
"Giugno",
"Luglio",
"Agosto",
"Settembre",
"Ottobre",
"Novembre",
"Dicembre"
],
"headWords": [
"BYLINE:",
"SECTION:",
"LENGTH:",
"DATELINE:",
"HIGHLIGHT:",
"Email:"
],
"tailWords": [
"Newstex ID:",
"NOTES:",
"LANGUAGE:",
"GRAPHIC:",
"TYPE:",
"URL:",
"LOAD-DATE:",
"PUBLICATION-TYPE:",
"DOCUMENT-TYPE:",
"CHARTS:",
"JOURNAL-CODE:"
]
},
"English": {
"dateWords": [
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December"
],
"headWords": [
"BYLINE:",
"SECTION:",
"LENGTH:",
"DATELINE:",
"HIGHLIGHT:",
"Email:"
],
"tailWords": [
"Newstex ID:",
"NOTES:",
"LANGUAGE:",
"GRAPHIC:",
"TYPE:",
"URL:",
"LOAD-DATE:",
"PUBLICATION-TYPE:",
"DOCUMENT-TYPE:",
"CHARTS:",
"JOURNAL-CODE:"
]
}
}
+67
View File
@@ -0,0 +1,67 @@
{
"version": "v1.3",
"paths": {
"lastUsed": "linux.json",
"configurationPath": "./conf/",
"INworkPath": "/home/",
"OUTworkPath": "/home/",
"fileList": []
},
"docStruct": {
"fileVersNew": false,
"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": {
"winW": 800,
"winH": 700,
"encoding": "windows-1252",
"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": [
"'",
"@",
"#",
"$",
"%",
"^",
"&"
]
}
}
+5
View File
@@ -0,0 +1,5 @@
{
"logFile": "D:\\Test\\bananaSPLIT.log",
"logFormat": "%(asctime)s|%(levelname)-8s| %(message)-50s",
"logTimeFormat": "%m-%d %H:%M:%S"
}
+5 -5
View File
@@ -1,6 +1,6 @@
/@Archivio/
/build/
/dist/
/bananaSPLIT.exe.spec\
*.py[ocd] *.py[ocd]
/.DS_Store build
dist
/bananaSPLIT.exe.spec
.project
.pyproject
Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

+33
View File
@@ -0,0 +1,33 @@
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['guimain.py'],
pathex=['./libbananasplit', './UserInterface/compiledUI', 'D:\\Emanuele\\Documenti\\workspace\\bananaSPLIT\\bananaSPLIT'],
binaries=[],
datas=[('C:\\Users\\Emanuele Trabattoni\\AppData\\Roaming\\Python\\Python37\\site-packages\\text_unidecode\\data.bin', '.\\text_unidecode')],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='SPEx.exe',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=False , icon='logo.ico')
+107
View File
@@ -0,0 +1,107 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>about</class>
<widget class="QDialog" name="about">
<property name="enabled">
<bool>true</bool>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>768</width>
<height>640</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>768</width>
<height>640</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>768</width>
<height>640</height>
</size>
</property>
<property name="windowTitle">
<string>About SPEx</string>
</property>
<property name="windowIcon">
<iconset resource="resources/resources.qrc">
<normaloff>:/ico/icons/icons8-info-80.png</normaloff>:/ico/icons/icons8-info-80.png</iconset>
</property>
<property name="modal">
<bool>true</bool>
</property>
<widget class="QLabel" name="lbl_ico">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>128</width>
<height>128</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap resource="resources/resources.qrc">:/ico/icons/logo.png</pixmap>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
</widget>
<widget class="QLabel" name="lbl_info">
<property name="geometry">
<rect>
<x>150</x>
<y>10</y>
<width>601</width>
<height>621</height>
</rect>
</property>
<property name="text">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'MS Shell Dlg 2'; font-size:20pt; font-weight:600;&quot;&gt;About SPEx&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot; font-family:'MS Shell Dlg 2'; font-size:12pt;&quot;&gt;Versione {ver}&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'MS Shell Dlg 2'; font-size:7pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'MS Shell Dlg 2'; font-size:12pt;&quot;&gt;SPEx (Split Parse &amp;amp; Extract) e' un tool utile per gli specialisti di linguistica dei corpora che intendono rifinire il loro corpus, eliminando tutti gli elementi non &lt;/span&gt;&lt;span style=&quot; font-family:'MS Shell Dlg 2'; font-size:12pt;&quot;&gt;necessari e dividendo in file singoli le raccolte di&lt;/span&gt;&lt;span style=&quot; font-family:'MS Shell Dlg 2'; font-size:12pt;&quot;&gt; &amp;quot;articoli&amp;quot; scaricate da database online quali &lt;/span&gt;&lt;span style=&quot; font-family:'MS Shell Dlg 2'; font-size:12pt; font-style:italic;&quot;&gt;Lexis Uni&lt;/span&gt;&lt;span style=&quot; font-family:'MS Shell Dlg 2'; font-size:12pt;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'MS Shell Dlg 2'; font-size:12pt;&quot;&gt;Puoi tranquillamente suggerire SPEx ad un tuo collega: ci fa molto piacere! Ricordati solo di mandarci una mail con scopo e impressioni di utilizzo: questo ci aiuta a tenere traccia di quanti ricercatori stanno usando SPEx e pensare a sviluppi futuri di questo tool. &lt;/span&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'MS Shell Dlg 2'; font-size:7pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'MS Shell Dlg 2'; font-size:10pt;&quot;&gt;SPEx non e' soggetto ad alcun tipo di licenza e viene distribuito senza alcuna garanzia.&lt;br /&gt;Essendo un progetto &amp;quot;del tempo libero&amp;quot;, bug e proposte di espansione verranno sicuramente presi in considerazione, anche se le tempistiche potrebbero variare.&lt;/span&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'MS Shell Dlg 2'; font-size:12pt;&quot;&gt;Contatti:&lt;/span&gt;&lt;span style=&quot; font-family:'MS Shell Dlg 2'; font-size:7pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot; font-family:'MS Shell Dlg 2'; font-size:10pt;&quot;&gt;12parsec.software@gmail.com&lt;/span&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'MS Shell Dlg 2'; font-size:12pt;&quot;&gt;Download:&lt;br /&gt;&lt;/span&gt;&lt;a href=&quot;https://drive.google.com/open?id=10zUm7uHk9st36PVotMwh9wqOeXU3xrr8&quot;&gt;&lt;span style=&quot; font-family:'MS Shell Dlg 2'; font-size:7pt; text-decoration: underline; color:#0000ff;&quot;&gt;https://drive.google.com/open?id=10zUm7uHk9st36PVotMwh9wqOeXU3xrr8&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="textFormat">
<enum>Qt::RichText</enum>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</widget>
<resources>
<include location="resources/resources.qrc"/>
</resources>
<connections/>
</ui>
+118
View File
@@ -0,0 +1,118 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>editconf</class>
<widget class="QDialog" name="editconf">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>600</width>
<height>500</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>600</width>
<height>500</height>
</size>
</property>
<property name="windowTitle">
<string>Opzioni Avanzate</string>
</property>
<property name="windowIcon">
<iconset resource="resources/resources.qrc">
<normaloff>:/ico/icons/icons8-smartphone-ram-100.png</normaloff>:/ico/icons/icons8-smartphone-ram-100.png</iconset>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="label">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>ATTENZIONE!! Quello che scrivi qui potrebbe rompere tutto!</string>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
<property name="textInteractionFlags">
<set>Qt::NoTextInteraction</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_2">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Da grandi poteri derivano grandi responsabilita'</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QPlainTextEdit" name="txt_confFile">
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="btn_cancel">
<property name="text">
<string>Cancel</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btn_ok">
<property name="text">
<string>OK</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<resources>
<include location="resources/resources.qrc"/>
</resources>
<connections/>
</ui>
@@ -0,0 +1,172 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>advtitolo</class>
<widget class="QWidget" name="advtitolo">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>480</width>
<height>400</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="3" column="2">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="lbl_titoloschermata">
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="text">
<string>Modifica ordine elementi nome file</string>
</property>
</widget>
</item>
<item row="3" column="1">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QSpinBox" name="spn_data">
<property name="minimum">
<number>0</number>
</property>
<property name="maximum">
<number>3</number>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="spn_titolo">
<property name="minimum">
<number>0</number>
</property>
<property name="maximum">
<number>3</number>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="spn_numero">
<property name="minimum">
<number>0</number>
</property>
<property name="maximum">
<number>3</number>
</property>
</widget>
</item>
</layout>
</item>
<item row="2" column="0" colspan="2">
<widget class="QLabel" name="lbl_istruzioni">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Indica la posizione dell'elemento nel nome del file</string>
</property>
</widget>
</item>
<item row="3" column="0">
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QLabel" name="lbl_data">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Data</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lbl_titolo">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Titolo</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lbl_numero">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Numero</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="4" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="0" colspan="2">
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="5" column="2">
<widget class="QPushButton" name="btn_avanti">
<property name="text">
<string>Avanti</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QPushButton" name="btn_indietro">
<property name="text">
<string>Indietro</string>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>
@@ -0,0 +1,190 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>advtitolo2</class>
<widget class="QWidget" name="advtitolo2">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>495</width>
<height>456</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="0" colspan="2">
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="4" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="lbl_titoloschermata">
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="text">
<string>Modifica ordine elementi nome file</string>
</property>
</widget>
</item>
<item row="2" column="0" colspan="3">
<widget class="QLabel" name="lbl_istruzioni">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Scegli l'ordine degli elementi nel nome file</string>
</property>
</widget>
</item>
<item row="3" column="0">
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QRadioButton" name="rad_dtn">
<property name="text">
<string>Data, Titolo, Numero </string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="rad_dnt">
<property name="text">
<string>Data, Numero, Titolo</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="rad_tdn">
<property name="text">
<string>Titolo, Data, Numero</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="rad_tnd">
<property name="text">
<string>Titolo, Numero, Data</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="rad_ndt">
<property name="text">
<string>Numero, Data, Titolo</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="rad_ntd">
<property name="text">
<string>Numero, Titolo, Data</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="rad_dt">
<property name="text">
<string>Data, Titolo</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="rad_dn">
<property name="text">
<string>Data, Numero</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="rad_td">
<property name="text">
<string>Titolo, Data</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="rad_tn">
<property name="text">
<string>Titolo, Numero</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="rad_nd">
<property name="text">
<string>Numero, Data</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="rad_nt">
<property name="text">
<string>Numero, Titolo</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="5" column="2">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="btn_annulla">
<property name="text">
<string>Annulla</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btn_ok">
<property name="text">
<string>OK</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="5" column="0">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>
@@ -0,0 +1,259 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>advtitolo3</class>
<widget class="QWidget" name="advtitolo3">
<property name="windowModality">
<enum>Qt::WindowModal</enum>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>480</width>
<height>524</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowTitle">
<string>Avanzate Titolo</string>
</property>
<property name="windowIcon">
<iconset resource="resources/resources.qrc">
<normaloff>:/ico/icons/icons8-smartphone-ram-100.png</normaloff>:/ico/icons/icons8-smartphone-ram-100.png</iconset>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="0" colspan="2">
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="6" column="0">
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QLabel" name="lbl_terzo">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>(Terzo Elemento)</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="rad_numeroterzo">
<property name="text">
<string>Numero</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="rad_dataterzo">
<property name="text">
<string>Data</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="rad_titoloterzo">
<property name="text">
<string>Titolo</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
<item row="10" column="0">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="5" column="0">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="lbl_secondo">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Secondo Elemento</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="rad_numerosecondo">
<property name="text">
<string>Numero</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="rad_datasecondo">
<property name="text">
<string>Data</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="rad_titolosecondo">
<property name="text">
<string>Titolo</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="2" column="0" colspan="2">
<widget class="QLabel" name="lbl_istruzioni">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Seleziona l'ordine degli elementi nel nomi file</string>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Prefisso Titolo</string>
</property>
</widget>
</item>
<item row="8" column="1">
<widget class="QLineEdit" name="txt_prefisso">
<property name="inputMask">
<string/>
</property>
<property name="text">
<string/>
</property>
<property name="maxLength">
<number>10</number>
</property>
</widget>
</item>
<item row="3" column="0">
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QLabel" name="lbl_primo">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Primo elemento</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="rad_numeroprimo">
<property name="text">
<string>Numero</string>
</property>
<property name="checked">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="rad_dataprimo">
<property name="text">
<string>Data</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="rad_titoloprimo">
<property name="text">
<string>Titolo</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="7" column="0" colspan="2">
<widget class="Line" name="line_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="lbl_titoloschermata">
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="text">
<string>Modifica ordine elementi nome file</string>
</property>
</widget>
</item>
<item row="10" column="1">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="btn_annulla">
<property name="text">
<string>Annulla</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btn_OK">
<property name="text">
<string>OK</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="9" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Suffisso Titolo</string>
</property>
</widget>
</item>
<item row="9" column="1">
<widget class="QLineEdit" name="txt_suffisso">
<property name="maxLength">
<number>10</number>
</property>
</widget>
</item>
</layout>
</widget>
<resources>
<include location="resources/resources.qrc"/>
</resources>
<connections/>
</ui>
@@ -0,0 +1,66 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'about.ui'
#
# Created by: PyQt5 UI code generator 5.12.1
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_about(object):
def setupUi(self, about):
about.setObjectName("about")
about.setEnabled(True)
about.resize(768, 640)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(about.sizePolicy().hasHeightForWidth())
about.setSizePolicy(sizePolicy)
about.setMinimumSize(QtCore.QSize(768, 640))
about.setMaximumSize(QtCore.QSize(768, 640))
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap(":/ico/icons/icons8-info-80.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
about.setWindowIcon(icon)
about.setModal(True)
self.lbl_ico = QtWidgets.QLabel(about)
self.lbl_ico.setGeometry(QtCore.QRect(10, 10, 128, 128))
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.lbl_ico.sizePolicy().hasHeightForWidth())
self.lbl_ico.setSizePolicy(sizePolicy)
self.lbl_ico.setFrameShape(QtWidgets.QFrame.NoFrame)
self.lbl_ico.setText("")
self.lbl_ico.setPixmap(QtGui.QPixmap(":/ico/icons/logo.png"))
self.lbl_ico.setScaledContents(True)
self.lbl_ico.setObjectName("lbl_ico")
self.lbl_info = QtWidgets.QLabel(about)
self.lbl_info.setGeometry(QtCore.QRect(150, 10, 601, 621))
self.lbl_info.setTextFormat(QtCore.Qt.RichText)
self.lbl_info.setWordWrap(True)
self.lbl_info.setObjectName("lbl_info")
self.retranslateUi(about)
QtCore.QMetaObject.connectSlotsByName(about)
def retranslateUi(self, about):
_translate = QtCore.QCoreApplication.translate
about.setWindowTitle(_translate("about", "About SPEx"))
self.lbl_info.setText(_translate("about", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'MS Shell Dlg 2\'; font-size:8pt; font-weight:400; font-style:normal;\">\n"
"<p align=\"center\" style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'MS Shell Dlg 2\'; font-size:20pt; font-weight:600;\">About SPEx<br /></span><span style=\" font-family:\'MS Shell Dlg 2\'; font-size:12pt;\">Versione {ver}</span></p>\n"
"<p style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'MS Shell Dlg 2\'; font-size:7pt;\"><br /></span></p>\n"
"<p style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'MS Shell Dlg 2\'; font-size:12pt;\">SPEx (Split Parse &amp; Extract) e\' un tool utile per gli specialisti di linguistica dei corpora che intendono rifinire il loro corpus, eliminando tutti gli elementi non </span><span style=\" font-family:\'MS Shell Dlg 2\'; font-size:12pt;\">necessari e dividendo in file singoli le raccolte di</span><span style=\" font-family:\'MS Shell Dlg 2\'; font-size:12pt;\"> &quot;articoli&quot; scaricate da database online quali </span><span style=\" font-family:\'MS Shell Dlg 2\'; font-size:12pt; font-style:italic;\">Lexis Uni</span><span style=\" font-family:\'MS Shell Dlg 2\'; font-size:12pt;\">.</span></p>\n"
"<p style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'MS Shell Dlg 2\'; font-size:12pt;\">Puoi tranquillamente suggerire SPEx ad un tuo collega: ci fa molto piacere! Ricordati solo di mandarci una mail con scopo e impressioni di utilizzo: questo ci aiuta a tenere traccia di quanti ricercatori stanno usando SPEx e pensare a sviluppi futuri di questo tool. </span></p>\n"
"<p align=\"center\" style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'MS Shell Dlg 2\'; font-size:7pt;\"><br /></span></p>\n"
"<p align=\"center\" style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'MS Shell Dlg 2\'; font-size:10pt;\">SPEx non e\' soggetto ad alcun tipo di licenza e viene distribuito senza alcuna garanzia.<br />Essendo un progetto &quot;del tempo libero&quot;, bug e proposte di espansione verranno sicuramente presi in considerazione, anche se le tempistiche potrebbero variare.</span></p>\n"
"<p align=\"center\" style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'MS Shell Dlg 2\'; font-size:12pt;\">Contatti:</span><span style=\" font-family:\'MS Shell Dlg 2\'; font-size:7pt;\"><br /></span><span style=\" font-family:\'MS Shell Dlg 2\'; font-size:10pt;\">12parsec.software@gmail.com</span></p>\n"
"<p align=\"center\" style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'MS Shell Dlg 2\'; font-size:12pt;\">Download:<br /></span><a href=\"https://drive.google.com/open?id=10zUm7uHk9st36PVotMwh9wqOeXU3xrr8\"><span style=\" font-family:\'MS Shell Dlg 2\'; font-size:7pt; text-decoration: underline; color:#0000ff;\">https://drive.google.com/open?id=10zUm7uHk9st36PVotMwh9wqOeXU3xrr8</span></a></p></body></html>"))
import resources_rc
@@ -0,0 +1,74 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'advopt.ui'
#
# Created by: PyQt5 UI code generator 5.12.1
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_editconf(object):
def setupUi(self, editconf):
editconf.setObjectName("editconf")
editconf.resize(600, 500)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(editconf.sizePolicy().hasHeightForWidth())
editconf.setSizePolicy(sizePolicy)
editconf.setMinimumSize(QtCore.QSize(600, 500))
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap(":/ico/icons/icons8-smartphone-ram-100.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
editconf.setWindowIcon(icon)
self.verticalLayout = QtWidgets.QVBoxLayout(editconf)
self.verticalLayout.setObjectName("verticalLayout")
self.label = QtWidgets.QLabel(editconf)
font = QtGui.QFont()
font.setPointSize(12)
self.label.setFont(font)
self.label.setTextFormat(QtCore.Qt.PlainText)
self.label.setAlignment(QtCore.Qt.AlignCenter)
self.label.setWordWrap(True)
self.label.setTextInteractionFlags(QtCore.Qt.NoTextInteraction)
self.label.setObjectName("label")
self.verticalLayout.addWidget(self.label)
self.label_2 = QtWidgets.QLabel(editconf)
font = QtGui.QFont()
font.setPointSize(10)
self.label_2.setFont(font)
self.label_2.setAlignment(QtCore.Qt.AlignCenter)
self.label_2.setObjectName("label_2")
self.verticalLayout.addWidget(self.label_2)
self.txt_confFile = QtWidgets.QPlainTextEdit(editconf)
font = QtGui.QFont()
font.setPointSize(11)
self.txt_confFile.setFont(font)
self.txt_confFile.setObjectName("txt_confFile")
self.verticalLayout.addWidget(self.txt_confFile)
self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setObjectName("horizontalLayout")
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout.addItem(spacerItem)
self.btn_cancel = QtWidgets.QPushButton(editconf)
self.btn_cancel.setObjectName("btn_cancel")
self.horizontalLayout.addWidget(self.btn_cancel)
self.btn_ok = QtWidgets.QPushButton(editconf)
self.btn_ok.setObjectName("btn_ok")
self.horizontalLayout.addWidget(self.btn_ok)
self.verticalLayout.addLayout(self.horizontalLayout)
self.retranslateUi(editconf)
QtCore.QMetaObject.connectSlotsByName(editconf)
def retranslateUi(self, editconf):
_translate = QtCore.QCoreApplication.translate
editconf.setWindowTitle(_translate("editconf", "Opzioni Avanzate"))
self.label.setText(_translate("editconf", "ATTENZIONE!! Quello che scrivi qui potrebbe rompere tutto!"))
self.label_2.setText(_translate("editconf", "Da grandi poteri derivano grandi responsabilita\'"))
self.btn_cancel.setText(_translate("editconf", "Cancel"))
self.btn_ok.setText(_translate("editconf", "OK"))
import resources_rc
@@ -0,0 +1,104 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'avanzatetitolo.ui'
#
# Created by: PyQt5 UI code generator 5.12.1
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_advtitolo(object):
def setupUi(self, advtitolo):
advtitolo.setObjectName("advtitolo")
advtitolo.resize(480, 400)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(advtitolo.sizePolicy().hasHeightForWidth())
advtitolo.setSizePolicy(sizePolicy)
self.gridLayout = QtWidgets.QGridLayout(advtitolo)
self.gridLayout.setObjectName("gridLayout")
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.gridLayout.addItem(spacerItem, 3, 2, 1, 1)
self.lbl_titoloschermata = QtWidgets.QLabel(advtitolo)
font = QtGui.QFont()
font.setPointSize(11)
self.lbl_titoloschermata.setFont(font)
self.lbl_titoloschermata.setObjectName("lbl_titoloschermata")
self.gridLayout.addWidget(self.lbl_titoloschermata, 0, 0, 1, 2)
self.verticalLayout = QtWidgets.QVBoxLayout()
self.verticalLayout.setObjectName("verticalLayout")
self.spn_data = QtWidgets.QSpinBox(advtitolo)
self.spn_data.setMinimum(0)
self.spn_data.setMaximum(3)
self.spn_data.setObjectName("spn_data")
self.verticalLayout.addWidget(self.spn_data)
self.spn_titolo = QtWidgets.QSpinBox(advtitolo)
self.spn_titolo.setMinimum(0)
self.spn_titolo.setMaximum(3)
self.spn_titolo.setObjectName("spn_titolo")
self.verticalLayout.addWidget(self.spn_titolo)
self.spn_numero = QtWidgets.QSpinBox(advtitolo)
self.spn_numero.setMinimum(0)
self.spn_numero.setMaximum(3)
self.spn_numero.setObjectName("spn_numero")
self.verticalLayout.addWidget(self.spn_numero)
self.gridLayout.addLayout(self.verticalLayout, 3, 1, 1, 1)
self.lbl_istruzioni = QtWidgets.QLabel(advtitolo)
font = QtGui.QFont()
font.setPointSize(10)
self.lbl_istruzioni.setFont(font)
self.lbl_istruzioni.setObjectName("lbl_istruzioni")
self.gridLayout.addWidget(self.lbl_istruzioni, 2, 0, 1, 2)
self.verticalLayout_2 = QtWidgets.QVBoxLayout()
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.lbl_data = QtWidgets.QLabel(advtitolo)
font = QtGui.QFont()
font.setPointSize(10)
self.lbl_data.setFont(font)
self.lbl_data.setObjectName("lbl_data")
self.verticalLayout_2.addWidget(self.lbl_data)
self.lbl_titolo = QtWidgets.QLabel(advtitolo)
font = QtGui.QFont()
font.setPointSize(10)
self.lbl_titolo.setFont(font)
self.lbl_titolo.setObjectName("lbl_titolo")
self.verticalLayout_2.addWidget(self.lbl_titolo)
self.lbl_numero = QtWidgets.QLabel(advtitolo)
font = QtGui.QFont()
font.setPointSize(10)
self.lbl_numero.setFont(font)
self.lbl_numero.setObjectName("lbl_numero")
self.verticalLayout_2.addWidget(self.lbl_numero)
self.gridLayout.addLayout(self.verticalLayout_2, 3, 0, 1, 1)
spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.gridLayout.addItem(spacerItem1, 4, 0, 1, 1)
self.line = QtWidgets.QFrame(advtitolo)
self.line.setFrameShape(QtWidgets.QFrame.HLine)
self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line.setObjectName("line")
self.gridLayout.addWidget(self.line, 1, 0, 1, 2)
self.btn_avanti = QtWidgets.QPushButton(advtitolo)
self.btn_avanti.setObjectName("btn_avanti")
self.gridLayout.addWidget(self.btn_avanti, 5, 2, 1, 1)
self.btn_indietro = QtWidgets.QPushButton(advtitolo)
self.btn_indietro.setObjectName("btn_indietro")
self.gridLayout.addWidget(self.btn_indietro, 5, 1, 1, 1)
self.retranslateUi(advtitolo)
QtCore.QMetaObject.connectSlotsByName(advtitolo)
def retranslateUi(self, advtitolo):
_translate = QtCore.QCoreApplication.translate
advtitolo.setWindowTitle(_translate("advtitolo", "Form"))
self.lbl_titoloschermata.setText(_translate("advtitolo", "Modifica ordine elementi nome file"))
self.lbl_istruzioni.setText(_translate("advtitolo", "Indica la posizione dell\'elemento nel nome del file"))
self.lbl_data.setText(_translate("advtitolo", "Data"))
self.lbl_titolo.setText(_translate("advtitolo", "Titolo"))
self.lbl_numero.setText(_translate("advtitolo", "Numero"))
self.btn_avanti.setText(_translate("advtitolo", "Avanti"))
self.btn_indietro.setText(_translate("advtitolo", "Indietro"))
@@ -0,0 +1,116 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'avanzatetitolo2.ui'
#
# Created by: PyQt5 UI code generator 5.12.1
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_advtitolo2(object):
def setupUi(self, advtitolo2):
advtitolo2.setObjectName("advtitolo2")
advtitolo2.resize(495, 456)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(advtitolo2.sizePolicy().hasHeightForWidth())
advtitolo2.setSizePolicy(sizePolicy)
self.gridLayout = QtWidgets.QGridLayout(advtitolo2)
self.gridLayout.setObjectName("gridLayout")
self.line = QtWidgets.QFrame(advtitolo2)
self.line.setFrameShape(QtWidgets.QFrame.HLine)
self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line.setObjectName("line")
self.gridLayout.addWidget(self.line, 1, 0, 1, 2)
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.gridLayout.addItem(spacerItem, 4, 0, 1, 1)
self.lbl_titoloschermata = QtWidgets.QLabel(advtitolo2)
font = QtGui.QFont()
font.setPointSize(11)
self.lbl_titoloschermata.setFont(font)
self.lbl_titoloschermata.setObjectName("lbl_titoloschermata")
self.gridLayout.addWidget(self.lbl_titoloschermata, 0, 0, 1, 2)
self.lbl_istruzioni = QtWidgets.QLabel(advtitolo2)
font = QtGui.QFont()
font.setPointSize(10)
self.lbl_istruzioni.setFont(font)
self.lbl_istruzioni.setObjectName("lbl_istruzioni")
self.gridLayout.addWidget(self.lbl_istruzioni, 2, 0, 1, 3)
self.verticalLayout_2 = QtWidgets.QVBoxLayout()
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.rad_dtn = QtWidgets.QRadioButton(advtitolo2)
self.rad_dtn.setObjectName("rad_dtn")
self.verticalLayout_2.addWidget(self.rad_dtn)
self.rad_dnt = QtWidgets.QRadioButton(advtitolo2)
self.rad_dnt.setObjectName("rad_dnt")
self.verticalLayout_2.addWidget(self.rad_dnt)
self.rad_tdn = QtWidgets.QRadioButton(advtitolo2)
self.rad_tdn.setObjectName("rad_tdn")
self.verticalLayout_2.addWidget(self.rad_tdn)
self.rad_tnd = QtWidgets.QRadioButton(advtitolo2)
self.rad_tnd.setObjectName("rad_tnd")
self.verticalLayout_2.addWidget(self.rad_tnd)
self.rad_ndt = QtWidgets.QRadioButton(advtitolo2)
self.rad_ndt.setObjectName("rad_ndt")
self.verticalLayout_2.addWidget(self.rad_ndt)
self.rad_ntd = QtWidgets.QRadioButton(advtitolo2)
self.rad_ntd.setObjectName("rad_ntd")
self.verticalLayout_2.addWidget(self.rad_ntd)
self.rad_dt = QtWidgets.QRadioButton(advtitolo2)
self.rad_dt.setObjectName("rad_dt")
self.verticalLayout_2.addWidget(self.rad_dt)
self.rad_dn = QtWidgets.QRadioButton(advtitolo2)
self.rad_dn.setObjectName("rad_dn")
self.verticalLayout_2.addWidget(self.rad_dn)
self.rad_td = QtWidgets.QRadioButton(advtitolo2)
self.rad_td.setObjectName("rad_td")
self.verticalLayout_2.addWidget(self.rad_td)
self.rad_tn = QtWidgets.QRadioButton(advtitolo2)
self.rad_tn.setObjectName("rad_tn")
self.verticalLayout_2.addWidget(self.rad_tn)
self.rad_nd = QtWidgets.QRadioButton(advtitolo2)
self.rad_nd.setObjectName("rad_nd")
self.verticalLayout_2.addWidget(self.rad_nd)
self.rad_nt = QtWidgets.QRadioButton(advtitolo2)
self.rad_nt.setObjectName("rad_nt")
self.verticalLayout_2.addWidget(self.rad_nt)
self.gridLayout.addLayout(self.verticalLayout_2, 3, 0, 1, 1)
self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setObjectName("horizontalLayout")
self.btn_annulla = QtWidgets.QPushButton(advtitolo2)
self.btn_annulla.setObjectName("btn_annulla")
self.horizontalLayout.addWidget(self.btn_annulla)
self.btn_ok = QtWidgets.QPushButton(advtitolo2)
self.btn_ok.setObjectName("btn_ok")
self.horizontalLayout.addWidget(self.btn_ok)
self.gridLayout.addLayout(self.horizontalLayout, 5, 2, 1, 1)
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.gridLayout.addItem(spacerItem1, 5, 0, 1, 1)
self.retranslateUi(advtitolo2)
QtCore.QMetaObject.connectSlotsByName(advtitolo2)
def retranslateUi(self, advtitolo2):
_translate = QtCore.QCoreApplication.translate
advtitolo2.setWindowTitle(_translate("advtitolo2", "Form"))
self.lbl_titoloschermata.setText(_translate("advtitolo2", "Modifica ordine elementi nome file"))
self.lbl_istruzioni.setText(_translate("advtitolo2", "Scegli l\'ordine degli elementi nel nome file"))
self.rad_dtn.setText(_translate("advtitolo2", "Data, Titolo, Numero "))
self.rad_dnt.setText(_translate("advtitolo2", "Data, Numero, Titolo"))
self.rad_tdn.setText(_translate("advtitolo2", "Titolo, Data, Numero"))
self.rad_tnd.setText(_translate("advtitolo2", "Titolo, Numero, Data"))
self.rad_ndt.setText(_translate("advtitolo2", "Numero, Data, Titolo"))
self.rad_ntd.setText(_translate("advtitolo2", "Numero, Titolo, Data"))
self.rad_dt.setText(_translate("advtitolo2", "Data, Titolo"))
self.rad_dn.setText(_translate("advtitolo2", "Data, Numero"))
self.rad_td.setText(_translate("advtitolo2", "Titolo, Data"))
self.rad_tn.setText(_translate("advtitolo2", "Titolo, Numero"))
self.rad_nd.setText(_translate("advtitolo2", "Numero, Data"))
self.rad_nt.setText(_translate("advtitolo2", "Numero, Titolo"))
self.btn_annulla.setText(_translate("advtitolo2", "Annulla"))
self.btn_ok.setText(_translate("advtitolo2", "OK"))
@@ -0,0 +1,160 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'avanzatetitolo3.ui'
#
# Created by: PyQt5 UI code generator 5.12.1
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_advtitolo3(object):
def setupUi(self, advtitolo3):
advtitolo3.setObjectName("advtitolo3")
advtitolo3.setWindowModality(QtCore.Qt.WindowModal)
advtitolo3.resize(480, 524)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(advtitolo3.sizePolicy().hasHeightForWidth())
advtitolo3.setSizePolicy(sizePolicy)
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap(":/ico/icons/icons8-smartphone-ram-100.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
advtitolo3.setWindowIcon(icon)
self.gridLayout = QtWidgets.QGridLayout(advtitolo3)
self.gridLayout.setObjectName("gridLayout")
self.line = QtWidgets.QFrame(advtitolo3)
self.line.setFrameShape(QtWidgets.QFrame.HLine)
self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line.setObjectName("line")
self.gridLayout.addWidget(self.line, 1, 0, 1, 2)
self.verticalLayout_3 = QtWidgets.QVBoxLayout()
self.verticalLayout_3.setObjectName("verticalLayout_3")
self.lbl_terzo = QtWidgets.QLabel(advtitolo3)
font = QtGui.QFont()
font.setPointSize(10)
self.lbl_terzo.setFont(font)
self.lbl_terzo.setObjectName("lbl_terzo")
self.verticalLayout_3.addWidget(self.lbl_terzo)
self.rad_numeroterzo = QtWidgets.QCheckBox(advtitolo3)
self.rad_numeroterzo.setObjectName("rad_numeroterzo")
self.verticalLayout_3.addWidget(self.rad_numeroterzo)
self.rad_dataterzo = QtWidgets.QCheckBox(advtitolo3)
self.rad_dataterzo.setObjectName("rad_dataterzo")
self.verticalLayout_3.addWidget(self.rad_dataterzo)
self.rad_titoloterzo = QtWidgets.QCheckBox(advtitolo3)
self.rad_titoloterzo.setChecked(True)
self.rad_titoloterzo.setObjectName("rad_titoloterzo")
self.verticalLayout_3.addWidget(self.rad_titoloterzo)
self.gridLayout.addLayout(self.verticalLayout_3, 6, 0, 1, 1)
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.gridLayout.addItem(spacerItem, 10, 0, 1, 1)
self.verticalLayout = QtWidgets.QVBoxLayout()
self.verticalLayout.setObjectName("verticalLayout")
self.lbl_secondo = QtWidgets.QLabel(advtitolo3)
font = QtGui.QFont()
font.setPointSize(10)
self.lbl_secondo.setFont(font)
self.lbl_secondo.setObjectName("lbl_secondo")
self.verticalLayout.addWidget(self.lbl_secondo)
self.rad_numerosecondo = QtWidgets.QCheckBox(advtitolo3)
self.rad_numerosecondo.setObjectName("rad_numerosecondo")
self.verticalLayout.addWidget(self.rad_numerosecondo)
self.rad_datasecondo = QtWidgets.QCheckBox(advtitolo3)
self.rad_datasecondo.setChecked(True)
self.rad_datasecondo.setObjectName("rad_datasecondo")
self.verticalLayout.addWidget(self.rad_datasecondo)
self.rad_titolosecondo = QtWidgets.QCheckBox(advtitolo3)
self.rad_titolosecondo.setObjectName("rad_titolosecondo")
self.verticalLayout.addWidget(self.rad_titolosecondo)
self.gridLayout.addLayout(self.verticalLayout, 5, 0, 1, 1)
self.lbl_istruzioni = QtWidgets.QLabel(advtitolo3)
font = QtGui.QFont()
font.setPointSize(10)
self.lbl_istruzioni.setFont(font)
self.lbl_istruzioni.setObjectName("lbl_istruzioni")
self.gridLayout.addWidget(self.lbl_istruzioni, 2, 0, 1, 2)
self.label = QtWidgets.QLabel(advtitolo3)
self.label.setObjectName("label")
self.gridLayout.addWidget(self.label, 8, 0, 1, 1)
self.txt_prefisso = QtWidgets.QLineEdit(advtitolo3)
self.txt_prefisso.setInputMask("")
self.txt_prefisso.setText("")
self.txt_prefisso.setMaxLength(10)
self.txt_prefisso.setObjectName("txt_prefisso")
self.gridLayout.addWidget(self.txt_prefisso, 8, 1, 1, 1)
self.verticalLayout_2 = QtWidgets.QVBoxLayout()
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.lbl_primo = QtWidgets.QLabel(advtitolo3)
font = QtGui.QFont()
font.setPointSize(10)
self.lbl_primo.setFont(font)
self.lbl_primo.setObjectName("lbl_primo")
self.verticalLayout_2.addWidget(self.lbl_primo)
self.rad_numeroprimo = QtWidgets.QCheckBox(advtitolo3)
self.rad_numeroprimo.setChecked(False)
self.rad_numeroprimo.setObjectName("rad_numeroprimo")
self.verticalLayout_2.addWidget(self.rad_numeroprimo)
self.rad_dataprimo = QtWidgets.QCheckBox(advtitolo3)
self.rad_dataprimo.setObjectName("rad_dataprimo")
self.verticalLayout_2.addWidget(self.rad_dataprimo)
self.rad_titoloprimo = QtWidgets.QCheckBox(advtitolo3)
self.rad_titoloprimo.setObjectName("rad_titoloprimo")
self.verticalLayout_2.addWidget(self.rad_titoloprimo)
self.gridLayout.addLayout(self.verticalLayout_2, 3, 0, 1, 1)
self.line_2 = QtWidgets.QFrame(advtitolo3)
self.line_2.setFrameShape(QtWidgets.QFrame.HLine)
self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_2.setObjectName("line_2")
self.gridLayout.addWidget(self.line_2, 7, 0, 1, 2)
self.lbl_titoloschermata = QtWidgets.QLabel(advtitolo3)
font = QtGui.QFont()
font.setPointSize(11)
self.lbl_titoloschermata.setFont(font)
self.lbl_titoloschermata.setObjectName("lbl_titoloschermata")
self.gridLayout.addWidget(self.lbl_titoloschermata, 0, 0, 1, 2)
self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setObjectName("horizontalLayout")
self.btn_annulla = QtWidgets.QPushButton(advtitolo3)
self.btn_annulla.setObjectName("btn_annulla")
self.horizontalLayout.addWidget(self.btn_annulla)
self.btn_OK = QtWidgets.QPushButton(advtitolo3)
self.btn_OK.setObjectName("btn_OK")
self.horizontalLayout.addWidget(self.btn_OK)
self.gridLayout.addLayout(self.horizontalLayout, 10, 1, 1, 1)
self.label_2 = QtWidgets.QLabel(advtitolo3)
self.label_2.setObjectName("label_2")
self.gridLayout.addWidget(self.label_2, 9, 0, 1, 1)
self.txt_suffisso = QtWidgets.QLineEdit(advtitolo3)
self.txt_suffisso.setMaxLength(10)
self.txt_suffisso.setObjectName("txt_suffisso")
self.gridLayout.addWidget(self.txt_suffisso, 9, 1, 1, 1)
self.retranslateUi(advtitolo3)
QtCore.QMetaObject.connectSlotsByName(advtitolo3)
def retranslateUi(self, advtitolo3):
_translate = QtCore.QCoreApplication.translate
advtitolo3.setWindowTitle(_translate("advtitolo3", "Avanzate Titolo"))
self.lbl_terzo.setText(_translate("advtitolo3", "(Terzo Elemento)"))
self.rad_numeroterzo.setText(_translate("advtitolo3", "Numero"))
self.rad_dataterzo.setText(_translate("advtitolo3", "Data"))
self.rad_titoloterzo.setText(_translate("advtitolo3", "Titolo"))
self.lbl_secondo.setText(_translate("advtitolo3", "Secondo Elemento"))
self.rad_numerosecondo.setText(_translate("advtitolo3", "Numero"))
self.rad_datasecondo.setText(_translate("advtitolo3", "Data"))
self.rad_titolosecondo.setText(_translate("advtitolo3", "Titolo"))
self.lbl_istruzioni.setText(_translate("advtitolo3", "Seleziona l\'ordine degli elementi nel nomi file"))
self.label.setText(_translate("advtitolo3", "Prefisso Titolo"))
self.lbl_primo.setText(_translate("advtitolo3", "Primo elemento"))
self.rad_numeroprimo.setText(_translate("advtitolo3", "Numero"))
self.rad_dataprimo.setText(_translate("advtitolo3", "Data"))
self.rad_titoloprimo.setText(_translate("advtitolo3", "Titolo"))
self.lbl_titoloschermata.setText(_translate("advtitolo3", "Modifica ordine elementi nome file"))
self.btn_annulla.setText(_translate("advtitolo3", "Annulla"))
self.btn_OK.setText(_translate("advtitolo3", "OK"))
self.label_2.setText(_translate("advtitolo3", "Suffisso Titolo"))
import resources_rc
@@ -0,0 +1,314 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'mainwindow.ui'
#
# Created by: PyQt5 UI code generator 5.12.1
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_mainwin(object):
def setupUi(self, mainwin):
mainwin.setObjectName("mainwin")
mainwin.setEnabled(True)
mainwin.resize(680, 620)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(mainwin.sizePolicy().hasHeightForWidth())
mainwin.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setFamily("MS Shell Dlg 2")
font.setPointSize(10)
mainwin.setFont(font)
mainwin.setFocusPolicy(QtCore.Qt.NoFocus)
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap(":/ico/icons/logo2.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
mainwin.setWindowIcon(icon)
mainwin.setAnimated(False)
mainwin.setDockOptions(QtWidgets.QMainWindow.AllowTabbedDocks)
self.centralwidget = QtWidgets.QWidget(mainwin)
self.centralwidget.setObjectName("centralwidget")
self.gridLayout_2 = QtWidgets.QGridLayout(self.centralwidget)
self.gridLayout_2.setObjectName("gridLayout_2")
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)
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_3.addItem(spacerItem)
self.label_3 = QtWidgets.QLabel(self.centralwidget)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_3.sizePolicy().hasHeightForWidth())
self.label_3.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setBold(True)
font.setWeight(75)
self.label_3.setFont(font)
self.label_3.setObjectName("label_3")
self.horizontalLayout_3.addWidget(self.label_3)
self.lbl_preset = QtWidgets.QLabel(self.centralwidget)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.lbl_preset.sizePolicy().hasHeightForWidth())
self.lbl_preset.setSizePolicy(sizePolicy)
self.lbl_preset.setObjectName("lbl_preset")
self.horizontalLayout_3.addWidget(self.lbl_preset)
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_3.addItem(spacerItem1)
self.gridLayout_2.addLayout(self.horizontalLayout_3, 2, 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, 4, 0, 1, 1)
self.wgt_main = QtWidgets.QTabWidget(self.centralwidget)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.MinimumExpanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.wgt_main.sizePolicy().hasHeightForWidth())
self.wgt_main.setSizePolicy(sizePolicy)
self.wgt_main.setObjectName("wgt_main")
self.wgt_mainPage1 = QtWidgets.QWidget()
self.wgt_mainPage1.setObjectName("wgt_mainPage1")
self.gridLayout = QtWidgets.QGridLayout(self.wgt_mainPage1)
self.gridLayout.setObjectName("gridLayout")
self.verticalLayout_2 = QtWidgets.QVBoxLayout()
self.verticalLayout_2.setSizeConstraint(QtWidgets.QLayout.SetMinimumSize)
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.btn_cartellasorg = QtWidgets.QPushButton(self.wgt_mainPage1)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.btn_cartellasorg.sizePolicy().hasHeightForWidth())
self.btn_cartellasorg.setSizePolicy(sizePolicy)
icon1 = QtGui.QIcon()
icon1.addPixmap(QtGui.QPixmap(":/ico/icons/icons8-add-folder-80.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.btn_cartellasorg.setIcon(icon1)
self.btn_cartellasorg.setIconSize(QtCore.QSize(30, 30))
self.btn_cartellasorg.setFlat(True)
self.btn_cartellasorg.setObjectName("btn_cartellasorg")
self.verticalLayout_2.addWidget(self.btn_cartellasorg)
self.btn_cartelladest = QtWidgets.QPushButton(self.wgt_mainPage1)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.btn_cartelladest.sizePolicy().hasHeightForWidth())
self.btn_cartelladest.setSizePolicy(sizePolicy)
icon2 = QtGui.QIcon()
icon2.addPixmap(QtGui.QPixmap(":/ico/icons/icons8-downloads-folder-80.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.btn_cartelladest.setIcon(icon2)
self.btn_cartelladest.setIconSize(QtCore.QSize(30, 30))
self.btn_cartelladest.setFlat(True)
self.btn_cartelladest.setObjectName("btn_cartelladest")
self.verticalLayout_2.addWidget(self.btn_cartelladest)
self.gridLayout.addLayout(self.verticalLayout_2, 0, 1, 1, 1)
self.verticalLayout = QtWidgets.QVBoxLayout()
self.verticalLayout.setObjectName("verticalLayout")
self.lbl_cartellasorg = QtWidgets.QLabel(self.wgt_mainPage1)
font = QtGui.QFont()
font.setPointSize(10)
self.lbl_cartellasorg.setFont(font)
self.lbl_cartellasorg.setObjectName("lbl_cartellasorg")
self.verticalLayout.addWidget(self.lbl_cartellasorg)
self.lbl_cartelladest = QtWidgets.QLabel(self.wgt_mainPage1)
font = QtGui.QFont()
font.setPointSize(10)
self.lbl_cartelladest.setFont(font)
self.lbl_cartelladest.setObjectName("lbl_cartelladest")
self.verticalLayout.addWidget(self.lbl_cartelladest)
self.gridLayout.addLayout(self.verticalLayout, 0, 0, 1, 1)
self.verticalLayout_4 = QtWidgets.QVBoxLayout()
self.verticalLayout_4.setObjectName("verticalLayout_4")
self.lbl_sorg = QtWidgets.QLabel(self.wgt_mainPage1)
self.lbl_sorg.setObjectName("lbl_sorg")
self.verticalLayout_4.addWidget(self.lbl_sorg)
self.lbl_dest = QtWidgets.QLabel(self.wgt_mainPage1)
self.lbl_dest.setObjectName("lbl_dest")
self.verticalLayout_4.addWidget(self.lbl_dest)
self.gridLayout.addLayout(self.verticalLayout_4, 0, 2, 1, 1)
spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.gridLayout.addItem(spacerItem2, 0, 3, 1, 1)
self.line = QtWidgets.QFrame(self.wgt_mainPage1)
self.line.setFrameShape(QtWidgets.QFrame.HLine)
self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line.setObjectName("line")
self.gridLayout.addWidget(self.line, 1, 0, 1, 4)
self.label = QtWidgets.QLabel(self.wgt_mainPage1)
font = QtGui.QFont()
font.setPointSize(11)
font.setBold(True)
font.setWeight(75)
self.label.setFont(font)
self.label.setAlignment(QtCore.Qt.AlignCenter)
self.label.setObjectName("label")
self.gridLayout.addWidget(self.label, 2, 0, 1, 4)
self.lst_files = QtWidgets.QListWidget(self.wgt_mainPage1)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.lst_files.sizePolicy().hasHeightForWidth())
self.lst_files.setSizePolicy(sizePolicy)
self.lst_files.setMinimumSize(QtCore.QSize(0, 180))
self.lst_files.setObjectName("lst_files")
self.gridLayout.addWidget(self.lst_files, 3, 0, 1, 4)
self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.label_2 = QtWidgets.QLabel(self.wgt_mainPage1)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_2.sizePolicy().hasHeightForWidth())
self.label_2.setSizePolicy(sizePolicy)
self.label_2.setObjectName("label_2")
self.horizontalLayout_2.addWidget(self.label_2)
self.rad_fileNew = QtWidgets.QRadioButton(self.wgt_mainPage1)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.rad_fileNew.sizePolicy().hasHeightForWidth())
self.rad_fileNew.setSizePolicy(sizePolicy)
self.rad_fileNew.setChecked(True)
self.rad_fileNew.setObjectName("rad_fileNew")
self.horizontalLayout_2.addWidget(self.rad_fileNew)
self.rad_fileOld = QtWidgets.QRadioButton(self.wgt_mainPage1)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.rad_fileOld.sizePolicy().hasHeightForWidth())
self.rad_fileOld.setSizePolicy(sizePolicy)
self.rad_fileOld.setObjectName("rad_fileOld")
self.horizontalLayout_2.addWidget(self.rad_fileOld)
self.btn_avanti = QtWidgets.QPushButton(self.wgt_mainPage1)
self.btn_avanti.setMinimumSize(QtCore.QSize(100, 40))
self.btn_avanti.setMaximumSize(QtCore.QSize(80, 16777215))
font = QtGui.QFont()
font.setPointSize(11)
self.btn_avanti.setFont(font)
self.btn_avanti.setLayoutDirection(QtCore.Qt.LeftToRight)
icon3 = QtGui.QIcon()
icon3.addPixmap(QtGui.QPixmap(":/ico/icons/icons8-arrow-80.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.btn_avanti.setIcon(icon3)
self.btn_avanti.setIconSize(QtCore.QSize(25, 25))
self.btn_avanti.setFlat(False)
self.btn_avanti.setObjectName("btn_avanti")
self.horizontalLayout_2.addWidget(self.btn_avanti)
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)
mainwin.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(mainwin)
self.menubar.setGeometry(QtCore.QRect(0, 0, 680, 26))
self.menubar.setNativeMenuBar(True)
self.menubar.setObjectName("menubar")
self.bar_file = QtWidgets.QMenu(self.menubar)
self.bar_file.setObjectName("bar_file")
self.menuOpzioni = QtWidgets.QMenu(self.menubar)
self.menuOpzioni.setObjectName("menuOpzioni")
self.menuAbout = QtWidgets.QMenu(self.menubar)
self.menuAbout.setObjectName("menuAbout")
mainwin.setMenuBar(self.menubar)
self.actionCarica_Preset = QtWidgets.QAction(mainwin)
icon4 = QtGui.QIcon()
icon4.addPixmap(QtGui.QPixmap(":/ico/icons/icons8-documents-folder-80.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.actionCarica_Preset.setIcon(icon4)
self.actionCarica_Preset.setIconVisibleInMenu(True)
self.actionCarica_Preset.setObjectName("actionCarica_Preset")
self.actionSalva_Preset = QtWidgets.QAction(mainwin)
icon5 = QtGui.QIcon()
icon5.addPixmap(QtGui.QPixmap(":/ico/icons/icons8-save-80.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.actionSalva_Preset.setIcon(icon5)
self.actionSalva_Preset.setObjectName("actionSalva_Preset")
self.actionOpzioni = QtWidgets.QAction(mainwin)
self.actionOpzioni.setObjectName("actionOpzioni")
self.actionLingua = QtWidgets.QAction(mainwin)
self.actionLingua.setEnabled(True)
icon6 = QtGui.QIcon()
icon6.addPixmap(QtGui.QPixmap(":/ico/icons/icons8-globe-earth-80.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.actionLingua.setIcon(icon6)
self.actionLingua.setObjectName("actionLingua")
self.actionAvanzate = QtWidgets.QAction(mainwin)
icon7 = QtGui.QIcon()
icon7.addPixmap(QtGui.QPixmap(":/ico/icons/icons8-smartphone-ram-100.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.actionAvanzate.setIcon(icon7)
self.actionAvanzate.setObjectName("actionAvanzate")
self.actionManuale = QtWidgets.QAction(mainwin)
self.actionManuale.setEnabled(False)
icon8 = QtGui.QIcon()
icon8.addPixmap(QtGui.QPixmap(":/ico/icons/icons8-user-manual-80.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.actionManuale.setIcon(icon8)
self.actionManuale.setObjectName("actionManuale")
self.actionAbout_SPEx = QtWidgets.QAction(mainwin)
icon9 = QtGui.QIcon()
icon9.addPixmap(QtGui.QPixmap(":/ico/icons/icons8-info-80.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.actionAbout_SPEx.setIcon(icon9)
self.actionAbout_SPEx.setObjectName("actionAbout_SPEx")
self.bar_file.addAction(self.actionCarica_Preset)
self.bar_file.addAction(self.actionSalva_Preset)
self.menuOpzioni.addAction(self.actionAvanzate)
self.menuOpzioni.addAction(self.actionLingua)
self.menuAbout.addAction(self.actionAbout_SPEx)
self.menuAbout.addAction(self.actionManuale)
self.menubar.addAction(self.bar_file.menuAction())
self.menubar.addAction(self.menuOpzioni.menuAction())
self.menubar.addAction(self.menuAbout.menuAction())
self.retranslateUi(mainwin)
QtCore.QMetaObject.connectSlotsByName(mainwin)
def retranslateUi(self, mainwin):
_translate = QtCore.QCoreApplication.translate
mainwin.setWindowTitle(_translate("mainwin", "12parsec - SPEx"))
self.label_4.setText(_translate("mainwin", "Finestra dei messaggi"))
self.label_3.setText(_translate("mainwin", "Preset corrente: "))
self.lbl_preset.setText(_translate("mainwin", "..."))
self.txt_log.setHtml(_translate("mainwin", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'MS Shell Dlg 2\'; font-size:6.6pt; font-weight:400; font-style:normal;\">\n"
"<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:7pt;\"><br /></p></body></html>"))
self.btn_cartellasorg.setText(_translate("mainwin", "-> "))
self.btn_cartelladest.setText(_translate("mainwin", "-> "))
self.lbl_cartellasorg.setText(_translate("mainwin", "Cartella sorgente"))
self.lbl_cartelladest.setText(_translate("mainwin", "Cartella destinazione"))
self.lbl_sorg.setText(_translate("mainwin", "..."))
self.lbl_dest.setText(_translate("mainwin", "..."))
self.label.setText(_translate("mainwin", "File disponibili per la conversione"))
self.label_2.setText(_translate("mainwin", "Versione dei File"))
self.rad_fileNew.setText(_translate("mainwin", "Nuova"))
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", "Selezione Input"))
self.bar_file.setTitle(_translate("mainwin", "File"))
self.menuOpzioni.setTitle(_translate("mainwin", "Opzioni"))
self.menuAbout.setTitle(_translate("mainwin", "Help"))
self.actionCarica_Preset.setText(_translate("mainwin", "Carica Preset"))
self.actionSalva_Preset.setText(_translate("mainwin", "Salva Preset"))
self.actionOpzioni.setText(_translate("mainwin", "Opzioni"))
self.actionLingua.setText(_translate("mainwin", "Lingua Interfaccia"))
self.actionAvanzate.setText(_translate("mainwin", "Avanzate"))
self.actionManuale.setText(_translate("mainwin", "Manuale"))
self.actionAbout_SPEx.setText(_translate("mainwin", "About SPEx"))
import resources_rc
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,222 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'selezout.ui'
#
# Created by: PyQt5 UI code generator 5.12.1
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_selezout(object):
def setupUi(self, selezout):
selezout.setObjectName("selezout")
selezout.resize(718, 573)
self.verticalLayout_2 = QtWidgets.QVBoxLayout(selezout)
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.lbl_lingua = QtWidgets.QLabel(selezout)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.lbl_lingua.sizePolicy().hasHeightForWidth())
self.lbl_lingua.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setPointSize(10)
self.lbl_lingua.setFont(font)
self.lbl_lingua.setObjectName("lbl_lingua")
self.verticalLayout_2.addWidget(self.lbl_lingua)
self.line_2 = QtWidgets.QFrame(selezout)
self.line_2.setFrameShape(QtWidgets.QFrame.HLine)
self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_2.setObjectName("line_2")
self.verticalLayout_2.addWidget(self.line_2)
self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
self.cmb_lingua = QtWidgets.QComboBox(selezout)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.cmb_lingua.sizePolicy().hasHeightForWidth())
self.cmb_lingua.setSizePolicy(sizePolicy)
self.cmb_lingua.setFrame(True)
self.cmb_lingua.setModelColumn(0)
self.cmb_lingua.setObjectName("cmb_lingua")
self.horizontalLayout_3.addWidget(self.cmb_lingua)
spacerItem = QtWidgets.QSpacerItem(40, 0, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_3.addItem(spacerItem)
self.verticalLayout_2.addLayout(self.horizontalLayout_3)
self.lbl_indicazioni = QtWidgets.QLabel(selezout)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.lbl_indicazioni.sizePolicy().hasHeightForWidth())
self.lbl_indicazioni.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setPointSize(10)
self.lbl_indicazioni.setFont(font)
self.lbl_indicazioni.setObjectName("lbl_indicazioni")
self.verticalLayout_2.addWidget(self.lbl_indicazioni)
self.line = QtWidgets.QFrame(selezout)
self.line.setFrameShape(QtWidgets.QFrame.HLine)
self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line.setObjectName("line")
self.verticalLayout_2.addWidget(self.line)
self.verticalLayout = QtWidgets.QVBoxLayout()
self.verticalLayout.setSizeConstraint(QtWidgets.QLayout.SetMaximumSize)
self.verticalLayout.setObjectName("verticalLayout")
self.rad_mainbodyEFile = QtWidgets.QRadioButton(selezout)
font = QtGui.QFont()
font.setPointSize(10)
self.rad_mainbodyEFile.setFont(font)
self.rad_mainbodyEFile.setChecked(True)
self.rad_mainbodyEFile.setObjectName("rad_mainbodyEFile")
self.verticalLayout.addWidget(self.rad_mainbodyEFile)
self.rad_mainbody = QtWidgets.QRadioButton(selezout)
font = QtGui.QFont()
font.setPointSize(10)
self.rad_mainbody.setFont(font)
self.rad_mainbody.setObjectName("rad_mainbody")
self.verticalLayout.addWidget(self.rad_mainbody)
self.rad_file = QtWidgets.QRadioButton(selezout)
font = QtGui.QFont()
font.setPointSize(10)
self.rad_file.setFont(font)
self.rad_file.setObjectName("rad_file")
self.verticalLayout.addWidget(self.rad_file)
self.verticalLayout_2.addLayout(self.verticalLayout)
self.lbl_indicazioni_2 = QtWidgets.QLabel(selezout)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.lbl_indicazioni_2.sizePolicy().hasHeightForWidth())
self.lbl_indicazioni_2.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setPointSize(10)
self.lbl_indicazioni_2.setFont(font)
self.lbl_indicazioni_2.setObjectName("lbl_indicazioni_2")
self.verticalLayout_2.addWidget(self.lbl_indicazioni_2)
self.line_3 = QtWidgets.QFrame(selezout)
self.line_3.setFrameShape(QtWidgets.QFrame.HLine)
self.line_3.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_3.setObjectName("line_3")
self.verticalLayout_2.addWidget(self.line_3)
self.gridLayout = QtWidgets.QGridLayout()
self.gridLayout.setObjectName("gridLayout")
self.chk_removeDuplicates = QtWidgets.QCheckBox(selezout)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.chk_removeDuplicates.sizePolicy().hasHeightForWidth())
self.chk_removeDuplicates.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setPointSize(10)
self.chk_removeDuplicates.setFont(font)
self.chk_removeDuplicates.setObjectName("chk_removeDuplicates")
self.gridLayout.addWidget(self.chk_removeDuplicates, 0, 0, 1, 1)
self.chk_includeTitle = QtWidgets.QCheckBox(selezout)
font = QtGui.QFont()
font.setPointSize(10)
self.chk_includeTitle.setFont(font)
self.chk_includeTitle.setObjectName("chk_includeTitle")
self.gridLayout.addWidget(self.chk_includeTitle, 0, 1, 1, 1)
self.chk_removeBreakWord = QtWidgets.QCheckBox(selezout)
font = QtGui.QFont()
font.setPointSize(10)
self.chk_removeBreakWord.setFont(font)
self.chk_removeBreakWord.setObjectName("chk_removeBreakWord")
self.gridLayout.addWidget(self.chk_removeBreakWord, 1, 0, 1, 1)
self.chk_cleaDestFolder = QtWidgets.QCheckBox(selezout)
font = QtGui.QFont()
font.setPointSize(10)
self.chk_cleaDestFolder.setFont(font)
self.chk_cleaDestFolder.setObjectName("chk_cleaDestFolder")
self.gridLayout.addWidget(self.chk_cleaDestFolder, 1, 1, 1, 1)
self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setObjectName("horizontalLayout")
self.label = QtWidgets.QLabel(selezout)
font = QtGui.QFont()
font.setPointSize(10)
self.label.setFont(font)
self.label.setObjectName("label")
self.horizontalLayout.addWidget(self.label)
self.lin_specialChars = QtWidgets.QLineEdit(selezout)
self.lin_specialChars.setObjectName("lin_specialChars")
self.horizontalLayout.addWidget(self.lin_specialChars)
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout.addItem(spacerItem1)
self.gridLayout.addLayout(self.horizontalLayout, 2, 0, 1, 2)
self.verticalLayout_2.addLayout(self.gridLayout)
spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout_2.addItem(spacerItem2)
self.line_4 = QtWidgets.QFrame(selezout)
self.line_4.setFrameShape(QtWidgets.QFrame.HLine)
self.line_4.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_4.setObjectName("line_4")
self.verticalLayout_2.addWidget(self.line_4)
self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.btn_indietro = QtWidgets.QPushButton(selezout)
self.btn_indietro.setMinimumSize(QtCore.QSize(100, 40))
self.btn_indietro.setMaximumSize(QtCore.QSize(75, 16777215))
font = QtGui.QFont()
font.setPointSize(11)
self.btn_indietro.setFont(font)
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap(":/ico/icons/icons8-arrow-80-back.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.btn_indietro.setIcon(icon)
self.btn_indietro.setIconSize(QtCore.QSize(25, 25))
self.btn_indietro.setObjectName("btn_indietro")
self.horizontalLayout_2.addWidget(self.btn_indietro)
spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_2.addItem(spacerItem3)
self.btn_split = QtWidgets.QPushButton(selezout)
self.btn_split.setMinimumSize(QtCore.QSize(100, 0))
self.btn_split.setMaximumSize(QtCore.QSize(16777215, 40))
font = QtGui.QFont()
font.setPointSize(12)
self.btn_split.setFont(font)
self.btn_split.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
self.btn_split.setLayoutDirection(QtCore.Qt.LeftToRight)
self.btn_split.setAutoFillBackground(False)
icon1 = QtGui.QIcon()
icon1.addPixmap(QtGui.QPixmap(":/ico/icons/logo4.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.btn_split.setIcon(icon1)
self.btn_split.setIconSize(QtCore.QSize(40, 40))
self.btn_split.setFlat(False)
self.btn_split.setObjectName("btn_split")
self.horizontalLayout_2.addWidget(self.btn_split)
self.verticalLayout_2.addLayout(self.horizontalLayout_2)
self.retranslateUi(selezout)
QtCore.QMetaObject.connectSlotsByName(selezout)
selezout.setTabOrder(self.cmb_lingua, self.rad_mainbodyEFile)
selezout.setTabOrder(self.rad_mainbodyEFile, self.rad_mainbody)
selezout.setTabOrder(self.rad_mainbody, self.rad_file)
selezout.setTabOrder(self.rad_file, self.chk_removeDuplicates)
selezout.setTabOrder(self.chk_removeDuplicates, self.chk_includeTitle)
selezout.setTabOrder(self.chk_includeTitle, self.chk_removeBreakWord)
selezout.setTabOrder(self.chk_removeBreakWord, self.chk_cleaDestFolder)
selezout.setTabOrder(self.chk_cleaDestFolder, self.lin_specialChars)
selezout.setTabOrder(self.lin_specialChars, self.btn_split)
selezout.setTabOrder(self.btn_split, self.btn_indietro)
def retranslateUi(self, selezout):
_translate = QtCore.QCoreApplication.translate
selezout.setWindowTitle(_translate("selezout", "Seleziona Linuga e Output"))
self.lbl_lingua.setText(_translate("selezout", "Seleziona la lingua degli articoli"))
self.lbl_indicazioni.setText(_translate("selezout", "Seleziona il tipo di file da salvare"))
self.rad_mainbodyEFile.setText(_translate("selezout", "Bodyfile + File singoli"))
self.rad_mainbody.setText(_translate("selezout", "Bodyfile"))
self.rad_file.setText(_translate("selezout", "File singoli"))
self.lbl_indicazioni_2.setText(_translate("selezout", "Altre Opzioni "))
self.chk_removeDuplicates.setText(_translate("selezout", "Tenta rimozione duplicati"))
self.chk_includeTitle.setText(_translate("selezout", "Includi titolo all\'interno del file"))
self.chk_removeBreakWord.setText(_translate("selezout", "Rimuovi interruzioni parola (a capo)"))
self.chk_cleaDestFolder.setText(_translate("selezout", "Svuota cartella di destinazione"))
self.label.setText(_translate("selezout", "Caratteri speciali da rimuovere "))
self.btn_indietro.setText(_translate("selezout", "Indietro"))
self.btn_split.setText(_translate("selezout", "SPLITTA!"))
import resources_rc
@@ -0,0 +1,340 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'titolow.ui'
#
# Created by: PyQt5 UI code generator 5.12.1
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_titolo(object):
def setupUi(self, titolo):
titolo.setObjectName("titolo")
titolo.resize(715, 567)
self.gridLayout = QtWidgets.QGridLayout(titolo)
self.gridLayout.setObjectName("gridLayout")
self.lyt_nchars = QtWidgets.QHBoxLayout()
self.lyt_nchars.setSizeConstraint(QtWidgets.QLayout.SetNoConstraint)
self.lyt_nchars.setObjectName("lyt_nchars")
self.lbl_ncarat = QtWidgets.QLabel(titolo)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.lbl_ncarat.sizePolicy().hasHeightForWidth())
self.lbl_ncarat.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setPointSize(9)
self.lbl_ncarat.setFont(font)
self.lbl_ncarat.setObjectName("lbl_ncarat")
self.lyt_nchars.addWidget(self.lbl_ncarat)
self.spn_ncarat = QtWidgets.QSpinBox(titolo)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.spn_ncarat.sizePolicy().hasHeightForWidth())
self.spn_ncarat.setSizePolicy(sizePolicy)
self.spn_ncarat.setMinimumSize(QtCore.QSize(50, 0))
self.spn_ncarat.setWrapping(True)
self.spn_ncarat.setButtonSymbols(QtWidgets.QAbstractSpinBox.UpDownArrows)
self.spn_ncarat.setMinimum(3)
self.spn_ncarat.setMaximum(32)
self.spn_ncarat.setObjectName("spn_ncarat")
self.lyt_nchars.addWidget(self.spn_ncarat)
spacerItem = QtWidgets.QSpacerItem(40, 0, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.lyt_nchars.addItem(spacerItem)
self.gridLayout.addLayout(self.lyt_nchars, 5, 0, 1, 3)
self.line_3 = QtWidgets.QFrame(titolo)
self.line_3.setFrameShape(QtWidgets.QFrame.HLine)
self.line_3.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_3.setObjectName("line_3")
self.gridLayout.addWidget(self.line_3, 7, 0, 1, 3)
self.line = QtWidgets.QFrame(titolo)
self.line.setFrameShape(QtWidgets.QFrame.HLine)
self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line.setObjectName("line")
self.gridLayout.addWidget(self.line, 1, 0, 1, 3)
self.lyt_buttons = QtWidgets.QHBoxLayout()
self.lyt_buttons.setObjectName("lyt_buttons")
self.btn_avanzate = QtWidgets.QPushButton(titolo)
self.btn_avanzate.setMinimumSize(QtCore.QSize(120, 40))
font = QtGui.QFont()
font.setPointSize(11)
self.btn_avanzate.setFont(font)
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap(":/ico/icons/icons8-smartphone-ram-100.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.btn_avanzate.setIcon(icon)
self.btn_avanzate.setIconSize(QtCore.QSize(30, 30))
self.btn_avanzate.setObjectName("btn_avanzate")
self.lyt_buttons.addWidget(self.btn_avanzate)
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.lyt_buttons.addItem(spacerItem1)
self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.btn_indietro = QtWidgets.QPushButton(titolo)
self.btn_indietro.setMinimumSize(QtCore.QSize(100, 40))
font = QtGui.QFont()
font.setPointSize(11)
self.btn_indietro.setFont(font)
icon1 = QtGui.QIcon()
icon1.addPixmap(QtGui.QPixmap(":/ico/icons/icons8-arrow-80-back.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.btn_indietro.setIcon(icon1)
self.btn_indietro.setIconSize(QtCore.QSize(25, 25))
self.btn_indietro.setObjectName("btn_indietro")
self.horizontalLayout_2.addWidget(self.btn_indietro)
self.btn_avanti = QtWidgets.QPushButton(titolo)
self.btn_avanti.setMinimumSize(QtCore.QSize(100, 40))
font = QtGui.QFont()
font.setPointSize(11)
self.btn_avanti.setFont(font)
self.btn_avanti.setLayoutDirection(QtCore.Qt.LeftToRight)
icon2 = QtGui.QIcon()
icon2.addPixmap(QtGui.QPixmap(":/ico/icons/icons8-arrow-80.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.btn_avanti.setIcon(icon2)
self.btn_avanti.setIconSize(QtCore.QSize(25, 25))
self.btn_avanti.setObjectName("btn_avanti")
self.horizontalLayout_2.addWidget(self.btn_avanti)
self.lyt_buttons.addLayout(self.horizontalLayout_2)
self.gridLayout.addLayout(self.lyt_buttons, 15, 0, 1, 3)
self.lyt_date = QtWidgets.QVBoxLayout()
self.lyt_date.setObjectName("lyt_date")
self.rad_datajpn = QtWidgets.QRadioButton(titolo)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.rad_datajpn.sizePolicy().hasHeightForWidth())
self.rad_datajpn.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setPointSize(9)
self.rad_datajpn.setFont(font)
self.rad_datajpn.setChecked(True)
self.rad_datajpn.setObjectName("rad_datajpn")
self.lyt_date.addWidget(self.rad_datajpn)
self.rad_dataita = QtWidgets.QRadioButton(titolo)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.rad_dataita.sizePolicy().hasHeightForWidth())
self.rad_dataita.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setPointSize(9)
self.rad_dataita.setFont(font)
self.rad_dataita.setObjectName("rad_dataita")
self.lyt_date.addWidget(self.rad_dataita)
self.rad_datausa = QtWidgets.QRadioButton(titolo)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.rad_datausa.sizePolicy().hasHeightForWidth())
self.rad_datausa.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setPointSize(9)
self.rad_datausa.setFont(font)
self.rad_datausa.setObjectName("rad_datausa")
self.lyt_date.addWidget(self.rad_datausa)
self.gridLayout.addLayout(self.lyt_date, 3, 0, 1, 3)
self.lbl_impotit = QtWidgets.QLabel(titolo)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.lbl_impotit.sizePolicy().hasHeightForWidth())
self.lbl_impotit.setSizePolicy(sizePolicy)
self.lbl_impotit.setMinimumSize(QtCore.QSize(0, 0))
font = QtGui.QFont()
font.setPointSize(10)
self.lbl_impotit.setFont(font)
self.lbl_impotit.setObjectName("lbl_impotit")
self.gridLayout.addWidget(self.lbl_impotit, 0, 0, 1, 3)
self.chk_data = QtWidgets.QCheckBox(titolo)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.chk_data.sizePolicy().hasHeightForWidth())
self.chk_data.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setPointSize(10)
self.chk_data.setFont(font)
self.chk_data.setObjectName("chk_data")
self.gridLayout.addWidget(self.chk_data, 2, 0, 1, 1)
spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.gridLayout.addItem(spacerItem2, 9, 1, 1, 1)
self.chk_titolo = QtWidgets.QCheckBox(titolo)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.chk_titolo.sizePolicy().hasHeightForWidth())
self.chk_titolo.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setPointSize(10)
self.chk_titolo.setFont(font)
self.chk_titolo.setObjectName("chk_titolo")
self.gridLayout.addWidget(self.chk_titolo, 4, 0, 1, 2)
self.lyt_sep = QtWidgets.QFormLayout()
self.lyt_sep.setObjectName("lyt_sep")
self.rad_spazio = QtWidgets.QRadioButton(titolo)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.rad_spazio.sizePolicy().hasHeightForWidth())
self.rad_spazio.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setPointSize(9)
self.rad_spazio.setFont(font)
self.rad_spazio.setObjectName("rad_spazio")
self.btngrp_divisore = QtWidgets.QButtonGroup(titolo)
self.btngrp_divisore.setObjectName("btngrp_divisore")
self.btngrp_divisore.addButton(self.rad_spazio)
self.lyt_sep.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.rad_spazio)
self.rad_virgola = QtWidgets.QRadioButton(titolo)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.rad_virgola.sizePolicy().hasHeightForWidth())
self.rad_virgola.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setPointSize(9)
self.rad_virgola.setFont(font)
self.rad_virgola.setObjectName("rad_virgola")
self.btngrp_divisore.addButton(self.rad_virgola)
self.lyt_sep.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.rad_virgola)
self.rad_piu = QtWidgets.QRadioButton(titolo)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.rad_piu.sizePolicy().hasHeightForWidth())
self.rad_piu.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setPointSize(9)
self.rad_piu.setFont(font)
self.rad_piu.setObjectName("rad_piu")
self.btngrp_divisore.addButton(self.rad_piu)
self.lyt_sep.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.rad_piu)
self.rad_tratt = QtWidgets.QRadioButton(titolo)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.rad_tratt.sizePolicy().hasHeightForWidth())
self.rad_tratt.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setPointSize(9)
self.rad_tratt.setFont(font)
self.rad_tratt.setObjectName("rad_tratt")
self.btngrp_divisore.addButton(self.rad_tratt)
self.lyt_sep.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.rad_tratt)
self.rad_trattbass = QtWidgets.QRadioButton(titolo)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.rad_trattbass.sizePolicy().hasHeightForWidth())
self.rad_trattbass.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setPointSize(9)
self.rad_trattbass.setFont(font)
self.rad_trattbass.setObjectName("rad_trattbass")
self.btngrp_divisore.addButton(self.rad_trattbass)
self.lyt_sep.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.rad_trattbass)
self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
self.rad_altro = QtWidgets.QRadioButton(titolo)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.rad_altro.sizePolicy().hasHeightForWidth())
self.rad_altro.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setPointSize(9)
self.rad_altro.setFont(font)
self.rad_altro.setObjectName("rad_altro")
self.btngrp_divisore.addButton(self.rad_altro)
self.horizontalLayout_4.addWidget(self.rad_altro)
self.lin_altro = QtWidgets.QLineEdit(titolo)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.lin_altro.sizePolicy().hasHeightForWidth())
self.lin_altro.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setPointSize(9)
self.lin_altro.setFont(font)
self.lin_altro.setText("")
self.lin_altro.setObjectName("lin_altro")
self.horizontalLayout_4.addWidget(self.lin_altro)
spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_4.addItem(spacerItem3)
self.lyt_sep.setLayout(2, QtWidgets.QFormLayout.FieldRole, self.horizontalLayout_4)
self.gridLayout.addLayout(self.lyt_sep, 9, 0, 1, 1)
self.label = QtWidgets.QLabel(titolo)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth())
self.label.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setPointSize(10)
self.label.setFont(font)
self.label.setObjectName("label")
self.gridLayout.addWidget(self.label, 8, 0, 1, 2)
self.line_2 = QtWidgets.QFrame(titolo)
self.line_2.setFrameShape(QtWidgets.QFrame.HLine)
self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_2.setObjectName("line_2")
self.gridLayout.addWidget(self.line_2, 14, 0, 1, 3)
self.chk_docnum = QtWidgets.QCheckBox(titolo)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.chk_docnum.sizePolicy().hasHeightForWidth())
self.chk_docnum.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setPointSize(10)
self.chk_docnum.setFont(font)
self.chk_docnum.setChecked(True)
self.chk_docnum.setObjectName("chk_docnum")
self.gridLayout.addWidget(self.chk_docnum, 6, 0, 1, 2)
spacerItem4 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.gridLayout.addItem(spacerItem4, 13, 0, 1, 1)
self.retranslateUi(titolo)
QtCore.QMetaObject.connectSlotsByName(titolo)
titolo.setTabOrder(self.chk_data, self.rad_datajpn)
titolo.setTabOrder(self.rad_datajpn, self.rad_dataita)
titolo.setTabOrder(self.rad_dataita, self.rad_datausa)
titolo.setTabOrder(self.rad_datausa, self.chk_titolo)
titolo.setTabOrder(self.chk_titolo, self.spn_ncarat)
titolo.setTabOrder(self.spn_ncarat, self.chk_docnum)
titolo.setTabOrder(self.chk_docnum, self.rad_spazio)
titolo.setTabOrder(self.rad_spazio, self.rad_tratt)
titolo.setTabOrder(self.rad_tratt, self.rad_virgola)
titolo.setTabOrder(self.rad_virgola, self.rad_trattbass)
titolo.setTabOrder(self.rad_trattbass, self.rad_piu)
titolo.setTabOrder(self.rad_piu, self.rad_altro)
titolo.setTabOrder(self.rad_altro, self.lin_altro)
titolo.setTabOrder(self.lin_altro, self.btn_avanzate)
titolo.setTabOrder(self.btn_avanzate, self.btn_avanti)
titolo.setTabOrder(self.btn_avanti, self.btn_indietro)
def retranslateUi(self, titolo):
_translate = QtCore.QCoreApplication.translate
titolo.setWindowTitle(_translate("titolo", "Nomi file di Uscita"))
self.lbl_ncarat.setText(_translate("titolo", "Numero di caratteri"))
self.btn_avanzate.setText(_translate("titolo", "Opzioni Avanzate (Titolo)"))
self.btn_indietro.setText(_translate("titolo", "Indietro"))
self.btn_avanti.setText(_translate("titolo", "Avanti"))
self.rad_datajpn.setText(_translate("titolo", "YYYY MM DD, es. 2000 12 31 (jpn)"))
self.rad_dataita.setText(_translate("titolo", "DD MM YYYY, es. 31 12 2000 (ita)"))
self.rad_datausa.setText(_translate("titolo", "MM DD YYYY, es. 12 31 2000 (us)"))
self.lbl_impotit.setText(_translate("titolo", "Impostazioni nome file in uscita"))
self.chk_data.setText(_translate("titolo", "Data"))
self.chk_titolo.setText(_translate("titolo", "Titolo articolo"))
self.rad_spazio.setText(_translate("titolo", "Spazio"))
self.rad_virgola.setText(_translate("titolo", ","))
self.rad_piu.setText(_translate("titolo", "+"))
self.rad_tratt.setText(_translate("titolo", "-"))
self.rad_trattbass.setText(_translate("titolo", "_"))
self.rad_altro.setText(_translate("titolo", "Altro:"))
self.label.setText(_translate("titolo", "Separatore"))
self.chk_docnum.setText(_translate("titolo", "Numero documento"))
import resources_rc
+533
View File
@@ -0,0 +1,533 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>mainwin</class>
<widget class="QMainWindow" name="mainwin">
<property name="enabled">
<bool>true</bool>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>680</width>
<height>620</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>MS Shell Dlg 2</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="windowTitle">
<string>12parsec - SPEx</string>
</property>
<property name="windowIcon">
<iconset resource="resources/resources.qrc">
<normaloff>:/ico/icons/logo2.png</normaloff>:/ico/icons/logo2.png</iconset>
</property>
<property name="animated">
<bool>false</bool>
</property>
<property name="dockOptions">
<set>QMainWindow::AllowTabbedDocks</set>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QGridLayout" name="gridLayout_2">
<item row="2" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLabel" name="label_4">
<property name="font">
<font>
<pointsize>11</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Finestra dei messaggi</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="label_3">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Preset corrente: </string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lbl_preset">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item row="4" column="0">
<widget class="QTextEdit" name="txt_log">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>100</height>
</size>
</property>
<property name="acceptDrops">
<bool>false</bool>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(0,0,0);</string>
</property>
<property name="html">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:6.6pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot;-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:7pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="textInteractionFlags">
<set>Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QTabWidget" name="wgt_main">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<widget class="QWidget" name="wgt_mainPage1">
<attribute name="title">
<string>Selezione Input</string>
</attribute>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="1">
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="sizeConstraint">
<enum>QLayout::SetMinimumSize</enum>
</property>
<item>
<widget class="QPushButton" name="btn_cartellasorg">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>-&gt; </string>
</property>
<property name="icon">
<iconset resource="resources/resources.qrc">
<normaloff>:/ico/icons/icons8-add-folder-80.png</normaloff>:/ico/icons/icons8-add-folder-80.png</iconset>
</property>
<property name="iconSize">
<size>
<width>30</width>
<height>30</height>
</size>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btn_cartelladest">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>-&gt; </string>
</property>
<property name="icon">
<iconset resource="resources/resources.qrc">
<normaloff>:/ico/icons/icons8-downloads-folder-80.png</normaloff>:/ico/icons/icons8-downloads-folder-80.png</iconset>
</property>
<property name="iconSize">
<size>
<width>30</width>
<height>30</height>
</size>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
<item row="0" column="0">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="lbl_cartellasorg">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Cartella sorgente</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lbl_cartelladest">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Cartella destinazione</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="0" column="2">
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QLabel" name="lbl_sorg">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lbl_dest">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="0" column="3">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="0" colspan="4">
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="2" column="0" colspan="4">
<widget class="QLabel" name="label">
<property name="font">
<font>
<pointsize>11</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>File disponibili per la conversione</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="3" column="0" colspan="4">
<widget class="QListWidget" name="lst_files">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>180</height>
</size>
</property>
</widget>
</item>
<item row="4" column="0" colspan="4">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="label_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Versione dei File</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="rad_fileNew">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Nuova</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="rad_fileOld">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Vecchia</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btn_avanti">
<property name="minimumSize">
<size>
<width>100</width>
<height>40</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>80</width>
<height>16777215</height>
</size>
</property>
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<property name="text">
<string>Avanti</string>
</property>
<property name="icon">
<iconset resource="resources/resources.qrc">
<normaloff>:/ico/icons/icons8-arrow-80.png</normaloff>:/ico/icons/icons8-arrow-80.png</iconset>
</property>
<property name="iconSize">
<size>
<width>25</width>
<height>25</height>
</size>
</property>
<property name="flat">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>680</width>
<height>26</height>
</rect>
</property>
<property name="nativeMenuBar">
<bool>true</bool>
</property>
<widget class="QMenu" name="bar_file">
<property name="title">
<string>File</string>
</property>
<addaction name="actionCarica_Preset"/>
<addaction name="actionSalva_Preset"/>
</widget>
<widget class="QMenu" name="menuOpzioni">
<property name="title">
<string>Opzioni</string>
</property>
<addaction name="actionAvanzate"/>
<addaction name="actionLingua"/>
</widget>
<widget class="QMenu" name="menuAbout">
<property name="title">
<string>Help</string>
</property>
<addaction name="actionAbout_SPEx"/>
<addaction name="actionManuale"/>
</widget>
<addaction name="bar_file"/>
<addaction name="menuOpzioni"/>
<addaction name="menuAbout"/>
</widget>
<action name="actionCarica_Preset">
<property name="icon">
<iconset resource="resources/resources.qrc">
<normaloff>:/ico/icons/icons8-documents-folder-80.png</normaloff>:/ico/icons/icons8-documents-folder-80.png</iconset>
</property>
<property name="text">
<string>Carica Preset</string>
</property>
<property name="iconVisibleInMenu">
<bool>true</bool>
</property>
</action>
<action name="actionSalva_Preset">
<property name="icon">
<iconset resource="resources/resources.qrc">
<normaloff>:/ico/icons/icons8-save-80.png</normaloff>:/ico/icons/icons8-save-80.png</iconset>
</property>
<property name="text">
<string>Salva Preset</string>
</property>
</action>
<action name="actionOpzioni">
<property name="text">
<string>Opzioni</string>
</property>
</action>
<action name="actionLingua">
<property name="enabled">
<bool>true</bool>
</property>
<property name="icon">
<iconset resource="resources/resources.qrc">
<normaloff>:/ico/icons/icons8-globe-earth-80.png</normaloff>:/ico/icons/icons8-globe-earth-80.png</iconset>
</property>
<property name="text">
<string>Lingua Interfaccia</string>
</property>
</action>
<action name="actionAvanzate">
<property name="icon">
<iconset resource="resources/resources.qrc">
<normaloff>:/ico/icons/icons8-smartphone-ram-100.png</normaloff>:/ico/icons/icons8-smartphone-ram-100.png</iconset>
</property>
<property name="text">
<string>Avanzate</string>
</property>
</action>
<action name="actionManuale">
<property name="enabled">
<bool>false</bool>
</property>
<property name="icon">
<iconset resource="resources/resources.qrc">
<normaloff>:/ico/icons/icons8-user-manual-80.png</normaloff>:/ico/icons/icons8-user-manual-80.png</iconset>
</property>
<property name="text">
<string>Manuale</string>
</property>
</action>
<action name="actionAbout_SPEx">
<property name="icon">
<iconset resource="resources/resources.qrc">
<normaloff>:/ico/icons/icons8-info-80.png</normaloff>:/ico/icons/icons8-info-80.png</iconset>
</property>
<property name="text">
<string>About SPEx</string>
</property>
</action>
</widget>
<resources>
<include location="resources/resources.qrc"/>
</resources>
<connections/>
</ui>

Before

Width:  |  Height:  |  Size: 175 KiB

After

Width:  |  Height:  |  Size: 175 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 584 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 645 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 957 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 862 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

@@ -0,0 +1,208 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="Layer_1"
enable-background="new 0 0 128 128"
height="512"
viewBox="0 0 128 128"
width="512"
wtx-context="F86C4D92-0EC1-47EF-86DD-02B0FF6FC0F2"
version="1.1"
sodipodi:docname="logo.svg"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
inkscape:export-filename="D:\Emanuele\Desktop\logo.png"
inkscape:export-xdpi="16.113119"
inkscape:export-ydpi="16.113119">
<metadata
id="metadata3841">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs3839" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2048"
inkscape:window-height="1089"
id="namedview3837"
showgrid="false"
inkscape:zoom="1.65625"
inkscape:cx="166.98005"
inkscape:cy="273.36472"
inkscape:window-x="1912"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="layer4"
fit-margin-left="4"
fit-margin-right="4"
fit-margin-top="4"
fit-margin-bottom="4"
inkscape:showpageshadow="true"
borderlayer="false"
inkscape:pagecheckerboard="false" />
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="Base"
transform="translate(-3.0544992,13.8475)" />
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Layer 2"
style="display:inline"
transform="translate(-3.0544992,13.8475)" />
<g
inkscape:groupmode="layer"
id="layer4"
inkscape:label="cornice"
transform="translate(-3.0544992,13.8475)">
<g
id="g5072"
transform="matrix(1.0516192,0,0,1.0516192,-0.24913006,-17.151129)">
<g
transform="translate(2.0004992,2.0005)"
id="g3784"
style="fill:#b3b3b3">
<path
d="m 20.599,34.749 c -3.314,0 -6,2.686 -6,6 v 59.526 H 28.133 V 34.749 Z"
id="path3780"
inkscape:connector-curvature="0"
style="fill:#b3b3b3" />
<path
d="m 103.4,34.749 h -7.533 v 65.526 H 109.4 V 40.749 c 0,-3.314 -2.686,-6 -6,-6 z"
id="path3782"
inkscape:connector-curvature="0"
style="fill:#b3b3b3" />
</g>
<g
transform="translate(2.0004992,2.0005)"
id="g3790"
style="fill:#d4fbff">
<path
d="m 23.627,43.586 c -1.105,0 -2,0.895 -2,2 v 54.688 h 6.506 V 43.586 Z"
id="path3786"
inkscape:connector-curvature="0" />
<path
d="m 100.372,43.586 h -4.505 v 56.688 h 6.505 V 45.586 c 0,-1.105 -0.896,-2 -2,-2 z"
id="path3788"
inkscape:connector-curvature="0" />
</g>
<path
d="m 5.0544992,102.2745 v 3.933 c 0,3.283 2.662,5.945 5.9449998,5.945 H 116.9995 c 3.284,0 5.946,-2.662 5.946,-5.945 v -3.933 z"
id="path3792"
inkscape:connector-curvature="0"
style="fill:#b3b3b3" />
<path
d="m 44.948499,102.2745 v 1.991 c 0,1.662 1.347,3.009 3.009,3.009 h 32.083 c 1.662,0 3.01,-1.348 3.01,-3.009 v -1.991 z"
id="path3794"
inkscape:connector-curvature="0"
style="fill:#333333" />
<path
style="fill:#000000"
d="m 23.627499,88.7865 c 0.552,0 1,-0.447 1,-1 v -8.583 c 0,-0.553 -0.448,-1 -1,-1 -0.552,0 -1,0.447 -1,1 v 8.583 c 0,0.553 0.448,1 1,1 z"
id="path3812"
inkscape:connector-curvature="0" />
<g
transform="translate(2.0009982,2.0015)"
id="g4900"
style="display:inline">
<path
style="fill:#fff6d5"
inkscape:connector-curvature="0"
id="path3798"
d="m 95.866501,100.274 h -67.734 V 15.847 c 0,-1.105 0.895,-2 2,-2 h 63.734 c 1.105,0 2,0.895 2,2 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path3810"
d="M 93.867,13.847 H 30.133 c -1.105,0 -2,0.896 -2,2 v 3 c 0,-1.104 0.895,-2 2,-2 h 63.734 c 1.105,0 2,0.896 2,2 v -3 c 0,-1.105 -0.895,-2 -2,-2 z" />
<g
inkscape:transform-center-y="-0.90566035"
inkscape:transform-center-x="-0.15094336"
id="g4755"
transform="rotate(-27.912106,55.191764,87.13912)">
<g
id="g3808">
<path
d="m 35.335,86.238 12.218,6.498 v -13 z"
id="path3800"
inkscape:connector-curvature="0"
style="fill:#ffd7e5" />
<g
id="g3804">
<path
d="m 47.553,92.736 v -13 h 38.353 c 1.524,0 2.759,1.235 2.759,2.759 v 7.483 c 0,1.524 -1.235,2.759 -2.759,2.759 z"
id="path3802"
inkscape:connector-curvature="0"
style="fill:#0089ef" />
</g>
<path
d="m 82.256,92.736 h 3.65 c 1.524,0 2.759,-1.235 2.759,-2.759 v -7.483 c 0,-1.524 -1.235,-2.759 -2.759,-2.759 h -3.65 z"
id="path3806"
inkscape:connector-curvature="0"
style="fill:#fa759e" />
</g>
<path
inkscape:connector-curvature="0"
id="path3818"
d="M 85.906,78.736 H 47.553 c -0.164,0 -0.325,0.04 -0.47,0.117 l -12.218,6.502 c -0.326,0.174 -0.53,0.514 -0.53,0.883 0,0.37 0.204,0.709 0.53,0.883 l 12.218,6.498 c 0.145,0.077 0.306,0.117 0.47,0.117 h 38.353 c 2.073,0 3.759,-1.687 3.759,-3.759 v -7.482 c 0,-2.072 -1.686,-3.759 -3.759,-3.759 z m -46.663,6.556 7.31,-3.89 v 9.67 l -7.31,-3.888 z m 9.31,-4.556 h 32.703 v 11 H 48.553 Z m 39.112,9.242 c 0,0.97 -0.789,1.759 -1.759,1.759 h -2.65 v -11 h 2.65 c 0.97,0 1.759,0.789 1.759,1.759 z"
style="fill:#000000" />
</g>
<path
style="fill:#000000"
d="m 88.664501,59.69168 h -53.33 c -0.552,0 -1,0.447 -1,1 0,0.553 0.448,1 1,1 h 53.33 c 0.552,0 1,-0.447 1,-1 0,-0.553 -0.448,-1 -1,-1 z"
id="path3820"
inkscape:connector-curvature="0" />
<path
style="fill:#000000"
d="m 88.664501,52.18224 h -53.33 c -0.552,0 -1,0.447 -1,1 0,0.553 0.448,1 1,1 h 53.33 c 0.552,0 1,-0.447 1,-1 0,-0.553 -0.448,-1 -1,-1 z"
id="path3822"
inkscape:connector-curvature="0" />
<path
style="fill:#000000"
d="m 88.664501,44.672812 h -53.33 c -0.552,0 -1,0.447 -1,1 0,0.553 0.448,1 1,1 h 53.33 c 0.552,0 1,-0.447 1,-1 0,-0.553 -0.448,-1 -1,-1 z"
id="path3824"
inkscape:connector-curvature="0" />
<flowRoot
xml:space="preserve"
id="flowRoot4741"
style="font-style:normal;font-weight:normal;font-size:80px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none"
transform="matrix(0.31783415,0,0,0.34751085,-16.965817,-12.556068)"><flowRegion
id="flowRegion4743"
style="font-size:85.33333588px;text-align:center;text-anchor:middle"><rect
id="rect4745"
width="234.26414"
height="97.20755"
x="129.81133"
y="76.679245"
style="font-size:85.33333588px;text-align:center;text-anchor:middle" /></flowRegion><flowPara
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Comic Sans MS';-inkscape-font-specification:'Comic Sans MS'"
id="flowPara4747">SPEx</flowPara></flowRoot> </g>
<path
style="fill:#000000"
d="m 122.9465,101.2745 h -10.546 v -58.525 c 0,-3.859 -3.14,-7 -7,-7 h -6.533001 v -17.902 c 0,-1.654 -1.346,-3 -3,-3 h -63.734 c -1.654,0 -3,1.346 -3,3 v 17.902 h -6.534 c -3.86,0 -7,3.141 -7,7 v 58.525 H 5.0544992 c -0.552,0 -1,0.447 -1,1 v 3.934 c 0,3.829 3.116,6.944 6.9449998,6.944 H 116.9995 c 3.83,0 6.946,-3.115 6.946,-6.944 v -3.934 c 0.001,-0.552 -0.447,-1 -0.999,-1 z m -17.546,-63.525 c 2.757,0 5,2.243 5,5 v 58.525 h -5.028 v -53.688 c 0,-1.654 -1.346,-3 -3,-3 h -3.504001 v -6.837 z m -6.533001,63.525 v -54.688 h 3.504001 c 0.551,0 1,0.448 1,1 v 53.688 z m -67.734,-83.427 c 0,-0.552 0.449,-1 1,-1 h 63.734 c 0.551,0 1,0.448 1,1 v 83.428 h -65.734 z m -13.534,24.902 c 0,-2.757 2.243,-5 5,-5 h 6.534 v 6.837 h -3.506 c -1.654,0 -3,1.346 -3,3 v 27.284 c 0,0.553 0.448,1 1,1 0.552,0 1,-0.447 1,-1 v -27.284 c 0,-0.552 0.449,-1 1,-1 h 3.506 v 54.688 h -4.506 v -9.321 c 0,-0.553 -0.448,-1 -1,-1 -0.552,0 -1,0.447 -1,1 v 9.321 h -5.028 z m 104.347001,63.459 c 0,2.727 -2.219,4.944 -4.946,4.944 H 11.000499 c -2.7269998,0 -4.9449998,-2.218 -4.9449998,-4.944 v -2.934 H 121.9475 v 2.934 z"
id="path3814"
inkscape:connector-curvature="0" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

@@ -0,0 +1,246 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="Layer_1"
enable-background="new 0 0 128 128"
height="512"
viewBox="0 0 128 128"
width="512"
wtx-context="F86C4D92-0EC1-47EF-86DD-02B0FF6FC0F2"
version="1.1"
sodipodi:docname="logo2.svg"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
inkscape:export-filename="D:\Emanuele\Desktop\logo.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96">
<metadata
id="metadata3841">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs3839">
<marker
inkscape:stockid="Tail"
orient="auto"
refY="0.0"
refX="0.0"
id="Tail"
style="overflow:visible"
inkscape:isstock="true">
<g
id="g5307"
transform="scale(-1.2)"
style="stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1">
<path
id="path5295"
d="M -3.8048674,-3.9585227 L 0.54352094,0"
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-opacity:1;fill-opacity:1" />
<path
id="path5297"
d="M -1.2866832,-3.9585227 L 3.0617053,0"
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-opacity:1;fill-opacity:1" />
<path
id="path5299"
d="M 1.3053582,-3.9585227 L 5.6537466,0"
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-opacity:1;fill-opacity:1" />
<path
id="path5301"
d="M -3.8048674,4.1775838 L 0.54352094,0.21974226"
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-opacity:1;fill-opacity:1" />
<path
id="path5303"
d="M -1.2866832,4.1775838 L 3.0617053,0.21974226"
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-opacity:1;fill-opacity:1" />
<path
id="path5305"
d="M 1.3053582,4.1775838 L 5.6537466,0.21974226"
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-opacity:1;fill-opacity:1" />
</g>
</marker>
<marker
inkscape:stockid="TriangleOutL"
orient="auto"
refY="0.0"
refX="0.0"
id="TriangleOutL"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path5401"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
transform="scale(0.8)" />
</marker>
</defs>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2048"
inkscape:window-height="1089"
id="namedview3837"
showgrid="false"
inkscape:zoom="1.65625"
inkscape:cx="60.627703"
inkscape:cy="262.26623"
inkscape:window-x="1912"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="layer4"
fit-margin-left="4"
fit-margin-right="4"
fit-margin-top="4"
fit-margin-bottom="4"
inkscape:showpageshadow="true"
borderlayer="false"
inkscape:pagecheckerboard="false" />
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="Base"
transform="translate(-3.0544992,13.8475)"
style="display:inline" />
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Layer 2"
style="display:inline"
transform="translate(-3.0544992,13.8475)" />
<g
inkscape:groupmode="layer"
id="layer4"
inkscape:label="cornice"
transform="translate(-3.0544992,13.8475)"
style="display:inline">
<g
style="fill:#b3b3b3"
id="g3784"
transform="matrix(1.0516192,0,0,1.0516192,1.8546333,-15.047365)">
<path
style="fill:#b3b3b3"
inkscape:connector-curvature="0"
id="path3780"
d="m 20.599,34.749 c -3.314,0 -6,2.686 -6,6 v 59.526 H 28.133 V 34.749 Z" />
<path
style="fill:#b3b3b3"
inkscape:connector-curvature="0"
id="path3782"
d="m 103.4,34.749 h -7.533 v 65.526 H 109.4 V 40.749 c 0,-3.314 -2.686,-6 -6,-6 z" />
</g>
<g
style="fill:#d4fbff"
id="g3790"
transform="matrix(1.0516192,0,0,1.0516192,1.8546333,-15.047365)">
<path
inkscape:connector-curvature="0"
id="path3786"
d="m 23.627,43.586 c -1.105,0 -2,0.895 -2,2 v 54.688 h 6.506 V 43.586 Z" />
<path
inkscape:connector-curvature="0"
id="path3788"
d="m 100.372,43.586 h -4.505 v 56.688 h 6.505 V 45.586 c 0,-1.105 -0.896,-2 -2,-2 z" />
</g>
<path
style="fill:#b3b3b3;stroke-width:1.05161917"
inkscape:connector-curvature="0"
id="path3792"
d="m 5.0662783,90.402699 v 4.136018 c 0,3.452466 2.7994104,6.251873 6.2518757,6.251873 H 122.78979 c 3.45352,0 6.25293,-2.799407 6.25293,-6.251873 v -4.136018 z" />
<path
style="fill:#333333;stroke-width:1.05161917"
inkscape:connector-curvature="0"
id="path3794"
d="m 47.019574,90.402699 v 2.093774 c 0,1.747791 1.416532,3.164322 3.164323,3.164322 h 33.739098 c 1.747792,0 3.165374,-1.417583 3.165374,-3.164322 v -2.093774 z" />
<path
inkscape:connector-curvature="0"
id="path3812"
d="m 24.598002,76.218459 c 0.580493,0 1.051619,-0.470074 1.051619,-1.051619 v -9.026048 c 0,-0.581545 -0.471126,-1.051619 -1.051619,-1.051619 -0.580494,0 -1.05162,0.470074 -1.05162,1.051619 v 9.026048 c 0,0.581545 0.471126,1.051619 1.05162,1.051619 z"
style="fill:#000000;stroke-width:1.05161917" />
<path
style="fill:#fff6d5;stroke-width:1.05161917"
inkscape:connector-curvature="0"
id="path3798"
d="M 103.78075,90.403751 H 32.550379 V 1.6186965 c 0,-1.16203925 0.941199,-2.10323844 2.103239,-2.10323844 h 67.023892 c 1.16204,0 2.10324,0.94119919 2.10324,2.10323844 z" />
<path
style="fill:#ffffff;stroke-width:1.05161917"
inkscape:connector-curvature="0"
id="path3810"
d="M 100.5675,-0.48454194 H 33.543599 c -1.162039,0 -2.103238,0.94225081 -2.103238,2.10323844 v 3.1548576 c 0,-1.1609876 0.941199,-2.1032384 2.103238,-2.1032384 H 100.5675 c 1.16204,0 2.10324,0.9422508 2.10324,2.1032384 V 1.6186965 c 0,-1.16203925 -0.9412,-2.10323844 -2.10324,-2.10323844 z" />
<path
inkscape:connector-curvature="0"
id="path3814"
d="M 129.04377,89.35108 H 117.95339 V 27.805066 c 0,-4.058199 -3.30208,-7.361334 -7.36133,-7.361334 h -6.87023 V 1.6176447 c 0,-1.73937818 -1.41548,-3.1548576 -3.15486,-3.1548576 H 33.543074 c -1.739378,0 -3.154857,1.41547942 -3.154857,3.1548576 V 20.443732 h -6.87128 c -4.05925,0 -7.361334,3.303135 -7.361334,7.361334 V 89.35108 H 5.0662783 c -0.5804938,0 -1.0516192,0.470073 -1.0516192,1.051619 v 4.13707 c 0,4.02665 3.2768455,7.302441 7.3034949,7.302441 H 122.78979 c 4.0277,0 7.30455,-3.275791 7.30455,-7.302441 v -4.13707 c 0.001,-0.580494 -0.47008,-1.051619 -1.05057,-1.051619 z M 110.59206,22.54697 c 2.89931,0 5.2581,2.358782 5.2581,5.258096 V 89.35108 h -5.28755 V 32.891748 c 0,-1.739378 -1.41548,-3.154858 -3.15485,-3.154858 h -3.68488 v -7.18992 z m -6.87023,66.80411 V 31.840129 h 3.68487 c 0.57945,0 1.05162,0.471125 1.05162,1.051619 V 89.35108 Z M 32.491455,1.6176447 c 0,-0.5804938 0.472177,-1.05161923 1.051619,-1.05161923 h 67.023896 c 0.57944,0 1.05162,0.47112543 1.05162,1.05161923 V 89.352131 H 32.491455 Z M 18.258841,27.805066 c 0,-2.899314 2.358782,-5.258096 5.258096,-5.258096 h 6.87128 v 7.18992 H 26.70124 c -1.739378,0 -3.154858,1.41548 -3.154858,3.154858 v 28.692378 c 0,0.581546 0.471126,1.05162 1.05162,1.05162 0.580493,0 1.051619,-0.470074 1.051619,-1.05162 V 32.891748 c 0,-0.580494 0.472177,-1.051619 1.051619,-1.051619 h 3.686977 V 89.35108 h -4.738596 v -9.802143 c 0,-0.581545 -0.471126,-1.051619 -1.051619,-1.051619 -0.580494,0 -1.05162,0.470074 -1.05162,1.051619 V 89.35108 H 18.258841 Z M 127.99215,94.539769 c 0,2.867765 -2.33354,5.199205 -5.20131,5.199205 H 11.319206 c -2.8677655,0 -5.2002568,-2.332491 -5.2002568,-5.199205 V 91.454318 H 127.9932 v 3.085451 z"
style="fill:#000000;stroke-width:1.05161917" />
<path
style="opacity:1;fill:none;stroke:#000000;stroke-width:2.49649167;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.49649167, 4.99298335;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
d="M 32.223715,44.304248 H 101.91448"
id="path5125"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2.04627848;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 67.054498,3.4852214 59.868359,14.333186 h 14.37228 z"
id="path5646"
inkscape:connector-curvature="0"
inkscape:transform-center-x="-0.18649858"
inkscape:transform-center-y="-0.58474122"
sodipodi:nodetypes="cccc" />
<path
style="display:inline;fill:none;stroke:#000000;stroke-width:2.04627848;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 67.0545,85.123281 74.240639,74.275316 H 59.868359 Z"
id="path5646-9"
inkscape:connector-curvature="0"
inkscape:transform-center-x="0.18649842"
inkscape:transform-center-y="0.58474078"
sodipodi:nodetypes="cccc" />
<g
inkscape:transform-center-y="0.31961283"
inkscape:transform-center-x="-1.9014658"
id="g4755"
transform="matrix(0.64709712,-0.82895613,0.82895613,0.64709712,-46.659907,40.916248)">
<g
id="g3808">
<path
d="m 35.335,86.238 12.218,6.498 v -13 z"
id="path3800"
inkscape:connector-curvature="0"
style="fill:#ffd7e5" />
<g
id="g3804">
<path
d="m 47.553,92.736 v -13 h 38.353 c 1.524,0 2.759,1.235 2.759,2.759 v 7.483 c 0,1.524 -1.235,2.759 -2.759,2.759 z"
id="path3802"
inkscape:connector-curvature="0"
style="fill:#0089ef" />
</g>
<path
d="m 82.256,92.736 h 3.65 c 1.524,0 2.759,-1.235 2.759,-2.759 v -7.483 c 0,-1.524 -1.235,-2.759 -2.759,-2.759 h -3.65 z"
id="path3806"
inkscape:connector-curvature="0"
style="fill:#fa759e" />
</g>
<path
inkscape:connector-curvature="0"
id="path3818"
d="M 85.906,78.736 H 47.553 c -0.164,0 -0.325,0.04 -0.47,0.117 l -12.218,6.502 c -0.326,0.174 -0.53,0.514 -0.53,0.883 0,0.37 0.204,0.709 0.53,0.883 l 12.218,6.498 c 0.145,0.077 0.306,0.117 0.47,0.117 h 38.353 c 2.073,0 3.759,-1.687 3.759,-3.759 v -7.482 c 0,-2.072 -1.686,-3.759 -3.759,-3.759 z m -46.663,6.556 7.31,-3.89 v 9.67 l -7.31,-3.888 z m 9.31,-4.556 h 32.703 v 11 H 48.553 Z m 39.112,9.242 c 0,0.97 -0.789,1.759 -1.759,1.759 h -2.65 v -11 h 2.65 c 0.97,0 1.759,0.789 1.759,1.759 z"
style="fill:#000000" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

@@ -0,0 +1,248 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="Layer_1"
enable-background="new 0 0 128 128"
height="512"
viewBox="0 0 128 128"
width="512"
wtx-context="F86C4D92-0EC1-47EF-86DD-02B0FF6FC0F2"
version="1.1"
sodipodi:docname="logo3.svg"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
inkscape:export-filename="D:\Emanuele\Desktop\logo2.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96">
<metadata
id="metadata3841">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs3839">
<marker
inkscape:stockid="Tail"
orient="auto"
refY="0.0"
refX="0.0"
id="Tail"
style="overflow:visible"
inkscape:isstock="true">
<g
id="g5307"
transform="scale(-1.2)"
style="stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1">
<path
id="path5295"
d="M -3.8048674,-3.9585227 L 0.54352094,0"
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-opacity:1;fill-opacity:1" />
<path
id="path5297"
d="M -1.2866832,-3.9585227 L 3.0617053,0"
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-opacity:1;fill-opacity:1" />
<path
id="path5299"
d="M 1.3053582,-3.9585227 L 5.6537466,0"
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-opacity:1;fill-opacity:1" />
<path
id="path5301"
d="M -3.8048674,4.1775838 L 0.54352094,0.21974226"
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-opacity:1;fill-opacity:1" />
<path
id="path5303"
d="M -1.2866832,4.1775838 L 3.0617053,0.21974226"
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-opacity:1;fill-opacity:1" />
<path
id="path5305"
d="M 1.3053582,4.1775838 L 5.6537466,0.21974226"
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-opacity:1;fill-opacity:1" />
</g>
</marker>
<marker
inkscape:stockid="TriangleOutL"
orient="auto"
refY="0.0"
refX="0.0"
id="TriangleOutL"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path5401"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
transform="scale(0.8)" />
</marker>
</defs>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2048"
inkscape:window-height="1089"
id="namedview3837"
showgrid="false"
inkscape:zoom="0.828125"
inkscape:cx="-269.30873"
inkscape:cy="247.65489"
inkscape:window-x="1912"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="layer4"
fit-margin-left="4"
fit-margin-right="4"
fit-margin-top="4"
fit-margin-bottom="4"
inkscape:showpageshadow="true"
borderlayer="false"
inkscape:pagecheckerboard="false" />
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="Base"
transform="translate(-3.0544992,13.8475)"
style="display:inline" />
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Layer 2"
style="display:inline"
transform="translate(-3.0544992,13.8475)" />
<g
inkscape:groupmode="layer"
id="layer4"
inkscape:label="cornice"
transform="translate(-3.0544992,13.8475)"
style="display:inline">
<g
style="fill:#b3b3b3"
id="g3784"
transform="matrix(1.0516192,0,0,1.0516192,1.8546333,-15.047365)">
<path
style="fill:#b3b3b3"
inkscape:connector-curvature="0"
id="path3780"
d="m 20.599,34.749 c -3.314,0 -6,2.686 -6,6 v 59.526 H 28.133 V 34.749 Z" />
<path
style="fill:#b3b3b3"
inkscape:connector-curvature="0"
id="path3782"
d="m 103.4,34.749 h -7.533 v 65.526 H 109.4 V 40.749 c 0,-3.314 -2.686,-6 -6,-6 z" />
</g>
<g
style="fill:#d4fbff"
id="g3790"
transform="matrix(1.0516192,0,0,1.0516192,1.8546333,-15.047365)">
<path
inkscape:connector-curvature="0"
id="path3786"
d="m 23.627,43.586 c -1.105,0 -2,0.895 -2,2 v 54.688 h 6.506 V 43.586 Z" />
<path
inkscape:connector-curvature="0"
id="path3788"
d="m 100.372,43.586 h -4.505 v 56.688 h 6.505 V 45.586 c 0,-1.105 -0.896,-2 -2,-2 z" />
</g>
<path
style="fill:#b3b3b3;stroke-width:1.05161917"
inkscape:connector-curvature="0"
id="path3792"
d="m 5.0662783,90.402699 v 4.136018 c 0,3.452466 2.7994104,6.251873 6.2518757,6.251873 H 122.78979 c 3.45352,0 6.25293,-2.799407 6.25293,-6.251873 v -4.136018 z" />
<path
style="fill:#333333;stroke-width:1.05161917"
inkscape:connector-curvature="0"
id="path3794"
d="m 47.019574,90.402699 v 2.093774 c 0,1.747791 1.416532,3.164322 3.164323,3.164322 h 33.739098 c 1.747792,0 3.165374,-1.417583 3.165374,-3.164322 v -2.093774 z" />
<path
inkscape:connector-curvature="0"
id="path3812"
d="m 24.598002,76.218459 c 0.580493,0 1.051619,-0.470074 1.051619,-1.051619 v -9.026048 c 0,-0.581545 -0.471126,-1.051619 -1.051619,-1.051619 -0.580494,0 -1.05162,0.470074 -1.05162,1.051619 v 9.026048 c 0,0.581545 0.471126,1.051619 1.05162,1.051619 z"
style="fill:#000000;stroke-width:1.05161917" />
<path
style="fill:#fff6d5;stroke-width:1.05161917"
inkscape:connector-curvature="0"
id="path3798"
d="M 103.78075,90.403751 H 32.550379 V 1.6186965 c 0,-1.16203925 0.941199,-2.10323844 2.103239,-2.10323844 h 67.023892 c 1.16204,0 2.10324,0.94119919 2.10324,2.10323844 z" />
<path
style="fill:#ffffff;stroke-width:1.05161917"
inkscape:connector-curvature="0"
id="path3810"
d="M 100.5675,-0.48454194 H 33.543599 c -1.162039,0 -2.103238,0.94225081 -2.103238,2.10323844 v 3.1548576 c 0,-1.1609876 0.941199,-2.1032384 2.103238,-2.1032384 H 100.5675 c 1.16204,0 2.10324,0.9422508 2.10324,2.1032384 V 1.6186965 c 0,-1.16203925 -0.9412,-2.10323844 -2.10324,-2.10323844 z" />
<path
inkscape:connector-curvature="0"
id="path3814"
d="M 129.04377,89.35108 H 117.95339 V 27.805066 c 0,-4.058199 -3.30208,-7.361334 -7.36133,-7.361334 h -6.87023 V 1.6176447 c 0,-1.73937818 -1.41548,-3.1548576 -3.15486,-3.1548576 H 33.543074 c -1.739378,0 -3.154857,1.41547942 -3.154857,3.1548576 V 20.443732 h -6.87128 c -4.05925,0 -7.361334,3.303135 -7.361334,7.361334 V 89.35108 H 5.0662783 c -0.5804938,0 -1.0516192,0.470073 -1.0516192,1.051619 v 4.13707 c 0,4.02665 3.2768455,7.302441 7.3034949,7.302441 H 122.78979 c 4.0277,0 7.30455,-3.275791 7.30455,-7.302441 v -4.13707 c 0.001,-0.580494 -0.47008,-1.051619 -1.05057,-1.051619 z M 110.59206,22.54697 c 2.89931,0 5.2581,2.358782 5.2581,5.258096 V 89.35108 h -5.28755 V 32.891748 c 0,-1.739378 -1.41548,-3.154858 -3.15485,-3.154858 h -3.68488 v -7.18992 z m -6.87023,66.80411 V 31.840129 h 3.68487 c 0.57945,0 1.05162,0.471125 1.05162,1.051619 V 89.35108 Z M 32.491455,1.6176447 c 0,-0.5804938 0.472177,-1.05161923 1.051619,-1.05161923 h 67.023896 c 0.57944,0 1.05162,0.47112543 1.05162,1.05161923 V 89.352131 H 32.491455 Z M 18.258841,27.805066 c 0,-2.899314 2.358782,-5.258096 5.258096,-5.258096 h 6.87128 v 7.18992 H 26.70124 c -1.739378,0 -3.154858,1.41548 -3.154858,3.154858 v 28.692378 c 0,0.581546 0.471126,1.05162 1.05162,1.05162 0.580493,0 1.051619,-0.470074 1.051619,-1.05162 V 32.891748 c 0,-0.580494 0.472177,-1.051619 1.051619,-1.051619 h 3.686977 V 89.35108 h -4.738596 v -9.802143 c 0,-0.581545 -0.471126,-1.051619 -1.051619,-1.051619 -0.580494,0 -1.05162,0.470074 -1.05162,1.051619 V 89.35108 H 18.258841 Z M 127.99215,94.539769 c 0,2.867765 -2.33354,5.199205 -5.20131,5.199205 H 11.319206 c -2.8677655,0 -5.2002568,-2.332491 -5.2002568,-5.199205 V 91.454318 H 127.9932 v 3.085451 z"
style="fill:#000000;stroke-width:1.05161917" />
<path
style="opacity:1;fill:none;stroke:#000000;stroke-width:2.49649167;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.49649167, 4.99298335;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
d="M 32.223715,44.304248 H 101.91448"
id="path5125"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2.04627848;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 67.054498,3.4852214 59.868359,14.333186 h 14.37228 z"
id="path5646"
inkscape:connector-curvature="0"
inkscape:transform-center-x="-0.18649858"
inkscape:transform-center-y="-0.58474122"
sodipodi:nodetypes="cccc" />
<path
style="display:inline;fill:none;stroke:#000000;stroke-width:2.04627848;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 67.0545,85.123281 74.240639,74.275316 H 59.868359 Z"
id="path5646-9"
inkscape:connector-curvature="0"
inkscape:transform-center-x="0.18649842"
inkscape:transform-center-y="0.58474078"
sodipodi:nodetypes="cccc" />
<g
id="g5759"
transform="matrix(1.4525265,-0.89673033,0.89673033,1.4525265,-58.379411,28.460534)">
<circle
r="10"
cy="41.16116"
cx="58.245537"
id="path5684"
style="opacity:1;fill:#55ddff;fill-opacity:0.68016196;stroke:#ae8339;stroke-width:1.33000004;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
<g
transform="translate(0.02122962)"
id="g5750">
<rect
style="opacity:1;fill:#ae8339;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="rect5692"
width="1.8113208"
height="1.9774349"
x="57.280914"
y="52.190239" />
<rect
style="display:inline;opacity:1;fill:#ae8339;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="rect5692-5"
width="2.8088591"
height="16.377359"
x="56.819878"
y="54.265705" />
</g>
<circle
r="10.75"
cy="41.16116"
cx="58.245537"
id="path5752"
style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

@@ -0,0 +1,225 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:export-filename="D:\Emanuele\Desktop\logo4.png"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="logo4.svg"
version="1.1"
wtx-context="F86C4D92-0EC1-47EF-86DD-02B0FF6FC0F2"
width="512"
viewBox="0 0 128 128"
height="512"
enable-background="new 0 0 128 128"
id="Layer_1">
<metadata
id="metadata3841">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs3839">
<marker
inkscape:stockid="Tail"
orient="auto"
refY="0.0"
refX="0.0"
id="Tail"
style="overflow:visible"
inkscape:isstock="true">
<g
id="g5307"
transform="scale(-1.2)"
style="stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1">
<path
id="path5295"
d="M -3.8048674,-3.9585227 L 0.54352094,0"
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-opacity:1;fill-opacity:1" />
<path
id="path5297"
d="M -1.2866832,-3.9585227 L 3.0617053,0"
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-opacity:1;fill-opacity:1" />
<path
id="path5299"
d="M 1.3053582,-3.9585227 L 5.6537466,0"
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-opacity:1;fill-opacity:1" />
<path
id="path5301"
d="M -3.8048674,4.1775838 L 0.54352094,0.21974226"
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-opacity:1;fill-opacity:1" />
<path
id="path5303"
d="M -1.2866832,4.1775838 L 3.0617053,0.21974226"
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-opacity:1;fill-opacity:1" />
<path
id="path5305"
d="M 1.3053582,4.1775838 L 5.6537466,0.21974226"
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-opacity:1;fill-opacity:1" />
</g>
</marker>
<marker
inkscape:stockid="TriangleOutL"
orient="auto"
refY="0.0"
refX="0.0"
id="TriangleOutL"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path5401"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
transform="scale(0.8)" />
</marker>
</defs>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1361"
id="namedview3837"
showgrid="false"
inkscape:zoom="0.828125"
inkscape:cx="108.20166"
inkscape:cy="329.42857"
inkscape:window-x="2391"
inkscape:window-y="-9"
inkscape:window-maximized="1"
inkscape:current-layer="layer4"
fit-margin-left="4"
fit-margin-right="4"
fit-margin-top="4"
fit-margin-bottom="4"
inkscape:showpageshadow="true"
borderlayer="false"
inkscape:pagecheckerboard="false"
inkscape:snap-smooth-nodes="true"
inkscape:snap-object-midpoints="true" />
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="Base"
transform="translate(-3.0544992,13.8475)"
style="display:inline" />
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Layer 2"
style="display:inline"
transform="translate(-3.0544992,13.8475)" />
<g
inkscape:groupmode="layer"
id="layer4"
inkscape:label="cornice"
transform="translate(-3.0544992,13.8475)"
style="display:inline">
<g
style="fill:#b3b3b3"
id="g3784"
transform="matrix(1.0516192,0,0,1.0516192,1.8546333,-15.047365)">
<path
style="fill:#b3b3b3"
inkscape:connector-curvature="0"
id="path3780"
d="m 20.599,34.749 c -3.314,0 -6,2.686 -6,6 v 59.526 H 28.133 V 34.749 Z" />
<path
style="fill:#b3b3b3"
inkscape:connector-curvature="0"
id="path3782"
d="m 103.4,34.749 h -7.533 v 65.526 H 109.4 V 40.749 c 0,-3.314 -2.686,-6 -6,-6 z" />
</g>
<g
style="fill:#d4fbff"
id="g3790"
transform="matrix(1.0516192,0,0,1.0516192,1.8546333,-15.047365)">
<path
inkscape:connector-curvature="0"
id="path3786"
d="m 23.627,43.586 c -1.105,0 -2,0.895 -2,2 v 54.688 h 6.506 V 43.586 Z" />
<path
inkscape:connector-curvature="0"
id="path3788"
d="m 100.372,43.586 h -4.505 v 56.688 h 6.505 V 45.586 c 0,-1.105 -0.896,-2 -2,-2 z" />
</g>
<path
style="fill:#b3b3b3;stroke-width:1.05161917"
inkscape:connector-curvature="0"
id="path3792"
d="m 5.0662783,90.402699 v 4.136018 c 0,3.452466 2.7994104,6.251873 6.2518757,6.251873 H 122.78979 c 3.45352,0 6.25293,-2.799407 6.25293,-6.251873 v -4.136018 z" />
<path
style="fill:#333333;stroke-width:1.05161917"
inkscape:connector-curvature="0"
id="path3794"
d="m 47.019574,90.402699 v 2.093774 c 0,1.747791 1.416532,3.164322 3.164323,3.164322 h 33.739098 c 1.747792,0 3.165374,-1.417583 3.165374,-3.164322 v -2.093774 z" />
<path
inkscape:connector-curvature="0"
id="path3812"
d="m 24.598002,76.218459 c 0.580493,0 1.051619,-0.470074 1.051619,-1.051619 v -9.026048 c 0,-0.581545 -0.471126,-1.051619 -1.051619,-1.051619 -0.580494,0 -1.05162,0.470074 -1.05162,1.051619 v 9.026048 c 0,0.581545 0.471126,1.051619 1.05162,1.051619 z"
style="fill:#000000;stroke-width:1.05161917" />
<path
style="fill:#fff6d5;stroke-width:1.05161917"
inkscape:connector-curvature="0"
id="path3798"
d="M 103.78075,90.403751 H 32.550379 V 1.6186965 c 0,-1.16203925 0.941199,-2.10323844 2.103239,-2.10323844 h 67.023892 c 1.16204,0 2.10324,0.94119919 2.10324,2.10323844 z" />
<path
style="fill:#ffffff;stroke-width:1.05161917"
inkscape:connector-curvature="0"
id="path3810"
d="M 100.5675,-0.48454194 H 33.543599 c -1.162039,0 -2.103238,0.94225081 -2.103238,2.10323844 v 3.1548576 c 0,-1.1609876 0.941199,-2.1032384 2.103238,-2.1032384 H 100.5675 c 1.16204,0 2.10324,0.9422508 2.10324,2.1032384 V 1.6186965 c 0,-1.16203925 -0.9412,-2.10323844 -2.10324,-2.10323844 z" />
<path
inkscape:connector-curvature="0"
id="path3814"
d="M 129.04377,89.35108 H 117.95339 V 27.805066 c 0,-4.058199 -3.30208,-7.361334 -7.36133,-7.361334 h -6.87023 V 1.6176447 c 0,-1.73937818 -1.41548,-3.1548576 -3.15486,-3.1548576 H 33.543074 c -1.739378,0 -3.154857,1.41547942 -3.154857,3.1548576 V 20.443732 h -6.87128 c -4.05925,0 -7.361334,3.303135 -7.361334,7.361334 V 89.35108 H 5.0662783 c -0.5804938,0 -1.0516192,0.470073 -1.0516192,1.051619 v 4.13707 c 0,4.02665 3.2768455,7.302441 7.3034949,7.302441 H 122.78979 c 4.0277,0 7.30455,-3.275791 7.30455,-7.302441 v -4.13707 c 0.001,-0.580494 -0.47008,-1.051619 -1.05057,-1.051619 z M 110.59206,22.54697 c 2.89931,0 5.2581,2.358782 5.2581,5.258096 V 89.35108 h -5.28755 V 32.891748 c 0,-1.739378 -1.41548,-3.154858 -3.15485,-3.154858 h -3.68488 v -7.18992 z m -6.87023,66.80411 V 31.840129 h 3.68487 c 0.57945,0 1.05162,0.471125 1.05162,1.051619 V 89.35108 Z M 32.491455,1.6176447 c 0,-0.5804938 0.472177,-1.05161923 1.051619,-1.05161923 h 67.023896 c 0.57944,0 1.05162,0.47112543 1.05162,1.05161923 V 89.352131 H 32.491455 Z M 18.258841,27.805066 c 0,-2.899314 2.358782,-5.258096 5.258096,-5.258096 h 6.87128 v 7.18992 H 26.70124 c -1.739378,0 -3.154858,1.41548 -3.154858,3.154858 v 28.692378 c 0,0.581546 0.471126,1.05162 1.05162,1.05162 0.580493,0 1.051619,-0.470074 1.051619,-1.05162 V 32.891748 c 0,-0.580494 0.472177,-1.051619 1.051619,-1.051619 h 3.686977 V 89.35108 h -4.738596 v -9.802143 c 0,-0.581545 -0.471126,-1.051619 -1.051619,-1.051619 -0.580494,0 -1.05162,0.470074 -1.05162,1.051619 V 89.35108 H 18.258841 Z M 127.99215,94.539769 c 0,2.867765 -2.33354,5.199205 -5.20131,5.199205 H 11.319206 c -2.8677655,0 -5.2002568,-2.332491 -5.2002568,-5.199205 V 91.454318 H 127.9932 v 3.085451 z"
style="fill:#000000;stroke-width:1.05161917" />
<path
style="fill:none;stroke:#000000;stroke-width:2.04627848;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 67.054498,3.4852214 59.868359,14.333186 h 14.37228 z"
id="path5646"
inkscape:connector-curvature="0"
inkscape:transform-center-x="-0.18649858"
inkscape:transform-center-y="-0.58474122"
sodipodi:nodetypes="cccc" />
<path
style="display:inline;fill:none;stroke:#000000;stroke-width:2.04627848;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 67.0545,85.123281 74.240639,74.275316 H 59.868359 Z"
id="path5646-9"
inkscape:connector-curvature="0"
inkscape:transform-center-x="0.18649842"
inkscape:transform-center-y="0.58474078"
sodipodi:nodetypes="cccc" />
<g
id="g4643"
inkscape:label="Gear16"
transform="translate(-37.2531798,276.83566)" />
<path
style="fill:#5599ff;stroke:#000000;stroke-width:1.37054682;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 73.024624,70.291181 c -0.140925,-0.195173 -0.887647,-1.191269 -1.659419,-2.213542 l -1.403194,-1.858683 -0.270045,-2.94273 -0.270045,-2.942734 -1.296658,-0.128321 c -0.713181,-0.07057 -2.398919,-0.246815 -3.746114,-0.391647 -1.347166,-0.144835 -2.488495,-0.251542 -2.536266,-0.237126 -0.04777,0.01441 -0.460867,1.298309 -0.917991,2.853101 -0.457123,1.55479 -1.136929,3.102496 -1.510678,3.439343 -0.373747,0.336846 -1.297904,1.149902 -2.053677,1.806786 l -1.374139,1.194331 -1.550177,-0.665158 -1.550178,-0.665156 0.344897,-2.775451 c 0.327231,-2.633252 0.444013,-2.896769 2.279434,-5.143484 l 1.934536,-2.368035 -2.36812,-2.905406 c -1.430415,-1.754954 -2.532786,-2.839289 -2.783977,-2.738428 -0.22872,0.09185 -1.442165,0.67861 -2.69654,1.303942 -2.223132,1.108277 -2.352784,1.133938 -5.138516,1.017092 l -2.857839,-0.119868 -0.497248,-1.647825 -0.497248,-1.647823 2.356047,-1.71599 2.356048,-1.715989 2.83545,-0.271285 c 1.559498,-0.149206 2.885736,-0.362444 2.947192,-0.473864 0.06145,-0.111432 0.268837,-1.827914 0.460848,-3.814429 l 0.349102,-3.611852 -2.921506,-0.902676 c -2.769495,-0.85571 -3.01596,-1.012625 -4.736835,-3.01575 l -1.815332,-2.11307 0.788385,-1.469824 0.788387,-1.469826 2.837737,0.417655 c 2.673509,0.393485 2.969177,0.528135 5.108922,2.326676 1.249148,1.049961 2.407473,1.794994 2.574052,1.655627 0.166578,-0.139368 1.114425,-0.915277 2.106341,-1.724253 0.991916,-0.808978 2.194995,-1.791577 2.673486,-2.183545 l 0.870029,-0.712681 -1.395983,-2.58825 -1.395983,-2.588244 0.150734,-2.688061 0.150735,-2.688057 1.702674,-0.61598 1.702673,-0.615979 1.626913,2.20431 1.626915,2.204313 0.296557,2.837806 c 0.16308,1.560802 0.431136,2.905772 0.595637,2.988833 0.707213,0.357073 7.384891,0.827049 7.474293,0.526036 0.05416,-0.182396 0.431065,-1.454411 0.83755,-2.826695 0.669238,-2.259251 0.934814,-2.672502 2.809794,-4.372322 l 2.070707,-1.87725 1.536135,0.847626 1.536161,0.847621 -0.370166,2.704766 c -0.347758,2.541248 -0.485736,2.842118 -2.28216,4.976847 -1.393983,1.656493 -1.821173,2.394287 -1.576726,2.723117 0.184423,0.24806 1.265401,1.614113 2.402176,3.035668 1.778219,2.223722 2.148641,2.535643 2.652444,2.233721 0.322072,-0.193014 1.551378,-0.829291 2.731808,-1.413958 2.055179,-1.017929 2.259884,-1.056588 4.824753,-0.911105 l 2.678534,0.151919 0.50342,1.668281 0.503421,1.668278 -2.164589,1.621074 c -2.070661,1.550719 -2.266837,1.634052 -4.520282,1.920086 -1.295636,0.164459 -2.662578,0.313218 -3.037656,0.330577 -0.586716,0.02716 -0.722769,0.49191 -0.974118,3.328071 -0.160691,1.81308 -0.302377,3.532966 -0.314835,3.821964 -0.01564,0.362165 0.811868,0.757116 2.662829,1.270916 2.528851,0.701968 2.800306,0.872177 4.653437,2.917553 l 1.967931,2.172092 -0.826982,1.575869 -0.827008,1.575876 -2.886864,-0.51629 c -2.564302,-0.458607 -3.09507,-0.694176 -4.75025,-2.108327 -1.024857,-0.875618 -1.987838,-1.695618 -2.139992,-1.822213 -0.253217,-0.210725 -5.550847,3.878774 -5.926417,4.574905 -0.08942,0.165747 0.431483,1.439375 1.16011,2.829516 l 1.322679,2.528168 -0.135247,2.720312 -0.135273,2.720321 -1.711725,0.516529 c -1.085244,0.327484 -1.805516,0.386655 -1.967924,0.161661 z M 71.969598,48.13933 c 2.973741,-3.580241 0.739072,-9.318223 -3.850681,-9.887503 -3.362943,-0.417104 -6.369726,1.718637 -6.999673,4.971905 -0.372418,1.923443 0.773952,4.808953 2.368821,5.962328 2.69808,1.95124 6.367587,1.498374 8.481533,-1.04673 z"
id="path6588"
inkscape:connector-curvature="0" />
<path
style="opacity:1;fill:none;stroke:#000000;stroke-width:2.49649167;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.49649167, 4.99298335;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
d="M 32.223715,44.304248 H 101.91448"
id="path5125"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 14 KiB

@@ -0,0 +1,31 @@
<RCC>
<qresource prefix="ico">
<file>icons/banana.ico</file>
<file>icons/icons8-add-folder-80.png</file>
<file>icons/icons8-arrow-80.png</file>
<file>icons/icons8-arrow-80-back.png</file>
<file>icons/icons8-banana-split-80.png</file>
<file>icons/icons8-documents-folder-80.png</file>
<file>icons/icons8-downloads-folder-80.png</file>
<file>icons/icons8-globe-earth-80.png</file>
<file>icons/icons8-info-80.png</file>
<file>icons/icons8-save-80.png</file>
<file>icons/icons8-smartphone-ram-100.png</file>
<file>icons/icons8-user-manual-80.png</file>
<file>icons/logo.png</file>
<file>icons/logo2.png</file>
<file>icons/logo3.png</file>
<file>icons/logo4.png</file>
</qresource>
<qresource prefix="tr">
<file>translations/about_en.qm</file>
<file>translations/advopt_en.qm</file>
<file>translations/avanzatetitolo3_en.qm</file>
<file>translations/guimain_en.qm</file>
<file>translations/libconfload_en.qm</file>
<file>translations/libsplit_en.qm</file>
<file>translations/mainwindow_en.qm</file>
<file>translations/selezout_en.qm</file>
<file>translations/titolow_en.qm</file>
</qresource>
</RCC>
@@ -0,0 +1,54 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="en_US">
<context>
<name>about</name>
<message>
<location filename="../../about.ui" line="35"/>
<source>About SPEx</source>
<translation>About SPEx</translation>
</message>
<message>
<location filename="../../about.ui" line="82"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:8pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:20pt; font-weight:600;&quot;&gt;About SPEx&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:12pt;&quot;&gt;Versione {ver}&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:7pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:12pt;&quot;&gt;SPEx (Split Parse &amp;amp; Extract) e&apos; un tool utile per gli specialisti di linguistica dei corpora che intendono rifinire il loro corpus, eliminando tutti gli elementi non &lt;/span&gt;&lt;span style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:12pt;&quot;&gt;necessari e dividendo in file singoli le raccolte di&lt;/span&gt;&lt;span style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:12pt;&quot;&gt; &amp;quot;articoli&amp;quot; scaricate da database online quali &lt;/span&gt;&lt;span style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:12pt; font-style:italic;&quot;&gt;Lexis Uni&lt;/span&gt;&lt;span style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:12pt;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:12pt;&quot;&gt;Puoi tranquillamente suggerire SPEx ad un tuo collega: ci fa molto piacere! Ricordati solo di mandarci una mail con scopo e impressioni di utilizzo: questo ci aiuta a tenere traccia di quanti ricercatori stanno usando SPEx e pensare a sviluppi futuri di questo tool. &lt;/span&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:7pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:10pt;&quot;&gt;SPEx non e&apos; soggetto ad alcun tipo di licenza e viene distribuito senza alcuna garanzia.&lt;br /&gt;Essendo un progetto &amp;quot;del tempo libero&amp;quot;, bug e proposte di espansione verranno sicuramente presi in considerazione, anche se le tempistiche potrebbero variare.&lt;/span&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:12pt;&quot;&gt;Contatti:&lt;/span&gt;&lt;span style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:7pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:10pt;&quot;&gt;12parsec.software@gmail.com&lt;/span&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:12pt;&quot;&gt;Download:&lt;br /&gt;&lt;/span&gt;&lt;a href=&quot;https://drive.google.com/open?id=10zUm7uHk9st36PVotMwh9wqOeXU3xrr8&quot;&gt;&lt;span style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:7pt; text-decoration: underline; color:#0000ff;&quot;&gt;https://drive.google.com/open?id=10zUm7uHk9st36PVotMwh9wqOeXU3xrr8&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:7pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:20pt; font-weight:600;&quot;&gt;About SPEx&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot; font-size:12pt;&quot;&gt;Versione {ver}&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:12pt;&quot;&gt;SPEx (Split Parse &amp;amp; Extract) e&apos; un tool, utile ai linguisti che devono costruire un corpus, che ha come funzione principale dividere e ripulire da elementi non necessari raccolte di &amp;quot;articoli&amp;quot; scaricati da database online quali &lt;/span&gt;&lt;span style=&quot; font-size:12pt; font-style:italic;&quot;&gt;LexisNexis&lt;/span&gt;&lt;span style=&quot; font-size:12pt;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:12pt;&quot;&gt;Pui tranquillamente suggerire SPEx ad un tuo collega, ci fa molto piacere! Ricordati solo di mandarci (o farci mandare) una mail con scopo e impressioni di utilizzo: questo ci aiuta a tenere traccia di quanti ricercatori stanno usando SPEx e pensare a sviluppi futuri di questo tool. &lt;/span&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;SPEx non e&apos; soggetto ad alcun tipo di licenza e viene distribuito senza alcuna garanzia.&lt;br /&gt;Essendo un progetto &amp;quot;del tempo libero&amp;quot;, bug e proposte di espansione verranno sicuramente presi in considerazione ma non possiamo dirvi nulla riguardo alle tempistiche.&lt;/span&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:12pt;&quot;&gt;Contatti:&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;12parsec.software@gmail.com&lt;/span&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:12pt;&quot;&gt;Download:&lt;br /&gt;&lt;/span&gt;&lt;a href=&quot;https://drive.google.com/open?id=10zUm7uHk9st36PVotMwh9wqOeXU3xrr8&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;https://drive.google.com/open?id=10zUm7uHk9st36PVotMwh9wqOeXU3xrr8&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="vanished">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:7pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:20pt; font-weight:600;&quot;&gt;About SPEx&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot; font-size:12pt;&quot;&gt;Versione {ver}&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:12pt;&quot;&gt;SPEx (Split Parse &amp;amp; Extract) is a useful tool for corpus linguists who wish to refine their corpora, by eliminating unnecessary elements and divide in single files the sets of &amp;quot;articles&amp;quot; downloaded from online databases such as &lt;/span&gt;&lt;span style=&quot; font-size:12pt; font-style:italic;&quot;&gt;Nexis Uni&lt;/span&gt;&lt;span style=&quot; font-size:12pt;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:12pt;&quot;&gt;We would be immensely grateful if you could suggest SPEx to your colleagues! Just remember to send us an email telling us what you think of the program, as this will help us to trace how many researchers are using SPEx and think of possible future developments of this tool. &lt;/span&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt; You don&apos;t need any type of licence to use SPEx. This software is provided &quot;as is&quot;, without any warranty.&lt;br /&gt;Being a &amp;quot;spare time&amp;quot; project, bugs and expansion proposals will certainly be taken into consideration, although time frames may vary.&lt;/span&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:12pt;&quot;&gt;Contacts:&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;12parsec.software@gmail.com&lt;/span&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:12pt;&quot;&gt;Download:&lt;br /&gt;&lt;/span&gt;&lt;a href=&quot;https://drive.google.com/open?id=10zUm7uHk9st36PVotMwh9wqOeXU3xrr8&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;https://drive.google.com/open?id=10zUm7uHk9st36PVotMwh9wqOeXU3xrr8&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
</context>
</TS>
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="en_US">
<context>
<name>editconf</name>
<message>
<location filename="../../advopt.ui" line="26"/>
<source>Opzioni Avanzate</source>
<translation>Advanced Options</translation>
</message>
<message>
<location filename="../../advopt.ui" line="41"/>
<source>ATTENZIONE!! Quello che scrivi qui potrebbe rompere tutto!</source>
<translation>WARNING!! What you write here may break everything!</translation>
</message>
<message>
<location filename="../../advopt.ui" line="65"/>
<source>Da grandi poteri derivano grandi responsabilita&apos;</source>
<translation>With great power comes great responsibility</translation>
</message>
<message>
<location filename="../../advopt.ui" line="99"/>
<source>Cancel</source>
<translation>Cancel</translation>
</message>
<message>
<location filename="../../advopt.ui" line="106"/>
<source>OK</source>
<translation>OK</translation>
</message>
</context>
</TS>
@@ -0,0 +1,78 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="en_US">
<context>
<name>advtitolo3</name>
<message>
<location filename="../../avanzatetitolo3.ui" line="23"/>
<source>Avanzate Titolo</source>
<translation>Title - Advanced Options</translation>
</message>
<message>
<location filename="../../avanzatetitolo3.ui" line="47"/>
<source>(Terzo Elemento)</source>
<translation>(Third Element)</translation>
</message>
<message>
<location filename="../../avanzatetitolo3.ui" line="54"/>
<location filename="../../avanzatetitolo3.ui" line="107"/>
<location filename="../../avanzatetitolo3.ui" line="179"/>
<source>Numero</source>
<translation>Number</translation>
</message>
<message>
<location filename="../../avanzatetitolo3.ui" line="61"/>
<location filename="../../avanzatetitolo3.ui" line="114"/>
<location filename="../../avanzatetitolo3.ui" line="189"/>
<source>Data</source>
<translation>Date</translation>
</message>
<message>
<location filename="../../avanzatetitolo3.ui" line="68"/>
<location filename="../../avanzatetitolo3.ui" line="124"/>
<location filename="../../avanzatetitolo3.ui" line="196"/>
<source>Titolo</source>
<translation>Title</translation>
</message>
<message>
<location filename="../../avanzatetitolo3.ui" line="100"/>
<source>Secondo Elemento</source>
<translation>Second Element</translation>
</message>
<message>
<location filename="../../avanzatetitolo3.ui" line="138"/>
<source>Seleziona l&apos;ordine degli elementi nel nomi file</source>
<translation>Select the order of the elements in the file name</translation>
</message>
<message>
<location filename="../../avanzatetitolo3.ui" line="145"/>
<source>Prefisso Titolo</source>
<translation>Title Prefix</translation>
</message>
<message>
<location filename="../../avanzatetitolo3.ui" line="172"/>
<source>Primo elemento</source>
<translation>First Element</translation>
</message>
<message>
<location filename="../../avanzatetitolo3.ui" line="217"/>
<source>Modifica ordine elementi nome file</source>
<translation>Modify the order of the elements in the file name</translation>
</message>
<message>
<location filename="../../avanzatetitolo3.ui" line="226"/>
<source>Annulla</source>
<translation>Cancel</translation>
</message>
<message>
<location filename="../../avanzatetitolo3.ui" line="233"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
<location filename="../../avanzatetitolo3.ui" line="242"/>
<source>Suffisso Titolo</source>
<translation>Title suffix</translation>
</message>
</context>
</TS>
@@ -0,0 +1,196 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS><TS version="2.0" language="en" sourcelanguage="it_IT">
<context>
<name>bananaAdvOpt</name>
<message>
<location filename="../../../guimain.py" line="531"/>
<source>AdvancedOptions: Configurazione non accettata</source>
<translation>Advanced Options: Configuration not accepted</translation>
</message>
<message>
<location filename="../../../guimain.py" line="537"/>
<source>Avanzate Globali</source>
<translation>Global Advanced Options</translation>
</message>
<message>
<location filename="../../../guimain.py" line="545"/>
<source>Parametri inseriti validi, configurazione accettata</source>
<translation>Valid input parameters, configuration accepted</translation>
</message>
</context>
<context>
<name>bananaMain</name>
<message>
<location filename="../../../guimain.py" line="47"/>
<source>Impostazioni Titolo</source>
<translation>Title Options</translation>
</message>
<message>
<location filename="../../../guimain.py" line="48"/>
<source>Selezione Output</source>
<translation>Select Output</translation>
</message>
<message>
<location filename="../../../guimain.py" line="93"/>
<source>MainWindow: Configurazione non accettata</source>
<translation>MainWindow: Configuration not accepted</translation>
</message>
<message>
<location filename="../../../guimain.py" line="113"/>
<source>Prossima Tab</source>
<translation>Next Tab</translation>
</message>
<message>
<location filename="../../../guimain.py" line="118"/>
<source>Tab Precedente</source>
<translation>Former Tab</translation>
</message>
<message>
<location filename="../../../guimain.py" line="122"/>
<source>Apri Carica Preset</source>
<translation>Open Load Preset</translation>
</message>
<message>
<location filename="../../../guimain.py" line="123"/>
<source>Carica Preset</source>
<translation>Load Preset</translation>
</message>
<message>
<location filename="../../../guimain.py" line="132"/>
<source>Riempio tutte le tab</source>
<translation>Fill all Tabs</translation>
</message>
<message>
<location filename="../../../guimain.py" line="137"/>
<source>Apri Salva Preset</source>
<translation>Open Save Preset</translation>
</message>
<message>
<location filename="../../../guimain.py" line="157"/>
<source>Apri Opzioni Avanzate</source>
<translation>Open Advanced Options</translation>
</message>
<message>
<location filename="../../../guimain.py" line="164"/>
<source>Apri Opzioni Lingua</source>
<translation>Open Language Options</translation>
</message>
<message>
<location filename="../../../guimain.py" line="173"/>
<source>Apri Finestra About</source>
<translation>Open About Window</translation>
</message>
<message>
<location filename="../../../guimain.py" line="177"/>
<source>Seleziona Cartella Sorgente</source>
<translation>Select Input Folder</translation>
</message>
<message>
<location filename="../../../guimain.py" line="181"/>
<source>Selezionata Cartella Sorgente: {}</source>
<translation>SelInput Folder Selected: {}</translation>
</message>
<message>
<location filename="../../../guimain.py" line="186"/>
<source>Seleziona Cartella Destinazione</source>
<translation>Select Output Folder</translation>
</message>
<message>
<location filename="../../../guimain.py" line="190"/>
<source>Selezionata Cartella Destinazione: {}</source>
<translation>Output Folder Selected: {}</translation>
</message>
<message>
<location filename="../../../guimain.py" line="198"/>
<source>Apro in directory: {}</source>
<translation>Opening in directory:{}</translation>
</message>
<message>
<location filename="../../../guimain.py" line="166"/>
<source>Lingua</source>
<translation>Language</translation>
</message>
<message>
<location filename="../../../guimain.py" line="166"/>
<source>Disponibili</source>
<translation>Available</translation>
</message>
</context>
<context>
<name>bananaSelezOut</name>
<message>
<location filename="../../../guimain.py" line="443"/>
<source>SelezUscita: Configurazione non accettata</source>
<translation>SelectOutput: Configuration not accepted</translation>
</message>
<message>
<location filename="../../../guimain.py" line="447"/>
<source>Applico Impostazioni File Uscita</source>
<translation>Applying Output File Options</translation>
</message>
<message>
<location filename="../../../guimain.py" line="487"/>
<source>Sto SPLITTANDO, attendi..</source>
<translation>SPLITTING, please wait..</translation>
</message>
<message>
<location filename="../../../guimain.py" line="488"/>
<source>Sto Splittando..</source>
<translation>Splitting..</translation>
</message>
<message>
<location filename="../../../guimain.py" line="507"/>
<source>FINITO!</source>
<translation>DONE!</translation>
</message>
</context>
<context>
<name>bananaTitolo</name>
<message>
<location filename="../../../guimain.py" line="253"/>
<source>Titolo: Configurazione non accettata</source>
<translation>Title: Configuration not accepted</translation>
</message>
<message>
<location filename="../../../guimain.py" line="256"/>
<source>Mostro la finestra avanzate titolo</source>
<translation>Show advanced options window</translation>
</message>
<message>
<location filename="../../../guimain.py" line="261"/>
<source>Applico impostazioni Titolo</source>
<translation>Applying Title options</translation>
</message>
</context>
<context>
<name>bananaTitoloAvanzate</name>
<message>
<location filename="../../../guimain.py" line="318"/>
<source>AvanzateTitolo: Configurazione non accettata</source>
<translation>Title Advanced Options: Configuration not accepted</translation>
</message>
<message>
<location filename="../../../guimain.py" line="372"/>
<source>Avanzate Titolo Accettate</source>
<translation>Title Advanced Options Accepted</translation>
</message>
<message>
<location filename="../../../guimain.py" line="378"/>
<source>Avanzate Titolo Rifiutate</source>
<translation>Title Advanced Options Rejected</translation>
</message>
</context>
<context>
<name>init</name>
<message>
<location filename="../../../guimain.py" line="45"/>
<source>Impostazioni Titolo</source>
<translation type="obsolete">Title Settings</translation>
</message>
<message>
<location filename="../../../guimain.py" line="46"/>
<source>Selezione Output</source>
<translation type="obsolete">Output Selection</translation>
</message>
</context>
</TS>
@@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS><TS version="2.0" language="en_US" sourcelanguage="it_IT">
<context>
<name>bananaCONF</name>
<message>
<location filename="../../../libbananasplit/libconfload.py" line="24"/>
<source>Cerco le configurazioni in: [{}]</source>
<translation>Searching configurations in [{}]</translation>
</message>
<message>
<location filename="../../../libbananasplit/libconfload.py" line="26"/>
<source>Non mi e&apos; stata fornita una directory per i file di configurazione</source>
<translation>Directory for configuration files not provided</translation>
</message>
<message>
<location filename="../../../libbananasplit/libconfload.py" line="32"/>
<source>Carico i file di configurazione</source>
<translation>Loading configuration files</translation>
</message>
<message>
<location filename="../../../libbananasplit/libconfload.py" line="41"/>
<source>Caricato correttamente: {}</source>
<translation>Correactly loaded: {}</translation>
</message>
<message>
<location filename="../../../libbananasplit/libconfload.py" line="44"/>
<source>Impossibile leggere la configurazione:{}
<byte value="x9"/><byte value="x9"/><byte value="x9"/><byte value="x9"/><byte value="x9"/><byte value="x9"/><byte value="x9"/><byte value="x9"/><byte value="x9"/>Controlla il file a riga: {} e colonna:{}</source>
<translation>Cannot read configuration: {}
<byte value="x9"/><byte value="x9"/><byte value="x9"/><byte value="x9"/><byte value="x9"/><byte value="x9"/><byte value="x9"/><byte value="x9"/><byte value="x9"/>Check files for rows: {} and colums: {}</translation>
</message>
<message>
<location filename="../../../libbananasplit/libconfload.py" line="47"/>
<source>Impossibile aprire il file: {}</source>
<translation>Cannot opaen file: {}</translation>
</message>
<message>
<location filename="../../../libbananasplit/libconfload.py" line="49"/>
<source>Eccezione inaspettata: {}</source>
<translation>Unexpected exception: {}</translation>
</message>
<message>
<location filename="../../../libbananasplit/libconfload.py" line="51"/>
<source>Non ho trovato alcun file di configurazione!</source>
<translation>No configuration file could be found!</translation>
</message>
<message>
<location filename="../../../libbananasplit/libconfload.py" line="68"/>
<source>Salvo la configurazione: {}</source>
<translation>Saving configuation: {}</translation>
</message>
<message>
<location filename="../../../libbananasplit/libconfload.py" line="74"/>
<source>Impossibile salvare il file: {} - [{}]</source>
<translation>Cannot save file: {} - [{}]</translation>
</message>
<message>
<location filename="../../../libbananasplit/libconfload.py" line="76"/>
<source>Errore imprevisto nella scrittura del file: {}</source>
<translation>Unexpected error while writing file</translation>
</message>
<message>
<location filename="../../../libbananasplit/libconfload.py" line="101"/>
<source>Parametro di configurazione non valido! [{}]</source>
<translation>Configuration parameter not valid! [{}]</translation>
</message>
</context>
</TS>
@@ -0,0 +1,161 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS><TS version="2.0" language="en_US" sourcelanguage="it_IT">
<context>
<name>bananaSPLITTER</name>
<message>
<location filename="../../../libbananasplit/libsplit.py" line="43"/>
<source>Nuovo SPLITTER su file: {}</source>
<translation>New SPLITTER on file: {}</translation>
</message>
<message>
<location filename="../../../libbananasplit/libsplit.py" line="54"/>
<source>Controllo se ci sono dei duplicati..</source>
<translation>Checking for duplicates..</translation>
</message>
<message>
<location filename="../../../libbananasplit/libsplit.py" line="60"/>
<source>Salto il controllo dei duplicati..</source>
<translation>Skipping check for duplicates..</translation>
</message>
<message>
<location filename="../../../libbananasplit/libsplit.py" line="69"/>
<source>Non posso sovrascrivere i vecchi file, eliminali manualmente!</source>
<translation>Cannot overwrite old files, delete them manually!</translation>
</message>
<message>
<location filename="../../../libbananasplit/libsplit.py" line="77"/>
<source>L&apos;elaborazione del file ha richiesto {:4.2f} sec</source>
<translation>File elaboration took {:4.2f} sec</translation>
</message>
<message>
<location filename="../../../libbananasplit/libsplit.py" line="80"/>
<source>Il file [{}] contiene caratteri non compatibili con la codifica scelta! [{}]</source>
<translation>The [{}] file contains characters not compatible with the chosen codification! [{}]</translation>
</message>
<message>
<location filename="../../../libbananasplit/libsplit.py" line="92"/>
<source>Carico il contenuto..</source>
<translation>Loading content..</translation>
</message>
<message>
<location filename="../../../libbananasplit/libsplit.py" line="97"/>
<source>Impossibile aprire il file: {}! [{}]</source>
<translation>Cannto open file: {}! [{}]</translation>
</message>
<message>
<location filename="../../../libbananasplit/libsplit.py" line="105"/>
<source>Elimino righe vuote e caratteri inutili..</source>
<translation>Deleting all blank lines and useless characters..</translation>
</message>
<message>
<location filename="../../../libbananasplit/libsplit.py" line="117"/>
<source>Errore inaspettato durante l&apos;eliminazione delle righe vuote!</source>
<translation>Unexpected error while deleting blank lines!</translation>
</message>
<message>
<location filename="../../../libbananasplit/libsplit.py" line="228"/>
<source>Individuo il contenuto..</source>
<translation>Identifying content..</translation>
</message>
<message>
<location filename="../../../libbananasplit/libsplit.py" line="278"/>
<source>Ho trovato una riga ambigua.. potrebbe essere una data ma non so: [{}]</source>
<translation>Ambiguous line found..could be a date but not sure: [{}]</translation>
</message>
<message>
<location filename="../../../libbananasplit/libsplit.py" line="273"/>
<source>E&apos; successo qualcosa mentre stavo cercando il nome della pubblicazione,<byte value="x9"/><byte value="x9"/><byte value="x9"/><byte value="x9"/><byte value="x9"/><byte value="x9"/><byte value="x9"/><byte value="x9"/><byte value="x9"/>controlla i file di uscita! [{}]</source>
<translation>Soemthing happen while seraching for the publication name, <byte value="x9"/><byte value="x9"/><byte value="x9"/><byte value="x9"/><byte value="x9"/><byte value="x9"/><byte value="x9"/><byte value="x9"/><byte value="x9"/>chek output files! [{}]</translation>
</message>
<message>
<location filename="../../../libbananasplit/libsplit.py" line="292"/>
<source>Errore inaspettato, contatta il tuo sviluppatore di fiducia!</source>
<translation>Unexpected error, please contact your trusted developer!</translation>
</message>
<message>
<location filename="../../../libbananasplit/libsplit.py" line="190"/>
<source>Ho individuato una separatore valido prima che si chiusesse l&apos;articolo precedente, controlla i tuoi file in uscita!
<byte value="x9"/><byte value="x9"/><byte value="x9"/>L&apos;errore dovrebbe essere intorno all&apos;articolo {} ma non sono sicuro!
<byte value="x9"/><byte value="x9"/><byte value="x9"/>[{}]</source>
<translation>Valid separator found before the previous article ended, check output files!
<byte value="x9"/><byte value="x9"/><byte value="x9"/>The error should be around article {} but I&apos;m not sure!
<byte value="x9"/><byte value="x9"/><byte value="x9"/>[{}]</translation>
</message>
<message>
<location filename="../../../libbananasplit/libsplit.py" line="327"/>
<source>Stato Interno Sconosciuto</source>
<translation>Internal Status Not Recognized</translation>
</message>
<message>
<location filename="../../../libbananasplit/libsplit.py" line="331"/>
<source>Nel file ho trovato {0} articoli..</source>
<translation>Found {0} articles int he file..</translation>
</message>
<message>
<location filename="../../../libbananasplit/libsplit.py" line="333"/>
<source>Attentione, LexisNexis ne ha saltati {} !!!</source>
<translation>Warning, LexisNexis skipped {} !!!</translation>
</message>
<message>
<location filename="../../../libbananasplit/libsplit.py" line="252"/>
<source>Il conto dei documenti non torna! LexisNexis ne ha saltato qualcuno!
Precedente:{0}-Attuale:{1}</source>
<translation>Something doesn&apos;t add up! LexisNexis skipped some articles!
Previous: {0}-Current:{1}</translation>
</message>
<message>
<location filename="../../../libbananasplit/libsplit.py" line="310"/>
<source>Ho individuato una separatore valido prima che si chiusesse l&apos;articolo precedente, controlla i tuoi file in uscita!
<byte value="x9"/><byte value="x9"/><byte value="x9"/><byte value="x9"/><byte value="x9"/>L&apos;errore dovrebbe essere intorno all&apos;articolo {} ma non sono sicuro!
<byte value="x9"/><byte value="x9"/>[{}]</source>
<translation>Found a valid separator before the previous article ended, check output files!
<byte value="x9"/><byte value="x9"/><byte value="x9"/><byte value="x9"/><byte value="x9"/>The error should be around article {} but I&apos;m not sure!
<byte value="x9"/><byte value="x9"/>[{}]</translation>
</message>
<message>
<location filename="../../../libbananasplit/libsplit.py" line="350"/>
<source>Duplicato: {}</source>
<translation>Duplicate: {}</translation>
</message>
<message>
<location filename="../../../libbananasplit/libsplit.py" line="354"/>
<source>Ho rimosso {} duplicati di {} articoli..</source>
<translation>Removed {} duplicates of {} articles..</translation>
</message>
<message>
<location filename="../../../libbananasplit/libsplit.py" line="360"/>
<source>Salvo gli articoli in file separati...</source>
<translation>Saving articles in separate files...</translation>
</message>
<message>
<location filename="../../../libbananasplit/libsplit.py" line="390"/>
<source>Persorso: {0}</source>
<translation>Path: {}</translation>
</message>
<message>
<location filename="../../../libbananasplit/libsplit.py" line="400"/>
<source>Qualcosa e&apos; andato storto, non riesco a scrivere il file: {}</source>
<translation>Something went wrong, cannot write file: {}</translation>
</message>
<message>
<location filename="../../../libbananasplit/libsplit.py" line="385"/>
<source>Ho salvato meno file rispetto a quelli trovati!</source>
<translation>Saved fewer files than found!</translation>
</message>
<message>
<location filename="../../../libbananasplit/libsplit.py" line="389"/>
<source>Salvo gli articoli in un singolo file vicino agli originali...</source>
<translation>Saving article in a single file near the originals...</translation>
</message>
<message>
<location filename="../../../libbananasplit/libsplit.py" line="28"/>
<source>Sto operando sul file: {}..</source>
<translation>Working on file: {}..</translation>
</message>
<message>
<location filename="../../../libbananasplit/libsplit.py" line="37"/>
<source>Non e&apos; stato fornito il nome di alcun file da splittare!</source>
<translation>The name of the file to split was not provided!</translation>
</message>
</context>
</TS>
@@ -0,0 +1,130 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="en_US">
<context>
<name>mainwin</name>
<message>
<location filename="../../mainwindow.ui" line="32"/>
<source>bananaSPLIT</source>
<translation>bananaSPLIT</translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="58"/>
<source>Finestra dei messaggi</source>
<translation>Communications window</translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="93"/>
<source>Preset corrente: </source>
<translation>Current preset: </translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="106"/>
<location filename="../../mainwindow.ui" line="265"/>
<location filename="../../mainwindow.ui" line="272"/>
<source>...</source>
<translation>...</translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="149"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:6.6pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot;-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:7pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="170"/>
<source>Selezione Input</source>
<translation>Select Input</translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="187"/>
<location filename="../../mainwindow.ui" line="213"/>
<source>-&gt; </source>
<translation>-&gt; </translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="242"/>
<source>Cartella sorgente</source>
<translation>Input Folder</translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="254"/>
<source>Cartella destinazione</source>
<translation>Output Folder</translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="308"/>
<source>File disponibili per la conversione</source>
<translation>Files available for conversion</translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="342"/>
<source>Versione dei File</source>
<translation>File Version</translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="355"/>
<source>Nuova</source>
<translation>New (since 2019)</translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="371"/>
<source>Vecchia</source>
<translation>Old</translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="398"/>
<source>Avanti</source>
<translation>OK</translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="437"/>
<source>File</source>
<translation>File</translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="444"/>
<location filename="../../mainwindow.ui" line="483"/>
<source>Opzioni</source>
<translation>Options</translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="451"/>
<source>Help</source>
<translation>Help</translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="466"/>
<source>Carica Preset</source>
<translation>Load Preset</translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="478"/>
<source>Salva Preset</source>
<translation>Save Preset</translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="495"/>
<source>Lingua Interfaccia</source>
<translation>Interface Language</translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="504"/>
<source>Avanzate</source>
<translation>Advanced Options</translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="516"/>
<source>Manuale</source>
<translation>Manual</translation>
</message>
<message>
<location filename="../../mainwindow.ui" line="525"/>
<source>About SPEx</source>
<translation>About SPEx</translation>
</message>
</context>
</TS>
@@ -0,0 +1,78 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="en_US">
<context>
<name>selezout</name>
<message>
<location filename="../../selezout.ui" line="14"/>
<source>Seleziona Linuga e Output</source>
<translation>Select Language and Output</translation>
</message>
<message>
<location filename="../../selezout.ui" line="31"/>
<source>Seleziona la lingua degli articoli</source>
<translation>Select article language</translation>
</message>
<message>
<location filename="../../selezout.ui" line="92"/>
<source>Seleziona il tipo di file da salvare</source>
<translation>Select file type</translation>
</message>
<message>
<location filename="../../selezout.ui" line="116"/>
<source>Bodyfile + File singoli</source>
<translation>Bodyfile + Single files</translation>
</message>
<message>
<location filename="../../selezout.ui" line="131"/>
<source>Bodyfile</source>
<translation>Bodyfile</translation>
</message>
<message>
<location filename="../../selezout.ui" line="143"/>
<source>File singoli</source>
<translation>Single files</translation>
</message>
<message>
<location filename="../../selezout.ui" line="163"/>
<source>Altre Opzioni </source>
<translation>Other Options </translation>
</message>
<message>
<location filename="../../selezout.ui" line="190"/>
<source>Tenta rimozione duplicati</source>
<translation>Attempt duplicates removal</translation>
</message>
<message>
<location filename="../../selezout.ui" line="202"/>
<source>Includi titolo all&apos;interno del file</source>
<translation>Include title inside file</translation>
</message>
<message>
<location filename="../../selezout.ui" line="214"/>
<source>Rimuovi interruzioni parola (a capo)</source>
<translatorcomment>Non so se è giusto</translatorcomment>
<translation>Delete line breaks</translation>
</message>
<message>
<location filename="../../selezout.ui" line="226"/>
<source>Svuota cartella di destinazione</source>
<translation>Empty output folder</translation>
</message>
<message>
<location filename="../../selezout.ui" line="240"/>
<source>Caratteri speciali da rimuovere </source>
<translation>Special characters to remove </translation>
</message>
<message>
<location filename="../../selezout.ui" line="306"/>
<source>Indietro</source>
<translation>Back</translation>
</message>
<message>
<location filename="../../selezout.ui" line="362"/>
<source>SPLITTA!</source>
<translation>SPLIT!</translation>
</message>
</context>
</TS>
@@ -0,0 +1,106 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="en_US">
<context>
<name>titolo</name>
<message>
<location filename="../../titolow.ui" line="14"/>
<source>Nomi file di Uscita</source>
<translation>Output file name</translation>
</message>
<message>
<location filename="../../titolow.ui" line="36"/>
<source>Numero di caratteri</source>
<translation>Character number</translation>
</message>
<message>
<source>Avanzate Titolo</source>
<translation type="vanished">Advanced Options (Title)</translation>
</message>
<message>
<location filename="../../titolow.ui" line="113"/>
<source>Opzioni Avanzate (Titolo)</source>
<translation>Advanced Options (Title)</translation>
</message>
<message>
<location filename="../../titolow.ui" line="156"/>
<source>Indietro</source>
<translation>Back</translation>
</message>
<message>
<location filename="../../titolow.ui" line="187"/>
<source>Avanti</source>
<translation>Next</translation>
</message>
<message>
<location filename="../../titolow.ui" line="221"/>
<source>YYYY MM DD, es. 2000 12 31 (jpn)</source>
<translation>YYYY MM DD, eg. 2000 12 31 (Jpn)</translation>
</message>
<message>
<location filename="../../titolow.ui" line="242"/>
<source>DD MM YYYY, es. 31 12 2000 (ita)</source>
<translation>DD MM YYYY, eg. 31 12 2000 (Ita)</translation>
</message>
<message>
<location filename="../../titolow.ui" line="260"/>
<source>MM DD YYYY, es. 12 31 2000 (us)</source>
<translation>MM DD YYYY, eg. 12 31 2000 (US)</translation>
</message>
<message>
<location filename="../../titolow.ui" line="286"/>
<source>Impostazioni nome file in uscita</source>
<translation>Filename options</translation>
</message>
<message>
<location filename="../../titolow.ui" line="304"/>
<source>Data</source>
<translation>Date</translation>
</message>
<message>
<location filename="../../titolow.ui" line="335"/>
<source>Titolo articolo</source>
<translation>Article title</translation>
</message>
<message>
<location filename="../../titolow.ui" line="355"/>
<source>Spazio</source>
<translation>Space</translation>
</message>
<message>
<location filename="../../titolow.ui" line="376"/>
<source>,</source>
<translation>,</translation>
</message>
<message>
<location filename="../../titolow.ui" line="397"/>
<source>+</source>
<translation>+</translation>
</message>
<message>
<location filename="../../titolow.ui" line="418"/>
<source>-</source>
<translation>-</translation>
</message>
<message>
<location filename="../../titolow.ui" line="439"/>
<source>_</source>
<translation>_</translation>
</message>
<message>
<location filename="../../titolow.ui" line="462"/>
<source>Altro:</source>
<translation>Other:</translation>
</message>
<message>
<location filename="../../titolow.ui" line="518"/>
<source>Separatore</source>
<translation>Separator</translation>
</message>
<message>
<location filename="../../titolow.ui" line="543"/>
<source>Numero documento</source>
<translation>Document number</translation>
</message>
</context>
</TS>
+400
View File
@@ -0,0 +1,400 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>selezout</class>
<widget class="QWidget" name="selezout">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>718</width>
<height>573</height>
</rect>
</property>
<property name="windowTitle">
<string>Seleziona Linuga e Output</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QLabel" name="lbl_lingua">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Seleziona la lingua degli articoli</string>
</property>
</widget>
</item>
<item>
<widget class="Line" name="line_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QComboBox" name="cmb_lingua">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="frame">
<bool>true</bool>
</property>
<property name="modelColumn">
<number>0</number>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Expanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="lbl_indicazioni">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Seleziona il tipo di file da salvare</string>
</property>
</widget>
</item>
<item>
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="sizeConstraint">
<enum>QLayout::SetMaximumSize</enum>
</property>
<item>
<widget class="QRadioButton" name="rad_mainbodyEFile">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Bodyfile + File singoli</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="rad_mainbody">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Bodyfile</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="rad_file">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>File singoli</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="lbl_indicazioni_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Altre Opzioni </string>
</property>
</widget>
</item>
<item>
<widget class="Line" name="line_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QCheckBox" name="chk_removeDuplicates">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Tenta rimozione duplicati</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QCheckBox" name="chk_includeTitle">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Includi titolo all'interno del file</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="chk_removeBreakWord">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Rimuovi interruzioni parola (a capo)</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QCheckBox" name="chk_cleaDestFolder">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Svuota cartella di destinazione</string>
</property>
</widget>
</item>
<item row="2" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="label">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Caratteri speciali da rimuovere </string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lin_specialChars"/>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="Line" name="line_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QPushButton" name="btn_indietro">
<property name="minimumSize">
<size>
<width>100</width>
<height>40</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>75</width>
<height>16777215</height>
</size>
</property>
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="text">
<string>Indietro</string>
</property>
<property name="icon">
<iconset resource="resources/resources.qrc">
<normaloff>:/ico/icons/icons8-arrow-80-back.png</normaloff>:/ico/icons/icons8-arrow-80-back.png</iconset>
</property>
<property name="iconSize">
<size>
<width>25</width>
<height>25</height>
</size>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="btn_split">
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>40</height>
</size>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="cursor">
<cursorShape>PointingHandCursor</cursorShape>
</property>
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="text">
<string>SPLITTA!</string>
</property>
<property name="icon">
<iconset resource="resources/resources.qrc">
<normaloff>:/ico/icons/logo4.png</normaloff>:/ico/icons/logo4.png</iconset>
</property>
<property name="iconSize">
<size>
<width>40</width>
<height>40</height>
</size>
</property>
<property name="flat">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<tabstops>
<tabstop>cmb_lingua</tabstop>
<tabstop>rad_mainbodyEFile</tabstop>
<tabstop>rad_mainbody</tabstop>
<tabstop>rad_file</tabstop>
<tabstop>chk_removeDuplicates</tabstop>
<tabstop>chk_includeTitle</tabstop>
<tabstop>chk_removeBreakWord</tabstop>
<tabstop>chk_cleaDestFolder</tabstop>
<tabstop>lin_specialChars</tabstop>
<tabstop>btn_split</tabstop>
<tabstop>btn_indietro</tabstop>
</tabstops>
<resources>
<include location="resources/resources.qrc"/>
</resources>
<connections/>
</ui>
+591
View File
@@ -0,0 +1,591 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>titolo</class>
<widget class="QWidget" name="titolo">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>715</width>
<height>567</height>
</rect>
</property>
<property name="windowTitle">
<string>Nomi file di Uscita</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="5" column="0" colspan="3">
<layout class="QHBoxLayout" name="lyt_nchars">
<property name="sizeConstraint">
<enum>QLayout::SetNoConstraint</enum>
</property>
<item>
<widget class="QLabel" name="lbl_ncarat">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
</font>
</property>
<property name="text">
<string>Numero di caratteri</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="spn_ncarat">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>50</width>
<height>0</height>
</size>
</property>
<property name="wrapping">
<bool>true</bool>
</property>
<property name="buttonSymbols">
<enum>QAbstractSpinBox::UpDownArrows</enum>
</property>
<property name="minimum">
<number>3</number>
</property>
<property name="maximum">
<number>32</number>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item row="7" column="0" colspan="3">
<widget class="Line" name="line_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="1" column="0" colspan="3">
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="15" column="0" colspan="3">
<layout class="QHBoxLayout" name="lyt_buttons">
<item>
<widget class="QPushButton" name="btn_avanzate">
<property name="minimumSize">
<size>
<width>120</width>
<height>40</height>
</size>
</property>
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="text">
<string>Opzioni Avanzate (Titolo)</string>
</property>
<property name="icon">
<iconset resource="resources/resources.qrc">
<normaloff>:/ico/icons/icons8-smartphone-ram-100.png</normaloff>:/ico/icons/icons8-smartphone-ram-100.png</iconset>
</property>
<property name="iconSize">
<size>
<width>30</width>
<height>30</height>
</size>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QPushButton" name="btn_indietro">
<property name="minimumSize">
<size>
<width>100</width>
<height>40</height>
</size>
</property>
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="text">
<string>Indietro</string>
</property>
<property name="icon">
<iconset resource="resources/resources.qrc">
<normaloff>:/ico/icons/icons8-arrow-80-back.png</normaloff>:/ico/icons/icons8-arrow-80-back.png</iconset>
</property>
<property name="iconSize">
<size>
<width>25</width>
<height>25</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btn_avanti">
<property name="minimumSize">
<size>
<width>100</width>
<height>40</height>
</size>
</property>
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<property name="text">
<string>Avanti</string>
</property>
<property name="icon">
<iconset resource="resources/resources.qrc">
<normaloff>:/ico/icons/icons8-arrow-80.png</normaloff>:/ico/icons/icons8-arrow-80.png</iconset>
</property>
<property name="iconSize">
<size>
<width>25</width>
<height>25</height>
</size>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item row="3" column="0" colspan="3">
<layout class="QVBoxLayout" name="lyt_date">
<item>
<widget class="QRadioButton" name="rad_datajpn">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
</font>
</property>
<property name="text">
<string>YYYY MM DD, es. 2000 12 31 (jpn)</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="rad_dataita">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
</font>
</property>
<property name="text">
<string>DD MM YYYY, es. 31 12 2000 (ita)</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="rad_datausa">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
</font>
</property>
<property name="text">
<string>MM DD YYYY, es. 12 31 2000 (us)</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="0" column="0" colspan="3">
<widget class="QLabel" name="lbl_impotit">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Impostazioni nome file in uscita</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QCheckBox" name="chk_data">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Data</string>
</property>
</widget>
</item>
<item row="9" column="1">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="4" column="0" colspan="2">
<widget class="QCheckBox" name="chk_titolo">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Titolo articolo</string>
</property>
</widget>
</item>
<item row="9" column="0">
<layout class="QFormLayout" name="lyt_sep">
<item row="0" column="0">
<widget class="QRadioButton" name="rad_spazio">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
</font>
</property>
<property name="text">
<string>Spazio</string>
</property>
<attribute name="buttonGroup">
<string notr="true">btngrp_divisore</string>
</attribute>
</widget>
</item>
<item row="1" column="0">
<widget class="QRadioButton" name="rad_virgola">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
</font>
</property>
<property name="text">
<string>,</string>
</property>
<attribute name="buttonGroup">
<string notr="true">btngrp_divisore</string>
</attribute>
</widget>
</item>
<item row="2" column="0">
<widget class="QRadioButton" name="rad_piu">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
</font>
</property>
<property name="text">
<string>+</string>
</property>
<attribute name="buttonGroup">
<string notr="true">btngrp_divisore</string>
</attribute>
</widget>
</item>
<item row="0" column="1">
<widget class="QRadioButton" name="rad_tratt">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
</font>
</property>
<property name="text">
<string>-</string>
</property>
<attribute name="buttonGroup">
<string notr="true">btngrp_divisore</string>
</attribute>
</widget>
</item>
<item row="1" column="1">
<widget class="QRadioButton" name="rad_trattbass">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
</font>
</property>
<property name="text">
<string>_</string>
</property>
<attribute name="buttonGroup">
<string notr="true">btngrp_divisore</string>
</attribute>
</widget>
</item>
<item row="2" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QRadioButton" name="rad_altro">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
</font>
</property>
<property name="text">
<string>Altro:</string>
</property>
<attribute name="buttonGroup">
<string notr="true">btngrp_divisore</string>
</attribute>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lin_altro">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
</font>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</item>
<item row="8" column="0" colspan="2">
<widget class="QLabel" name="label">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Separatore</string>
</property>
</widget>
</item>
<item row="14" column="0" colspan="3">
<widget class="Line" name="line_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="6" column="0" colspan="2">
<widget class="QCheckBox" name="chk_docnum">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Numero documento</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="13" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<tabstops>
<tabstop>chk_data</tabstop>
<tabstop>rad_datajpn</tabstop>
<tabstop>rad_dataita</tabstop>
<tabstop>rad_datausa</tabstop>
<tabstop>chk_titolo</tabstop>
<tabstop>spn_ncarat</tabstop>
<tabstop>chk_docnum</tabstop>
<tabstop>rad_spazio</tabstop>
<tabstop>rad_tratt</tabstop>
<tabstop>rad_virgola</tabstop>
<tabstop>rad_trattbass</tabstop>
<tabstop>rad_piu</tabstop>
<tabstop>rad_altro</tabstop>
<tabstop>lin_altro</tabstop>
<tabstop>btn_avanzate</tabstop>
<tabstop>btn_avanti</tabstop>
<tabstop>btn_indietro</tabstop>
</tabstops>
<resources>
<include location="resources/resources.qrc"/>
</resources>
<connections/>
<buttongroups>
<buttongroup name="btngrp_divisore"/>
</buttongroups>
</ui>
+33
View File
@@ -0,0 +1,33 @@
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['guimain.py'],
pathex=['./libbananasplit', './UserInterface/compiledUI', '/home/emanuele/Documents/LocalEclipseWorkspace/bananaSPLIT/bananaSPLIT'],
binaries=[],
datas=[('/home/emanuele/.local/lib/python3.6/site-packages/text_unidecode/data.bin', './text_unidecode')],
hiddenimports=['mainwindow'],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='bananaSPLIT',
debug=False,
bootloader_ignore_signals=False,
strip=True,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True , icon='UserInterface/icons8-banana-split-80.png')
-64
View File
@@ -1,64 +0,0 @@
{
"INworkPath": "D:\\Test\\",
"OUTworkPath": "D:\\Test\\Separati\\",
"OUTnameFormat":"TEST_{docnum}_{year:04d}{month:02d}{day:02d}_{title}.txt",
"docStruct": {
"docSep": "\\s*Copyright [(0-9)]+",
"dateFormat":"{month} {day:d}, {year:d}{}",
"dateWords": [
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December"
],
"headWords": [
"BYLINE:",
"SECTION:",
"LENGTH:",
"DATELINE:",
"HIGHLIGHT:",
"Email:"
],
"tailWords": [
"Newstex ID" ,
"NOTES",
"LANGUAGE:",
"GRAPHIC:",
"TYPE:",
"URL:",
"LOAD-DATE:",
"PUBLICATION-TYPE:",
"DOCUMENT-TYPE:",
"CHARTS:",
"JOURNAL-CODE:"
]
},
"settings": {
"encoding": "utf-8",
"monthPosition": 0,
"getNewsPaperName": true,
"nameNotFoundStr" : "--ND--",
"includeTitle" : true,
"removeDuplicates": true,
"showSkipped": false,
"showRemovedDuplicates": true,
"maxTitleLen": 32,
"loadTXT": true,
"loadDOCX": false,
"removeOldFiles":true,
"saveSeparateFiles": true,
"saveBodyFile": true,
"saveBodyNumber":true,
"delLF": false,
"delWordBreak": true,
"delChars": "'|@|#"
}
}
-62
View File
@@ -1,62 +0,0 @@
{
"INworkPath": "C:\\Test\\",
"OUTworkPath": "C:\\Test\\Separati\\",
"OUTnameFormat":"TEST_{docnum}_{year:04d}{month:02d}{day:02d}_{papername}_{title}.txt",
"docStruct": {
"docSep": "Copyright [(0-9)]+",
"dateFormat":"{day:d} {month} {year:d} {}",
"dateWords": [
"Gennaio",
"Febbraio",
"Marzo",
"Aprile",
"Maggio",
"Giugno",
"Luglio",
"Agosto",
"Settembre",
"Ottobre",
"Novembre",
"Dicembre"
],
"headWords": [
"BYLINE:",
"SECTION:",
"LENGTH:",
"DATELINE:",
"HIGHLIGHT:",
"Email:"
],
"tailWords": [
"LANGUAGE:",
"GRAPHIC:",
"TYPE:",
"URL:",
"LOAD-DATE:",
"PUBLICATION-TYPE:",
"DOCUMENT-TYPE:",
"CHARTS:"
]
},
"settings":
"settings": {
"encoding": "utf-8",
"monthPosition": 0,
"getNewsPaperName": true,
"nameNotFoundStr" : "--ND--",
"includeTitle" : true,
"removeDuplicates": true,
"showSkipped": false,
"showRemovedDuplicates": true,
"maxTitleLen": 32,
"loadTXT": true,
"loadDOCX": false,
"removeOldFiles":true,
"saveSeparateFiles": true,
"saveBodyFile": true,
"saveBodyNumber":true,
"delLF": false,
"delWordBreak": true,
"delChars": "'|@|#"
}
}
+70
View File
@@ -0,0 +1,70 @@
{
"version": "v1.41",
"paths": {
"lastUsed": "defaults.json",
"configurationPath": "./conf/",
"INworkPath": "C://",
"OUTworkPath": "C://",
"fileList": [
"bdlog.txt"
]
},
"docStruct": {
"fileVersNew": false,
"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": {
"uiLang": "en",
"winW": 800,
"winH": 700,
"encoding": "windows-1252",
"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": [
"'",
"@",
"#",
"$",
"%",
"^",
"&"
]
}
}
+76
View File
@@ -0,0 +1,76 @@
{
"Italiano": {
"dateWords": [
"Gennaio",
"Febbraio",
"Marzo",
"Aprile",
"Maggio",
"Giugno",
"Luglio",
"Agosto",
"Settembre",
"Ottobre",
"Novembre",
"Dicembre"
],
"headWords": [
"BYLINE:",
"SECTION:",
"LENGTH:",
"DATELINE:",
"HIGHLIGHT:",
"Email:"
],
"tailWords": [
"Newstex ID:",
"NOTES:",
"LANGUAGE:",
"GRAPHIC:",
"TYPE:",
"URL:",
"LOAD-DATE:",
"PUBLICATION-TYPE:",
"DOCUMENT-TYPE:",
"CHARTS:",
"JOURNAL-CODE:"
]
},
"English": {
"dateWords": [
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December"
],
"headWords": [
"BYLINE:",
"SECTION:",
"LENGTH:",
"DATELINE:",
"HIGHLIGHT:",
"Email:"
],
"tailWords": [
"Newstex ID:",
"NOTES:",
"LANGUAGE:",
"GRAPHIC:",
"TYPE:",
"URL:",
"LOAD-DATE:",
"PUBLICATION-TYPE:",
"DOCUMENT-TYPE:",
"CHARTS:",
"JOURNAL-CODE:"
]
}
}
+67
View File
@@ -0,0 +1,67 @@
{
"version": "v1.3",
"paths": {
"lastUsed": "linux.json",
"configurationPath": "./conf/",
"INworkPath": "/home/",
"OUTworkPath": "/home/",
"fileList": []
},
"docStruct": {
"fileVersNew": false,
"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": {
"winW": 800,
"winH": 700,
"encoding": "windows-1252",
"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": [
"'",
"@",
"#",
"$",
"%",
"^",
"&"
]
}
}
+5
View File
@@ -0,0 +1,5 @@
{
"logFile": "D:\\Test\\bananaSPLIT.log",
"logFormat": "%(asctime)s|%(levelname)-8s| %(message)-50s",
"logTimeFormat": "%m-%d %H:%M:%S"
}
+67
View File
@@ -0,0 +1,67 @@
{
"version": "v1.3",
"paths": {
"lastUsed": "spiripacchio.json",
"configurationPath": "./conf/",
"INworkPath": "D:/Emanuele/Documenti/workspace/bananaSPLIT/TestFiles/FileBastardi",
"OUTworkPath": "H:/",
"fileList": []
},
"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": {
"winW": 800,
"winH": 700,
"encoding": "windows-1252",
"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": [
"'",
"@",
"#",
"$",
"%",
"^",
"&"
]
}
}
+618
View File
@@ -0,0 +1,618 @@
'''
Created on 2 nov 2019
@author: Emanuele Trabattoni
TODO LIST
1. rendere threaded lo splitter.. tentativo colore 100..
'''
import sys, copy, json
import PyQt5.QtWidgets
import PyQt5.QtGui
from mainwindow import Ui_mainwin
from selezout import Ui_selezout
from titolow import Ui_titolo
from avanzatetitolo3 import Ui_advtitolo3 as Ui_advtitolo
from advopt import Ui_editconf
from about import Ui_about
from libfancylogger import fancyLogger
from libconfload import bananaCONF
from libsplit import bananaSPLITTER
from PyQt5.QtCore import QDir, QSize, QTranslator, pyqtSlot, pyqtSignal
from PyQt5.QtWidgets import QMessageBox, QSizePolicy, QInputDialog
#modo brutto per mettere la lista delle lingue in un posto solo
langlist = ['it','en']
class bananaMain(PyQt5.QtWidgets.QMainWindow):
def __init__(self, logger=None, confloader=None):
PyQt5.QtWidgets.QMainWindow.__init__(self)
self.logger = logger
self.conf = confloader
# 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, self.tr("Impostazioni Titolo"))
self.ui.wgt_main.addTab(self.selezout, self.tr("Selezione Output"))
# connetti bottoni avanti
self.ui.btn_avanti.clicked.connect(self.nextTab)
self.titolo.titoloui.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)
self.ui.actionAbout_SPEx.triggered.connect(self.openAbout)
#connetti i radbutton versione
self.ui.rad_fileNew.clicked.connect(self.selezVers)
self.ui.rad_fileOld.clicked.connect(self.selezVers)
#connetti segnali delle sottointerfacce
self.advopt.update.connect(self.fillAllInterfaces)
self.logger.sendLog.connect(self.appendLog)
#riempi pagine di interfaccia
self.fillAllInterfaces()
self.setSizePolicy(QSizePolicy.Fixed,QSizePolicy.Fixed)
self.setFixedSize(QSize(self.conf.getParam('settings','winW'), self.conf.getParam('settings','winH')))
pass
def fillInterface(self):
#pagina principale
try:
self.ui.lbl_preset.setText(self.conf.inUse.replace('.json',''))
self.ui.lbl_sorg.setText(self.conf.getParam('paths','INworkPath'))
self.ui.lbl_dest.setText(self.conf.getParam('paths','OUTworkPath'))
self.ui.rad_fileNew.setChecked(self.conf.getParam('docStruct', 'fileVersNew'))
self.ui.rad_fileOld.setChecked(not self.conf.getParam('docStruct', 'fileVersNew'))
self.fillFileList()
except:
self.log.critical(self.tr("MainWindow: Configurazione non accettata"))
def fillAllInterfaces(self):
self.fillInterface()
self.titolo.fillInterface()
self.titoloav.fillInterface()
self.selezout.fillInterface()
self.advopt.fillInterface()
def fillFileList(self):
fl = QDir(self.conf.getParam('paths','INworkPath'))
fl.setNameFilters(['*.txt','*.TXT'])
fl = fl.entryList(QDir.NoDotAndDotDot | QDir.Files)
self.ui.lst_files.clear()
for f in fl:
self.ui.lst_files.addItem(PyQt5.QtWidgets.QListWidgetItem(f))
self.conf.setParam(('paths', 'fileList'), fl)
def nextTab(self):
self.ui.wgt_main.setCurrentIndex(self.ui.wgt_main.currentIndex()+1)
self.logger.debug(self.tr("Prossima Tab"))
pass
def prevTab(self):
self.ui.wgt_main.setCurrentIndex(self.ui.wgt_main.currentIndex()-1)
self.logger.debug(self.tr("Tab Precedente"))
pass
def openLoadPreset(self):
self.logger.debug(self.tr("Apri Carica Preset"))
lf = PyQt5.QtWidgets.QFileDialog(self,self.tr("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():
cf = str(lf.selectedFiles()[0].split('/')[-1])
self.logger.info(self.tr(f"Apro la configurazione: {cf}"))
self.conf.open()
self.conf.use(cf)
self.logger.debug(self.tr("Riempio tutte le tab"))
self.fillAllInterfaces()
pass
def openSavePreset(self):
self.logger.debug(self.tr("Apri Salva Preset"))
self.applicaTutto()
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].split('/')[-1])
self.conf.setParam(('paths','lastUsed'),rv)
#scrivi quale file e' stato usato per ultimo nel default
prev=self.conf.inUse
self.conf.use("defaults.json")
self.conf.setParam(('paths','lastUsed'),rv)
self.conf.save(fName="defaults.json")
self.conf.use(prev)
##
self.logger.debug(self.tr(f"Scrivo la configurazione: {rv}"))
self.conf.save(fName=rv)
pass
def openAdvOpt(self):
self.logger.debug(self.tr("Apri Opzioni Avanzate"))
self.advopt.fillInterface()
self.advopt.show()
pass
def openLanguage(self):
global langlist
self.logger.debug(self.tr("Apri Opzioni Lingua"))
flag = False
lang,flag = QInputDialog.getItem(self, self.tr("Lingua"), self.tr("Disponibili"), langlist, 0, False)
if flag:
self.conf.setParam(('settings','uiLang'),lang)
else:
pass
def openAbout(self):
self.logger.debug(self.tr("Apri Finestra About"))
self.spxabt=spexAbout(confloader=self.conf)
def selezSorg(self):
rv = PyQt5.QtWidgets.QFileDialog.getExistingDirectory(self,self.tr("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.info(self.tr("Selezionata Cartella Sorgente: {}").format(rv+"/"))
self.fillFileList()
pass
def selezDest(self):
rv = PyQt5.QtWidgets.QFileDialog.getExistingDirectory(self,self.tr("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.info(self.tr("Selezionata Cartella Destinazione: {}").format(rv+"/"))
pass
def selezVers(self):
self.conf.setParam(('docStruct','fileVersNew'), self.ui.rad_fileNew.isChecked())
self.logger.debug(self.tr(f"Selezionata Versione File"))
def openFileDialog(self, name, path):
self.log.debug(self.tr("Apro in directory: {}").format(path))
return
def applicaTutto(self):
self.titolo.applica()
self.selezout.applica()
def appendLog(self, msg):
self.ui.txt_log.append(msg)
#############################################################
####################### 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(confloader, self.log)
self.fillInterface()
pass
def fillInterface(self):
try:
# imposta predefiniti interfaccia da file
#Data (la piu complicata)
self.titoloui.chk_data.setChecked(self.conf.getParam('docStruct','outDate'))
self.titoloui.rad_datajpn.setChecked(self.conf.getParam('docStruct', 'outDateType') is 'jpn')
self.titoloui.rad_dataita.setChecked(self.conf.getParam('docStruct', 'outDateType') is 'it')
self.titoloui.rad_datausa.setChecked(self.conf.getParam('docStruct', 'outDateType') is 'usa')
#Titolo
self.titoloui.chk_titolo.setChecked(self.conf.getParam('docStruct','outTitle'))
self.titoloui.spn_ncarat.setValue(self.conf.getParam('docStruct', 'maxTitleLen'))
#Numero Documento
self.titoloui.chk_docnum.setChecked(self.conf.getParam('docStruct','outNumber'))
#Separatore
found=False
for itmn in range(self.titoloui.lyt_sep.count()):
itm=self.titoloui.lyt_sep.itemAt(itmn).widget()
if isinstance(itm, PyQt5.QtWidgets.QRadioButton):
if itm.text() == self.conf.getParam('docStruct', 'outNameSep'):
itm.setChecked(True)
found = True
if not found:
self.titoloui.rad_altro.setChecked(True)
self.titoloui.lin_altro.setText(self.conf.getParam('docStruct', 'customSep'))
#finestra avanzate
self.advtitolo.fillInterface()
except:
self.log.critical(self.tr("Titolo: Configurazione non accettata"))
def spawnAvanzate(self):
self.log.debug(self.tr("Mostro la finestra avanzate titolo"))
self.advtitolo.show()
pass
def applica(self):
self.log.info(self.tr("Applico impostazioni Titolo"))
self.conf.setParam(('docStruct','outDate'),self.titoloui.chk_data.isChecked())
self.conf.setParam(('docStruct','outNumber'),self.titoloui.chk_docnum.isChecked())
self.conf.setParam(('docStruct','outTitle'),self.titoloui.chk_titolo.isChecked())
if self.titoloui.rad_dataita.isChecked():
self.conf.setParam(('docStruct','outDateType'),'ita')
elif self.titoloui.rad_datajpn.isChecked():
self.conf.setParam(('docStruct','outDateType'),'jpn')
elif self.titoloui.rad_datausa.isChecked():
self.conf.setParam(('docStruct','outDateType'),'usa')
self.conf.setParam(('docStruct','maxTitleLen'), self.titoloui.spn_ncarat.value())
self.conf.setParam(('docStruct', 'customSep'),self.titoloui.lin_altro.text())
for itmn in range(self.titoloui.lyt_sep.count()):
itm=self.titoloui.lyt_sep.itemAt(itmn).widget()
if isinstance(itm, PyQt5.QtWidgets.QRadioButton):
if len(itm.text())==1 and itm.isChecked():
self.conf.setParam(('docStruct', 'outNameSep'), itm.text())
self.advtitolo.applica()
pass
class bananaTitoloAvanzate(PyQt5.QtWidgets.QWidget):
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
self.fillInterface()
pass
def fillInterface(self):
try:
#rimepi interfaccia
self.titoloavui.rad_dataprimo.setChecked(self.conf.getParam('docStruct','datePos')==1)
self.titoloavui.rad_datasecondo.setChecked(self.conf.getParam('docStruct','datePos')==2)
self.titoloavui.rad_dataterzo.setChecked(self.conf.getParam('docStruct','datePos')==3)
self.titoloavui.rad_titoloprimo.setChecked(self.conf.getParam('docStruct','titlePos')==1)
self.titoloavui.rad_titolosecondo.setChecked(self.conf.getParam('docStruct','titlePos')==2)
self.titoloavui.rad_titoloterzo.setChecked(self.conf.getParam('docStruct','titlePos')==3)
self.titoloavui.rad_numeroprimo.setChecked(self.conf.getParam('docStruct','numberPos')==1)
self.titoloavui.rad_numerosecondo.setChecked(self.conf.getParam('docStruct','numberPos')==2)
self.titoloavui.rad_numeroterzo.setChecked(self.conf.getParam('docStruct','numberPos')==3)
self.titoloavui.txt_prefisso.setText(self.conf.getParam('docStruct','outPrefix'))
self.titoloavui.txt_suffisso.setText(self.conf.getParam('docStruct','outSuffix'))
except:
self.log.critical(self.tr("AvanzateTitolo: Configurazione non accettata"))
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.log.info(self.tr("Avanzate Titolo Accettate"))
self.applica()
self.hide()
pass
def returnKo(self):
self.log.info(self.tr("Avanzate Titolo Rifiutate"))
self.hide()
pass
def applica(self):
#data
if self.titoloavui.rad_dataprimo.isChecked():
self.conf.setParam(('docStruct', 'datePos'), 1)
elif self.titoloavui.rad_datasecondo.isChecked():
self.conf.setParam(('docStruct', 'datePos'), 2)
elif self.titoloavui.rad_dataterzo.isChecked():
self.conf.setParam(('docStruct', 'datePos'), 3)
else:
self.conf.setParam(('docStruct', 'datePos'), -1)
#numero
if self.titoloavui.rad_numeroprimo.isChecked():
self.conf.setParam(('docStruct', 'numberPos'), 1)
elif self.titoloavui.rad_numerosecondo.isChecked():
self.conf.setParam(('docStruct', 'numberPos'), 2)
elif self.titoloavui.rad_numeroterzo.isChecked():
self.conf.setParam(('docStruct', 'numberPos'), 3)
else:
self.conf.setParam(('docStruct', 'numberPos'), -1)
#titolo
if self.titoloavui.rad_titoloprimo.isChecked():
self.conf.setParam(('docStruct', 'titlePos'), 1)
elif self.titoloavui.rad_titolosecondo.isChecked():
self.conf.setParam(('docStruct', 'titlePos'), 2)
elif self.titoloavui.rad_titoloterzo.isChecked():
self.conf.setParam(('docStruct', 'titlePos'), 3)
else:
self.conf.setParam(('docStruct', 'titlePos'), -1)
#prefisso e suffisso
self.conf.setParam(('docStruct','outPrefix'), self.titoloavui.txt_prefisso.text())
self.conf.setParam(('docStruct','outSuffix'), self.titoloavui.txt_suffisso.text())
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
if self.conf is not None:
self.selezoutui.btn_split.clicked.connect(self.applica)
self.selezoutui.btn_split.clicked.connect(self.splitta)
self.fillInterface()
pass
def fillInterface(self):
try:
self.selezoutui.cmb_lingua.clear()
self.selezoutui.cmb_lingua.addItems(self.conf.settingsList['languageconf.json'].keys())
self.selezoutui.cmb_lingua.setCurrentIndex(self.conf.getParam('docStruct','languageIdx'))
self.selezoutui.rad_mainbodyEFile.setChecked(self.conf.getParam('settings', 'saveBodyFile') and self.conf.getParam('settings', 'saveSeparateFiles'))
self.selezoutui.rad_file.setChecked(self.conf.getParam('settings', 'saveSeparateFiles') and not self.conf.getParam('settings', 'saveBodyFile'))
self.selezoutui.rad_mainbody.setChecked(self.conf.getParam('settings', 'saveBodyFile') and not self.conf.getParam('settings', 'saveSeparateFiles'))
self.selezoutui.chk_removeDuplicates.setChecked(self.conf.getParam('settings', 'removeDuplicates'))
self.selezoutui.chk_includeTitle.setChecked(self.conf.getParam('settings', 'includeTitle'))
self.selezoutui.chk_removeBreakWord.setChecked(self.conf.getParam('settings', 'delWordBreak'))
self.selezoutui.chk_cleaDestFolder.setChecked(self.conf.getParam('settings', 'removeOldFiles'))
self.selezoutui.lin_specialChars.setText(''.join(self.conf.getParam('settings', 'delChars')))
pass
except:
self.log.critical(self.tr("SelezUscita: Configurazione non accettata"))
pass
def applica(self):
self.log.info(self.tr("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()
| self.selezoutui.rad_mainbodyEFile.isChecked())
self.conf.setParam(('settings', 'saveSeparateFiles'), self.selezoutui.rad_file.isChecked()
| self.selezoutui.rad_mainbodyEFile.isChecked())
self.conf.setParam(('settings', 'removeDuplicates'), self.selezoutui.chk_removeDuplicates.isChecked())
self.conf.setParam(('settings', 'includeTitle'), self.selezoutui.chk_removeDuplicates.isChecked())
self.conf.setParam(('settings', 'delWordBreak'), self.selezoutui.chk_removeBreakWord.isChecked())
self.conf.setParam(('settings', 'removeOldFiles'), self.selezoutui.chk_cleaDestFolder.isChecked())
self.conf.setParam(('settings', 'delChars'), list(self.selezoutui.lin_specialChars.text()))
pass
def splitta(self):
# costruisco il dizionario di configurazione
prefile = self.conf.inUse
splconf = copy.deepcopy(self.conf.dump())
lang = copy.deepcopy(self.conf.use('languageconf.json').getParam(splconf['docStruct']['language']))
splconf['docStruct']['language'] = lang
self.conf.use(prefile)
#formato nome in uscita
nametemp=[]
for i in range(1,4):
if i == splconf['docStruct']['numberPos'] and splconf['docStruct']['outNumber']:
nametemp.append("{docnum}")
if i == splconf['docStruct']['datePos'] and splconf['docStruct']['outDate']:
nametemp.append(splconf['docStruct']['dateFormats'][splconf['docStruct']['outDateType']])
if i == splconf['docStruct']['titlePos'] and splconf['docStruct']['outTitle']:
nametemp.append("{title}")
pass
if splconf['docStruct']['outPrefix'] != '':
nametemp.insert(0, splconf['docStruct']['outPrefix']) #inserisco prefisso e suffisso
if splconf['docStruct']['outSuffix'] != '':
nametemp.append(splconf['docStruct']['outSuffix'])
#unisco i pezzi
splconf['docStruct']['outNameFormat'] = splconf['docStruct']['outNameSep'].join(nametemp)+splconf['docStruct']['outExt']
#costruisco messageBox
msgb = QMessageBox(parent=self, icon=QMessageBox.Warning, text=self.tr("Sto SPLITTANDO, attendi.."))
msgb.setWindowTitle(self.tr("Sto Splittando.."))
msgb.show()
@pyqtSlot()
def updateState(msg):
msgb.setText(msg)
# costruisco i thread
tDict={}
try:
for f in splconf['paths']['fileList']:
splconf['name']=f
tDict[f] = bananaSPLITTER(fileParams=copy.deepcopy(splconf), logger=self.log)
tDict[f].sendStatus.connect(updateState)
tDict[f].run()
#QThreadPool.globalInstance().start(tDict[f])
except Exception as e:
self.log.error(self.tr(f"Impossibile avviare lo splitter: {e}"))
msgb.setText(self.tr("FINITO!"))
pass
class bananaAdvOpt(PyQt5.QtWidgets.QWidget):
update = pyqtSignal()
def __init__(self, confloader=None, logger=None):
PyQt5.QtWidgets.QWidget.__init__(self)
self.advoptui = Ui_editconf()
self.advoptui.setupUi(self)
self.conf = confloader
self.log = logger
self.errmsg=None
if self.conf is not None:
self.advoptui.btn_ok.clicked.connect(self.accetta)
self.advoptui.btn_cancel.clicked.connect(self.rifiuta)
self.fillInterface()
pass
def fillInterface(self):
try:
self.advoptui.txt_confFile.setPlainText(json.dumps(self.conf.dump(),indent=2))
except:
self.log.critical(self.tr("AdvancedOptions: Configurazione non accettata"))
pass
def accetta(self):
self.errmsg = QMessageBox()
self.errmsg.setModal(True)
self.errmsg.setWindowTitle(self.tr("Avanzate Globali"))
icon = PyQt5.QtGui.QIcon()
icon.addPixmap(PyQt5.QtGui.QPixmap(":/icons/icons8-smartphone-ram-100.png"), PyQt5.QtGui.QIcon.Normal, PyQt5.QtGui.QIcon.Off)
self.errmsg.setWindowIcon(icon)
try:
self.conf.loads(self.advoptui.txt_confFile.toPlainText())
self.log.info(self.tr("Parametri inseriti validi, configurazione accettata"))
self.errmsg.setIcon(QMessageBox.Information)
self.errmsg.setText(self.tr("Parametri inseriti validi, configurazione accettata"))
self.errmsg.show()
self.update.emit()
self.hide()
except Exception as e:
self.log.error(self.tr(f"Errore nei parametri! {e}"))
self.errmsg.setIcon(QMessageBox.Critical)
self.errmsg.setText(self.tr(f"Errore nei parametri!\n{e}"))
self.errmsg.show()
pass
def rifiuta(self):
self.log.info(f"AdvancedOptions: Configurazione Rifiutata")
self.hide()
pass
class bananaSplitterInterface(PyQt5.QtWidgets.QWidget):
def __init__(self, confloader=None, logger=None):
PyQt5.QtWidgets.QWidget.__init__(self)
pass
class spexAbout(PyQt5.QtWidgets.QDialog):
def __init__(self, confloader=None, logger=None):
PyQt5.QtWidgets.QDialog.__init__(self)
self.abt = Ui_about()
self.abt.setupUi(self)
self.abt.lbl_info.setText(self.abt.lbl_info.text().replace('{ver}',confloader.getParam('version')))
self.show()
pass
#############################################################
####################### MAIN ################################
#############################################################
def except_hook(cls, exception, traceback):
sys.__excepthook__(cls, exception, traceback)
if __name__ == '__main__':
app = PyQt5.QtWidgets.QApplication(sys.argv)
sys.excepthook = except_hook
try:
LOGGER = fancyLogger(filepath=r"./conf/loggerconf.json",fileLog=False)
conf = bananaCONF(workdir=r"./conf", logger=LOGGER)
conf.open()
conf.use("defaults.json")
conf.use(conf.getParam('paths', 'lastUsed'))
iflan = conf.getParam('settings','uiLang')
trlist = [f":/tr/translations/guimain_{iflan}.qm",
f":/tr/translations/libconfload_{iflan}.qm",
f":/tr/translations/libsplit_{iflan}.qm",
f":/tr/translations/mainwindow_{iflan}.qm",
f":/tr/translations/avanzatetitolo3_{iflan}.qm",
f":/tr/translations/titolow_{iflan}.qm",
f":/tr/translations/selezout_{iflan}.qm",
f":/tr/translations/about_{iflan}.qm"]
qtrlist=[]
if iflan != 'it':
LOGGER.debug("Carico Traduzioni: ")
for tr in trlist:
qtr = QTranslator()
print(qtr.load(tr),f" {tr}")
app.installTranslator(qtr)
qtrlist.append(qtr)
except Exception as e:
print(f"Errore main: {e}")
sys.exit()
window = bananaMain(logger=LOGGER, confloader=conf)
window.show()
rv = app.exec()
print("ExitCode: {}".format(rv))
sys.exit(rv)
pass
+113
View File
@@ -0,0 +1,113 @@
'''
Created on 2 nov 2019
@author: Emanuele Trabattoni
'''
import json,os,glob,copy
from PyQt5.QtCore import QObject
class bananaCONF(QObject):
'''
Carica e Salva file di configurazione per bananaSPLITTER
'''
def __init__(self, workdir=None, logger=None):
try:
QObject.__init__(self)
self.log = logger
self.fileList = None
self.workdir = None
self.inUse = None
self.settingsList = dict()
if workdir is not None:
self.workdir = workdir
os.chdir(workdir)
self.log.debug(self.tr("Cerco le configurazioni in: [{}]").format(os.getcwd()))
else:
self.log.error(self.tr("Non mi e' stata fornita una directory per i file di configurazione"))
pass
except Exception as e:
print(f"libConfload Exception: {e}")
def open(self):
self.log.info(self.tr("Carico i file di configurazione"))
self.fileList = glob.glob(r"*.json")
if len(self.fileList) > 0:
for f in self.fileList:
try:
fp = open(f)
tf = json.load(fp)
fName = f.split("\\")[-1]
self.settingsList[fName] = copy.deepcopy(tf)
self.log.info(self.tr("Caricato correttamente: {}").format(fName))
fp.close()
except json.JSONDecodeError as e:
self.log.error(self.tr("Impossibile leggere la configurazione:{}\n \
Controlla il file a riga: {} e colonna:{}").format(e.doc, e.lineno, e.colno))
except IOError as ee:
self.log.error(self.tr("Impossibile aprire il file: {}").format(ee))
except Exception as eee:
self.log.critical(self.tr("Eccezione inaspettata: {}").format(eee))
else:
self.log.error(self.tr("Non ho trovato alcun file di configurazione!"))
pass
def reload(self):
self.settingsList = None
self.fileList = None
self.inUse = None
self.open()
pass
def use(self, toUse):
self.inUse = toUse
return self
def save(self, fName=None):
if fName is None:
fName=self.inUse
self.log.info(self.tr("Salvo la configurazione: {}").format(fName))
try:
f=open(fName, 'w')
json.dump(self.settingsList[self.inUse], f, indent='\t')
f.close()
except IOError as e:
self.log.error(self.tr("Impossibile salvare il file: {} - [{}]").format(fName,e))
except Exception as ei:
self.log.error(self.tr("Errore imprevisto nella scrittura del file: {}").format(ei))
pass
def getFiles(self):
return self.fileList
def getParam(self, *keys):
rv = self.settingsList[self.inUse]
try:
for k in keys:
rv = rv[k]
return rv
except ValueError as ve:
self.log.error(self.tr("Parametro di configurazione non valido! [{}]").format(ve))
return False
pass
def setParam(self, keys=(), val=None):
sv = self.settingsList[self.inUse]
try:
for k in keys[:-1]:
sv = sv[k]
sv[keys[-1]] = val
return True
except ValueError as ve:
self.log.error(self.tr("Parametro di configurazione non valido! [{}]").format(ve))
return False
pass
def dump(self):
return self.settingsList[self.inUse]
def loads(self, conf):
jconf = json.loads(conf)
self.settingsList[self.inUse]=jconf
@@ -0,0 +1,101 @@
'''
Created on 2 nov 2019
@author: Emanuele Trabattoni
'''
import sys
import json
import logging
import colorama
from PyQt5.QtCore import QObject, pyqtSignal
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)
fp.close()
colorama.init(convert=True)
self.LRED = colorama.Fore.LIGHTRED_EX
self.RED = colorama.Fore.RED
self.LYELLOW = colorama.Fore.LIGHTYELLOW_EX
self.YELLOW = colorama.Fore.YELLOW
self.LBLUE = colorama.Fore.LIGHTBLUE_EX
self.BLUE = colorama.Fore.BLUE
self.LGREEN = colorama.Fore.LIGHTGREEN_EX
self.LGREEN = colorama.Fore.GREEN
self.WHITE = colorama.Fore.LIGHTWHITE_EX
self.RST = colorama.Style.RESET_ALL
# Setup Logger
self.LOGGER = logging.getLogger(name)
self.LOGGER.setLevel(logging.DEBUG)
self.LOGGER.propagate = False
FORMATTER = logging.Formatter((settings["logFormat"]), (settings["logTimeFormat"]))
if fileLog:
# File Logging
fh = logging.FileHandler((settings["logFile"]))
fh.setLevel(logging.DEBUG)
fh.setFormatter(FORMATTER)
self.LOGGER.addHandler(fh)
if consoleLog:
# Console Logging
cl= logging.StreamHandler(sys.stdout)
cl.setLevel(logging.DEBUG)
cl.setFormatter(FORMATTER)
self.LOGGER.addHandler(cl)
except IOError as e:
print("Impossibile caricare la configurazione del logger: [{}]".format(e))
except Exception as ee:
print(f"libFancylogger error: {e}")
pass
def debug(self, msg="Undefined Debug"):
print(self.LBLUE, end='')
self.LOGGER.debug(msg)
print(self.RST, end='')
self.sendLog.emit(f"<FONT COLOR='#03c2fc'>DEBUG | {msg} </br>")
pass
def info(self, msg="Undefined Info"):
print(self.LGREEN, end='')
self.LOGGER.info(msg)
print(self.RST, end='')
self.sendLog.emit(f"<FONT COLOR='#6bfc03'>INFO | {msg} </br>")
pass
def warn(self, msg="Undefined Warning"):
print(self.LYELLOW, end='')
self.LOGGER.warning(msg)
print(self.RST, end='')
self.sendLog.emit(f"<FONT COLOR='#fc9403'>WARNING | {msg} </br>")
pass
def error(self, msg="Undefined Error"):
print(self.LRED, end='')
self.LOGGER.error(msg)
print(self.RST, end='')
self.sendLog.emit(f"<FONT COLOR='#ff0000'>ERROR | {msg} </br>")
pass
def critical(self, msg="Undefined Critical"):
print(self.RED, end='')
self.LOGGER.critical(msg)
print(self.RST, end='')
self.sendLog.emit(f"<FONT COLOR='#fc03ce'>CRITICAL | {msg} </br>")
pass
def testColors(self):
self.debug("Test Debug")
self.info("Test Info")
self.warn("Test Warning")
self.error("Test Error")
self.critical("Test Critical")
pass
+406
View File
@@ -0,0 +1,406 @@
'''
Created on 2 nov 2019
@author: Emanuele Trabattoni
'''
from PyQt5.QtCore import QObject, pyqtSignal
from slugify import slugify
import time, parse, re, copy, os, json
import traceback
class bananaSPLITTER(QObject):
sendStatus = pyqtSignal(str)
def __init__(self, fileParams=None, logger=None):
try:
QObject.__init__(self)
self.fileParams = fileParams
self.log = logger
self.rawFile = None
self.status = "first"
self.contentList = list()
self.bodyCounter=0
self.duplicateNumber=0
#self.log.debug(f"Configurazione: \n {json.dumps(fileParams, indent=2)}")
if fileParams is not None:
self.log.debug(self.tr("Sto operando sul file: {}..").format(self.fileParams['name']))
self.paths = self.fileParams['paths']
self.docStruct = self.fileParams['docStruct']
self.settings = self.fileParams['settings']
self.fileName = self.fileParams['name']
self.outPath = self.paths['OUTworkPath']+slugify(self.fileName)+'/'
self.beginTime = time.time()
pass
else:
self.log.critical(self.tr("Non e' stato fornito il nome di alcun file da splittare!"))
except Exception as e:
print(f"libSplit error: {e}")
pass
def run(self):
self.log.info(self.tr("Nuovo SPLITTER su file: {}").format(self.fileName))
self.sendStatus.emit(self.tr(f"Inizio {self.fileName}"))
try:
self.openFile()
self.remEmptyLines()
if self.docStruct['fileVersNew']:
self.newSplitFile()
else:
self.splitFile()
if self.settings['removeDuplicates']:
self.log.info(self.tr("Controllo se ci sono dei duplicati.."))
self.removeDuplicates()
else:
for idx, ff in enumerate(self.contentList):
ff['duplicate']=False
self.contentList[idx]=ff
self.log.warn(self.tr("Salto il controllo dei duplicati.."))
# se il parse e la rimozione dei duplicati e' andata bene
# preparo e inizio il salvataggio
if os.path.exists(self.outPath):
if self.settings['removeOldFiles']:
#os.chdir(self.outPath)
for f in os.listdir(self.outPath):
os.remove(self.outPath+f)
else:
raise FileExistsError(self.tr("Non posso sovrascrivere i vecchi file, eliminali manualmente!"))
else:
os.mkdir(self.outPath)
#os.chdir(self.outPath)
if self.settings['saveSeparateFiles']:
self.saveSeparate()
if self.settings['saveBodyFile']:
self.saveBody()
self.log.info(self.tr("L'elaborazione del file ha richiesto {:4.2f} sec").format(time.time()-self.beginTime))
except UnicodeDecodeError as ee:
self.log.critical(self.tr("Il file [{}] contiene caratteri non compatibili con la codifica scelta! [{}]")
.format(self.fileParams['name'],ee))
except FileExistsError as fe:
self.log.critical(fe)
except Exception as ee:
traceback.print_exc()
self.log.warn(ee)
pass
def openFile(self):
try:
#os.chdir(self.paths["INworkPath"])
self.log.info(self.tr("Carico il contenuto.."))
fp = open(self.paths["INworkPath"]+'/'+self.fileParams['name'], mode='r', encoding=self.settings['encoding'])
self.rawFile = fp.readlines()
fp.close()
except IOError as e:
self.log.critical(self.tr("Impossibile aprire il file: {}! [{}]").format(self.fileName,e))
raise BaseException("OpenFile")
os.rmdir(self.outPath)
except Exception as ee:
print(ee)
pass
def remEmptyLines(self):
self.log.info(self.tr("Elimino righe vuote e caratteri inutili.."))
tempContent = []
try:
for ll in self.rawFile:
for c in self.settings['delChars']:
ll = ll.replace(c,'')
if ll not in ['\n', '\r', '\r\n']:
tempContent.append(ll)
self.rawFile = copy.deepcopy(tempContent)
self.rawFile.append('\n') #linea vuota finale per essere sicuri di parsare bene
return True
except:
self.log.error(self.tr("Errore inaspettato durante l'eliminazione delle righe vuote!"))
raise BaseException("DelLines")
del tempContent
def newSplitFile(self): #porting del codice dal programma originale
self.log.info(self.tr("Individuo il contenuto.."))
self.bodyCounter=0
self.duplicateNumber=0
docNumber = 0
docSkipped = 0
docDate = {}
title = ''
prevLine = ''
newsPaperName = ''
titleBegin = True
newsName = False
tempBody = list()
for l in self.rawFile: #per ogni linea del file
l=l.replace('\xa0', ' ')
lineWords = l.lstrip().split(' ') #dividi la riga in parole
if self.status == 'first':
try:
# ricerco la data
if (lineWords[self.settings['monthPosition']]).capitalize() in self.docStruct['language']['dateWords']:
try:
docDate=parse.parse(self.docStruct['dateFormat'],l).named
docDate['month']=docDate['month'].lstrip().rstrip().capitalize()
docDate['month']=self.docStruct['language']['dateWords'].index(docDate['month'])+1
# dopo la data inizia il titolo, ma prima si cerca il nome del giornale
except:
self.log.warn(self.tr("Ho trovato una riga ambigua.. potrebbe essere una data ma non so: [{}]"). format(l.strip('\r\n')))
pass
elif lineWords[0].upper() in self.docStruct['language']['headWords']:
#cambio stato e inizializzo un nuovo documento da riempire
self.status = 'head'
newDoc=dict()
newDoc['title']=title
newDoc['date']=docDate
newDoc['newsPaperName'] = newsPaperName
titleBegin = False
newsName = False
else:
if titleBegin:
title = l.strip().capitalize()
titleBegin = False
newsName = True
elif newsName:
if self.settings['getNewsPaperName']:
try:
if l.strip():
newsPaperName = l.strip()
else:
newsPaperName = self.settings['nameNotFoundStr']
except:
self.log.warn(self.tr("E' successo qualcosa mentre stavo cercando il nome della pubblicazione,\
controlla i file di uscita! [{}]").format(l.strip()))
else:
newsPaperName = self.settings['nameNotFoundStr']
newsName = False
except IndexError:
self.log.error(self.tr("Errore inaspettato, contatta il tuo sviluppatore di fiducia!"))
pass
elif self.status == 'head':
tempContent = list()
#doppio check per trovare l'inizio del corpo documento
if re.match(self.docStruct['beginOfDocument'],l):
self.status='body'
#if lineWords[0].upper() not in self.docStruct['language']['headWords']: #se la prima parola non e' tra quelle di inizio
#tempBody.append(l) # vuol dire che ho trovato l'articolo e aggiungo la prima riga al contenuto del documento
#self.status = 'body'
elif self.status == 'body':
if re.match(self.docStruct['endOfDocument'],l) is not None: #controlla se ci sono articoli che non hanno le parole chiave finali
self.log.warn(self.tr("Ho individuato una separatore valido prima che si chiusesse l'articolo precedente, controlla i tuoi file in uscita!\n\
L'errore dovrebbe essere intorno all'articolo {} ma non sono sicuro! \n\t\t\t[{}]").format(docNumber, l.strip()))
self.status = 'tail'
anomaly = True
elif not lineWords[0].upper() in self.docStruct['language']['tailWords']: #se la prima parola non e' tra quelle di fine
if self.settings['delLF']:
tempBody.append(l.strip('\n')) #allora sto leggendo l'articolo
else:
tempBody.append(l)
else:
self.status = 'tail'
anomaly = False
pass
elif self.status == 'tail':
if anomaly or (re.match(self.docStruct['endOfDocument'],l) is not None):
self.status = 'first'
anomaly = False
titleBegin = True
if self.settings['delWordBreak']:
tempContent=[ll.replace('-\n', '') for ll in tempContent]
newDoc['content']=copy.deepcopy(''.join(tempBody))
self.contentList.append(copy.deepcopy(newDoc))
tempBody=list()
self.bodyCounter +=1
pass
else:
self.log.critical(self.tr("Stato Interno Sconosciuto"))
prevLine=l #salva sempre e comunque il contenuto della linea precedente
pass
#ricerca terminata, espongo i risultati
self.log.info(self.tr("Nel file ho trovato {0} articoli..").format(self.bodyCounter))
if docSkipped > 0:
self.log.warn(self.tr("Attentione, LexisNexis ne ha saltati {} !!!").format(docSkipped))
pass
pass
def splitFile(self): #porting del codice dal programma originale
self.log.info(self.tr("Individuo il contenuto.."))
self.bodyCounter=0
self.duplicateNumber=0
docNumber = 0
docSkipped = 0
docDate = {}
title = ''
prevLine = ''
newsPaperName = ''
titleBegin = False
tempBody = list()
docSep=re.compile(self.docStruct['docSep'])
for l in self.rawFile: #per ogni linea del file
lineWords = l.lstrip().split(' ') #dividi la riga in parole
if self.status == 'first':
#prendo il numero di documento per vedere se ci sono buchi
try:
try:
nn = parse.parse("{current:d} Of {total} Documents",l.strip().capitalize()).named
if nn["current"]-docNumber==1:
pass
else:
if self.settings["showSkipped"]:
self.log.warn(self.tr("Il conto dei documenti non torna! LexisNexis ne ha saltato qualcuno!\n Precedente:{0}-Attuale:{1}").format(docNumber,nn["current"]))
docSkipped+=1
docNumber = nn["current"]
except:
pass #non segnalare eccezione se il parse fallisce
# ricerco la data
if (lineWords[self.settings['monthPosition']]).capitalize() in self.docStruct['language']['dateWords']:
try:
docDate=parse.parse(self.docStruct['dateFormat'],l).named
docDate['month']=docDate['month'].lstrip().rstrip().capitalize()
docDate['month']=self.docStruct['language']['dateWords'].index(docDate['month'])+1
title = ''
titleBegin=True
# dopo la data inizia il titolo, ma prima si cerca il nome del giornale
if self.settings['getNewsPaperName']:
try:
if prevLine.split(' ')[0].strip().isalpha():
newsPaperName = prevLine.strip()
else:
newsPaperName = self.settings['nameNotFoundStr']
except:
self.log.warn(self.tr("E' successo qualcosa mentre stavo cercando il nome della pubblicazione,\
controlla i file di uscita! [{}]").format(prevLine.strip()))
else:
newsPaperName = self.settings['nameNotFoundStr']
except:
self.log.warn(self.tr("Ho trovato una riga ambigua.. potrebbe essere una data ma non so: [{}]").format(l.strip('\r\n')))
pass
elif lineWords[0] in self.docStruct['language']['headWords']:
#cambio stato e inizializzo un nuovo documento da riempire
self.status = 'head'
newDoc=dict()
newDoc['title']=title
newDoc['date']=docDate
newDoc['newsPaperName'] = newsPaperName
titleBegin=False
else:
if titleBegin:
title += l.strip().capitalize()
except IndexError:
self.log.error(self.tr("Errore inaspettato, contatta il tuo sviluppatore di fiducia!"))
pass
elif self.status == 'head':
tempContent = list()
if lineWords[0] not in self.docStruct['language']['headWords']: #se la prima parola non e' tra quelle di inizio
tempBody.append(l) # vuol dire che ho trovato l'articolo e aggiungo la prima riga al contenuto del documento
self.status = 'body'
pass
elif self.status == 'body':
if not lineWords[0] in self.docStruct['language']['tailWords']: #se la prima parola non e' tra quelle di fine
if self.settings['delLF']:
tempBody.append(l.strip('\n')) #allora sto leggendo l'articolo
else:
tempBody.append(l)
else:
self.status = 'tail'
anomaly = False
if docSep.match(l) is not None: #controlla se ci sono articoli che non hanno le parole chiave finali
self.log.warn(self.tr("Ho individuato una separatore valido prima che si chiusesse l'articolo precedente, controlla i tuoi file in uscita!\n\
L'errore dovrebbe essere intorno all'articolo {} ma non sono sicuro! \n\t\t[{}]").format(docNumber, l.strip()))
self.status = 'tail'
anomaly = True
pass
elif self.status == 'tail':
if docSep.match(l) is not None or anomaly:
self.status = 'first'
anomaly = False
if self.settings['delWordBreak']:
tempContent=[ll.replace('-\n', '') for ll in tempContent]
newDoc['content']=copy.deepcopy(''.join(tempBody))
self.contentList.append(copy.deepcopy(newDoc))
tempBody=list()
self.bodyCounter +=1
pass
else:
self.log.critical(self.tr("Stato Interno Sconosciuto"))
prevLine=l #salva sempre e comunque il contenuto della linea precedente
pass
#ricerca terminata, espongo i risultati
self.log.info(self.tr("Nel file ho trovato {0} articoli..").format(self.bodyCounter))
if docSkipped > 0:
self.log.warn(self.tr("Attentione, LexisNexis ne ha saltati {} !!!").format(docSkipped))
pass
pass
def removeDuplicates(self):
titleList=[]
duplicateList=[]
for idx, ff in enumerate(self.contentList):
if ff['title'] not in titleList:
titleList.append(ff['title'])
ff['duplicate']=False
self.contentList[idx]=ff
pass
else:
if ff['title'] not in duplicateList:
duplicateList.append(ff['title'])
if self.settings['showRemovedDuplicates']:
self.log.info(self.tr("Duplicato: {}").format(ff['title'].strip()))
ff['duplicate'] = True
self.contentList[idx]=ff
self.duplicateNumber+=1
self.log.info(self.tr("Ho rimosso {} duplicati di {} articoli..").format(self.duplicateNumber, len(duplicateList)))
pass
def saveSeparate(self):
outFileCounter = 0
self.paths['OUTworkPath']=self.paths['OUTworkPath']+slugify(self.fileName)
self.log.info(self.tr("Salvo gli articoli in file separati..."))
self.log.debug(self.tr("Persorso: {0}").format(self.outPath))
for ff in self.contentList:
try:
if ff['duplicate'] == False:
fName=self.docStruct['outNameFormat'].format(title=slugify(ff['title'][:self.docStruct['maxTitleLen']]),\
filename=slugify(self.fileName),\
docnum=outFileCounter,\
papername=ff['newsPaperName'].strip(),\
**ff['date'])
out=open(self.outPath+'{0}'.format(fName),'wb')
if self.settings['includeTitle']:
ff['content'] = ff['title']+os.linesep+ff['content']
out.write(ff['content'].encode(self.settings['encoding']))
out.close()
outFileCounter+=1
except IOError as e:
self.log.error(self.tr("Qualcosa e\' andato storto, non riesco a scrivere il file: {}").format(e))
continue
except KeyError as ke:
self.log.error(self.tr(f"Chiave {ke} non trovata per:{outFileCounter} {ff['title']} "))
except Exception as ee:
traceback.print_exc()
self.log.error(self.tr(f"Errore generale nel salvataggio: {ee}"))
if outFileCounter < self.bodyCounter:
self.log.error(self.tr("Ho salvato meno file rispetto a quelli trovati!"))
pass
def saveBody(self):
self.log.info(self.tr('Salvo gli articoli in un singolo file vicino agli originali...'))
self.log.debug(self.tr('Persorso: {0}').format(self.outPath))
#os.chdir(self.outPath)
try:
fName=slugify(self.fileName)
fName='BODYFILE_{0}.txt'.format(fName[:self.docStruct['maxTitleLen']])
fileContent = os.linesep.join([cc['content'] for cc in self.contentList])
out=open(self.outPath+'{0}'.format(fName),'wb')
out.write(fileContent.encode(self.settings['encoding']))
out.close()
except IOError as e:
self.log.error(self.tr("Qualcosa e\' andato storto, non riesco a scrivere il file: {}").format(e))
except Exception as ee:
self.log.error(self.tr(f"Errore generale nel salvataggio: {ee}"))
pass
Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

+11 -9
View File
@@ -15,26 +15,24 @@ from pprint import pprint
from glob import glob from glob import glob
from copy import deepcopy from copy import deepcopy
from slugify import slugify from slugify import slugify
####### VAR GLOBALI ####### ####### VAR GLOBALI #######
####### FUNZIONI GLOBALI ####### ####### FUNZIONI GLOBALI #######
def printTitle(): def printTitle():
print(". . . , \n| | _ | _. _ ._ _ _ -+- _ * \n|/\|(/,|(_.(_)[ | )(/, | (_) *") print(". . . , \n| | _ | _. _ ._ _ _ -+- _ * \n|/\|(/,|(_.(_)[ | )(/, | (_) *")
print(Fore.LIGHTYELLOW_EX,\ print(Fore.LIGHTYELLOW_EX,' _ ___________ _ _____ _____ \n\
' _ ___________ _ _____ _____ \n\
| | / ___| ___ \ | |_ _|_ _| \n\ | | / ___| ___ \ | |_ _|_ _| \n\
| |__ __ _ _ __ __ _ _ __ __ _\ `--.| |_/ / | | | | | \n\ | |__ __ _ _ __ __ _ _ __ __ _\ `--.| |_/ / | | | | | \n\
| \'_ \ / _` | \'_ \ / _` | \'_ \ / _` |`--. \ __/| | | | | | \n\ | \'_ \ / _` | \'_ \ / _` | \'_ \ / _` |`--. \ __/| | | | | | \n\
| |_) | (_| | | | | (_| | | | | (_| /\__/ / | | |_____| |_ | | \n\ | |_) | (_| | | | | (_| | | | | (_| /\__/ / | | |_____| |_ | | \n\
|_.__/ \__,_|_| |_|\__,_|_| |_|\__,_\____/\_| \_____/\___/ \_/') |_.__/ \__,_|_| |_|\__,_|_| |_|\__,_\____/\_| \_____/\___/ \_/')
print ('\t\t\t\t\t\t\tVersione 0.4a\n\n', Style.RESET_ALL) print ('\t\t\t\t\t\t\tVersione 0.4b\n\n', Style.RESET_ALL)
print('Iniziamo!!') print('Iniziamo!!')
pass pass
############################################################# #############################################################
####################### MAIN ################################ ####################### MAIN ################################
############################################################# #############################################################
@@ -111,14 +109,18 @@ try:
else: else:
print('Non ho capito la risposta, sii un po\' piu\' specifico... [y/n]\n') print('Non ho capito la risposta, sii un po\' piu\' specifico... [y/n]\n')
pass pass
if settings['removeOldFiles']:
print("Rimuovo i vecchi file dalla cartella di destinazione..")
for x in glob(cfg['OUTworkPath']+'*.txt'):
os.remove(x)
except: except:
print(Fore.LIGHTRED_EX, 'OOPS! Qualcosa e\' andato storto, non riesco a trovare nessun file da leggere :(', Style.RESET_ALL) print(Fore.LIGHTRED_EX, 'OOPS! Qualcosa e\' andato storto, non riesco a trovare nessun file da leggere :(', Style.RESET_ALL)
input() input()
sys.exit() sys.exit()
try:
if settings['removeOldFiles']:
print("Rimuovo i vecchi file dalla cartella di destinazione..")
for x in glob(cfg['OUTworkPath']+'*.txt'):
os.remove(x)
except:
print(Fore.LIGHTRED_EX, 'OOPS! Qualcosa e\' andato storto, non riesco a rimuovere i vecchi file :(', Style.RESET_ALL)
lastTime=time.time() lastTime=time.time()
fileCounter = 1 fileCounter = 1

Some files were not shown because too many files have changed in this diff Show More