[fxruby-users] FXTopWindow

angico angico at angico.org
Thu Nov 20 04:12:57 EST 2008


Em Qua, 2008-11-19 às 23:19 -0600, Jeroen van der Zijp escreveu:


> To get out of the modal loop, FXDialogBox calls app->stopModal(); this can
> be most easily accomplished via ID_CANCEL or ID_ACCEPT messages being sent
> to the dialogbox [they differ mainly in the return code passed along through
> runModalFor().
> You can certainly also call accept in response to a timeout.  In fact, handlers
> for timeout and chores have already been added to FXDialogBox: SEL_TIMEOUT,
> SEL_COMMAND, and SEL_CHORE with ID_CANCEL or ID_ACCEPT are available.
> 
> So basically all that's needed is to set the timer to send the (SEL_TIMEOUT,ID_CANCEL)
> message to FXDialogBox at the desired time.
> 
> Hope this helps,
> 
> 
> 		- Jeroen
> 
> 

Hi, Jeroen

I have already unsuccessfuly tried to exit an FXDialogBox's modal loop
all the ways I could think of - and none of them worked.

The basic idea for my timeout dialog box is:

-----
class TimeoutDlg < FXDialogBox
  def execute
    time = 10
    Thread.new(timer)
    super
  end

  def timer
    # give the user 5 seconds to respond, or accept the default
    while time > 0 do
      sleep 0.5
      time -= 1
    end

    # my first trial, based on suggestion from Lyle
    handle(self, FXSEL(SEL_COMMAND, ID_ACCEPT), 0) # <-- doesn't work!!!

    # another trial, also based on Lyle's suggestion
    hide
    app.stopModal # <-- doesn't work!!!

    # my last trial, based on your suggestion
    handle(self, FXSEL(SEL_TIMEOUT, ID_ACCEPT), 0) # <-- doesn't work!!!
  end
-------

So, that's why I'm bound to create my own dialog, extending it from
FXTopWindow, but I don't know exactly how to do it, because when I
create the dialog with @dlg = TimeoutDlg, I got the error:


./timeoutdlg.rb:14:in `initialize': No matching function for overloaded
'new_FXTopWindow' (ArgumentError)
from ./timeoutdlg.rb:14:in `initialize'


Well, in my custom "initialize" I'm just using the same arguments to
FXComposite::initialize, which, according to the documentation, is the
"grandparent" of FXTopWindow.

That said, I'd like to ask you two things: 1) WHY doesn't ANY of the
trials to exit the FXDialogBox's modal loop work? And 2) HOW do I derive
or subclass from FXTopWindow (if not for this specific use, for any
other I might think of)?

I'm using:

ruby 1.8.6 (2007-09-24 patchlevel 111) [x86_64-linux]
FXRuby 1.6.16

I thank you very much, in advance.

-- 

angico
------

home page: www.angico.org
Gnu/Linux, FLOSS, Espiritismo, e eu por mim mesmo 8^I

Cooperação é muito melhor que competição!

------
contatos:
email: angico at angico.org
skype: an.gi.co
------



More information about the fxruby-users mailing list