Retroceder   Foros del Web > Programación para sitios web > PHP > PHP-GTK

Respuesta
 
Herramientas Desplegado
Antiguo 16-feb-2003, 15:54   #1 (permalink)
fran86 está en el buen camino
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colón - Entre Rios
Mensajes: 564
Enviar un mensaje por ICQ a fran86 Enviar un mensaje por MSN a fran86
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!
fran86 está desconectado   Responder Citando
Antiguo 17-feb-2003, 01:27   #2 (permalink)
epplestun está en el buen camino
 
Avatar de epplestun
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.620
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
epplestun está desconectado   Responder Citando
Antiguo 20-feb-2003, 11:32   #3 (permalink)
fran86 está en el buen camino
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colón - Entre Rios
Mensajes: 564
Enviar un mensaje por ICQ a fran86 Enviar un mensaje por MSN a fran86
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!
fran86 está desconectado   Responder Citando
Respuesta
No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Desactivado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 02:37.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93