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]