[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [paragui-users] Problems with Signals
From: |
Sergio Ruiz |
Subject: |
Re: [paragui-users] Problems with Signals |
Date: |
Fri, 4 Mar 2005 20:41:17 +0100 |
It was my fault not to see the typedef, I saw the PG_Pointer but I
didn't know it was a void type. The tricky, and the one i am using is
2nd way.
Great & thanks again.
Sergio
On Fri, 4 Mar 2005 00:49:32 +0100, Ulf Lorenz <address@hidden> wrote:
> On Wed, Mar 02, 2005 at 11:04:09PM +0100, Sergio Ruiz wrote:
> > Hi!!
> > I am getting sick trying to figure out how to use the signals with paragui.
> >
> > I have two questions that can save my live (and hopefully many others!!!).
> >
> > 1)
> > PG_Button* btnquit = app.GetWidget<PG_Button>("btnquit");
> > btnquit->sigClick.connect(slot(handle_quit));
> >
> > How can I pass arguments to the handle_quit function? Is it possible??
> Another possibility that just came back to my mind:
>
> Paragui signals can often take several arguments. Take the sigClick
> signal of the PG_Button class. It can be connected to functions of
> different kinds; in this case (I haven't tried it, but the code looks
> quite straightforward there):
>
> bool handle_click();
> bool handle_click(PG_Pointer p);
> bool handle_click(PG_Button* btn);
> bool handle_click(PG_Button* btn, PG_Pointer p);
>
> (PG_Pointer is just a synonym for void* via typedef). This scheme works
> for more than one standard parameter (here the PG_Button) in the same
> way (see pgsignals.h, a bit weird on the first glance, it takes some
> minutes to step behind it).
>
> The PG_Button* argument is always the button pressed. This also works in
> similar fashions for other classes. E.g. with a menu callback, you can
> get the selected menu item etc. The PG_Pointer (if you use one of these
> variants) has to be supplied at the time of the connect call. By storing
> it, you can also pass information. E.g. like this:
>
> main.cpp:
>
> bool handle_click(PG_Pointer status)
> {
> mystatus = *(static_cast<int*>(status));
> ...
> }
>
> int main (...)
> {
> int* status = new int;
> ...
> button->sigClick.connect(slot(handle_click, status));
> }
>
> Now by changing the status value, you can always pass some information
> to the handle_click function.
>
>
> Ulf
>
> --
> recursive:
> see recursive
>
> _______________________________________________
> paragui-users mailing list
> address@hidden
> http://lists.nongnu.org/mailman/listinfo/paragui-users
>