First of all, you have to change the "50%" to 0.50. Otherwise it doesn't work. After that, it still reports 0,0. On Linux GTK.
On Fri, May 22, 2009 at 11:06 PM, Satoshi Asakawa <[email protected]> wrote: > Hi Devyn, > > Thanks for the reply. :) > > Does the following snippet work well on your pc/mac? > > Shoes.app do > o = oval :top => "50%", :left => "50%" > start do > para "oval is at (#{o.top}, #{o.left})" > end > end > > -- ashbb > > On Sat, May 23, 2009 at 2:10 PM, Devyn Cairns <[email protected]> > wrote: >> >> Oh, well read the manual: Shoes thinks of percentages in decimals from >> 0.0 to 1.0 (0% to 100%). 50% = 0.5 in Shoes. >> >> On Fri, May 22, 2009 at 10:10 AM, Satoshi Asakawa <[email protected]> >> wrote: >> > Hi _why, >> > >> > Thank you for the explanation. >> > I understood to need `start` block! >> > >> > But still a bit confusing for the following behavior. :( >> > >> > Shoes.app do >> > o = oval :top => "50%", :left => "50%" >> > start do >> > para "oval is at (#{o.top}, #{o.left})" >> > end >> > end >> > >> > Run the above snippet, it didn't work and I got the error >> > on Shoes console window: >> > >> > Error in C:/Program Files/Common Files/Shoes/0.r1134/lib/shoes.rb line >> > 394 : >> > can't convert String into Integer >> > >> > Then replaced "50%" to 0.5. >> > It works but displayed `oval is at(0, 0)`. >> > >> > Then again replaced "50%" to 100. >> > It works and displayed `oval is at(100, 100)`. >> > >> > Umm... I'm using Windows XP and Shoes 2 (0.r1134). >> > >> > Regards, >> > ashbb >> > >> > >> > On Sat, May 23, 2009 at 12:50 AM, _why <[email protected]> wrote: >> >> >> >> On Fri, May 22, 2009 at 12:04:35PM +0000, Ehsanul Hoque wrote: >> >> > Ahh, well I did expect it to work like that, hmmm... It still >> >> > could be justified I suppose, it's really upto _why whether >> >> > it's a bug, or just a "feature", just how it works. >> >> >> >> Until the image is drawn, you can't really know `top` and `left`. >> >> >> >> For instance, let's say you're using percentages: >> >> >> >> Shoes.app do >> >> o = oval :top => "50%", :left => "50%", :radius => 20 >> >> para "Oval is at (#{oval.top}, #{oval.left})" >> >> end >> >> >> >> Until we compute the window size, the coordinates can't be shown. >> >> So, what you do is get the coordinates in the `start` block: >> >> >> >> Shoes.app do >> >> o = oval :top => "50%", :left => "50%", :radius => 20 >> >> start do >> >> para "Oval is at (#{oval.top}, #{oval.left})" >> >> end >> >> end >> >> >> >> Because the start block runs after the first paint. >> >> >> >> It still feels like a bug, but I'm not sure if I want to recompute >> >> every slot each time a new element is added. I will probably have >> >> `top` and `left` and `width` and so on return exceptions if you >> >> try to use them before the window is painted... I don't know. >> >> >> >> _why >> > >> > >> >> >> >> -- >> ~devyn > > -- ~devyn
