97 lines
2.7 KiB
Elixir
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
|
|
|
|
|
|
|