added eugtk examples
This commit is contained in:
82
eugtk/examples/test129.ex
Normal file
82
eugtk/examples/test129.ex
Normal file
@@ -0,0 +1,82 @@
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
--# Notebook with custom tabs
|
||||
--------------------------------------------------------------------------------
|
||||
-- This is an overly-complex demo which uses custom-designed tabs.
|
||||
-- Don't think you have to do all this just to use a normal notebook widget
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
include GtkEngine.e
|
||||
|
||||
constant docs = `<u><b>Notebook with custom tabs</b></u>
|
||||
Clicking on the tab title changes notebook pages,
|
||||
but clicking on the red stop icon calls your Eu function,
|
||||
which, in this case, removes the page.
|
||||
`
|
||||
constant win = create(GtkWindow,"border=10,size=300x300,position=1,$destroy=Quit")
|
||||
|
||||
constant panel = create(GtkBox,"orientation=VERTICAL")
|
||||
add(win,panel)
|
||||
|
||||
constant notebook = create(GtkNotebook,"background=lightyellow,popup enable=TRUE")
|
||||
add(panel,notebook)
|
||||
|
||||
constant doclbl = create(GtkLabel,{
|
||||
{"margin top",30},
|
||||
{"markup",docs}})
|
||||
add(panel,doclbl)
|
||||
|
||||
-------------------------------
|
||||
-- Build custom notebook tabs;
|
||||
-------------------------------
|
||||
|
||||
-- read and size image once for all buttons;
|
||||
constant stop = create(GdkPixbuf,"thumbnails/icon-stop.png",15,15)
|
||||
|
||||
-- create format for page contents;
|
||||
constant fmt = `
|
||||
This text is on page
|
||||
<span font='48' color='red'>%d</span>
|
||||
`
|
||||
object pg = repeat(0,5), tab = pg, lbl = pg, btn = pg
|
||||
|
||||
for i = 1 to length(pg) do
|
||||
-- create a page and add it to the notebook;
|
||||
-- notebook pages must be a container or other widget,
|
||||
-- such as an image or the calendar, etc, or the page won't show
|
||||
pg[i] = create(GtkBox,VERTICAL) -- container for page content;
|
||||
lbl[i] = create(GtkLabel) -- label to hold "Page #" text
|
||||
set(lbl[i],"markup",sprintf(fmt,i)) -- "This text is on page ..."
|
||||
set(lbl[i],"justify",GTK_JUSTIFY_CENTER)
|
||||
add(pg[i],lbl[i]) -- add to container
|
||||
|
||||
-- create a custom tab for the page;
|
||||
tab[i] = create(GtkBox,HORIZONTAL) -- container for tab content;
|
||||
lbl[i] = create(GtkLabel,sprintf("Page %d",i)) -- tab label
|
||||
|
||||
-- add the stop image to a button so it's clickable;
|
||||
-- btn click is connected to RemovePage function;
|
||||
btn[i] = create(GtkToolButton,create(GtkImage,stop))
|
||||
set(btn[i],"tooltip text","Click here to remove this tab")
|
||||
connect(btn[i],"clicked","RemovePage",pg[i])
|
||||
|
||||
add(tab[i],{lbl[i],btn[i]}) -- add label and button to tab
|
||||
show_all(tab[i]) -- must show contents, won't show custom tabs automatically
|
||||
|
||||
set(notebook,"append page",pg[i],tab[i]) -- add a page with this tab
|
||||
|
||||
end for
|
||||
|
||||
show_all(win)
|
||||
main()
|
||||
|
||||
------------------------------------------------
|
||||
global function RemovePage(atom ctl, object pg)
|
||||
------------------------------------------------
|
||||
-- we have to get the CURRENT page number assigned to pg,
|
||||
-- since it changes as pages are removed (or added, reordered, etc)
|
||||
pg = get(notebook,"page num",pg)
|
||||
display("Remove page:[]",pg) -- current # of page, NOT the number shown on the tab!
|
||||
set(notebook,"remove page",pg) -- get rid of it
|
||||
return 1
|
||||
end function
|
||||
Reference in New Issue
Block a user