On 12/8/06, e aldaz <ardhazes / yahoo.com> wrote:
> Dear All
>
> I am new to FOX and FoxGUIb. I have found FoxGUIb very
> useful and I have created an application with menus,
> one of which calls a DialogBox for the user to enter
> some values. After finishing the user will press OK to
> save data.
>
> Unfortunately I don't know how to let the
> DialogBox know tha tonce the OK button is pressed it
> should exit. It seems I need to send message ID_ACCEPT
> to some recipient (not sure which) when the button OK
> is clicked? But no idea how to do that with the code
> that is generated by FoxGUIb as the button is created
> in a different way to what I have seen in the examples
> in the web, and I have no idea how to relate them (
> I'm afraid I haven't really understood the FXButton
> API)

me neither ;) ... there are some very hackish things that make the use
of fox toolkit not as easy as it could be.

>
> The dialog box examples I have seen do something like
> the following:
>
>    # Accept
>     accept = FXButton.new(buttons, "&Accept", nil,
> self, ID_ACCEPT,
> FRAME_RAISED|FRAME_THICK|LAYOUT_RIGHT|LAYOUT_CENTER_Y)
>
>
> However the FoxGUIb creates a button doing:
>
> FX::Button.new(@verticalframe7){|w|
>                 @button_ok=w
>                 w.wdg_name='button_ok'
>                 w.text="Ok"
>                 w.width=21
>                 w.y=4
>                 w.height=21
>                 w.layoutHints=40
>                 w.x=26
>                 w.selector=FX::DialogBox::ID_QUIT
>
>                 @button_ok.connect(Fox::SEL_COMMAND){
>                             lat = textfield_lat.text
>                             lon = textfield_lon.text
>                             heading
> =textfield_heading.text
>                                                 #How
> do I indicate that I want to accept and exit?:?
>
>                 }
>  }
>
> So in this last example, how do I exit the dialog when
> button is clicked?

the most simple aproach would be like this:
@button_ok.connect(Fox::SEL_COMMAND){
   ....
   @topwin.hide() # assuming that @topwin is the name of the dialogbox
}

however if your dialog box has been run modal this will not work. the
dialog box disappears but is still modal. in this case you have to
send an ID_ACCEPT message to @topwin like this:

@topwin.handle(@button, FXSEL(Fox::SEL_COMMAND,
Fox::FXDialogBox::ID_ACCEPT), nil)

hope this helps,
-- meinrad (henon)
>
> Thanks very much for your help
> Eduardo
>