[Risolto]Problema con Zenity

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: Problema con Zenity

Messaggio da vaeVictis »

NicoCale, il codice che hai postato è peggio di un geroglifico.
È indentato abbastanza male.
Quindi, ripeto la domanda... tu che comportamento vuoi ottenere?

Si apre la finestra di zenity... e poi?
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4457
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: Problema con Zenity

Messaggio da UbuNuovo »

c'è l'assegnazione e anche l'echo , il controllo lo devi fare sul comando zenity

edit: scusa Vae non avevo visto il tuo intervento. Giusto.
Resto solo in "ascolto"
Salva l'Ucraina! 🇺🇦
NicoCale
Prode Principiante
Messaggi: 16
Iscrizione: domenica 18 maggio 2014, 11:12
Desktop: ubuntu
Distribuzione: Ubuntu14.04 x86_64

Re: Problema con Zenity

Messaggio da NicoCale »

ahahahahahah :shy: :p scusa, solo che in fase di "creazione" ho corretto il codice così tante volte che ho tralasciato un po l'indentazione...

Si apre una finestra zenity --entry , nella quale l'utente deve mettere l'indirizzo di una cartella(è necessarrio per il funzionamento del programma), fatto ciò , una serie di if verifica :
1) se la cartella esiste , in caso contrario manda a video un errore , dopo aver mandato questa finestra di errore , ripresenta la finestra zenity --entry
2) se è stato premuto il tasto "ok" per procedere ma senza aver inserito un indirizzo, ovvero lasciando lo spazio di inserimento vuoto, in questo caso visualizza un altro errore che differisce dal primo e dopo aver fatto visualizzare l'errore , ripresenta la finestra zenity --entry con un percorso di default.

Ultima cosa , il programma deve terminare se si preme il tasto annulla.

Spero di essere stato un po più chiaro, non vorrei sembrasse che stia cercando di far fare lo script a voi , ma veramente, non capisco.
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: Problema con Zenity

Messaggio da vaeVictis »

Non c'è problema se ti si aiuta a capire il codice, ora che s'è capito che ci stai lavorando :)

Detto questo, secondo me il comportamento del programma è "asfissiante"... nel senso che se preme Annulla... non puoi mica entrare in un loop in cui continui a mazzetta a chiedergli di inserire qualcosa.
Detto questo, ti faccio un esempio di come si può impostare un loop per asfissiare l'utente ad inserire l'indirizzo della cartella

Codice: Seleziona tutto

#! /bin/bash


while true; do
	foo=`zenity --entry`
	if [[ $? -ne 0 ]]; then
		#ha premuto annulla
		continue
	elif [[ -z "$foo" ]]; then
		#ha premuto ok ma senza scrivere nulla
		continue
	else
		#ha fatto le cose per bene
		echo "Bravo hai scelto: $foo"
		break
	fi
done
Prova a far girare questo programma.
Se l'utente non fa le cose per bene... il programma imperterrito lo massacra di nuovo con richieste a loop... e per interrompere il programma devi chiudere la shell, o "killarlo" con ctrl+c dentro la shell che l'ha lanciato.
Sei sicuro che desideri questo comportamento?
Nel senso che il tasto Annulla serve per annullare, non per entrare in un incubo :)
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: Problema con Zenity

Messaggio da vaeVictis »

p.s.:
No, aspe'... mi sono reso conto che tu vuoi il comportamento "normale" se si preme annulla.
La struttura del ciclo while ora la hai, dovresti poter risolvere aggiungendo quello che ti serve al posto dei vari continue.
Se hai ancora difficoltà, invece, fallo pure presente che ti modifico il codice avvicinandolo a quello che ti serve :)
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
NicoCale
Prode Principiante
Messaggi: 16
Iscrizione: domenica 18 maggio 2014, 11:12
Desktop: ubuntu
Distribuzione: Ubuntu14.04 x86_64

Re: Problema con Zenity

Messaggio da NicoCale »

Grazie mille, ora ho capito, mi è stato comunque utile il ciclo, ora ho veramente risolto... finalmente ahahah :p :D :D :)
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: [Risolto]Problema con Zenity

Messaggio da vaeVictis »

Posta il codice, se vuoi, che gli si butta un occhio (se è indentato bene :) )
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
NicoCale
Prode Principiante
Messaggi: 16
Iscrizione: domenica 18 maggio 2014, 11:12
Desktop: ubuntu
Distribuzione: Ubuntu14.04 x86_64

Re: [Risolto]Problema con Zenity

Messaggio da NicoCale »

Eccolo :)

non ho idea del perchè l'elif, l'else e il fi me li faccia spostati ...

Codice: Seleziona tutto

#! /bin/bash 


#Mette nella variabille "sorgente" la path della cartella di default nella quale si trovano i file da copiare.
sorgente="/home/LDAPUsers/$USER/Documenti/"       

#Ciclo di verifica errori
while true

	     do    
		#Mette nella variabille "sorgente" la path della cartella nella quale si trovano i file da copiare, indicata dall'utente attraverso la finestra di dialogo.
 		sorgente=$(zenity --entry \
                                  --title="Sorgente file" \
                                  --text="Inserire Sorgente(indirizzo)\nSelezionare la cartella contenente i file che vogliono essere salvati\!" \
                                  --width=600 \
                                  --height=250 \
                                  --entry-text="$sorgente")
                #Salva stato operazione di zenity
                v="$?"
                #Controllo: esistenza cartella sorgente e manda a video un errore in caso essa non esista.
		if [ ! -e $sorgente ] && [ $v != 1 ]

			then
			    zenity --error --text="La cartella sorgente inserita non è raggiungibile o insesistente\n\n RICONTROLLARE INDIRIZZO\!" --width=600 --height=250 
                            continue
                            
                
                #Controllo: se non viene inserito nessun indirizzo e l'utente preme ok, viene visualizzato un errore
                elif [ "$sorgente" = "" ] && [ $v = 0 ]

			then
			    zenity --error --text="Per continuare l'operazione è necessario inserire l'indirizzo della cartella desiderata\!" --width=600 --height=250 
                            sorgente="/home/LDAPUsers/$USER/Documenti/"
                            continue
                else
                    break
                fi
                
		
	     done

#Controllo: se è stato premuto annulla , non si esegue il programma.
if [ $v != 1 ]

	then
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4457
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: [Risolto]Problema con Zenity

Messaggio da UbuNuovo »

Mi sono accorto ora che siete andati avanti, (ho avuto da fare e non mi sono arrivate le notifiche).
Per conto mio sarebbe più semplice inserire i vari "dialog" di zenity in funzioni e con un semplice controllo su stato di uscita e di presenza di valori nella variabile, si può uscire o riproporre la finestra di dialogo (come si vedenell'esempio che avevo postato.
in pratica:

Codice: Seleziona tutto

function foo (){
scelte=$(zenity...codice zenity)
[ $? -ne 0 ] && exit 1 ; [ -z "$scelte" ] && foo  # esce se si preme "Annulla" o si chiude la finestra e ripresenta la finestra se i valori non sono stati scelti/inseriti/selezionati
}

foo  # chiamata normale
Salva l'Ucraina! 🇺🇦
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti