added eugtk examples
This commit is contained in:
93
eugtk/examples/test204.ex
Normal file
93
eugtk/examples/test204.ex
Normal file
@@ -0,0 +1,93 @@
|
||||
|
||||
---------------------------------------------------------------------------------------
|
||||
--# We can add more than one cell renderer to a ListView cell,
|
||||
-- perhaps not normally a great idea, but it works here,
|
||||
-- allowing us to use a single colunm to display either an
|
||||
-- image, a text caption, or both.
|
||||
---------------------------------------------------------------------------------------
|
||||
|
||||
include GtkEngine.e
|
||||
include std/io.e
|
||||
include std/map.e
|
||||
include std/filesys.e
|
||||
include std/console.e
|
||||
include std/convert.e
|
||||
|
||||
constant docs = `<u><b>ListView</b></u>
|
||||
This one packs both a pixbuf
|
||||
and text into a single cell.
|
||||
Not always very useful, but
|
||||
just to prove it can be done...
|
||||
`
|
||||
-- create an array of filenames;
|
||||
sequence animals = {"dragon","fish","fox","mouse"}
|
||||
object path = pathname(canonical_path(locate_file("~/demos/thumbnails/fox.png")))
|
||||
path &= "/%s.png"
|
||||
|
||||
enum NAME, IMG
|
||||
|
||||
for i = 1 to length(animals) do
|
||||
animals[i] = {
|
||||
proper(animals[i]),
|
||||
create(GdkPixbuf,sprintf(path,{animals[i]}),30,30,1)
|
||||
}
|
||||
end for
|
||||
|
||||
constant win = create(GtkWindow,{
|
||||
{"border width",10},
|
||||
{"default size",100,300},
|
||||
{"position",GTK_WIN_POS_CENTER}})
|
||||
connect(win,"destroy","Quit")
|
||||
|
||||
constant panel = create(GtkBox,VERTICAL)
|
||||
add(win,panel)
|
||||
|
||||
constant lbl = create(GtkLabel,{{"markup",docs}})
|
||||
add(panel,lbl)
|
||||
|
||||
constant scroller = create(GtkScrolledWindow)
|
||||
pack(panel,scroller,TRUE,TRUE)
|
||||
|
||||
constant store = create(GtkListStore,{gSTR,gPIX})
|
||||
atom iter = create(GtkTreeIter)
|
||||
set(store,"data",animals)
|
||||
|
||||
constant rend1a = create(GtkCellRendererText)
|
||||
constant rend1b = create(GtkCellRendererPixbuf)
|
||||
constant col1 = create(GtkTreeViewColumn)
|
||||
set(col1,"pack start",rend1a)
|
||||
set(col1,"pack end",rend1b)
|
||||
set(col1,{
|
||||
{"title","Animal"},
|
||||
{"add attribute",rend1a,"text",1},
|
||||
{"add attribute",rend1b,"pixbuf",2},
|
||||
{"sort column id",1}})
|
||||
|
||||
constant tv = create(GtkTreeView,{
|
||||
{"model",store},
|
||||
{"reorderable",TRUE},
|
||||
{"headers clickable",TRUE},
|
||||
{"rules hint",TRUE},
|
||||
{"grid lines",GTK_TREE_VIEW_GRID_LINES_BOTH},
|
||||
{"margin bottom",10},
|
||||
{"append columns",{col1}}})
|
||||
connect(tv,"row-activated",call_back(routine_id("ShowAnimal")))
|
||||
add(scroller,tv)
|
||||
|
||||
constant selection = gtk:get(tv,"selection")
|
||||
set(selection,"mode",GTK_SELECTION_SINGLE)
|
||||
|
||||
show_all(win)
|
||||
main()
|
||||
|
||||
-----------------------------
|
||||
function ShowAnimal()
|
||||
-----------------------------
|
||||
object row = gtk:get(selection,"selected row")
|
||||
object rowdata = gtk:get(store,"row data",row)
|
||||
set(win,"icon",rowdata[IMG])
|
||||
Info(win,,rowdata[NAME],,,rowdata[IMG],rowdata[IMG])
|
||||
return 1
|
||||
end function
|
||||
|
||||
|
||||
Reference in New Issue
Block a user