yab | yet another Basic for HAIKU
smart Window placement - Printable Version

+- yab | yet another Basic for HAIKU (https://yab.orgfree.com/forum)
+-- Forum: Programming in yab (https://yab.orgfree.com/forum/forumdisplay.php?fid=1)
+--- Forum: Snippets (https://yab.orgfree.com/forum/forumdisplay.php?fid=3)
+--- Thread: smart Window placement (/showthread.php?tid=1)



smart Window placement - bbjimmy - 06-05-2015

This is an example of a way to save Window settings yet always display the whole window when the program opens.


sub OpenWindow()
local x
local y
x=150 : y=150
if (open(1,"/boot/home/config/settings/myprogram.settings"))then
line input #1 x$
line input #1 y$
close #1
x=val(x$)
y=val(y$)
if x<0 x=150
if y<0 y=150
if (x> peek("desktopwidth")-500) x=150
if y> (peek("desktopheight")-500) y=150
end if

window open x,y to x+500,y+500, "MainWindow", "myprogram"

// set up the Window

end sub

sub CloseWindow()

x= window get "MainWindow", "Position-X"
y= window get "MainWindow", "Position-y"
open #1,"/boot/home/config/settings/myprogram.settings","w"
print #1 str$(x)
print #1 str$(y)
close #1
window close "MainWindow"
return
end sub


RE: smart Window placement - clasqm - 08-06-2015

I've been doing much the same thing: if the window is not going to be displayed properly, restore it to a default position, Useful if your user has changed to a lower screen resolution. But an alternative is to take it down in steps.

while(x> peek("desktopwidth")-500))
x = x-20
wend

20 pixels is roughly the height of the Haiku window tab, so when you run this routine on y you don't end up with a window that has its tab sticking up above the top of the screen.


Free Web Hosting