Foros del Web » Programando para Internet » PHP » PHP-GTK »

GtkProgressBar que no progresa

Estas en el tema de GtkProgressBar que no progresa en el foro de PHP-GTK en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 16/02/2003, 16:54
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 22 años, 8 meses
Puntos: 8
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!
  #2 (permalink)  
Antiguo 17/02/2003, 02:27
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 23 años, 5 meses
Puntos: 5
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
__________________
Usuario registrado de Linux #288725
  #3 (permalink)  
Antiguo 20/02/2003, 12:32
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 22 años, 8 meses
Puntos: 8
Hola, sorry por tardar en contestar, me tome unos dias libres
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í
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!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:47.