statusbar_counter = 1;
function statusbar_push(statusbar)
{
local text;
text = string("something ", statusbar_counter++);
statusbar.push(1, text);
}
function statusbar_pop(statusbar)
{
statusbar.pop(1);
}
function statusbar_steal(statusbar)
{
statusbar.remove(1,4);
}
function statusbar_dump_stack(statusbar)
{
with msg in (statusbar.get_messages()) do
princ(format("context_id: %d, message_id: %d, status_text: \"%s\"\n",
msg.context_id,
msg.message_id,
msg.text));
}
function statusbar_contexts(statusbar)
{
local strg;
stringlist = list("any context", "idle messages", "some text",
"hit the mouse", "hit the mouse2");
with strg in stringlist do
{
princ("GtkStatusBar: context=\"", strg, "\", context_id=",
statusbar.get_context_id(strg),"\n");
}
}
function statusbar_popped(statusbar)
{
if (!statusbar.get_messages())
statusbar_counter = 1;
}
function create_statusbar ()
{
local box1, box2, button, separator, statusbar;
win_statusbar = new (GtkWindow);
win_statusbar.signal ("destroy", #win_statusbar = nil);
win_statusbar.title = "statusbar";
win_statusbar.border_width = 0;
box1 = new(GtkVBox);
win_statusbar.add(box1);
box2 = new(GtkVBox);
box2.spacing = 10;
box2.border_width = 10;
box1.pack_start(box2, TRUE, TRUE, 0);
statusbar = new(GtkStatusbar);
box1.pack_end(statusbar, TRUE, TRUE, 0);
statusbar.signal("text_popped", `statusbar_popped(@statusbar));
button = new(GtkButton);
button.label = "push something";
button.visible = TRUE;
button.parent = box2;
button.signal("clicked", `statusbar_push(@statusbar));
button = new(GtkButton);
button.label = "pop";
button.visible = TRUE;
button.parent = box2;
button.signal("clicked", `statusbar_pop(@statusbar));
button = new(GtkButton);
button.label = "steal #4";
button.visible = TRUE;
button.parent = box2;
button.signal("clicked", `statusbar_steal(@statusbar));
button = new(GtkButton);
button.label = "dump stack";
button.visible = TRUE;
button.parent = box2;
button.signal("clicked", `statusbar_dump_stack(@statusbar));
button = new(GtkButton);
button.label = "test contexts";
button.visible = TRUE;
button.parent = box2;
button.signal("clicked", `statusbar_contexts(@statusbar));
separator = new(GtkHSeparator);
box1.pack_start(separator, FALSE, TRUE, 0);
box2 = new (GtkVBox);
box2.border_width = 10;
box1.pack_start (box2, FALSE, TRUE, 0);
button = new (GtkButton);
button.label = "close";
button.signal ("clicked", `(@win_statusbar).destroy());
box2.pack_start (button, TRUE, TRUE, 0);
button.can_default = TRUE;
button.grab_default();
win_statusbar.show_all();
win_statusbar;
}
function main ()
{
local window, win_statusbar;
TRUE=1;
FALSE=0;
window = create_statusbar ();
window.signal ("destroy", #exit_program(0));
init_ipc("statusbar", "statusbarq");
gtk_main ();
}
Copyright © 1995-2010 by Cogent Real-Time Systems, Inc. All rights reserved.