function list_add(x_list, counter)
{
local item;
item = gtk_list_item_new_with_label(string("added item ", counter));
x_list.append_items(list(item));
x_list.show_all();
}
function create_menuitem(label_string, mode, menu, widget, group, selected)
{
local menuitem = gtk_radio_menu_item_new_with_label(group, label_string);
menuitem.signal("activate", `(@widget).set_selection_mode(@mode));
if (selected)
menuitem.set_active (TRUE);
menu.append(menuitem);
menuitem.show();
group = menuitem.group ();
group;
}
function list_remove(x_list)
{
local clear_list;
with child in (x_list.children()) clear_list=tcollect
child.state == GTK_STATE_SELECTED ? child : nil;
if (clear_list)
x_list.remove_items (clear_list);
}
function create_list ()
{
local vbox, scrolled_win, my_list, infile, item, hbox,
button, cbox, label, group;
win_list = new (GtkWindow);
win_list.signal ("destroy", #win_list = nil);
win_list.title = "list";
win_list.border_width = 0;
win_list.set_usize(355, 425);
vbox = new(GtkVBox);
win_list.add(vbox);
scrolled_win = new(GtkScrolledWindow);
scrolled_win.border_width = 5;
scrolled_win.set_usize(-1, 300);
vbox.pack_start(scrolled_win, TRUE, TRUE, 0);
scrolled_win.set_policy(GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
my_list = new(GtkList);
my_list.set_selection_mode(GTK_SELECTION_EXTENDED);
scrolled_win.add_with_viewport(my_list);
my_list.set_focus_vadjustment(scrolled_win.get_vadjustment());
my_list.set_focus_hadjustment(scrolled_win.get_hadjustment());
if ((infile = open("gtkenums.h", "r")) || (infile = open("../gtkenums.h", "r")))
{
local txt, item_list;
item_list = nil;
while ((txt = read_line(infile)) != _eof_)
{
item = gtk_list_item_new_with_label(txt);
item_list = cons (item, item_list);
}
close(infile);
my_list.append_items(reverse(item_list));
}
hbox = new(GtkHBox);
hbox.spacing = 5;
hbox.border_width = 5;
vbox.pack_start(hbox, FALSE, TRUE, 0);
button = new(GtkButton);
button.label = "Insert Row";
hbox.pack_start(button, TRUE, TRUE, 0);
count = 0;
button.signal("clicked", #count++);
button.signal("clicked", `list_add(@my_list, count));
button = new(GtkButton);
button.label = "Clear List";
hbox.pack_start(button, TRUE, TRUE, 0);
button.signal("clicked", `(@my_list).clear_items(0,-1));
to_remove = list(car(item_list));
button = new(GtkButton);
button.label = "Remove Selection";
hbox.pack_start(button, TRUE, TRUE, 0);
button.signal("clicked", `list_remove(@my_list));
cbox = new(GtkHBox);
vbox.pack_start(cbox, FALSE, TRUE, 0);
hbox = new(GtkHBox);
hbox.spacing = 5;
hbox.border_width = 5;
cbox.pack_start(hbox, TRUE, FALSE, 0);
label = new(GtkLabel);
label.set_text("Selection Mode :");
hbox.pack_start(label, TRUE, TRUE, 0);
menu = new(GtkMenu);
group = nil;
group = create_menuitem("Single", GTK_SELECTION_SINGLE, menu,
my_list, group, nil);
group = create_menuitem("Browse", GTK_SELECTION_BROWSE, menu,
my_list, group, nil);
group = create_menuitem("Multiple", GTK_SELECTION_MULTIPLE, menu,
my_list, group, nil);
group = create_menuitem("Extended", GTK_SELECTION_EXTENDED, menu,
my_list, group, t);
optionmenu = new(GtkOptionMenu);
optionmenu.set_usize(100, 28);
optionmenu.set_menu(menu);
optionmenu.set_history(3);
hbox.pack_start(optionmenu, TRUE, TRUE, 0);
optionmenu.show();
separator = new(GtkHSeparator);
vbox.pack_start(separator, FALSE, TRUE, 0);
cbox = new(GtkHBox);
vbox.pack_start(cbox, FALSE, TRUE, 0);
button = new (GtkButton);
button.border_width = 10;
button.label = "close";
button.signal ("clicked", `(@win_list).destroy());
cbox.pack_start (button, TRUE, TRUE, 0);
button.can_default = TRUE;
button.grab_default();
win_list.show_all();
win_list;
}
function main ()
{
local window, win_list;
TRUE=1;
FALSE=0;
window = create_list ();
window.signal ("destroy", #exit_program(0));
init_ipc("listcodeg", "listcodegq");
gtk_main ();
}
Copyright © 1995-2010 by Cogent Real-Time Systems, Inc. All rights reserved.