eumandy/eugtk/examples/test127.ex
2016-11-25 00:33:18 -07:00

73 lines
1.9 KiB
Elixir

--------------------------------------------------------------
--# Custom (changeable) tooltips
--------------------------------------------------------------
include GtkEngine.e
constant docs = `<u><b>Custom Tooltip</b></u>
Mouse over the ok button to see it.
Move away,
Rinse, Repeat ...
`
integer ct = 99
constant win = create(GtkWindow,"size=300x100,border=10,position=1,$destroy=Quit")
constant panel = create(GtkBox,"orientation=VERTICAL")
add(win,panel)
constant lbl1 = create(GtkLabel)
set(lbl1,"markup",docs)
add(panel,lbl1)
constant btn1 = create(GtkButton,"gtk-quit","Quit")
set(btn1,"tooltip text","Click to end this program")
constant btn2 = create(GtkButton,"gtk-ok")
constant btnbox = create(GtkButtonBox)
add(btnbox,{btn1,btn2})
pack(panel,-btnbox)
-- create a custom tooltip:
constant ttwin = create(GtkWindow,GTK_WINDOW_POPUP)
set(ttwin,{
{"decorated",FALSE},
{"border width",10},
{"background","skyblue"}})
constant ttpanel = create(GtkBox,VERTICAL)
add(ttwin,ttpanel)
constant ttimage = create(GtkImage,"thumbnails/bar.gif")
add(ttpanel,ttimage)
constant tip = create(GtkLabel)
set(tip,"markup","<i><b>Tipsey</b></i> tip")
add(ttpanel,tip)
show_all(ttpanel)
set(btn2,"tooltip window",ttwin)
connect(btn2,"query-tooltip","ShowTip")
connect(btn2,"leave-notify-event","Drink")
object fmt = "%d bottles of beer on the wall,\n%d bottles of beer,\ntake one down,\ndrink it right down,\n%d bottles of beer on the wall!"
show_all(win)
main()
------------------------
global function Drink()
------------------------
ct -= 1
return ct
end function
----------------------------------------------------------------------------------------------
global function ShowTip(atom ctl, integer x, integer y, integer mode, atom t, atom data)
----------------------------------------------------------------------------------------------
set(tip,"markup",sprintf(fmt,{ct,ct,ct-1}))
return ct > 0 -- stops showing tip when ct = 0
end function