Re: progressbar (Mauricio Pacheco)



Alejandro,

        Lo mejor seria que te guiaras en el patron de diseño llamado "observer" (o pocas veces tambien llamado Spider). Este explica la logica de funcionamiento de un miron (jejeje), el cual te va entregando los avances de una clases, la cual se muestra en una barra de progreso (ya que basicamente hacer que se mueva una barra de progreso no tiene logica alguna y es muy simple, pero el asunto es que dicha barra, vaya acorde con los procesos que se van realizando en tus clases). En google existen varias paginas donde explican el patron. Cualquier duda, solo consulta


Pd.: Existen varias implementaciones para la orientacion a objeto, para eso te recomiendo que te leas un libro de "patrones de diseño"

Saludos
 
Mauricio Felipe Pacheco D.
Ingeniero en Informática
FONDEF 1055
Universidad de Chile
Fono: 9784476

--
Message: 1
Date: Tue, 17 Oct 2006 15:24:23 -0300
From: Germán Poó Caamaño <gpoo ubiobio cl>
Subject: Re: progressbar
To: avaldes utalca cl, "Advocacy,       chit-chat and event planning in
        Chile" <gnome-cl-list gnome org>
Message-ID: <1161109463 13196 21 camel localhost localdomain>
Content-Type: text/plain; charset=ISO-8859-1

On Tue, 2006-10-17 at 12:36 -0300, Alejandro Valdes Jimenez wrote:
> Estimados...
>
> ¿cual será la manera de implementar un progressbar mientras se ejecuta
> una tarea?
>
> pregunto esto ya que necesito que mientras ejecuto una acción, se active
> la barra de progreso hasta que termine la acción, sin embargo, solo he
> logrado que la barra se active una vez terminada la acción.
>
> Ya me han dicho que con threads se puede, sin embargo, no logro entender
> bien como complementar ambas cosas.

Tienes que definir períodos entre los cuales deseas actualizar la
barra de progreso.  Por ejemplo, si tienes tareas que puedes enumerar
o contar, entonces cada vez que terminas una de dichas tareas,
actualizas la barra de progreso (gtk_progress_bar_set_fraction).
Típicamente dentro de una iteración, por cada iteración actualizas
los valores de la barra de progreso.

La barra de progreso no se va a actualizar sola.  A menos que sea
de tipo 'pulse', donde lo único que aparece es el 'progreso'
moviéndose de un lado hacia otro.  Eso se emplea cuando no sabes
cuando terminará (no puedes determinar el 100%).

Lo de usar hilos va por otro lado.  Si la tarea es muy demandante
y no devuelve el control en un período prolongado de tiempo, entonces
da la sensación que la aplicación se ha congelado.  Se nota si minimizas
y luego restauras el tamaño de la ventana, ésta se verá completamente
gris, sin controles.

Mientras no soluciones lo primero, no tiene sentido intentar resolver
lo segundo.

--
Germán Poó-Caamaño
http://www.ubiobio.cl/~gpoo/
Concepción - Chile



------------------------------

Message: 2
Date: Tue, 17 Oct 2006 15:39:15 -0300
From: Alejandro Valdes Jimenez < avaldes utalca cl>
Subject: [Fwd: Re: progressbar]
To: gnome-cl-list gnome org
Message-ID: <1161110355 2843 36 camel mono>
Content-Type: text/plain; charset="iso-8859-1"


--
Alejandro Valdés Jiménez.
Area Plataforma
DTI - Dirección de Tecnologías de Información
Universidad de Talca.
Talca - Chile.
Teléfono: (56) (71) 200408
------------ próxima parte ------------
Se ha borrado un mensaje inmerso...
De    : Alejandro Valdes Jimenez <avaldes utalca cl>
Asunto: Re: progressbar
Fecha : Tue, 17 Oct 2006 15:32:18 -0300
Tamaño: 1881
Url   : /archives/gnome-cl-list/attachments/20061017/68af3038/attachment.eml

------------------------------

Message: 3
Date: Tue, 17 Oct 2006 15:59:57 -0300
From: Fernando San Martín Woerner < snmartin galilea cl>
Subject: Re: [Fwd: Re: progressbar]
To: avaldes utalca cl, "Advocacy,       chit-chat and event planning in
        Chile" <gnome-cl-list gnome org>
