Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   PHP-GTK (http://www.forosdelweb.com/f51/)
-   -   GtkProgressBar que no progresa (http://www.forosdelweb.com/f51/gtkprogressbar-que-no-progresa-116976/)

fran86 16/02/2003 16:54

GtkProgressBar que no progresa
 
Estoy tratando de crear una ProgressBar pero cuando se abre la ventanita la barra esta a 0% y luego de terminar la operacion recien alli salta a 100%, o sea que no progresa.

Para crearla uso esto:
Código PHP:

<?php

   $ventana2 
= &new GtkWindow();
   
$ventana2->connect('destroy''shutdown');
   
$ventana2->set_title("GTK.LimpiaRepetidos 0.1");
   
$ventana2->set_position("GTK_WIN_POS_CENTER_ALWAYS");
   
$ventana2->set_policy(010);  // Esto es igual que lo predeterminado pero despues lo cambio
   
$ventana2->set_border_width(10);

   
$frame =  &new GtkFrame();
   
$frame->set_label("Por favor espere. Calculando...");
   
$ventana2->add($frame);
   
$frame->show();

      
$boxv = &new GtkvBox(010);
      
$boxv->set_border_width(5);
      
$frame->add($boxv);
      
$boxv->show();

         
$adjustment = &new GtkAdjustment(0.00.0100.00.00.00.0);
         
//$adjustment = &new GtkAdjustment(0.5, 100.0, 200.0, 0.0, 0.0, 0.0);

         
$value $adjustment->value;
         
$progreso = &new GtkProgressBar($adjustment);
         
$progreso->set_show_text(true);
         
$progreso->set_usize(gdk::screen_width()/1.235);
         
$boxv->pack_start($progreso);
         
$ventana2->add($progreso);
         
$progreso->show();


         
$boton = &new GtkButton("Cancelar");
         
$boton->connect('clicked''PreguntaCancelar'$ventana2);
         
$boxv->pack_end($boton);
         
$boton->show();

   
$ventana2->show_all();

         
Calcula($entry$progreso);
?>

La funcion PreguntaCancelar es solo un GtkDialog para cancelar, por eso no la explico.

La funcion Calcula es + o - asi:

Código PHP:

<?php
function Calcula($entry$progreso) {
   
$lineas file($entry); // tiene paths de muchos archivos.
         
   
$todo count($lineas);
   
$suma 1/$todo;   

   
$value 0;

   for(
xxxxx) {    //for que recorre el array de file
      // Se obtienen stats de los archivos
      
$value += $suma;
      
$progreso->set_percentage($value);
   }
}
?>

Los valores de $values estan bien porque les hago un echo y desde la consola veo como aumentan hasta llegar a 1, asi que no se k es, puede ser (y es muy probale) que no entienda bien como funciona ProgressBar, y es que empece con esto de GTK hace un pas de dias.
En el ejemplo del manual (que si anda) vi que se usa gtk::timeout_add, y ademas mi pregunta es ¿para que es eso?.

Saludos!

epplestun 17/02/2003 02:27

El gtk::time_out_add lo que hace es llamar a una funcion cada X milisegundos, esa funcion debe ser la encargada de realizar el progreso de tu barra dGtkProgressBar. Por otra parte en lo ajustes de GtkAdjutsments no puedes indicarle (no estoy seguro) 0.0 indicale por ejemplo 0.1 ave rsi asi te funciona

fran86 20/02/2003 12:32

Hola, sorry por tardar en contestar, me tome unos dias libres :cool:
Guiandome por lo que me decias use gtk::time_out_add con 0 milisegundos, pero tampoco progresaba, entonces probe con 1mls y si!!, pero si en el bucle de mi funcion que hace aproximadamente 4000 vueltas retraso la ejecucion 1mls cada ves se me hace bastante mas lento...
Al finar hago que el progressbar se actualice cada 1seg haciendo una condicion con time(); si hay alguna forma mas correcta y mejor que alguien me la diga please, mientras quedara así :-D :-D
Por otra parte haciendo una pruebita con el ejemplo del manual GtkAdjutsments si admite 0.0, asi k eso no lo toque...

Gracias y saludos!


La zona horaria es GMT -6. Ahora son las 07:30.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.