Gambas-it
  Blog     Wiki     Download     Il resto del Pinguino  
24 Maggio 2013, 09:20:29 *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizie: Nuova grafica e funzionalità per l'homepage di www.gambas-it.org
 
   Home   Guida Ricerca Utenti Accedi Registrati  
Pagine: [1]   Vai giù
  Stampa  
Autore Discussione: Pacman e progressbar  (Letto 327 volte)
godric94
Gamberetto
*
Scollegato Scollegato

Messaggi: 8


Mostra profilo
« inserito:: 11 Dicembre 2010, 16:13:38 »

Salve a tutti vi espongo un altro problema che mi affiigge. Sono un utilizzatore di Archlinux e per sfizio l'altra ho provato ad abbozzare un programma di gestione di pacman, aggiornamento di repository, aggiornamento di sistema, pulizia della cache. Il problema è che non so come indicare la fine di un determinato processo, poichè l'output non viene visualizzato. Si potrebbe far passare l'output del terminale in una textarea all'interno del programma stesso, cosa che già so fare, ma totalmente inutile poichè l'output non viene aggiornato e di conseguenza sarei punto e a capo. Pensavo di collegare una progress bar ma non so come, in qualche modo potrei collegare la progress bar di pacman (testuale) a una progress bar grafica all'interno della gui del programma in gambas?
Registrato
giulio
Maestro Gambero
****
Scollegato Scollegato

Messaggi: 280


Mostra profilo
« Risposta #1 inserito:: 12 Dicembre 2010, 16:12:58 »

Posto un esempio con una progressbar che si aggiorna man mano che wget scarica un file (una canzone).
E' solo per farti vedere come leggere l'output e trasformarlo in valore per la progressbar.
non ci sono altri controlli sul processo o su quante volte clicchi "Scarica" etc etc. Spero che ti serva come base di partenza. P.S. Ogni volta che lanci l'esempio ti ritroverai nella tua home una nuova copia della canzone :-)
Registrato
godric94
Gamberetto
*
Scollegato Scollegato

Messaggi: 8


Mostra profilo
« Risposta #2 inserito:: 14 Dicembre 2010, 16:09:16 »

Grazie mille dell'esempio, ho capito molto meglio come funzioni l'interlacciamento tra Wget e Gambas, cosa che mi serviva. Però non credo funga allo stesso modo con Pacman, potete dirmi cosa studiare affinchè possa risolvere tale problema da solo? Grazie.
Registrato
vaillant86
Utente non iscritto
« Risposta #3 inserito:: 03 Gennaio 2012, 14:35:13 »

Ciao giulio, ho provato il tuo codice per adattarlo al progetto su cui sto lavorando.

Preso singolarmente il download viene eseguito e la progress bar avanza correttamente, mentre quando adatto il codice a quello già presente non funziona (ho segnalo il codice che attualmente ho nella mia form).

Codice: gambas
PRIVATE $sAllWgetOutput AS String

PUBLIC SUB Form_Open()
 ME.Center   'già presente
 ME.Caption = ("Get Ubuntu")   'già presente
 Dialog.Path = User.Home   'già presente
 ProgressBar1.Value = 0
END

