function text_insert_random (text) { local i, c; for (i = 0; i < 10; i++) { c = int('A') + (random() * 24); text.set_point(1); text.set_point(random() * text.get_length()); text.insert(nil, nil, nil, char(c), 1); } } function make_color(r, g, b) { local color = new(GdkColor); color.red = r; color.green = g; color.blue = b; color; } function create_text () { local box1, box2, hbox, button, check, separator, scrolled_window, text, font, infile, text_colors; win_text = new (GtkWindow); win_text.signal ("destroy", #win_text = nil); win_text.name = "text window"; win_text.set_policy(TRUE, TRUE, FALSE); win_text.set_usize(500, 500); win_text.title = "test"; win_text.border_width = 0; box1 = new(GtkVBox); win_text.add(box1); box1.show(); box2 = new(GtkVBox); box2.spacing = 10; box2.border_width = 10; box1.pack_start(box2, TRUE, TRUE, 0); box2.show(); scrolled_window = new(GtkScrolledWindow); box2.pack_start(scrolled_window, TRUE, TRUE, 0); scrolled_window.set_policy(GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); scrolled_window.show(); text = new(GtkText); text.set_editable(TRUE); scrolled_window.add(text); text.grab_focus(); text.show(); font = gdk_font_load ("-adobe-courier-medium-r-normal--*-120-*-*-*-*-*-*"); text.freeze(); /* Create and insert the colored foreground/background display text. */ text_colors = array(cons("black", make_color(0,0,0)), cons("white", make_color(0xffff,0xffff,0xffff)), cons("red", make_color(0xffff,0,0)), cons("green", make_color(0, 0xffff,0)), cons("blue", make_color(0, 0, 0xffff)), cons("cyan", make_color(0, 0xffff, 0xffff)), cons("magenta", make_color(0xffff, 0, 0xffff)), cons("yellow", make_color(0xffff, 0xffff, 0))); with i in text_colors do { text.insert(font, nil, nil, car(i), -1); text.insert(font, nil, nil, "\t", -1); with j in text_colors do text.insert(font, cdr(j), cdr(i), "XYZ", -1); text.insert(font, nil, nil, "\n", -1); } /* Read and insert the sample text. */ if ((infile = open("gtkenums.h", "r")) || (infile = open("../gtkenums.h", "r"))) { line = nil; while(line != _eof_) { line = read_line(infile); line_ret = string(line,"\n"); if (line_ret != "Unexpected end of file\n") text.insert(font, nil, nil, line_ret, -1); } } text.thaw(); hbox = new(GtkHButtonBox); box2.pack_start(hbox, FALSE, FALSE, 0); hbox.show(); check = new(GtkCheckButton); check.label = "Editable"; hbox.pack_start(check, FALSE, FALSE, 0); check.signal("toggled", `(@text).set_editable((@check).get_active())); check.set_active(TRUE); check.show(); check = new(GtkCheckButton); check.label = "Wrap Words"; hbox.pack_start(check, FALSE, FALSE, 0); check.signal("toggled", `(@text).set_word_wrap((@check).get_active())); check.set_active(FALSE); check.show(); separator = new(GtkHSeparator); box1.pack_start(separator, FALSE, TRUE, 0); separator.show(); box2 = new(GtkVBox); box2.spacing = 10; box2.border_width = 10; box1.pack_start(box2, FALSE, TRUE, 0); box2.show(); button = new(GtkButton); button.label = "insert random"; button.signal("clicked", `text_insert_random(@text)); box2.pack_start(button, TRUE, TRUE, 0); button.show(); button = new (GtkButton); button.label = "close"; button.signal ("clicked", `(@win_text).destroy()); box2.pack_start (button, TRUE, TRUE, 0); button.can_default = TRUE; button.grab_default(); win_text.show_all(); win_text; } function main () { local window, win_text; TRUE=1; FALSE=0; window = create_text (); window.signal ("destroy", #exit_program(0)); init_ipc("text", "textq"); gtk_main (); }
Copyright © 1995-2010 by Cogent Real-Time Systems, Inc. All rights reserved.