Re: Static signals (was:(no subject) )
- From: Antonio Coralles <noche suapie reflex at>
- To: gtkmm-list gnome org
- Subject: Re: Static signals (was:(no subject) )
- Date: Thu, 17 Mar 2005 08:57:12 +0100
sudrien fusemail com wrote:
Message: 5
Date: Wed, 16 Mar 2005 08:11:06 0100
From: Antonio Coralles <noche suapie reflex at
<mailto:noche suapie reflex at>>
> I have a derived widget - derived from an EventBox. It has a funtion
"void
> doShowHidden(bool);".
>
> There are several instances of these derived widgets on different
notebook
> pages - so it is not easy to get direct access to them. So is is
possible
> that I could call all their doShowHidden(bool) functions with a signal?
> They will all be either true or false - whatever the state of the
checkbox
> is.
>
> So... how could I do that? All the examples of signals I've seen call
> functions within the same class.
>
> -Sud.
One way of doing this is the following (there may be better ones): Add a
static signal to your class, und connect to that static signal in your
constructor(s). If you want then to sent a signal to all instances, just
trigger the static one ...
antionio
I /think/ I get what you are saying... but doesn't a static signal require
a staic function? And static functions can only work with other static
variables and functions - nothing can happen to specific instances...
Static functions in classes must not acces non-static data, but
non-static methods may acces static variables/functions.
And I've not read that signals can propagate to children in libsigc ...
It may be easier to maintain a list of pointers somewhere, so I can have
direct access...
-Sud.
_______________________________________________
What i mean is something like this:
class Example
{
public:
Example()
{
signalForAllExamples().connect(sigc::mem_fun(*this,
&Example::triggerMe));
}
Example(const Example& copyMe) { /* the same like for Example() */ }
void triggerMe() { /* do something */ }
static sigc::signal<void> signalForAllExamples() { return
sig_forAllExamples_; }
private:
static sigc::signal<void> sig_forAllExamples_;
};
A simple Example::signalForAllExamples().emit() should then do what you
want ....
antonio
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]