
------------------------------------------------------------------------
--# Another notebook style

-- It seemed like a good idea to create the pages from a marked-up 
-- text file, which makes it much simpler and easier to modify than 
-- if it were all hard-coded. See /resources/notebook_pages.txt 
------------------------------------------------------------------------

include GtkEngine.e

constant content =  locate_file("resources/notebook_pages.txt")

constant win = create(GtkWindow,
    "title=`All About Animals`,size=200x100,border=10,position=1,$destroy=Quit")

constant panel = create(GtkBox,"orientation=VERTICAL")
    add(win,panel)

constant book = create(GtkNotebook)
    set(book,"tab pos",GTK_POS_RIGHT)
    add(panel,book)

------------------------------------------------------------------------
-- Load text file and filter out comments and other garbage;
------------------------------------------------------------------------
object pgs = split(read_file(content),"\n\n")

for i = 1 to length(pgs) do 
 -- filter out comments
	if begins("--",pgs[i]) then 
	    pgs[i] = "" 
	else
	    pgs[i] = keyvalues(pgs[i],';','=',"\"","\t")
	    -- filter out random (non-keyed) garbage
	    if sequence(vlookup("p[1]",pgs[i],1,2,0)) then
		pgs[i] = ""
	    end if
	end if
end for
pgs = remove_all("",pgs)

------------------------------------------------------------------------
-- Build and add pages using the filtered text;
------------------------------------------------------------------------
object page = {}, lbl = "", img = 0, tab = "", note = ""

for i = 1 to length(pgs) do

    -- append a new page, starting with a plain box as base;
	page &= create(GtkBox,VERTICAL) 
	
    -- if key Title exists, use it as the tab text;
	tab = create(GtkLabel,vlookup("Title",pgs[i],1,2))
	
    -- if key Text exists, use it on a label, or use -no text found-
	lbl = create(GtkLabel) set(lbl,"font","Serif 10")
	set(lbl,"markup",vlookup("Text",pgs[i],1,2,"- no text found -"))
	
    -- if key Image exists, load and add it!
	img = create(GtkImage,locate_file(vlookup("Image",pgs[i],1,2)))
	add(page[i],{img,lbl})
	
    -- add the page to the notebook;
	set(page[i],"border_width=10,margin_top=20")
	set(book,"append page",page[i],tab)
	
end for 

-- add a 'quit' button to the notebook. note that it is not one of the tabs;
constant btn = create(GtkButton,"gtk-quit","Quit")
    set(book,"action widget",btn,GTK_PACK_END)
    show(btn)

show_all(win)
main()