Message-ID: <4535282D 5060203 galilea cl>
Content-Type: text/plain; charset="iso-8859-1"

Alejandro Valdes Jimenez escribió:
...
>>
> al parecer, threads es mi opción.

Sin tener 0 idea de perl (/me is python), se que existe la posibilidad
de realizar actualizaciones en gtk.main ()

en python se hacer con while gtk.events_pending() ej:

while gtk.events_pending():
     gtk.mainiteration(gtk.FALSE)


Buscando en google code search:

lang:perl gtk events_pending

sale un larga lista de ejemplos....

yo partiría por ahí, saludos


--
Fernando San Martín Woerner
Jefe de Informática
Galilea S.A. http://www.galilea.cl/

--
Este mensaje ha sido analizado por nuestros servidores
en busca de virus y otros contenidos peligrosos,
y se considera que está limpio.


------------ próxima parte ------------
Se ha borrado un mensaje que no está en formato texto plano...
Nombre     : snmartin.vcf
Tipo       : text/x-vcard
Tamaño     : 239 bytes
Descripción: no disponible
Url        : /archives/gnome-cl-list/attachments/20061017/fce57fcc/attachment.vcf

------------------------------

Message: 4
Date: Tue, 17 Oct 2006 16:16:13 -0300
From: Alejandro Valdes Jimenez <avaldes utalca cl>
Subject: Re: progressbar
To: Claudio Saavedra < csaavedra alumnos utalca cl>
Cc: "Advocacy, chit-chat and event planning in Chile"
        <gnome-cl-list gnome org>
Message-ID: <1161112573 2843 40 camel mono >
Content-Type: text/plain; charset=ISO-8859-1

gracias a todos...

while (Gtk2->events_pending) {
                Gtk2->main_iteration;
        }

eso me ayudó.

ahora hay que afinarlo.

El mar, 17-10-2006 a las 13:45 -0300, Claudio Saavedra escribió:
> On Tue, 2006-10-17 at 12:36 -0300, Alejandro Valdes Jimenez wrote:
> > Estimados...
> >
> > ¿cual será la manera de implementar un progressbar mientras se ejecuta
> > una tarea?
> >
> > pregunto esto ya que necesito que mientras ejecuto una acción, se active
> > la barra de progreso hasta que termine la acción, sin embargo, solo he
> > logrado que la barra se active una vez terminada la acción.
> >
> En el ciclo donde ejecutas tu tarea, usa gtk_events_pending ():
>
>       /* computation going on */
> ...
>         while (gtk_events_pending ())
>         gtk_main_iteration ();
> ...
>       /* computation continued */
>
>
> Claudio
>
--
Alejandro Valdés Jiménez.
Area Plataforma
DTI - Dirección de Tecnologías de Información
Universidad de Talca.
Talca - Chile.
Teléfono: (56) (71) 200408



------------------------------

Message: 5
Date: Tue, 17 Oct 2006 16:27:06 -0300
From: Fernando San Martín Woerner < snmartin galilea cl>
Subject: Re: progressbar
To: avaldes utalca cl, "Advocacy,       chit-chat and event planning in
        Chile" < gnome-cl-list gnome org>
Message-ID: <45352E8A 5010304 galilea cl>
Content-Type: text/plain; charset="iso-8859-1"

Alejandro Valdes Jimenez escribió:
> gracias a todos...
>
>  while (Gtk2->events_pending) {
>                 Gtk2->main_iteration;
>         }

en general el truco sirve para actualizar la ui durante un ciclo, ojo
que tu aplicación queda más lenta dado que la ui se va repintando.

saludos


--
Fernando San Martín Woerner
Jefe de Informática
Galilea S.A. http://www.galilea.cl/

--
Este mensaje ha sido analizado por nuestros servidores
en busca de virus y otros contenidos peligrosos,
y se considera que está limpio.


------------ próxima parte ------------
Se ha borrado un mensaje que no está en formato texto plano...
Nombre     : snmartin.vcf
Tipo       : text/x-vcard
Tamaño     : 239 bytes
Descripción: no disponible
Url        : /archives/gnome-cl-list/attachments/20061017/e3b11b59/attachment.vcf

------------------------------

Message: 6
Date: Tue, 17 Oct 2006 16:30:41 -0300
From: Alejandro Valdes Jimenez <avaldes utalca cl>
Subject: Re: progressbar
To: Fernando San Martín Woerner < snmartin galilea cl>
Cc: "Advocacy, chit-chat and event planning in Chile"
        <gnome-cl-list gnome org>
Message-ID: <1161113441 2843 43 camel mono>
Content-Type: text/plain; charset=ISO-8859-1

El mar, 17-10-2006 a las 16:27 -0300, Fernando San Martín Woerner
escribió:
> Alejandro Valdes Jimenez escribió:
> > gracias a todos...
> >
> >  while (Gtk2->events_pending) {
> >                 Gtk2->main_iteration;
> >         }
>
> en general el truco sirve para actualizar la ui durante un ciclo, ojo
> que tu aplicación queda más lenta dado que la ui se va repintando.

asi se ve, sin embargo, ya no se pone gris la ventan hasta el termino de
la tarea.  claro que podría ser mas bonito. :D

>
> saludos
>
>
> --
> Fernando San Martín Woerner
> Jefe de Informática
> Galilea S.A. http://www.galilea.cl/
>
--
Alejandro Valdés Jiménez.
Area Plataforma
DTI - Dirección de Tecnologías de Información
Universidad de Talca.
Talca - Chile.
Teléfono: (56) (71) 200408



------------------------------

Message: 7
Date: Tue, 17 Oct 2006 13:45:15 -0300
From: Claudio Saavedra <csaavedra alumnos utalca cl>
Subject: Re: progressbar
To: avaldes utalca cl, "Advocacy,       chit-chat and event planning in
        Chile" <gnome-cl-list gnome org>
Message-ID: <1161103516 3411 3 camel b202a wh8 tu-dresden de >
Content-Type: text/plain; charset=utf-8

On Tue, 2006-10-17 at 12:36 -0300, Alejandro Valdes Jimenez wrote:
> Estimados...
>
> ¿cual será la manera de implementar un progressbar mientras se ejecuta
> una tarea?
>
> pregunto esto ya que necesito que mientras ejecuto una acción, se active
> la barra de progreso hasta que termine la acción, sin embargo, solo he
> logrado que la barra se active una vez terminada la acción.
>
En el ciclo donde ejecutas tu tarea, usa gtk_events_pending ():

        /* computation going on */
...
        while (gtk_events_pending ())
          gtk_main_iteration ();
...
        /* computation continued */


Claudio

--
Claudio Saavedra <csaavedra alumnos utalca cl>



------------------------------

Message: 8
Date: Tue, 17 Oct 2006 16:59:04 -0300
From: "Pablo Pablo" <pagarciasan gmail com>
Subject: Re: progressbar
To: "Advocacy, chit-chat and event planning in Chile"
        < gnome-cl-list gnome org>
Message-ID:
        <dbce5a3d0610171259m18c2a842q965ca45352a9f115 mail gmail com>
Content-Type: text/plain; charset="iso-8859-1"

alguien sabe como me puedo liberar de esta lista
ya no quiero estar inscrito

Ayuda Plissss



2006/10/17, Claudio Saavedra <csaavedra alumnos utalca cl >:
>
> On Tue, 2006-10-17 at 12:36 -0300, Alejandro Valdes Jimenez wrote:
> > Estimados...
> >
> > ¿cual será la manera de implementar un progressbar mientras se ejecuta
> > una tarea?
> >
> > pregunto esto ya que necesito que mientras ejecuto una acción, se active
> > la barra de progreso hasta que termine la acción, sin embargo, solo he
> > logrado que la barra se active una vez terminada la acción.
> >
> En el ciclo donde ejecutas tu tarea, usa gtk_events_pending ():
>
>        /* computation going on */
> ...
>        while (gtk_events_pending ())
>          gtk_main_iteration ();
> ...
>        /* computation continued */
>
>
> Claudio
>
> --
> Claudio Saavedra <csaavedra alumnos utalca cl>
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: /archives/gnome-cl-list/attachments/20061017/1c13986f/attachment.htm

Fin de Resumen de gnome-cl-list, Vol 21, Envío 11
*************************************************


--


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]