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

97 lines
2.7 KiB
Elixir

--------------------------------------------------------------------
--# GtkInfoBar, used to show messages without a dialog.
-- It is often temporarily shown at the top or bottom of a document.
-- In contrast to GtkDialog, which has a action area at the bottom,
-- GtkInfoBar has an action area at the side.
-- WORTHLESS in WINDOWS.
--------------------------------------------------------------------
include GtkEngine.e
constant docs = `<b><u>Info Bar</u></b>
will appear when you click
either of the two buttons above.
Programmer can change the color of the info bar
to indication importance of the message.
`
enum BUG, GOOSE, CLOSE
sequence pix = repeat(0,2)
pix[BUG] = "thumbnails/bug-buddy.png"
pix[GOOSE] = "thumbnails/mongoose.png"
constant fmt = `<span size='small' color='black'>The last button pressed was
the <b>%s</b> Button [#%d]</span>`
constant win = create(GtkWindow,
"title=`GTK INFO BAR`,size=430x400,border_width=10,position=1x1,background=skyblue,$destroy=Quit")
constant panel = create(GtkBox,VERTICAL)
add(win,panel)
constant btnbox = create(GtkButtonBox)
add(panel,btnbox)
constant btn1 = create(GtkButton,pix[BUG] & "# _Bug",_("PopupBar"),BUG)
set(btn1,"tooltip text","This is button #1")
constant btn2 = create(GtkButton,pix[GOOSE] & "# _Mongoose",_("PopupBar"),GOOSE)
set(btn2,"tooltip text","This is button #2")
add(btnbox,{btn1,btn2})
constant lbl = create(GtkLabel,{
{"markup",docs},
{"margin top",20}})
add(panel,lbl)
constant ib = create(GtkInfoBar)
constant ca = get(ib,"content area")
constant img = create(GtkImage) -- add a container for the infobar image;
add(ca,img)
show_all(ca)
constant iblabel = create(GtkLabel) -- text for infobar, with close button;
add(ca,iblabel)
set(ib,{
{"message type",GTK_MESSAGE_OTHER}, -- (*)
{"add button","gtk-close",CLOSE},
{"signal","response",_("PopupBar")}})
pack_end(panel,ib,1,0)
-- (*) For the theme I am using at the moment:
-- GTK_MESSAGE_INFO = normal background color
-- GTK_MESSAGE_WARNING = yellow
-- GTK_MESSAGE_QUESTION = blue
-- GTK_MESSAGE_ERROR = red
-- GTK_MESSAGE_OTHER = borderless, use default window background color
-- Possibly this may change depending upon the window theme in use.
show_all(win)
set(ib,"hide")
main()
------------------------------------------------------------------------
function PopupBar(atom ctl, object z)
------------------------------------------------------------------------
object txt
if z = CLOSE then
set(ib,"hide")
else
txt = remove_item('_',get(ctl,"label"))
set(iblabel,"markup",sprintf(fmt,{txt,z}))
set(iblabel,"show")
set(img,"from file",locate_file(pix[z]))
set(ib,"show_all")
end if
return 1
end function