To Mr. Andrews,

Well, when you're initializing the Thing object, you're passing in a
block...but the Thing's initializer is not calling the block anywhere.

The code below might have some errors, but I'm whipping it up to demonstrate.

class Thing < Widget

        def initialize &block
                width = 300
                height = 300
                background blue
                yield
        end

end

Shoes.app do
        thing do
                button 'Test'
                para 'Testing'
        end
end

I tried running this, and it looks like it works. Mr. Why fixed a lot
of Widget bugs in the last build, though, so make sure you have the
latest version, Revision 970.

Also note that the changing the background by a button inside the
block only changes the button's background. I do not know if this is a
bug—perhaps you can ask Mr. Why. :)

Shoes.app do
        thing do
                button 'Test' do
                        background red
                end
                para 'Testing'
        end
end

Sincerely,
Joshua Choi

On Thu, Sep 18, 2008 at 9:28 AM, Ross Andrews <[EMAIL PROTECTED]> wrote:
> Hi!
> I am trying to make a game in Shoes, and so I am making classes that are
> custom widgets. I've got something that can draw itself, but handling events
> is still eluding me.
> Here's something like what I would like to do:
> class Thing < Widget
>   def initialize
>     self.width=300
>     self.height=300
>     background blue
>   end
> end
> Shoes.app do
>   thing do
>     hover { background red }
>     leave { background blue }
>     click { alert "Ha!" }
>   end
> end
> Of course, it doesn't work at all (except the painting part). If I replace
> "thing" with a stack, then it seems to work, so what magic is stack doing
> that other widgets don't?

Reply via email to