PUBLIC SUB Download_Click()
 DIM HTTP, FileName AS String   'già presente
 DIM procWget AS Process

 $sAllWgetOutput = ""
 ProgressBar1.Value = 0
 WAIT

 SELECT CASE Release.Text   'tutto il SELECT CASE è già presente
   CASE "11.10 Oneiric Mini Remix (i386)"
     HTTP = "http://www.ubuntu-mini-remix.org/download/11.10/ubuntu-mini-remix-11.10-i386.iso"
     FileName = "ubuntu-mini-remix-11.10-i386.iso"
   CASE "11.10 Oneiric Mini Remix (amd64)"
     HTTP = "http://www.ubuntu-mini-remix.org/download/11.10/ubuntu-mini-remix-11.10-amd64.iso"
     FileName = "ubuntu-mini-remix-11.10-amd64.iso"
   CASE "11.04 Natty Mini Remix (i386)"
     HTTP = "http://www.ubuntu-mini-remix.org/download/11.04/ubuntu-mini-remix-11.04-i386.iso"
     FileName = "ubuntu-mini-remix-11.04-i386.iso"
   CASE "11.04 Natty Mini Remix (amd64)"
     HTTP = "http://www.ubuntu-mini-remix.org/download/11.04/ubuntu-mini-remix-11.04-amd64.iso"
     FileName = "ubuntu-mini-remix-11.04-amd64.iso"
   CASE "10.10 Maverick Mini Remix (i386)"
     HTTP = "http://www.ubuntu-mini-remix.org/download/10.10/ubuntu-mini-remix-10.10-i386.iso"
     FileName = "ubuntu-mini-remix-10.10-i386.iso"
   CASE "10.10 Maverick Mini Remix (amd64)"
     HTTP = "http://www.ubuntu-mini-remix.org/download/10.10/ubuntu-mini-remix-10.10-amd64.iso"
     FileName = "ubuntu-mini-remix-10.10-amd64.iso"
   CASE "10.04.1 Lucid Mini Remix (i386)"
     HTTP = "http://www.ubuntu-mini-remix.org/download/10.04.1/ubuntu-mini-remix-10.04.1-i386.iso"
     FileName = "ubuntu-mini-remix-10.04.1-i386.iso"
   CASE "10.04.1 Lucid Mini Remix (amd64)"
     HTTP = "http://www.ubuntu-mini-remix.org/download/10.04.1/ubuntu-mini-remix-10.04.1-amd64.iso"
     FileName = "ubuntu-mini-remix-10.04.1-amd64.iso"
   CASE "10.04 Lucid Mini Remix (i386)"
     HTTP = "http://www.ubuntu-mini-remix.org/download/10.04/ubuntu-mini-remix-10.04-i386.iso"
     FileName = "ubuntu-mini-remix-10.04-i386.iso"
   CASE "10.04 Lucid Mini Remix (amd64)"
     HTTP = "http://www.ubuntu-mini-remix.org/download/10.04/ubuntu-mini-remix-10.04-amd64.iso"
     FileName = "ubuntu-mini-remix-10.04-amd64.iso"
   END SELECT
   
'    SHELL "wget -O " & Dir.Value & "/" & FileName & " " & HTTP    'già presente ma attualmente disabilitato
   procWget = SHELL "wget -O " & Dir.Value & "/" & FileName & " " & HTTP FOR READ AS "DownloadProgress"
END

PUBLIC SUB DownloadProgress_Read()

 DIM sWgetMessage AS String
 DIM sPercentuale AS String
 
 'leggo i messaggi dal processo wget  
 READ #LAST, sWgetMessage, -256
 
 'Tolgo i falsi positivi (% nell'URL da scaricare)
 IF InStr(sWgetMessage, "http://") > 0 THEN RETURN
 
 'Salvo comunque tutto l'output per controllare poi
 'che il download non sia già finito mentre aggiorno la progressbar
 
 $sAllWgetOutput &= sWgetMessage
   
 'Se nell'output di wget c'è la percentuale aggiorno la progress bar
 IF InStr(sWgetMessage, "%") > 0 THEN
       
   'ricavo la percentuale dal primo elemento della stringa dopo '%'
   sPercentuale = Split(sWgetMessage, "%", "", TRUE)[0]
   
   'elimino i punti e gli spazi
   sPercentuale = Trim$(Replace$(sPercentuale, ".", ""))
   
   TRY ProgressBar1.Value = Val(sPercentuale) / 100
   WAIT 0.01
   
   'se nel output totale c'e' il 100% aggiorno la progressbar
   IF InStr($sAllWgetOutput, "100%") > 0 THEN
     ProgressBar1.Value = 1
     WAIT
   ENDIF
   
 ENDIF
 
END

PUBLIC SUB Quit_Click()
 ME.Close
 FMain.Show
END
grazie Sorriso
Registrato
fsurfing
Moderatore
Senatore Gambero
*****
Scollegato Scollegato

Messaggi: 2.412



Mostra profilo WWW
« Risposta #4 inserito:: 03 Gennaio 2012, 17:41:44 »

prova ad usare input invece di read nel comando di wget
Registrato

vaillant86
Utente non iscritto
« Risposta #5 inserito:: 03 Gennaio 2012, 21:25:52 »

Funziona, grazie Sorriso
Registrato
Pagine: [1]   Vai su
  Stampa  
 
Vai a:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2006-2009, Simple Machines XHTML 1.0 valido! CSS valido!
Se vuoi sostenere Gambas-it.org puoi fare una piccola donazione utilizzando PayPal: