Re: Animates statusbar icon
- From: Robert Pearce <rob bdt-home demon co uk>
 
- To: gtkmm-list gnome org
 
- Subject: Re: Animates statusbar icon
 
- Date: Thu, 6 Oct 2011 07:43:23 +0100
 
Hi Camilo,
On Wed, 05 Oct 2011 23:57:31 -0300 you wrote:
> I like to create an animated statusbar icon like this:
> 
> void animate_statusbar_icon(Glib::RefPtr< Gtk::StatusIcon > icon)
> {
>     while (true)
>     {
>         icon->set_from_file("icon.png");
>         icon->set_visible();
>         sleep(1);
>         icon->set_from_file("icon_2.png");
>         icon->set_visible();
>         sleep(1);
You can't do that. Never use "sleep" this way.
The sleep function pauses your _entire_ application (or at least the
whole thread) which means the GTK main loop never gets to run. Instead
you need to write your code to co-operate with GTK. Try something like:
class animated
{
	Glib::RefPtr< Gtk::StatusIcon > iconref;
	int next_img;
	void tick_cb(void);
	void animate_statusbar_icon(Glib::RefPtr< Gtk::StatusIcon > icon)
};
void animated::animate_statusbar_icon(Glib::RefPtr< Gtk::StatusIcon > icon)
{
	iconref = icon;
	next_img = 0;
	Glib::SignalTimeout().connect_seconds ( sigc::mem_fun(animated::tick_cb, this), 1 );
}
void animated::tick_cb(void)
{
	std::string fname = "icon_";
	fname += next_img;
	fname += ".png";
	next_img++;
	icon->set_from_file(fname);
}
[
Date Prev][
Date Next]   [
Thread Prev][
Thread Next]   
[
Thread Index]
[
Date Index]
[
Author Index]